]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
fstests: mark tests that are unreliable when run in parallel
authorDave Chinner <dchinner@redhat.com>
Tue, 26 Nov 2024 20:58:10 +0000 (07:58 +1100)
committerZorro Lang <zlang@kernel.org>
Sun, 8 Dec 2024 14:07:46 +0000 (22:07 +0800)
Add a group named "unreliable_in_parallel" to mark tests that
do not give reliable results when multiple tests are run in
parallel. Generally this happens with tests that are reliant on
caching in some way, such as generating specific file layouts using
buffered IO or expecting inodes to be cached in memory. These are
perturbed by other tests running sync(), generating memory pressure,
dropping caches, etc.

Hence whether these tests pass or fail is wholly dependent on what
tests are running at the same time, and hence randomly fail when
nothing has actually gone wrong. Hence they are unreliable as
regression tests when running tests in parallel, so we add them to
the "unreliable_in_parallel" group and a parallel check can exclude
this group.

As tests are updated to be robust against external interference,
they can be removed from the unreliable_in_parallel group.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Zorro lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
12 files changed:
doc/group-names.txt
tests/generic/336
tests/generic/561
tests/xfs/177
tests/xfs/232
tests/xfs/237
tests/xfs/243
tests/xfs/300
tests/xfs/440
tests/xfs/527
tests/xfs/631
tests/xfs/802

index ed886caac058c3b3ebe6bdea25500a6ce113221d..f5bf79a56c33044dce3dc72124609a042b3d7846 100644 (file)
@@ -138,6 +138,7 @@ trim                        FITRIM ioctl
 udf                    UDF functionality tests
 union                  tests from the unionmount test suite
 unlink                 O_TMPFILE unlinked files
+unreliable_in_parallel randomly fail when run in parallel with other tests
 unshare                        fallocate FALLOC_FL_UNSHARE_RANGE
 v2log                  XFS v2 log format tests
 verity                 fsverity
index 06391a93fb00ae71cb2fc436e9814cbae7774d03..c874997e420b0814503340713d62e5e07ab29b24 100755 (executable)
@@ -9,8 +9,13 @@
 # file F2 from directory B into directory C, fsync inode F1, power fail and
 # remount the filesystem, file F2 exists and is located only in directory C.
 #
+
+# unreliable_in_parallel: external sync operations can change what is synced to
+# the log before the flakey device drops writes. hence post-remount file
+# contents can be different to what the test expects.
+
 . ./common/preamble
-_begin_fstest auto quick metadata log
+_begin_fstest auto quick metadata log unreliable_in_parallel
 
 # Override the default cleanup function.
 _cleanup()
index 854aedab499fbd9acefd9c8d1febdf9bb4ce241c..afe727ac56cbd980d21d94a3127ba5189f81cec2 100755 (executable)
@@ -7,8 +7,14 @@
 # Dedup & random I/O race test, do multi-threads fsstress and dedupe on
 # same directory/files
 #
+
+# unreliable_in_parallel: duperemove is buggy. It can get stuck in endless
+# fiemap mapping loops, and this seems to happen a *lot* when the system is
+# under heavy load. when they do this, they don't die when they are supposed to
+# and so have to be manually killed to end the test.
+
 . ./common/preamble
-_begin_fstest auto stress dedupe
+_begin_fstest auto stress dedupe unreliable_in_parallel
 
 # Override the default cleanup function.
 _cleanup()
index 773049524c92dc2f97f85857b558a6cb9fbc2006..22719ba1c69db6fac3f2ace9d83269981027f10f 100755 (executable)
 # Regrettably, there is no way to poke /only/ XFS inode reclamation directly,
 # so we're stuck with setting xfssyncd_centisecs to a low value and sleeping
 # while watching the internal inode cache counters.
-#
+
+# unreliable_in_parallel: cache residency is affected by external drop caches
+# operations. Hence counting inodes "in cache" often does not reflect what the
+# test has actually done.
+
 . ./common/preamble
-_begin_fstest auto ioctl
+_begin_fstest auto ioctl unreliable_in_parallel
 
 _cleanup()
 {
index 0eea2c098a8eb7818e7d529034bdf4f7c4bc0ff1..f0f3916e71107199e9ba967b576acc4929173429 100755 (executable)
 # - Wait for the reclaim to run.
 # - Write more and see how bad fragmentation is.
 #
+
+# unreliable_in_parallel: external sync operations affect what happens while
+# the test is waiting for COW expiration.
+
 . ./common/preamble
-_begin_fstest auto quick clone fiemap prealloc
+_begin_fstest auto quick clone fiemap prealloc unreliable_in_parallel
 
 # Override the default cleanup function.
 _cleanup()
index f172aaf5932ad9d02e2df6bacac0d2b3df1bd1ac..91f56d6c1a6ec30b7f2be30f2e62ce2b18c0ffd2 100755 (executable)
@@ -6,8 +6,14 @@
 #
 # Test AIO DIO CoW behavior when the write temporarily fails.
 #
+
+# unreliable_in_parallel: external drop caches can co-incide with the error
+# table being loaded, so the test being run fails with EIO trying to load the
+# inode from disk instead of whatever operation it is supposed to fail on when
+# the inode is already cached in memory.
+
 . ./common/preamble
-_begin_fstest auto quick clone eio
+_begin_fstest auto quick clone eio unreliable_in_parallel
 
 # Override the default cleanup function.
 _cleanup()
index 964e94e1da1651e561cd0b5899ad51170c761626..f9cc2d50f8585ecd45238f280e7cd10cfe402155 100755 (executable)
 #     5. delalloc
 #   - CoW across the halfway mark, starting with the unwritten extent.
 #   - Check that the files are now different where we say they're different.
-#
+
+# unreliable_in_parallel: external sync can affect the layout of the files being
+# created, results in unreliable detection of delalloc extents.
+
 . ./common/preamble
-_begin_fstest auto quick clone punch prealloc
+_begin_fstest auto quick clone punch prealloc unreliable_in_parallel
 
 # Import common functions.
 . ./common/filter
index 3f0dbb9acac449ede28655b0a99a62e379928661..c4c3b1ab86c20057e340442e31e224f03d83b30c 100755 (executable)
@@ -5,9 +5,13 @@
 # FS QA Test No. 300
 #
 # Test xfs_fsr / exchangerange management of di_forkoff w/ selinux
-#
+
+# unreliable_in_parallel: file layout appears to be perturbed by load related
+# timing issues. Not 100% sure, but the backwards write does not reliably
+# fragment the source file under heavy external load
+
 . ./common/preamble
-_begin_fstest auto fsr
+_begin_fstest auto fsr unreliable_in_parallel
 
 # Import common functions.
 . ./common/filter
index 0cc679aebf418f6e914a391c7498961e8e3f406b..c0b6756ba976652f3d6fafefaaaedfd7108c7ad0 100755 (executable)
@@ -8,8 +8,12 @@
 # a file that has CoW reservations and no dirty pages.  The reservations
 # should shift over to the new owner, but they do not.
 #
+
+# unreliable_in_parallel: external sync(1) and/or drop caches can reclaim inodes
+# and free post-eof space, resulting in lower than expected block counts.
+
 . ./common/preamble
-_begin_fstest auto quick clone quota
+_begin_fstest auto quick clone quota unreliable_in_parallel
 
 # Import common functions.
 . ./common/reflink
index 2ef428c25952e387c871db06870500c4d90675af..0d06b128cc1ca47e02199eb30aa3bd7a77e128c5 100755 (executable)
 # xfs: fix incorrect root dquot corruption error when switching group/project
 # quota types
 
+# unreliable_in_parallel: dmesg check can pick up corruptions from other tests.
+# Need to filter corruption reports by short scratch dev name.
+
 . ./common/preamble
-_begin_fstest auto quick quota
+_begin_fstest auto quick quota unreliable_in_parallel
 
 # Import common functions.
 . ./common/quota
index 4d79b821f9edc125f6e13b4787e129881168cdb9..319995f816fe23c7eb0fba4213d57062980db9d0 100755 (executable)
@@ -7,8 +7,13 @@
 # Post-EOF preallocation defeat test for direct I/O with extent size hints.
 #
 
+# unreliable_in_parallel: external cache drops can result in the extent size
+# being truncated as the inode is evicted from cache between writes. This can
+# increase the number of extents significantly beyond what would be expected
+# from the extent size hint.
+
 . ./common/preamble
-_begin_fstest auto quick prealloc rw
+_begin_fstest auto quick prealloc rw unreliable_in_parallel
 
 . ./common/filter
 
index ea09817fd56bf4bf797986fe6dcb83ee8909edb9..fc4767acb66a55be0b193237350b88ea8ac1bef4 100755 (executable)
@@ -8,8 +8,13 @@
 # filesystem, and that we can read the health reports after the fact.  IOWs,
 # this is basic testing for the systemd background services.
 #
+
+# unreliable_in_parallel: this appears to try to run scrub services on all
+# mounted filesystems - that's aproblem when there are a hundred other test
+# filesystems mounted running other tests...
+
 . ./common/preamble
-_begin_fstest auto scrub
+_begin_fstest auto scrub unreliable_in_parallel
 
 _cleanup()
 {