]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
xfstests: loop devices vs umount stupidity
authorDave Chinner <dchinner@redhat.com>
Thu, 26 Jul 2012 08:35:04 +0000 (08:35 +0000)
committerroot <root@cxfsxe4.(none)>
Wed, 22 Aug 2012 20:50:46 +0000 (15:50 -0500)
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>
049
073
078
216
217
250

diff --git a/049 b/049
index c6c4faa3817b9ce14426dd6f4af8ed13ccb8b8e6..c3065ad5839d76f2551b598330fce5eeb4217973 100755 (executable)
--- a/049
+++ b/049
@@ -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
diff --git a/073 b/073
index 18257d4fb3c97031fa17f2022d5ad46d1b89be47..96056626bf9fe7bd9cb4946fa0830dd0b1bebb79 100755 (executable)
--- a/073
+++ b/073
@@ -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
 }
 
diff --git a/078 b/078
index 5cb66dfa11b5b2764c330d014796719186961b69..7af552e97ea8109eca20220dd9b254f1961f0001 100755 (executable)
--- a/078
+++ b/078
@@ -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" ]
diff --git a/216 b/216
index 7c046f5af1484b8844cf80b5711f8c9fc76f5604..71e6dd7d00a0f53e48e8901fb4e1d89c3294abf2 100755 (executable)
--- a/216
+++ b/216
@@ -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
diff --git a/217 b/217
index 19540ad496645e950074126e89f776c1497b47ef..ef0761e8ec7fcfacce300916e295f3ebb2aeb048 100755 (executable)
--- a/217
+++ b/217
@@ -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
diff --git a/250 b/250
index 92e3cc5f21de27c414ee43b2c29237a7c7617e6b..9eca2b6dac1f39adf7563094e0660bf13a5b7efc 100755 (executable)
--- a/250
+++ b/250
@@ -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