Re: [PATCH] xfs: fail dax mount if reflink is enabled on a partition

From: Dave Chinner
Date: Wed Nov 02 2022 - 22:32:48 EST


On Wed, Nov 02, 2022 at 05:17:18AM +0000, ruansy.fnst@xxxxxxxxxxx wrote:
>
> 在 2022/11/2 8:45, Darrick J. Wong 写道:
> > On Sun, Oct 30, 2022 at 05:31:43PM +0800, Shiyang Ruan wrote:
> > FWIW things have calmed down as of 6.1-rc3 -- if I disable reflink,
> > fstests runs without complaint. Now it only seems to be affecting
> > reflink=1 filesystems. >
> >> And how is your recent test? Still failed with those dmesg warnings? If so,
> >> could you zip the test result and send it to me?
> >
> > https://djwong.org/docs/kernel/daxbad.zip
>
> Thanks for your info!
>
> (To Dave) I need your recent test result too. If cases won't fail when
> reflink disabled, I'll focusing on solving the warning when reflink enabled.

My first run on 6.1-rc3 with reflink disabled was clean. Then I ran
a few tests with reflink enabled, and they all failed as expected.
Then I ran the no-reflink tests again, and then they all failed,
too. Nothing changed between test configs, I didn't even reboot the
test machine:

$ history |tail -5
500 sudo ./run_check.sh --mkfs-opts "-m rmapbt=1,reflink=0" --run-opts "-s xfs_dax xfs/55[12]"
501 sudo ./run_check.sh --mkfs-opts "-m rmapbt=1,reflink=0"
--run-opts "-s xfs_dax_noreflink generic/051 generic/068
generic/074 generic/075 generic/083 generic/112 generic/231
generic/232 generic/269 generic/270 generic/340 generic/388
generic/461 generic/471 generic/476 generic/519 generic/560
generic/561 generic/617 generic/650 generic/656 xfs/011 xfs/013
xfs/017 xfs/073 xfs/297 xfs/305 xfs/517 xfs/538"
502 sudo ./run_check.sh --mkfs-opts "-m rmapbt=1" --run-opts
"-s xfs_dax generic/051 generic/068 generic/074 generic/075
generic/083 generic/112 generic/231 generic/232 generic/269
generic/270 generic/340 generic/388 generic/461 generic/471
generic/476 generic/519 generic/560 generic/561 generic/617
generic/650 generic/656 xfs/011 xfs/013 xfs/017 xfs/073 xfs/297
xfs/305 xfs/517 xfs/538"
503 sudo ./run_check.sh --mkfs-opts "-m rmapbt=1,reflink=0"
--run-opts "-s xfs_dax_noreflink generic/051 generic/068
generic/074 generic/075 generic/083 generic/112 generic/231
generic/232 generic/269 generic/270 generic/340 generic/388
generic/461 generic/471 generic/476 generic/519 generic/560
generic/561 generic/617 generic/650 generic/656 xfs/011
xfs/013 xfs/017 xfs/073 xfs/297 xfs/305 xfs/517 xfs/538"
504 history |tail -5
$

The first noreflink run:

SECTION -- xfs_dax_noreflink
=========================
Failures: generic/471 generic/519 xfs/073
Failed 3 of 29 tests

Which are typical failures for this config.

The first reflink enabled run I killed almost immediately as it
threw multiple warnings in the first couple of tests:

Running: MOUNT_OPTIONS= ./check -R xunit -b -s xfs_dax generic/051 generic/068 generic/074 generic/075 generic/083 generic/112 generic/231 generic/232 generic/269 generic/270 generic/340 generic/388 generic/461 generic/471 generic/476 generic/519 generic/560 generic/561 generic/617 generic/650 generic/656 xfs/011 xfs/013 xfs/017 xfs/073 xfs/297 xfs/305 xfs/517 xfs/538
SECTION -- xfs_dax
FSTYP -- xfs (debug)
PLATFORM -- Linux/x86_64 test3 6.1.0-rc3-dgc+ #1649 SMP PREEMPT_DYNAMIC Wed Nov 2 07:58:17 AEDT 2022
MKFS_OPTIONS -- -f -m rmapbt=1 /dev/pmem1
MOUNT_OPTIONS -- -o dax=always -o context=system_u:object_r:root_t:s0 /dev/pmem1 /mnt/scratch

generic/051 79s ... _check_dmesg: something found in dmesg (see /home/dave/src/xfstests-dev/results//xfs_dax/generic/051.dmesg)

generic/068 43s ... ^C
real 1m46.278s
user 0m17.465s
sys 2m9.981s
$

And then I ran the noreflink tests again to make sure the first run
wasn't a fluke:

SECTION -- xfs_dax_noreflink
=========================
Failures: generic/051 generic/068 generic/231 generic/269
generic/270 generic/340 generic/388 generic/461 generic/471
generic/476 generic/519 generic/560 generic/561 xfs/011 xfs/013
xfs/073 xfs/297 xfs/305 xfs/517 xfs/538
Failed 20 of 29 tests

It was a fluke - most of the tests failed this time with dax
mapping warnings. dmesg from the entire set of test runs is
attached.

-Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx

Attachment: dmesg.log.gz
Description: application/gzip