]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd/kernel.sh: quit looking for snapshot sysfs entries
authorAlex Elder <elder@inktank.com>
Thu, 30 May 2013 23:10:46 +0000 (18:10 -0500)
committerAlex Elder <elder@inktank.com>
Thu, 30 May 2013 23:38:53 +0000 (18:38 -0500)
The sysfs entries for snapshots went away a while ago, and this
script used them to verify sizes matched what was expected.

Instead, look at the mapped size of the snapshot in the places
that used to look for the image's snapshot sysfs files.

Also, switch over to using "udevadm settle" rather than a delay to
wait for udev to do its thing.  Insert them at more appropriate
places--right after "rmd map" commands and before and after the
"rbd unmap" calls.

Stop doing the manual refresh calls as well.  The osd will trigger
refreshes whenever the image size or shapshot context changes.

Finally, the cleanup routine is called initially, when there really
isn't expected to be anything to clean up.  Change the rbd commands
to run there conditionally, only if the target of the command
already exists.

Signed-off-by: Alex Elder <elder@inktank.com>
qa/workunits/rbd/kernel.sh

index 3786de161ecdbeee382c3f4b8bf7289ffeb37510..5416cc6a5e199cbdd14b9f131bd5e0fe46eb04cd 100755 (executable)
@@ -17,11 +17,16 @@ function get_device_dir {
 }
 
 function clean_up {
-       rbd unmap /dev/rbd/rbd/testimg1 || true
-       rbd unmap /dev/rbd/rbd/testimg1@snap1 || true
+       udevadm settle
+       [ -e /dev/rbd/rbd/testimg1@snap1 ] &&
+               rbd unmap /dev/rbd/rbd/testimg1@snap1 || true
+       if [ -e /dev/rbd/rbd/testimg1 ]; then
+               rbd unmap /dev/rbd/rbd/testimg1 || true
+               rbd snap purge testimg1 || true
+       fi
+       udevadm settle
        sudo chown root /sys/bus/rbd/add /sys/bus/rbd/remove
-       rbd snap purge testimg1 || true
-       rbd rm testimg1 || true
+       rbd ls | grep testimg1 > /dev/null && rbd rm testimg1 || true
        sudo rm -f $TMP_FILES
 }
 
@@ -43,39 +48,32 @@ dd if=/dev/zero of=/tmp/img1 count=0 seek=150000
 # import
 rbd import /tmp/img1 testimg1
 rbd map testimg1 --user $CEPH_ID $SECRET_ARGS
+# wait for udev to catch up
+udevadm settle
+
 DEV_ID1=$(get_device_dir rbd testimg1 -)
 echo "dev_id1 = $DEV_ID1"
 cat /sys/bus/rbd/devices/$DEV_ID1/size
 cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000
 
-# wait for udev to catch up
-while test ! -e /dev/rbd/rbd/testimg1
-do
-       sleep 1
-done
 sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.export
 cmp /tmp/img1 /tmp/img1.export
 
 # snapshot
 rbd snap create testimg1 --snap=snap1
-cat /sys/bus/rbd/devices/$DEV_ID1/snap_snap1/snap_size | grep 76800000
 rbd map --snap=snap1 testimg1 --user $CEPH_ID $SECRET_ARGS
+# wait for udev to catch up
+udevadm settle
+
 DEV_ID2=$(get_device_dir rbd testimg1 snap1)
 cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
 
-# wait for udev to catch up
-while test ! -e /dev/rbd/rbd/testimg1@snap1
-do
-       sleep 1
-done
 sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1
 cmp /tmp/img1 /tmp/img1.snap1
 
 # resize
 rbd resize testimg1 --size=40 --allow-shrink
-echo 1 | sudo tee /sys/bus/rbd/devices/$DEV_ID1/refresh
 cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 41943040
-echo 1 | sudo tee /sys/bus/rbd/devices/$DEV_ID2/refresh
 cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
 
 sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.small
@@ -85,9 +83,8 @@ cmp /tmp/img1.trunc /tmp/img1.small
 
 # rollback and check data again
 rbd snap rollback --snap=snap1 testimg1
-echo 1 | sudo tee /sys/bus/rbd/devices/$DEV_ID1/refresh
-cat /sys/bus/rbd/devices/$DEV_ID1/snap_snap1/snap_size | grep 76800000
 cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000
+cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
 sudo rm -f /tmp/img1.snap1 /tmp/img1.export
 
 sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1