From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: Xiao Yang <yangx.jy@cn.fujitsu.com>
Cc: <fstests@vger.kernel.org>, <darrick.wong@oracle.com>,
<ira.weiny@intel.com>, <guaneryu@gmail.com>
Subject: Re: [PATCH v2] generic: Verify how to change the S_DAX flag on an existing file
Date: Wed, 5 Aug 2020 10:55:45 +0800 [thread overview]
Message-ID: <5F2A1FB1.9020403@cn.fujitsu.com> (raw)
In-Reply-To: <20200805024507.32702-1-yangx.jy@cn.fujitsu.com>
Hi Darrick, Ira
If you prove the v2 patch, I will add the combination(without dax option)
into all related tests from my v8 patch set.
Thanks,
Xiao Yang
On 2020/8/5 10:45, Xiao Yang wrote:
> 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.
>
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
> ---
>
> Note: It is based on the following patch set:
> https://www.spinics.net/lists/fstests/msg14457.html
>
> V1->V2:
> Add a combination(without dax option) to do tests.
>
> tests/generic/608 | 121 ++++++++++++++++++++++++++++++++++++++++++
> tests/generic/608.out | 2 +
> tests/generic/group | 1 +
> 3 files changed, 124 insertions(+)
> create mode 100644 tests/generic/608
> create mode 100644 tests/generic/608.out
>
> diff --git a/tests/generic/608 b/tests/generic/608
> new file mode 100644
> index 00000000..705ae4b3
> --- /dev/null
> +++ b/tests/generic/608
> @@ -0,0 +1,121 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2020 Fujitsu. All Rights Reserved.
> +#
> +# FS QA Test 608
> +# 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.
> +
> +seq=`basename $0`
> +seqres=$RESULT_DIR/$seq
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=1 # failure is the default!
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +_cleanup()
> +{
> + cd /
> + rm -f $tmp.*
> +}
> +
> +# get standard environment, filters and checks
> +. ./common/rc
> +. ./common/filter
> +
> +# remove previous $seqres.full before test
> +rm -f $seqres.full
> +
> +_supported_fs generic
> +_supported_os Linux
> +_require_scratch_dax_mountopt "dax=always"
> +_require_dax_iflag
> +_require_xfs_io_command "lsattr" "-v"
> +_require_xfs_io_command "statx" "-r"
> +
> +test_drop_caches()
> +{
> + local t_file=$SCRATCH_MNT/testfile
> +
> + rm -f $t_file
> + touch $t_file
> + _check_xflag $t_file 0
> + _check_s_dax $t_file 0
> +
> + exec 3< $t_file
> +
> + $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
> + _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
> + _check_s_dax $t_file 1
> +}
> +
> +test_cycle_mount()
> +{
> + local option=$1
> + local t_dir=$SCRATCH_MNT/testdir
> + local t_file=$t_dir/testfile
> +
> + mkdir -p $t_dir
> + $XFS_IO_PROG -c 'chattr +x' $t_dir
> + rm -f $t_file
> + touch $t_file
> + _check_xflag $t_file 1
> + _check_s_dax $t_file 1
> +
> + exec 3< $t_file
> +
> + $XFS_IO_PROG -c 'chattr -x' $t_file
> + _check_xflag $t_file 0
> + _check_s_dax $t_file 1
> +
> + exec 3<&-
> +
> + # No application is using test file and check if S_DAX on
> + # the file takes effect immediately by umount & mount
> + _scratch_cycle_mount "$option"
> + _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_cycle_mount "$cycle_mount_option"
> +
> + _scratch_unmount
> +}
> +
> +_scratch_mkfs >> $seqres.full 2>&1
> +
> +# mount with dax option
> +do_tests "-o dax=inode" "dax=inode"
> +
> +# mount without dax option
> +export MOUNT_OPTIONS=""
> +do_tests
> +
> +# success, all done
> +echo "Silence is golden"
> +status=0
> +exit
> diff --git a/tests/generic/608.out b/tests/generic/608.out
> new file mode 100644
> index 00000000..1e534458
> --- /dev/null
> +++ b/tests/generic/608.out
> @@ -0,0 +1,2 @@
> +QA output created by 608
> +Silence is golden
> diff --git a/tests/generic/group b/tests/generic/group
> index 5bd289c3..aa969bcb 100644
> --- a/tests/generic/group
> +++ b/tests/generic/group
> @@ -610,3 +610,4 @@
> 605 auto attr quick dax
> 606 auto attr quick dax
> 607 auto attr quick dax
> +608 auto attr quick dax
next prev parent reply other threads:[~2020-08-05 2:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-05 2:45 [PATCH v2] generic: Verify how to change the S_DAX flag on an existing file Xiao Yang
2020-08-05 2:55 ` Xiao Yang [this message]
2020-08-05 4:36 ` Xiao Yang
2020-08-05 15:45 ` Darrick J. Wong
2020-08-06 19:35 ` Ira Weiny
2020-08-07 1:44 ` Xiao Yang
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=5F2A1FB1.9020403@cn.fujitsu.com \
--to=yangx.jy@cn.fujitsu.com \
--cc=darrick.wong@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=ira.weiny@intel.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.