1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

teardown stray filesystems too

This commit is contained in:
Alasdair Kergon 2011-06-30 09:15:53 +00:00
parent e21ef74f11
commit 181b1f9fec
2 changed files with 38 additions and 24 deletions

View File

@ -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.

View 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() {