Message ID | 20200630135951.21202-7-yangx.jy@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Make fstests support new behavior of DAX | expand |
On Tue, Jun 30, 2020 at 09:59:51PM +0800, Xiao Yang wrote: > 1) Both ext4 and xfs have supported inode DAX flag so move it to generic. > 2) Modifying inode DAX flag on flies does not take effect immediately so > make files inherit the DAX flag of parent directory. > 3) Setting/clearing inode DAX flag have no chance to change S_DAX flag if > mount with dax option so remove the related subtest. > > Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com> > Signed-off-by: Ira Weiny <ira.weiny@intel.com> > --- > tests/{xfs/260 => generic/603} | 63 +++++++++++++++++----------------- > tests/generic/603.out | 2 ++ > tests/generic/group | 1 + > tests/xfs/260.out | 2 -- > tests/xfs/group | 1 - > 5 files changed, 34 insertions(+), 35 deletions(-) > rename tests/{xfs/260 => generic/603} (60%) > create mode 100644 tests/generic/603.out > delete mode 100644 tests/xfs/260.out > > diff --git a/tests/xfs/260 b/tests/generic/603 > similarity index 60% > rename from tests/xfs/260 > rename to tests/generic/603 > index 7afc20f1..f40048f9 100755 > --- a/tests/xfs/260 > +++ b/tests/generic/603 > @@ -2,7 +2,7 @@ > # SPDX-License-Identifier: GPL-2.0 > # Copyright (c) 2017 Red Hat Inc. All Rights Reserved. > # > -# FS QA Test 260 > +# FS QA Test 603 > # > # Test per-inode DAX flag by mmap direct/buffered IO. > # > @@ -28,7 +28,7 @@ _cleanup() > # remove previous $seqres.full before test > rm -f $seqres.full > > -_supported_fs xfs > +_supported_fs generic > _supported_os Linux > _require_scratch_dax_mountopt "dax" > _require_test_program "feature" > @@ -36,68 +36,72 @@ _require_test_program "t_mmap_dio" > _require_scratch_dax_iflag > _require_xfs_io_command "falloc" > > -prep_files() > +SRC_DIR=$SCRATCH_MNT/src > +SRC_FILE=$SRC_DIR/tf_s > +DST_DIR=$SCRATCH_MNT/dst > +DST_FILE=$DST_DIR/tf_d > + > +prep_directories() > { > - rm -f $SCRATCH_MNT/tf_{s,d} > + mkdir -p $SRC_DIR $DST_DIR > +} > > +prep_files() > +{ > + rm -f $SRC_FILE $DST_FILE > $XFS_IO_PROG -f -c "falloc 0 $tsize" \ > - $SCRATCH_MNT/tf_{s,d} >> $seqres.full 2>&1 > + $SRC_FILE $DST_FILE >> $seqres.full 2>&1 > } > > t_both_dax() > { > + $XFS_IO_PROG -c "chattr +x" $SRC_DIR $DST_DIR > prep_files > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} > # with O_DIRECT first > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} $1 "dio both dax" > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > + $1 "dio both dax" > > prep_files > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} > # again with buffered IO > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > $1 "buffered both dax" > } > > t_nondax_to_dax() > { > + $XFS_IO_PROG -c "chattr -x" $SRC_DIR > + $XFS_IO_PROG -c "chattr +x" $DST_DIR > prep_files > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > $1 "dio nondax to dax" > > prep_files > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > $1 "buffered nondax to dax" > } > > t_dax_to_nondax() > { > + $XFS_IO_PROG -c "chattr +x" $SRC_DIR > + $XFS_IO_PROG -c "chattr -x" $DST_DIR > prep_files > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > $1 "dio dax to nondax" > > prep_files > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > $1 "buffered dax to nondax" > } > > t_both_nondax() > { > + $XFS_IO_PROG -c "chattr -x" $SRC_DIR $DST_DIR > prep_files > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > $1 "dio both nondax" > > prep_files > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > $1 "buffered both nondax" > } > > @@ -112,6 +116,7 @@ t_dax_flag_mmap_dio() > > do_tests() > { > + prep_directories > # less than page size > t_dax_flag_mmap_dio 1024 > # page size > @@ -124,15 +129,9 @@ do_tests() > # make xfs aligned for PMD fault testing > _scratch_mkfs_geom $(_get_hugepagesize) 1 >> $seqres.full 2>&1 > > -# mount with dax option > -_scratch_mount "-o dax" > - > tsize=$((128 * 1024 * 1024)) > > -do_tests > -_scratch_unmount > - > -# mount again without dax option > +# mount without dax option NIT: we could mention that this defaults to the dax=inode state for the FS now... but I don't think it is absolutely necessary. Reviewed-by: Ira Weiny <ira.weiny@intel.com> > export MOUNT_OPTIONS="" > _scratch_mount > do_tests > diff --git a/tests/generic/603.out b/tests/generic/603.out > new file mode 100644 > index 00000000..6810da89 > --- /dev/null > +++ b/tests/generic/603.out > @@ -0,0 +1,2 @@ > +QA output created by 603 > +Silence is golden > diff --git a/tests/generic/group b/tests/generic/group > index d9ab9a31..1d0d5606 100644 > --- a/tests/generic/group > +++ b/tests/generic/group > @@ -605,3 +605,4 @@ > 600 auto quick quota > 601 auto quick quota > 602 auto quick encrypt > +603 auto attr quick dax > diff --git a/tests/xfs/260.out b/tests/xfs/260.out > deleted file mode 100644 > index 18ca517c..00000000 > --- a/tests/xfs/260.out > +++ /dev/null > @@ -1,2 +0,0 @@ > -QA output created by 260 > -Silence is golden > diff --git a/tests/xfs/group b/tests/xfs/group > index daf54add..71c30898 100644 > --- a/tests/xfs/group > +++ b/tests/xfs/group > @@ -257,7 +257,6 @@ > 257 auto quick clone > 258 auto quick clone > 259 auto quick > -260 auto attr quick dax > 261 auto quick quota > 262 dangerous_fuzzers dangerous_scrub dangerous_online_repair > 263 auto quick quota > -- > 2.21.0 > > >
On 2020/7/1 4:41, Ira Weiny wrote: > On Tue, Jun 30, 2020 at 09:59:51PM +0800, Xiao Yang wrote: >> 1) Both ext4 and xfs have supported inode DAX flag so move it to generic. >> 2) Modifying inode DAX flag on flies does not take effect immediately so >> make files inherit the DAX flag of parent directory. >> 3) Setting/clearing inode DAX flag have no chance to change S_DAX flag if >> mount with dax option so remove the related subtest. >> >> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com> >> Signed-off-by: Ira Weiny<ira.weiny@intel.com> >> --- >> tests/{xfs/260 => generic/603} | 63 +++++++++++++++++----------------- >> tests/generic/603.out | 2 ++ >> tests/generic/group | 1 + >> tests/xfs/260.out | 2 -- >> tests/xfs/group | 1 - >> 5 files changed, 34 insertions(+), 35 deletions(-) >> rename tests/{xfs/260 => generic/603} (60%) >> create mode 100644 tests/generic/603.out >> delete mode 100644 tests/xfs/260.out >> >> diff --git a/tests/xfs/260 b/tests/generic/603 >> similarity index 60% >> rename from tests/xfs/260 >> rename to tests/generic/603 >> index 7afc20f1..f40048f9 100755 >> --- a/tests/xfs/260 >> +++ b/tests/generic/603 >> @@ -2,7 +2,7 @@ >> # SPDX-License-Identifier: GPL-2.0 >> # Copyright (c) 2017 Red Hat Inc. All Rights Reserved. >> # >> -# FS QA Test 260 >> +# FS QA Test 603 >> # >> # Test per-inode DAX flag by mmap direct/buffered IO. >> # >> @@ -28,7 +28,7 @@ _cleanup() >> # remove previous $seqres.full before test >> rm -f $seqres.full >> >> -_supported_fs xfs >> +_supported_fs generic >> _supported_os Linux >> _require_scratch_dax_mountopt "dax" >> _require_test_program "feature" >> @@ -36,68 +36,72 @@ _require_test_program "t_mmap_dio" >> _require_scratch_dax_iflag >> _require_xfs_io_command "falloc" >> >> -prep_files() >> +SRC_DIR=$SCRATCH_MNT/src >> +SRC_FILE=$SRC_DIR/tf_s >> +DST_DIR=$SCRATCH_MNT/dst >> +DST_FILE=$DST_DIR/tf_d >> + >> +prep_directories() >> { >> - rm -f $SCRATCH_MNT/tf_{s,d} >> + mkdir -p $SRC_DIR $DST_DIR >> +} >> >> +prep_files() >> +{ >> + rm -f $SRC_FILE $DST_FILE >> $XFS_IO_PROG -f -c "falloc 0 $tsize" \ >> - $SCRATCH_MNT/tf_{s,d}>> $seqres.full 2>&1 >> + $SRC_FILE $DST_FILE>> $seqres.full 2>&1 >> } >> >> t_both_dax() >> { >> + $XFS_IO_PROG -c "chattr +x" $SRC_DIR $DST_DIR >> prep_files >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} >> # with O_DIRECT first >> - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} $1 "dio both dax" >> + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ >> + $1 "dio both dax" >> >> prep_files >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} >> # again with buffered IO >> - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ >> $1 "buffered both dax" >> } >> >> t_nondax_to_dax() >> { >> + $XFS_IO_PROG -c "chattr -x" $SRC_DIR >> + $XFS_IO_PROG -c "chattr +x" $DST_DIR >> prep_files >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d >> - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ >> $1 "dio nondax to dax" >> >> prep_files >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d >> - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ >> $1 "buffered nondax to dax" >> } >> >> t_dax_to_nondax() >> { >> + $XFS_IO_PROG -c "chattr +x" $SRC_DIR >> + $XFS_IO_PROG -c "chattr -x" $DST_DIR >> prep_files >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d >> - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ >> $1 "dio dax to nondax" >> >> prep_files >> - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d >> - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ >> $1 "buffered dax to nondax" >> } >> >> t_both_nondax() >> { >> + $XFS_IO_PROG -c "chattr -x" $SRC_DIR $DST_DIR >> prep_files >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} >> - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ >> $1 "dio both nondax" >> >> prep_files >> - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} >> - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ >> + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ >> $1 "buffered both nondax" >> } >> >> @@ -112,6 +116,7 @@ t_dax_flag_mmap_dio() >> >> do_tests() >> { >> + prep_directories >> # less than page size >> t_dax_flag_mmap_dio 1024 >> # page size >> @@ -124,15 +129,9 @@ do_tests() >> # make xfs aligned for PMD fault testing >> _scratch_mkfs_geom $(_get_hugepagesize) 1>> $seqres.full 2>&1 >> >> -# mount with dax option >> -_scratch_mount "-o dax" >> - >> tsize=$((128 * 1024 * 1024)) >> >> -do_tests >> -_scratch_unmount >> - >> -# mount again without dax option >> +# mount without dax option > NIT: we could mention that this defaults to the dax=inode state for the FS > now... but I don't think it is absolutely necessary. Hi Ira, I am ok to add the nit. :-) In addition, I actaully simplify the code your provided so do you have any comment on this change.? Best Regards, Xiao Yang > Reviewed-by: Ira Weiny<ira.weiny@intel.com> > > >> export MOUNT_OPTIONS="" >> _scratch_mount >> do_tests >> diff --git a/tests/generic/603.out b/tests/generic/603.out >> new file mode 100644 >> index 00000000..6810da89 >> --- /dev/null >> +++ b/tests/generic/603.out >> @@ -0,0 +1,2 @@ >> +QA output created by 603 >> +Silence is golden >> diff --git a/tests/generic/group b/tests/generic/group >> index d9ab9a31..1d0d5606 100644 >> --- a/tests/generic/group >> +++ b/tests/generic/group >> @@ -605,3 +605,4 @@ >> 600 auto quick quota >> 601 auto quick quota >> 602 auto quick encrypt >> +603 auto attr quick dax >> diff --git a/tests/xfs/260.out b/tests/xfs/260.out >> deleted file mode 100644 >> index 18ca517c..00000000 >> --- a/tests/xfs/260.out >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -QA output created by 260 >> -Silence is golden >> diff --git a/tests/xfs/group b/tests/xfs/group >> index daf54add..71c30898 100644 >> --- a/tests/xfs/group >> +++ b/tests/xfs/group >> @@ -257,7 +257,6 @@ >> 257 auto quick clone >> 258 auto quick clone >> 259 auto quick >> -260 auto attr quick dax >> 261 auto quick quota >> 262 dangerous_fuzzers dangerous_scrub dangerous_online_repair >> 263 auto quick quota >> -- >> 2.21.0 >> >> >> > > . >
On Wed, Jul 01, 2020 at 08:57:50AM +0800, Xiao Yang wrote: > On 2020/7/1 4:41, Ira Weiny wrote: > > On Tue, Jun 30, 2020 at 09:59:51PM +0800, Xiao Yang wrote: > > > 1) Both ext4 and xfs have supported inode DAX flag so move it to generic. > > > 2) Modifying inode DAX flag on flies does not take effect immediately so > > > make files inherit the DAX flag of parent directory. > > > 3) Setting/clearing inode DAX flag have no chance to change S_DAX flag if > > > mount with dax option so remove the related subtest. > > > > > > Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com> > > > Signed-off-by: Ira Weiny<ira.weiny@intel.com> > > > --- > > > tests/{xfs/260 => generic/603} | 63 +++++++++++++++++----------------- > > > tests/generic/603.out | 2 ++ > > > tests/generic/group | 1 + > > > tests/xfs/260.out | 2 -- > > > tests/xfs/group | 1 - > > > 5 files changed, 34 insertions(+), 35 deletions(-) > > > rename tests/{xfs/260 => generic/603} (60%) > > > create mode 100644 tests/generic/603.out > > > delete mode 100644 tests/xfs/260.out > > > > > > diff --git a/tests/xfs/260 b/tests/generic/603 > > > similarity index 60% > > > rename from tests/xfs/260 > > > rename to tests/generic/603 > > > index 7afc20f1..f40048f9 100755 > > > --- a/tests/xfs/260 > > > +++ b/tests/generic/603 > > > @@ -2,7 +2,7 @@ > > > # SPDX-License-Identifier: GPL-2.0 > > > # Copyright (c) 2017 Red Hat Inc. All Rights Reserved. > > > # > > > -# FS QA Test 260 > > > +# FS QA Test 603 > > > # > > > # Test per-inode DAX flag by mmap direct/buffered IO. > > > # > > > @@ -28,7 +28,7 @@ _cleanup() > > > # remove previous $seqres.full before test > > > rm -f $seqres.full > > > > > > -_supported_fs xfs > > > +_supported_fs generic > > > _supported_os Linux > > > _require_scratch_dax_mountopt "dax" > > > _require_test_program "feature" > > > @@ -36,68 +36,72 @@ _require_test_program "t_mmap_dio" > > > _require_scratch_dax_iflag > > > _require_xfs_io_command "falloc" > > > > > > -prep_files() > > > +SRC_DIR=$SCRATCH_MNT/src > > > +SRC_FILE=$SRC_DIR/tf_s > > > +DST_DIR=$SCRATCH_MNT/dst > > > +DST_FILE=$DST_DIR/tf_d > > > + > > > +prep_directories() > > > { > > > - rm -f $SCRATCH_MNT/tf_{s,d} > > > + mkdir -p $SRC_DIR $DST_DIR > > > +} > > > > > > +prep_files() > > > +{ > > > + rm -f $SRC_FILE $DST_FILE > > > $XFS_IO_PROG -f -c "falloc 0 $tsize" \ > > > - $SCRATCH_MNT/tf_{s,d}>> $seqres.full 2>&1 > > > + $SRC_FILE $DST_FILE>> $seqres.full 2>&1 > > > } > > > > > > t_both_dax() > > > { > > > + $XFS_IO_PROG -c "chattr +x" $SRC_DIR $DST_DIR > > > prep_files > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} > > > # with O_DIRECT first > > > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} $1 "dio both dax" > > > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > > > + $1 "dio both dax" > > > > > > prep_files > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} > > > # again with buffered IO > > > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > > > $1 "buffered both dax" > > > } > > > > > > t_nondax_to_dax() > > > { > > > + $XFS_IO_PROG -c "chattr -x" $SRC_DIR > > > + $XFS_IO_PROG -c "chattr +x" $DST_DIR > > > prep_files > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d > > > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > > > $1 "dio nondax to dax" > > > > > > prep_files > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d > > > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > > > $1 "buffered nondax to dax" > > > } > > > > > > t_dax_to_nondax() > > > { > > > + $XFS_IO_PROG -c "chattr +x" $SRC_DIR > > > + $XFS_IO_PROG -c "chattr -x" $DST_DIR > > > prep_files > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d > > > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > > > $1 "dio dax to nondax" > > > > > > prep_files > > > - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d > > > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > > > $1 "buffered dax to nondax" > > > } > > > > > > t_both_nondax() > > > { > > > + $XFS_IO_PROG -c "chattr -x" $SRC_DIR $DST_DIR > > > prep_files > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} > > > - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ > > > $1 "dio both nondax" > > > > > > prep_files > > > - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} > > > - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ > > > + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ > > > $1 "buffered both nondax" > > > } > > > > > > @@ -112,6 +116,7 @@ t_dax_flag_mmap_dio() > > > > > > do_tests() > > > { > > > + prep_directories > > > # less than page size > > > t_dax_flag_mmap_dio 1024 > > > # page size > > > @@ -124,15 +129,9 @@ do_tests() > > > # make xfs aligned for PMD fault testing > > > _scratch_mkfs_geom $(_get_hugepagesize) 1>> $seqres.full 2>&1 > > > > > > -# mount with dax option > > > -_scratch_mount "-o dax" > > > - > > > tsize=$((128 * 1024 * 1024)) > > > > > > -do_tests > > > -_scratch_unmount > > > - > > > -# mount again without dax option > > > +# mount without dax option > > NIT: we could mention that this defaults to the dax=inode state for the FS > > now... but I don't think it is absolutely necessary. > Hi Ira, > > I am ok to add the nit. :-) > In addition, I actaully simplify the code your provided so do you have any > comment on this change.? No I think what you have here is good. Thanks... Reviewed-by: Ira Weiny <ira.weiny@intel.com> > > Best Regards, > Xiao Yang > > Reviewed-by: Ira Weiny<ira.weiny@intel.com> > > > > > > > export MOUNT_OPTIONS="" > > > _scratch_mount > > > do_tests > > > diff --git a/tests/generic/603.out b/tests/generic/603.out > > > new file mode 100644 > > > index 00000000..6810da89 > > > --- /dev/null > > > +++ b/tests/generic/603.out > > > @@ -0,0 +1,2 @@ > > > +QA output created by 603 > > > +Silence is golden > > > diff --git a/tests/generic/group b/tests/generic/group > > > index d9ab9a31..1d0d5606 100644 > > > --- a/tests/generic/group > > > +++ b/tests/generic/group > > > @@ -605,3 +605,4 @@ > > > 600 auto quick quota > > > 601 auto quick quota > > > 602 auto quick encrypt > > > +603 auto attr quick dax > > > diff --git a/tests/xfs/260.out b/tests/xfs/260.out > > > deleted file mode 100644 > > > index 18ca517c..00000000 > > > --- a/tests/xfs/260.out > > > +++ /dev/null > > > @@ -1,2 +0,0 @@ > > > -QA output created by 260 > > > -Silence is golden > > > diff --git a/tests/xfs/group b/tests/xfs/group > > > index daf54add..71c30898 100644 > > > --- a/tests/xfs/group > > > +++ b/tests/xfs/group > > > @@ -257,7 +257,6 @@ > > > 257 auto quick clone > > > 258 auto quick clone > > > 259 auto quick > > > -260 auto attr quick dax > > > 261 auto quick quota > > > 262 dangerous_fuzzers dangerous_scrub dangerous_online_repair > > > 263 auto quick quota > > > -- > > > 2.21.0 > > > > > > > > > > > > > . > > > > >
diff --git a/tests/xfs/260 b/tests/generic/603 similarity index 60% rename from tests/xfs/260 rename to tests/generic/603 index 7afc20f1..f40048f9 100755 --- a/tests/xfs/260 +++ b/tests/generic/603 @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2017 Red Hat Inc. All Rights Reserved. # -# FS QA Test 260 +# FS QA Test 603 # # Test per-inode DAX flag by mmap direct/buffered IO. # @@ -28,7 +28,7 @@ _cleanup() # remove previous $seqres.full before test rm -f $seqres.full -_supported_fs xfs +_supported_fs generic _supported_os Linux _require_scratch_dax_mountopt "dax" _require_test_program "feature" @@ -36,68 +36,72 @@ _require_test_program "t_mmap_dio" _require_scratch_dax_iflag _require_xfs_io_command "falloc" -prep_files() +SRC_DIR=$SCRATCH_MNT/src +SRC_FILE=$SRC_DIR/tf_s +DST_DIR=$SCRATCH_MNT/dst +DST_FILE=$DST_DIR/tf_d + +prep_directories() { - rm -f $SCRATCH_MNT/tf_{s,d} + mkdir -p $SRC_DIR $DST_DIR +} +prep_files() +{ + rm -f $SRC_FILE $DST_FILE $XFS_IO_PROG -f -c "falloc 0 $tsize" \ - $SCRATCH_MNT/tf_{s,d} >> $seqres.full 2>&1 + $SRC_FILE $DST_FILE >> $seqres.full 2>&1 } t_both_dax() { + $XFS_IO_PROG -c "chattr +x" $SRC_DIR $DST_DIR prep_files - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} # with O_DIRECT first - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} $1 "dio both dax" + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ + $1 "dio both dax" prep_files - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_{s,d} # again with buffered IO - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ $1 "buffered both dax" } t_nondax_to_dax() { + $XFS_IO_PROG -c "chattr -x" $SRC_DIR + $XFS_IO_PROG -c "chattr +x" $DST_DIR prep_files - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ $1 "dio nondax to dax" prep_files - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_s - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_d - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ $1 "buffered nondax to dax" } t_dax_to_nondax() { + $XFS_IO_PROG -c "chattr +x" $SRC_DIR + $XFS_IO_PROG -c "chattr -x" $DST_DIR prep_files - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ $1 "dio dax to nondax" prep_files - $XFS_IO_PROG -c "chattr +x" $SCRATCH_MNT/tf_s - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_d - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ $1 "buffered dax to nondax" } t_both_nondax() { + $XFS_IO_PROG -c "chattr -x" $SRC_DIR $DST_DIR prep_files - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} - $here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio $SRC_FILE $DST_FILE \ $1 "dio both nondax" prep_files - $XFS_IO_PROG -c "chattr -x" $SCRATCH_MNT/tf_{s,d} - $here/src/t_mmap_dio -b $SCRATCH_MNT/tf_{s,d} \ + $here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \ $1 "buffered both nondax" } @@ -112,6 +116,7 @@ t_dax_flag_mmap_dio() do_tests() { + prep_directories # less than page size t_dax_flag_mmap_dio 1024 # page size @@ -124,15 +129,9 @@ do_tests() # make xfs aligned for PMD fault testing _scratch_mkfs_geom $(_get_hugepagesize) 1 >> $seqres.full 2>&1 -# mount with dax option -_scratch_mount "-o dax" - tsize=$((128 * 1024 * 1024)) -do_tests -_scratch_unmount - -# mount again without dax option +# mount without dax option export MOUNT_OPTIONS="" _scratch_mount do_tests diff --git a/tests/generic/603.out b/tests/generic/603.out new file mode 100644 index 00000000..6810da89 --- /dev/null +++ b/tests/generic/603.out @@ -0,0 +1,2 @@ +QA output created by 603 +Silence is golden diff --git a/tests/generic/group b/tests/generic/group index d9ab9a31..1d0d5606 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -605,3 +605,4 @@ 600 auto quick quota 601 auto quick quota 602 auto quick encrypt +603 auto attr quick dax diff --git a/tests/xfs/260.out b/tests/xfs/260.out deleted file mode 100644 index 18ca517c..00000000 --- a/tests/xfs/260.out +++ /dev/null @@ -1,2 +0,0 @@ -QA output created by 260 -Silence is golden diff --git a/tests/xfs/group b/tests/xfs/group index daf54add..71c30898 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -257,7 +257,6 @@ 257 auto quick clone 258 auto quick clone 259 auto quick -260 auto attr quick dax 261 auto quick quota 262 dangerous_fuzzers dangerous_scrub dangerous_online_repair 263 auto quick quota