Re: [PATCH] fstests: generic/362: remove the old file to reflect new mount options
Filipe Manana <[email protected]>
| Newsgroups | org.kernel.vger.fstests,org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <CAL3q7H7Axijwfd_c3X2Ni1XEu4=0wdf3Cc6tqKF8+O+Rx++fPg@mail.gmail.com> |
On Tue, May 26, 2026 at 8:02 AM Qu Wenruo <[email protected]> wrote: > > [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 We can just remove the file in a _cleanup function - that's what most other tests that exercise faults during direct IO do, like generic/647. Some tests like this one are missing that, and there's at least one more: generic/708. We had several similar tests, and many were copied from another test. Thanks. > + > # 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 > >