public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] check: remove require_{test,scratch}* after a test fails
@ 2019-04-16 22:34 Darrick J. Wong
  2019-04-16 22:36 ` [PATCH 2/2] check: wipe scratch devices between tests Darrick J. Wong
  2019-04-17  1:19 ` [PATCH 3/2] check: filter lockdep bugs when scanning dmesg Darrick J. Wong
  0 siblings, 2 replies; 3+ messages in thread
From: Darrick J. Wong @ 2019-04-16 22:34 UTC (permalink / raw)
  To: Eryu Guan; +Cc: fstests

From: Darrick J. Wong <darrick.wong@oracle.com>

Remove the require_{test,scratch]* sentinel files after a test fails.
This eliminates false fsck corruption reports such as the following:

1. Test A calls _require_scratch, which creates the sentinel file
$RESULT_DIR/require_scratch to facilitate fsck after the test completes.

2. Test A runs some test, which corrupts the scratch filesystem due to
kernel bug or something.

3. Test A calls _fail because of the errors in (2).  Note that the test
case returned 1, so ./check unmounts the test and scratch filesystems
without checking them or removing $RESULT_DIR/require_scratch

4. Test B starts up, but does not call _require_scratch.  The
$RESULT_DIR/require_scratch file is still there.

5. Test B completes successfully.

6. ./check calls _check_filesystems, which sees the
$RESULT_DIR/require_scratch file and runs fsck.

7. fsck reports the corrupt scratch device (which is associated with
test B) even though B did not ever touch the scratch device and it was
actually test A that corrupted the filesystem.

Note that with the "check: wipe scratch devices between tests" patch
applied, we can also reproduce this problem by running xfs/172 and
xfs/195 with a scratch device small enough that the files created in 172
span multiple AGs and therefore cause 172 to fail.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 check |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/check b/check
index 1ddb2e8b..5670e13b 100755
--- a/check
+++ b/check
@@ -788,6 +788,8 @@ for section in $HOST_OPTIONS_SECTIONS; do
 			_dump_err_cont "[failed, exit status $sts]"
 			_test_unmount 2> /dev/null
 			_scratch_unmount 2> /dev/null
+			rm -f ${RESULT_DIR}/require_test*
+			rm -f ${RESULT_DIR}/require_scratch*
 			err=true
 		else
 			# the test apparently passed, so check for corruption

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-04-17  1:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-16 22:34 [PATCH 1/2] check: remove require_{test,scratch}* after a test fails Darrick J. Wong
2019-04-16 22:36 ` [PATCH 2/2] check: wipe scratch devices between tests Darrick J. Wong
2019-04-17  1:19 ` [PATCH 3/2] check: filter lockdep bugs when scanning dmesg Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox