common: don't check scratch dev on all tests
authorDave Chinner <dchinner@redhat.com>
Mon, 8 Sep 2014 10:48:45 +0000 (20:48 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 8 Sep 2014 10:48:45 +0000 (20:48 +1000)
Some tests deliberately corrupt  scratch devices and so will fail
the post-test check. Add a "_require_scratch_nocheck" helper
function for such tests to avoid false test failure detection.

Also, ensure that _notrun cleans up the trigger for the post-test
checks. Otherwise the next test to run may try to validate the
scratch/test devices even though they are not used by the test.

Further, _check_xfs_filesystem() causes check to exit if it finds a
corruption. This is extremely annoying as it terminates the entire
test run rather than just reporting that the test fails. Hence add
an "iam != check" test before exiting so that calls from tests will
cause the test to fail, but calls from check won't cause the harness
to exit.

There are still some tests that fail the scratch check, these are
not obvious test failures and so need further investigation to
determine the cause of the failures.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
common/rc
tests/generic/311
tests/generic/321
tests/generic/322
tests/xfs/001
tests/xfs/002
tests/xfs/005
tests/xfs/045
tests/xfs/049
tests/xfs/202
tests/xfs/205

index 16da898d1eddff234beb4990c7fee4e11941e240..95abfe3199a4b7bae3a419c0a6cb7e15417c3e70 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -908,12 +908,15 @@ _do()
     return $ret
 }
 
-# bail out, setting up .notrun file
+# bail out, setting up .notrun file. Need to kill the filesystem check files
+# here, otherwise they are set incorrectly for the next test.
 #
 _notrun()
 {
     echo "$*" > $seqres.notrun
     echo "$seq not run: $*"
+    rm -f ${RESULT_DIR}/require_test
+    rm -f ${RESULT_DIR}/require_scratch
     status=0
     exit
 }
@@ -960,8 +963,9 @@ _supported_os()
 }
 
 # this test needs a scratch partition - check we're ok & unmount it
-#
-_require_scratch()
+# No post-test check of the device is required. e.g. the test intentionally
+# finishes the test with the filesystem in a corrupt state
+_require_scratch_nocheck()
 {
     case "$FSTYP" in
        nfs*)
@@ -1005,9 +1009,17 @@ _require_scratch()
             exit 1
         fi
     fi
-    touch ${RESULT_DIR}/require_scratch
+    rm -f ${RESULT_DIR}/require_scratch
+}
+
+# we need the scratch device and it should be checked post test.
+_require_scratch()
+{
+       _require_scratch_nocheck
+       touch ${RESULT_DIR}/require_scratch
 }
 
+
 # this test needs a test partition - check we're ok & unmount it
 #
 _require_test()
@@ -1681,7 +1693,9 @@ _check_xfs_filesystem()
 
     if [ $ok -eq 0 ]; then
        status=1
-       exit 1
+       if [ "$iam" != "check" ]; then
+               exit 1
+       fi
     fi
 
     return 0
index e38904980c4e1d5bdc14f3b6525cc78b76908d45..85e52e8e008c7f5e89de9a85bc0e582e9a30fd63 100755 (executable)
@@ -54,7 +54,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 _need_to_be_root
-_require_scratch
+_require_scratch_nocheck
 _require_dm_flakey
 
 # xfs_io is not required for this test, but it's the best way to verify
index 8410d40a427c2a0d73d8d52bfb90ebad12f9eb27..3bd6b1219ced5b7d66e11aa627f82a39bf14cce1 100755 (executable)
@@ -43,7 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 _need_to_be_root
-_require_scratch
+_require_scratch_nocheck
 _require_dm_flakey
 
 rm -f $seqres.full
index fe1a4d50256ec502cc20cae639ffd59f4bfc13f4..3ec23876aa2d87a20c735b1b627aee5cfb16cb94 100755 (executable)
@@ -43,7 +43,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fs generic
 _supported_os Linux
 _need_to_be_root
-_require_scratch
+_require_scratch_nocheck
 _require_dm_flakey
 
 rm -f $seqres.full
index e72e6fd9280d1f5eec1abdd9320091e61fb61819..c33adae74b42bc5fc76377884d07850237f6f639 100755 (executable)
@@ -63,7 +63,7 @@ _do_bit_test()
 # Modify as appropriate.
 _supported_fs xfs
 _supported_os Linux
-_require_scratch
+_require_scratch_nocheck
 _require_xfs_mkfs_crc
 
 _scratch_mkfs -m crc=0 >/dev/null 2>&1
index d461d376cd51f09a5f168a533b8944c492ae55c2..6dfdd6c7c9ac8d0ae9d28593f009e8c28e8260c8 100755 (executable)
@@ -50,8 +50,8 @@ _cleanup()
 # Modify as appropriate.
 _supported_fs xfs
 _supported_os Linux
+_require_scratch_nocheck
 
-_require_scratch
 # So we can explicitly turn it _off_:
 _require_xfs_mkfs_crc
 
index 509ac619102b8dc4b5c4a09ba77c280dfe67a991..5d4534b0226bc0a48cc211b070178a03b526e864 100755 (executable)
@@ -53,7 +53,7 @@ filter_mount()
 _supported_fs xfs
 _supported_os Linux
 
-_require_scratch
+_require_scratch_nocheck
 _require_xfs_mkfs_crc
 
 rm -f $seqres.full
index 31516b35d33df6e51a8e0ea5e153884b05e21745..7d8a4a1bb65b9daeb96a9edea484c06e965dad75 100755 (executable)
@@ -45,7 +45,7 @@ _supported_fs xfs
 _supported_os Linux
 
 _require_test
-_require_scratch
+_require_scratch_nocheck
 
 echo "*** get uuid"
 uuid=`_get_existing_uuid`
index dc76baa3caa556dab8ce217c5dcae6f300ecc284..04c2c7573dd14a678e2aaa5d46c37a38144c03d7 100755 (executable)
@@ -60,7 +60,7 @@ _log()
 }
 
 _require_nonexternal
-_require_scratch
+_require_scratch_nocheck
 _require_no_large_scratch_dev
 _require_loop
 _require_ext2
@@ -133,7 +133,6 @@ umount -d $SCRATCH_MNT/test >> $seqres.full 2>&1 \
 echo "--- mounts at end (before cleanup)" >> $seqres.full
 mount >> $seqres.full
 
-rm -f $seqres.full
 # success, all done
 status=0
 exit
index 15c6603fb1157885f0aa814ef1f7fee6ca974286..b9827a7f788c3fe6d93c4e6840a14e167a426e1f 100755 (executable)
@@ -38,7 +38,9 @@ status=1      # failure is the default!
 _supported_fs xfs
 _supported_os Linux
 
-_require_scratch
+# single AG will cause default xfs_repair to fail. This test is actually
+# testing the special corner case option needed to repair a single AG fs.
+_require_scratch_nocheck
 
 #
 # The AG size is limited to 1TB (or even less with historic xfsprogs),
index 0c071ca653cc6e38deb555cb4a63d67827c62391..debdc2a412645280e737799f0225e81e4c414f15 100755 (executable)
@@ -37,7 +37,8 @@ status=1      # failure is the default!
 _supported_fs xfs
 _supported_os Linux
 
-_require_scratch
+# single AG will cause xfs_repair to fail checks.
+_require_scratch_nocheck
 
 rm -f $seqres.full