All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: XiaoLi Feng <xifeng@redhat.com>
Cc: <fstests@vger.kernel.org>
Subject: Re: [PATCH v3] generic/608: verify S_DAX is active immediately for DONTCACHE
Date: Wed, 24 Feb 2021 16:31:15 +0800	[thread overview]
Message-ID: <60360ED3.40709@cn.fujitsu.com> (raw)
In-Reply-To: <20210219164438.26747-1-xifeng@redhat.com>

On 2021/2/20 0:44, XiaoLi Feng wrote:
> From: Xiaoli Feng <xifeng@redhat.com>
>
> After upstream linux patches(77573fa310d, 88149082bb8), if
> FS_XFLAG_DAX is set, DONTCACHE is also set. So S_DAX on the file

What do you mean that if FS_XFLAG_DAX is set, DONTCACHE is also set?
It seems that enabling FS_XFLAG_DAX will set DCACHE_DONTCACHE and
I_DONTCACHE automatically.

> should be active immediately once FS_XFLAG_DAX is set.
> ---
>  tests/generic/608 | 42 ++++++++++++++++++++----------------------
>  1 file changed, 20 insertions(+), 22 deletions(-)
>
> diff --git a/tests/generic/608 b/tests/generic/608
> index dd89d91c..b207602e 100755
> --- a/tests/generic/608
> +++ b/tests/generic/608
> @@ -6,7 +6,10 @@
>  # Change FS_XFLAG_DAX on an existing file and check if S_DAX on
>  # the file can take effect immediately by the following steps:
>  # 1) Stop all applications which are using the file.
> -# 2) Do drop_caches or umount & mount cycle.
> +# 2) Enable the dax flag on the file that no applications are using. 

How about the following comment:
1) When no applications are using an existing file, changing FS_XFLAG_DAX
on the file make S_DAX take effect immediately.
2) When some applications are using an existing file, changing FS_XFLAG_DAX
on the file make S_DAX take effect immediately util all applications stop
using it.

> +# The upstream commit 88149082bb8 make the S_DAX take effect 
> +# immediately because the inode is no longer cached and will re-read
> +# from disk.

Commit 77573fa310d makes S_DAX take effect immediately(i.e. don't depend
drop_caches or umount & mount cycle).
Commit 88149082bb8 is trying to resolve another bug.

>  
>  seq=`basename $0`
>  seqres=$RESULT_DIR/$seq
> @@ -36,7 +39,7 @@ _require_dax_iflag
>  _require_xfs_io_command "lsattr" "-v"
>  _require_xfs_io_command "statx" "-r"
>  
> -test_drop_caches()
> +test_caches()
>  {
>  	local t_file=$SCRATCH_MNT/testfile
>  
> @@ -49,24 +52,19 @@ test_drop_caches()
>  
>  	$XFS_IO_PROG -c 'chattr +x' $t_file
>  	_check_xflag $t_file 1
> -	_check_s_dax $t_file 0
> -
>  	# One application is using test file and check if S_DAX on
> -	# the file doesn't take effect immediately by drop_caches
> -	echo 2 > /proc/sys/vm/drop_caches
> +	# the file doesn't take effect immediately.
>  	_check_s_dax $t_file 0
>  
>  	exec 3<&-
>  
>  	# No application is using test file and check if S_DAX on
> -	# the file takes effect immediately by drop_caches
> -	echo 2 > /proc/sys/vm/drop_caches
> +	# the file takes effect immediately
>  	_check_s_dax $t_file 1
>  }
>  
> -test_cycle_mount()
> +test_nocache()
>  {
> -	local option=$1
>  	local t_dir=$SCRATCH_MNT/testdir
>  	local t_file=$t_dir/testfile
>  
> @@ -77,30 +75,30 @@ test_cycle_mount()
>  	_check_xflag $t_file 1
>  	_check_s_dax $t_file 1
>  
> -	exec 3< $t_file
> -
> -	$XFS_IO_PROG -c 'chattr -x' $t_file
> +	$XFS_IO_PROG -c 'chattr -x -R' $t_dir
>  	_check_xflag $t_file 0
> -	_check_s_dax $t_file 1
> +	_check_s_dax $t_file 0
>  
> -	exec 3<&-
> +	$XFS_IO_PROG -c 'chattr +x' $t_file
> +	# Here S_DAX on the file will take effect immediately
> +	# because of inode DONTCACHE. 
> +	_check_xflag $t_file 1
> +	_check_s_dax $t_file 1

Why do you need the extra steps?
------------------------------------
78 $XFS_IO_PROG -c 'chattr -x -R' $t_dir
79 _check_xflag $t_file 0
80 _check_s_dax $t_file 0
81
82 $XFS_IO_PROG -c 'chattr +x' $t_file
83 # Here S_DAX on the file will take effect immediately
84 # because of inode DONTCACHE.
85 _check_xflag $t_file 1
86 _check_s_dax $t_file 1
------------------------------------

Best Regards,
Xiao Yang
>  
> -	# No application is using test file and check if S_DAX on
> -	# the file takes effect immediately by umount & mount
> -	_scratch_cycle_mount "$option"
> +	$XFS_IO_PROG -c 'chattr -x' $t_file
> +	_check_xflag $t_file 0
>  	_check_s_dax $t_file 0
>  }
>  
>  do_tests()
>  {
>  	local mount_option=$1
> -	local cycle_mount_option=$2
>  
>  	_scratch_mount "$mount_option"
>  
> -	test_drop_caches
> +	test_caches
>  
> -	test_cycle_mount "$cycle_mount_option"
> +	test_nocache
>  
>  	_scratch_unmount
>  }
> @@ -108,7 +106,7 @@ do_tests()
>  _scratch_mkfs >> $seqres.full 2>&1
>  
>  # Mount with dax option
> -do_tests "-o dax=inode" "dax=inode"
> +do_tests "-o dax=inode"
>  
>  # Mount without dax option
>  export MOUNT_OPTIONS=""




      reply	other threads:[~2021-02-24  8:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-19 16:44 [PATCH v3] generic/608: verify S_DAX is active immediately for DONTCACHE XiaoLi Feng
2021-02-24  8:31 ` Xiao Yang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=60360ED3.40709@cn.fujitsu.com \
    --to=yangx.jy@cn.fujitsu.com \
    --cc=fstests@vger.kernel.org \
    --cc=xifeng@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.