From cf332f746e97f5edfe10e432f6b48d4c51baeec5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 30 Jun 2011 08:50:10 +0000 Subject: [PATCH] Try to force remove dm devices in after test fails. --- test/lib/aux.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/lib/aux.sh b/test/lib/aux.sh index cb8e038dd..b74ef76bd 100644 --- a/test/lib/aux.sh +++ b/test/lib/aux.sh @@ -90,6 +90,27 @@ 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 + 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 + 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