2018-01-17 23:23:57

by Ross Zwisler

[permalink] [raw]
Subject: [fstests PATCH 1/2] shared/272: don't use data journaling with DAX

shared/272 fails with kernels v4.15-rc1 and beyond when you are mounted
with DAX:

shared/272 [failed, exit status 1] - output mismatch (see
/root/project/xfstests/results//shared/272.out.bad)
--- tests/shared/272.out 2015-12-05 13:12:17.038257578 -0700
+++ /root/project/xfstests/results//shared/272.out.bad 2018-01-17
15:37:18.581631116 -0700
@@ -1,3 +1,3 @@
QA output created by 272
Switch data journalling mode. Silence is golden.
-Check filesystem
+/usr/bin/chattr: Device or resource busy while setting flags on
/mnt/xfstests_scratch/file.1
...
(Run 'diff -u tests/shared/272.out
/root/project/xfstests/results//shared/272.out.bad' to see the entire
diff)

This is expected. The following kernel commit:

commit e9072d859df3 ("ext4: prevent data corruption with journaling + DAX")

makes "chattr +j", which is attempting to turn on data journaling, return
-EBUSY if the ext4 DAX mount option is in use. This was done to prevent
the data corruption shown in xfstest ext4/030, added by this xfstests
commit:

commit 750a24e99e48 ("ext4: test for DAX + journaling corruption")

So, just skip shared/272 if the DAX mount option is in use.

Signed-off-by: Ross Zwisler <[email protected]>
---
tests/shared/272 | 1 +
1 file changed, 1 insertion(+)

diff --git a/tests/shared/272 b/tests/shared/272
index 7023b657..0c9763df 100755
--- a/tests/shared/272
+++ b/tests/shared/272
@@ -83,6 +83,7 @@ chattr_opt: $chattr_opt" >>$seqres.full
_supported_fs ext3 ext4
_supported_os Linux
_require_scratch
+_exclude_scratch_mount_option dax

rm -f $seqres.full
_scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seqres.full 2>&1
--
2.14.3


2018-01-17 23:23:51

by Ross Zwisler

[permalink] [raw]
Subject: [fstests PATCH 2/2] generic/347: dm-thin lacks DAX support

generic/347 currently fails when run in cojunction with the DAX mount
option:

generic/347 72s ... - output mismatch (see
/root/project/xfstests/results//generic/347.out.bad)
--- tests/generic/347.out 2016-05-12 11:56:32.086618744 -0600
+++ /root/project/xfstests/results//generic/347.out.bad 2018-01-17
16:04:33.459348448 -0700
@@ -1,2 +1,3 @@
QA output created by 347
+mount: /mnt/xfstests_scratch: can't read superblock on
/dev/mapper/thin-vol.
=== completed
...
(Run 'diff -u tests/generic/347.out
/root/project/xfstests/results//generic/347.out.bad' to see the entire
diff)

This is expected because the dm-thin target currently lacks DAX support.

Just skip this test if we are using DAX.

Signed-off-by: Ross Zwisler <[email protected]>
---
tests/generic/347 | 1 +
1 file changed, 1 insertion(+)

diff --git a/tests/generic/347 b/tests/generic/347
index 3adc6744..0c2dec98 100755
--- a/tests/generic/347
+++ b/tests/generic/347
@@ -72,6 +72,7 @@ _supported_fs generic
_supported_os Linux
_require_scratch_nocheck
_require_dm_target thin-pool
+_exclude_scratch_mount_option dax

_setup_thin
_workout
--
2.14.3

2018-01-18 04:23:43

by Eryu Guan

[permalink] [raw]
Subject: Re: [fstests PATCH 2/2] generic/347: dm-thin lacks DAX support

On Wed, Jan 17, 2018 at 04:23:51PM -0700, Ross Zwisler wrote:
> generic/347 currently fails when run in cojunction with the DAX mount
> option:
>
> generic/347 72s ... - output mismatch (see
> /root/project/xfstests/results//generic/347.out.bad)
> --- tests/generic/347.out 2016-05-12 11:56:32.086618744 -0600
> +++ /root/project/xfstests/results//generic/347.out.bad 2018-01-17
> 16:04:33.459348448 -0700
> @@ -1,2 +1,3 @@
> QA output created by 347
> +mount: /mnt/xfstests_scratch: can't read superblock on
> /dev/mapper/thin-vol.
> === completed
> ...
> (Run 'diff -u tests/generic/347.out
> /root/project/xfstests/results//generic/347.out.bad' to see the entire
> diff)
>
> This is expected because the dm-thin target currently lacks DAX support.
>
> Just skip this test if we are using DAX.
>
> Signed-off-by: Ross Zwisler <ross.zwisler-VuQAYsv1563Yd54FQh9/[email protected]>
> ---
> tests/generic/347 | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tests/generic/347 b/tests/generic/347
> index 3adc6744..0c2dec98 100755
> --- a/tests/generic/347
> +++ b/tests/generic/347
> @@ -72,6 +72,7 @@ _supported_fs generic
> _supported_os Linux
> _require_scratch_nocheck
> _require_dm_target thin-pool
> +_exclude_scratch_mount_option dax

IMHO, it'd be better to put this in common/dmthin file, as what's done
in common/dmerror or common/dmflakey (we grep for dax directly there,
that's because they've been added before _exclude_scratch_mount_option
was introduced), so all thinp tests are excluded from dax tests.

Thanks,
Eryu

>
> _setup_thin
> _workout
> --
> 2.14.3
>

2018-01-18 16:06:02

by Ross Zwisler

[permalink] [raw]
Subject: Re: [fstests PATCH 2/2] generic/347: dm-thin lacks DAX support

On Thu, Jan 18, 2018 at 12:23:43PM +0800, Eryu Guan wrote:
> On Wed, Jan 17, 2018 at 04:23:51PM -0700, Ross Zwisler wrote:
> > generic/347 currently fails when run in cojunction with the DAX mount
> > option:
> >
> > generic/347 72s ... - output mismatch (see
> > /root/project/xfstests/results//generic/347.out.bad)
> > --- tests/generic/347.out 2016-05-12 11:56:32.086618744 -0600
> > +++ /root/project/xfstests/results//generic/347.out.bad 2018-01-17
> > 16:04:33.459348448 -0700
> > @@ -1,2 +1,3 @@
> > QA output created by 347
> > +mount: /mnt/xfstests_scratch: can't read superblock on
> > /dev/mapper/thin-vol.
> > === completed
> > ...
> > (Run 'diff -u tests/generic/347.out
> > /root/project/xfstests/results//generic/347.out.bad' to see the entire
> > diff)
> >
> > This is expected because the dm-thin target currently lacks DAX support.
> >
> > Just skip this test if we are using DAX.
> >
> > Signed-off-by: Ross Zwisler <[email protected]>
> > ---
> > tests/generic/347 | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/tests/generic/347 b/tests/generic/347
> > index 3adc6744..0c2dec98 100755
> > --- a/tests/generic/347
> > +++ b/tests/generic/347
> > @@ -72,6 +72,7 @@ _supported_fs generic
> > _supported_os Linux
> > _require_scratch_nocheck
> > _require_dm_target thin-pool
> > +_exclude_scratch_mount_option dax
>
> IMHO, it'd be better to put this in common/dmthin file, as what's done
> in common/dmerror or common/dmflakey (we grep for dax directly there,
> that's because they've been added before _exclude_scratch_mount_option
> was introduced), so all thinp tests are excluded from dax tests.

Sure, will do. Thanks for the review.

2018-01-18 16:07:37

by Ross Zwisler

[permalink] [raw]
Subject: [fstests PATCH v2] generic/347: dm-thin lacks DAX support

generic/347 currently fails when run in conjunction with the DAX mount
option:

generic/347 72s ... - output mismatch (see
/root/project/xfstests/results//generic/347.out.bad)
--- tests/generic/347.out 2016-05-12 11:56:32.086618744 -0600
+++ /root/project/xfstests/results//generic/347.out.bad 2018-01-17
16:04:33.459348448 -0700
@@ -1,2 +1,3 @@
QA output created by 347
+mount: /mnt/xfstests_scratch: can't read superblock on
/dev/mapper/thin-vol.
=== completed
...
(Run 'diff -u tests/generic/347.out
/root/project/xfstests/results//generic/347.out.bad' to see the entire
diff)

This is expected because the dm-thin target currently lacks DAX support.

Just skip this test if we are using DAX.

Signed-off-by: Ross Zwisler <[email protected]>
---
common/dmthin | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/common/dmthin b/common/dmthin
index baab6284..da0ad284 100644
--- a/common/dmthin
+++ b/common/dmthin
@@ -35,6 +35,11 @@ DMTHIN_POOL_DEV="/dev/mapper/$DMTHIN_POOL_NAME"
DMTHIN_VOL_NAME="thin-vol"
DMTHIN_VOL_DEV="/dev/mapper/$DMTHIN_VOL_NAME"

+echo $MOUNT_OPTIONS | grep -q dax
+if [ $? -eq 0 ]; then
+ _notrun "Cannot run tests with DAX on dmthin devices"
+fi
+
_dmthin_cleanup()
{
$UMOUNT_PROG $SCRATCH_MNT > /dev/null 2>&1
--
2.14.3