[PATCH] fstests: generic/362: remove the old file to reflect new mount options

Qu Wenruo <[email protected]>
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-btrfs
Message-ID <[email protected]>
[HIDDEN BUG]
There is a btrfs bug that will only trigger on newly formated TEST_DEV,
with mount option "nodatasum":

 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-26 16:24:40.201201849 +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)

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 ...  0s
 Ran: generic/362
 Passed all 1 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  0s ...  0s
 Ran: generic/362
 Passed all 1 tests

[CAUSE]
Btrfs' nodatasum mount option only affect new files, but the test case
itself is using TEST_DEV, and never delete the file
"$TEST_DIR/dio-append-buf-fault"

So if the file is created with default mount option, then all later
"nodatasum" mount option will not affect that file, thus hide the test
failure.

[FIX]
Always delete the target file "$TEST_DIR/dio-append-buf-fault" before
running dio-append-buf-fault command.

So that the new target file is always newly created and will follow
btrfs' new mount option and expose the failure for nodatasum.

Signed-off-by: Qu Wenruo <[email protected]>
---
I'm already looking into the test failure, because it's mostly hidden by
the btrfs' falling back to buffered IO behavior.

With the incoming IOMAP_DIO_BOUNCE usage inside btrfs, it will expose
the failure unconditionally.
---
 tests/generic/362 | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/generic/362 b/tests/generic/362
index 0cfaa726..86191e57 100755
--- a/tests/generic/362
+++ b/tests/generic/362
@@ -20,6 +20,10 @@ _require_test_program dio-append-buf-fault
 _fixed_by_fs_commit btrfs 939b656bc8ab \
 	"btrfs: fix corruption after buffer fault in during direct IO append write"
 
+# Remove the existing file, so a new inode can be created, and will be
+# affected by changed mount options.
+rm -rf $TEST_DIR/dio-append-buf-fault
+
 # On error the test program writes messages to stderr, causing a golden output
 # mismatch and making the test fail.
 $here/src/dio-append-buf-fault $TEST_DIR/dio-append-buf-fault
-- 
2.51.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.