]> sourceware.org Git - lvm2.git/commitdiff
teardown stray filesystems too
authorAlasdair Kergon <agk@redhat.com>
Thu, 30 Jun 2011 09:15:53 +0000 (09:15 +0000)
committerAlasdair Kergon <agk@redhat.com>
Thu, 30 Jun 2011 09:15:53 +0000 (09:15 +0000)
WHATS_NEW
test/lib/aux.sh

index f04264ebcc8cec1524d51df315e860ee5b30f772..7fe55187c64d67bf3ec315904d277547c485fd1d 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.86 -  
 =================================
+  Teardown any stray devices with $COMMON_PREFIX during test runs.
   Reinstate correct permissions when creating mirrors. [2.02.85]
   Append 'm' attribute to pv_attr for missing PVs.
   Annotate CLVMD_CMD_SYNC_NAMES in decode_cmd.
index 0e4c90881042b2f692bca82e89909f47b34139f6..5f3232dff096ae8a4b64fa8f66fbed88f4c9a795 100644 (file)
@@ -90,34 +90,47 @@ teardown_devs() {
        rm -f DEVICES # devs is set in prepare_devs()
        rm -f LOOP
 
-       # Try to remove test devices
-       # resume any linears to be sure we do not deadlock
-       STRAY_DEVS=$(dmsetup table | grep linear | sed 's/:.*//' | grep $COMMON_PREFIX | cut -d' '  -f 1)
-       for dm in $STRAY_DEVS ; do
-               # FIXME: only those really suspended
-               dmsetup resume $dm 2>/dev/null
-       done
-
-       # Now try to remove devices
-       finish=0
-       while [ $finish -eq 0 ] ; do
-               finish=1
+       # Attempt to remove any loop devices that failed to get torn down if earlier tests aborted
+       test -n "$COMMON_PREFIX" && {
+               # Resume any linears to be sure we do not deadlock
                STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep $COMMON_PREFIX | cut -d' '  -f 1)
                for dm in $STRAY_DEVS ; do
-                       echo "Trying to remove stalled $dm"
-                       dmsetup remove $dm 2>/dev/null
-                       # Sucessful remove means repeat the loop once more
-                       [ $? -eq 0 ] && finish=0
+                       # FIXME: only those really suspended
+                       echo dmsetup resume $dm
+                       dmsetup resume $dm || true
                done
-       done
 
-       # Remove any loop devices that failed to get torn down if earlier tests aborted
-        STRAY_LOOPS=`losetup -a | grep $COMMON_PREFIX | cut -d: -f1`
-        if test -n "$STRAY_LOOPS"; then
-                echo "Removing stray loop devices containing $COMMON_PREFIX:"
-                losetup -a | grep $COMMON_PREFIX
-                losetup -d $STRAY_LOOPS 2>/dev/null || true
-        fi
+               STRAY_MOUNTS=`mount | grep $COMMON_PREFIX | cut -d\  -f1`
+               if test -n "$STRAY_MOUNTS"; then
+                       echo "Removing stray mounted devices containing $COMMON_PREFIX:"
+                       mount | grep $COMMON_PREFIX
+                       umount -fl $STRAY_MOUNTS || true
+                       sleep 2
+               fi
+
+               init_udev_transaction
+               NUM_REMAINING_DEVS=999
+               while NUM_DEVS=`dmsetup table | grep ^$COMMON_PREFIX | wc -l` && \
+                   test $NUM_DEVS -lt $NUM_REMAINING_DEVS -a $NUM_DEVS -ne 0; do
+                       echo "Removing $NUM_DEVS stray mapped devices with names beginning with $COMMON_PREFIX:"
+                       STRAY_DEVS=$(dmsetup table | sed 's/:.*//' | grep $COMMON_PREFIX | cut -d' '  -f 1)
+                       dmsetup info -c | grep ^$COMMON_PREFIX
+                       for dm in $STRAY_DEVS ; do
+                               echo dmsetup remove $dm
+                               dmsetup remove $dm || true
+                       done
+                       NUM_REMAINING_DEVS=$NUM_DEVS
+               done
+               finish_udev_transaction
+               udev_wait
+
+               STRAY_LOOPS=`losetup -a | grep $COMMON_PREFIX | cut -d: -f1`
+               if test -n "$STRAY_LOOPS"; then
+                       echo "Removing stray loop devices containing $COMMON_PREFIX:"
+                       losetup -a | grep $COMMON_PREFIX
+                       losetup -d $STRAY_LOOPS || true
+               fi
+       }
 }
 
 teardown() {
This page took 0.048362 seconds and 5 git commands to generate.