[lvm-devel] LVM2 ./WHATS_NEW test/lib/aux.sh

agk at sourceware.org agk at sourceware.org
Thu Jun 30 09:15:53 UTC 2011


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk at sourceware.org	2011-06-30 09:15:53

Modified files:
	.              : WHATS_NEW 
	test/lib       : aux.sh 

Log message:
	teardown stray filesystems too

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2031&r2=1.2032
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/lib/aux.sh.diff?cvsroot=lvm2&r1=1.23&r2=1.24

--- LVM2/WHATS_NEW	2011/06/29 17:05:53	1.2031
+++ LVM2/WHATS_NEW	2011/06/30 09:15:53	1.2032
@@ -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.
--- LVM2/test/lib/aux.sh	2011/06/30 09:08:22	1.23
+++ LVM2/test/lib/aux.sh	2011/06/30 09:15:53	1.24
@@ -90,34 +90,47 @@
 	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() {




More information about the lvm-devel mailing list