mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
xfstests: loop devices vs umount stupidity
Unmounting a fileystem mounted on a loop device doesn't always tear down the loop device. Its racy, and it causes tests to randomly fail. To avoid that, we have to use umount -d to ensure that we destroy loop devices under filesystems in case the kernel doesn't tear it down automatically to prevent the test from failing. However, if the kernel does tear it down automatically, umount now issues a warning that it couldn't tear down the loop device because it couldn't find it, and that causes the test to fail. *facepalm* So, convert all the loop device unmounts to use -d, and direct the output of all of them to /dev/null. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
This commit is contained in:
@@ -30,8 +30,8 @@ echo "QA output created by $seq"
|
||||
_cleanup()
|
||||
{
|
||||
cd /
|
||||
umount $SCRATCH_MNT/test2 > /dev/null 2>&1
|
||||
umount $SCRATCH_MNT/test > /dev/null 2>&1
|
||||
umount -d $SCRATCH_MNT/test2 > /dev/null 2>&1
|
||||
umount -d $SCRATCH_MNT/test > /dev/null 2>&1
|
||||
rm -f $tmp.*
|
||||
|
||||
if [ -w $seq.full ]
|
||||
@@ -124,11 +124,11 @@ rm -rf $SCRATCH_MNT/test/* >> $seq.full 2>&1 \
|
||||
|| _fail "!!! clean failed"
|
||||
|
||||
_log "umount ext2 on xfs"
|
||||
umount $SCRATCH_MNT/test2 >> $seq.full 2>&1 \
|
||||
umount -d $SCRATCH_MNT/test2 >> $seq.full 2>&1 \
|
||||
|| _fail "!!! umount ext2 failed"
|
||||
|
||||
_log "umount xfs"
|
||||
umount $SCRATCH_MNT/test >> $seq.full 2>&1 \
|
||||
umount -d $SCRATCH_MNT/test >> $seq.full 2>&1 \
|
||||
|| _fail "!!! umount xfs failed"
|
||||
|
||||
echo "--- mounts at end (before cleanup)" >> $seq.full
|
||||
|
||||
@@ -120,7 +120,7 @@ _verify_copy()
|
||||
|
||||
echo unmounting and removing new image
|
||||
umount $source_dir
|
||||
umount -d $target_dir
|
||||
umount -d $target_dir > /dev/null 2>&1
|
||||
rm -f $target
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ _cleanup()
|
||||
{
|
||||
cd /
|
||||
rm -f $tmp.*
|
||||
umount $LOOP_MNT 2>/dev/null
|
||||
umount -d $LOOP_MNT 2>/dev/null
|
||||
rmdir $LOOP_MNT
|
||||
_cleanup_testdir
|
||||
}
|
||||
@@ -98,7 +98,7 @@ _grow_loop()
|
||||
$XFS_GROWFS_PROG $LOOP_MNT 2>&1 | _filter_growfs 2>&1
|
||||
|
||||
echo "*** unmount"
|
||||
umount $LOOP_MNT
|
||||
umount -d $LOOP_MNT > /dev/null 2>&1
|
||||
|
||||
# Large grows takes forever to check..
|
||||
if [ "$check" -gt "0" ]
|
||||
|
||||
@@ -63,7 +63,7 @@ _do_mkfs()
|
||||
-d name=$LOOP_DEV,size=${i}g |grep log
|
||||
mount -o loop -t xfs $LOOP_DEV $LOOP_MNT
|
||||
echo "test write" > $LOOP_MNT/test
|
||||
umount $LOOP_MNT
|
||||
umount -d $LOOP_MNT > /dev/null 2>&1
|
||||
done
|
||||
}
|
||||
# make large holey file
|
||||
|
||||
@@ -65,7 +65,7 @@ _do_mkfs()
|
||||
-d name=$LOOP_DEV,size=${i}g |grep log
|
||||
mount -o loop -t xfs $LOOP_DEV $LOOP_MNT
|
||||
echo "test write" > $LOOP_MNT/test
|
||||
umount $LOOP_MNT
|
||||
umount -d $LOOP_MNT > /dev/null 2>&1
|
||||
done
|
||||
}
|
||||
# make large holey file
|
||||
|
||||
@@ -34,7 +34,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_cleanup()
|
||||
{
|
||||
cd /
|
||||
umount $LOOP_MNT 2>/dev/null
|
||||
umount -d $LOOP_MNT 2>/dev/null
|
||||
rm -f $LOOP_DEV
|
||||
rmdir $LOOP_MNT
|
||||
_cleanup_testdir
|
||||
@@ -85,7 +85,7 @@ _test_loop()
|
||||
xfs_io -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
|
||||
|
||||
echo "*** unmount loop filesystem"
|
||||
umount $LOOP_MNT
|
||||
umount -d $LOOP_MNT > /dev/null 2>&1
|
||||
|
||||
echo "*** check loop filesystem"
|
||||
_check_xfs_filesystem $LOOP_DEV none none
|
||||
|
||||
Reference in New Issue
Block a user