]> git-server-git.apps.pok.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
fstests: cleanup old files to respect mount options needing new inodes
authorQu Wenruo <wqu@suse.com>
Thu, 28 May 2026 11:16:59 +0000 (20:46 +0930)
committerZorro Lang <zlang@kernel.org>
Fri, 29 May 2026 09:13:01 +0000 (17:13 +0800)
[BUG]
Test case generic/362 and generic/365 will fail with nodatasum, but
that's only when TEST_DEV is newly formatted.

 FSTYP         -- btrfs
 PLATFORM      -- Linux/x86_64 btrfs-vm 7.1.0-rc4-custom+ #381 SMP PREEMPT_DYNAMIC Tue May 26 10:47:14 ACST 2026
 MKFS_OPTIONS  -- -O bgt -K /dev/mapper/test-scratch1
 MOUNT_OPTIONS -- -o nodatasum /dev/mapper/test-scratch1 /mnt/scratch

  generic/362  0s ... - output mismatch (see /home/adam/xfstests/results//generic/362.out.bad)
    --- tests/generic/362.out 2024-08-24 15:31:37.200000000 +0930
    +++ /home/adam/xfstests/results//generic/362.out.bad 2026-05-28 16:18:33.866141979 +0930
    @@ -1,2 +1,3 @@
     QA output created by 362
    +First write failed: Input/output error
     Silence is golden
    ...
    (Run 'diff -u /home/adam/xfstests/tests/generic/362.out /home/adam/xfstests/results//generic/362.out.bad'  to see the entire diff)

  generic/364  11s ... - output mismatch (see /home/adam/xfstests/results//generic/364.out.bad)
    --- tests/generic/364.out 2024-09-30 09:09:51.216666681 +0930
    +++ /home/adam/xfstests/results//generic/364.out.bad 2026-05-28 16:18:34.318532257 +0930
    @@ -1,2 +1,3 @@
     QA output created by 364
    +Fsync failed: Input/output error
     Silence is golden
    ...
    (Run 'diff -u /home/adam/xfstests/tests/generic/364.out /home/adam/xfstests/results//generic/364.out.bad'  to see the entire diff)

But if one has formated TEST_DEV, run test with default mount option,
then change the mount option to "nodatasum", the test will not fail
anymore:

 FSTYP         -- btrfs
 PLATFORM      -- Linux/x86_64 btrfs-vm 7.1.0-rc4-custom+ #381 SMP PREEMPT_DYNAMIC Tue May 26 10:47:14 ACST 2026
 MKFS_OPTIONS  -- -O bgt -K /dev/mapper/test-scratch1
 MOUNT_OPTIONS -- /dev/mapper/test-scratch1 /mnt/scratch

 generic/362  0s ...  1s
 generic/364  11s ...  10s
 Ran: generic/362 generic/364
 Passed all 2 tests

 FSTYP         -- btrfs
 PLATFORM      -- Linux/x86_64 btrfs-vm 7.1.0-rc4-custom+ #381 SMP PREEMPT_DYNAMIC Tue May 26 10:47:14 ACST 2026
 MKFS_OPTIONS  -- -O bgt -K /dev/mapper/test-scratch1
 MOUNT_OPTIONS -- -o nodatasum /dev/mapper/test-scratch1 /mnt/scratch

 generic/362  1s ...  0s
 generic/364  10s ...  11s
 Ran: generic/362 generic/364
 Passed all 2 tests

[CAUSE]
Btrfs' nodatasum mount option only affects new files, but the test cases
are using TEST_DEV, and never delete the target files
"$TEST_DIR/dio-append-buf-fault" for generic/362 and
"$TEST_DIR/dio-write-fsync-same-fd" for generic/364.

So if the files are created with default mount options, then all later
"nodatasum" mount options will not affect those files, thus hide the test
failure.

[FIX]
For all test cases utilizing "$here/src/dio*", add a _cleanup()
function, to remove target files, so that for mount options that only
affect new inodes, the mount options will be respected, and expose
failures.

Now generic/36[24] will properly fail for "nodatasum" mount option on
btrfs.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Zorro Lang <zlang@kernel.org>
Reviewed-by: Anand Jain <asj@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
tests/generic/362
tests/generic/364
tests/generic/418
tests/generic/708

index 0cfaa726be7025520ff3145d6478051b50d29044..e54d44b011b5087f8e23b118cb334a9e9f83e69d 100755 (executable)
 . ./common/preamble
 _begin_fstest auto quick
 
+_cleanup()
+{
+       cd /
+       rm -f "$tmp.*"
+       rm -f "$TEST_DIR/dio-append-buf-fault"
+}
+
 # NFS forbade open with O_APPEND|O_DIRECT
 _exclude_fs nfs
 
index f7fb002ff85815333db61dc30109ec13338668cb..bc82bc0ded2a31843903ea7e2a5901aad0803802 100755 (executable)
 . ./common/preamble
 _begin_fstest auto quick
 
+_cleanup()
+{
+       cd /
+       rm -f "$tmp.*"
+       rm -f "$TEST_DIR/dio-write-fsync-same-fd"
+}
+
 _require_test
 _require_odirect
 _require_test_program dio-write-fsync-same-fd
index 36789198c88e1008260572c0833a324f1c33f7c0..7ef1ef9f4cf255dbeaa95aaeeec81921f93e2b2e 100755 (executable)
@@ -26,6 +26,13 @@ _require_block_device $TEST_DEV
 _require_test_program "dio-invalidate-cache"
 _require_test_program "feature"
 
+_cleanup()
+{
+       cd /
+       rm -f "$tmp.*"
+       rm -f "$testfile"
+}
+
 diotest=$here/src/dio-invalidate-cache
 testfile=$TEST_DIR/$seq-diotest
 sectorsize=`$here/src/min_dio_alignment $TEST_DIR $TEST_DEV`
index 827dac134b92055cf0efc83acac7483fb084f6e0..f504ca578ac5380a2e915602a192a69fcb59dfb6 100755 (executable)
 . ./common/preamble
 _begin_fstest quick auto mmap
 
+_cleanup()
+{
+       cd /
+       rm -f "$tmp.*"
+       rm -f "$src" "$dst"
+}
+
 _fixed_by_fs_commit btrfs b73a6fd1b1ef \
                "btrfs: split partial dio bios before submit"