summaryrefslogtreecommitdiffstats
path: root/qa/workunits/rbd/qemu_dynamic_features.sh
blob: 70e9fbb3cd378647862d4593c8a0f39f4fc8b3bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env bash
set -x

if [[ -z "${IMAGE_NAME}" ]]; then
  echo image name must be provided
  exit 1
fi

is_qemu_running() {
  rbd status ${IMAGE_NAME} | grep -v "Watchers: none"
}

wait_for_qemu() {
  while ! is_qemu_running ; do
    echo "*** Waiting for QEMU"
    sleep 30
  done
}

wait_for_qemu
rbd feature disable ${IMAGE_NAME} journaling
rbd feature disable ${IMAGE_NAME} object-map
rbd feature disable ${IMAGE_NAME} exclusive-lock

while is_qemu_running ; do
  echo "*** Enabling all features"
  rbd feature enable ${IMAGE_NAME} exclusive-lock || break
  rbd feature enable ${IMAGE_NAME} journaling || break
  rbd feature enable ${IMAGE_NAME} object-map || break
  if is_qemu_running ; then
    sleep 60
  fi

  echo "*** Disabling all features"
  rbd feature disable ${IMAGE_NAME} journaling || break
  rbd feature disable ${IMAGE_NAME} object-map || break
  rbd feature disable ${IMAGE_NAME} exclusive-lock || break
  if is_qemu_running ; then
    sleep 60
  fi
done

if is_qemu_running ; then
    echo "RBD command failed on alive QEMU"
    exit 1
fi