diff mbox series

[v3,6/6] xfs/260: Move and update xfs/260

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

Commit Message

Xiao Yang June 30, 2020, 1:59 p.m. UTC
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

Comments

Ira Weiny June 30, 2020, 8:41 p.m. UTC | #1
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
> 
> 
>
Xiao Yang July 1, 2020, 12:57 a.m. UTC | #2
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
>>
>>
>>
>
> .
>
Ira Weiny July 1, 2020, 4:07 p.m. UTC | #3
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 mbox series

Patch

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