From patchwork Thu Aug 6 02:13:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Yang X-Patchwork-Id: 11702697 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 12E25138C for ; Thu, 6 Aug 2020 02:21:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 09FD120823 for ; Thu, 6 Aug 2020 02:21:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726360AbgHFCVo (ORCPT ); Wed, 5 Aug 2020 22:21:44 -0400 Received: from mail.cn.fujitsu.com ([183.91.158.132]:34557 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726524AbgHFCVo (ORCPT ); Wed, 5 Aug 2020 22:21:44 -0400 X-IronPort-AV: E=Sophos;i="5.75,440,1589212800"; d="scan'208";a="97677615" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 06 Aug 2020 10:21:20 +0800 Received: from G08CNEXMBPEKD04.g08.fujitsu.local (unknown [10.167.33.201]) by cn.fujitsu.com (Postfix) with ESMTP id B427D4CE34F1; Thu, 6 Aug 2020 10:21:16 +0800 (CST) Received: from G08CNEXCHPEKD05.g08.fujitsu.local (10.167.33.203) by G08CNEXMBPEKD04.g08.fujitsu.local (10.167.33.201) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 6 Aug 2020 10:21:17 +0800 Received: from Fedora-30.g08.fujitsu.local (10.167.220.106) by G08CNEXCHPEKD05.g08.fujitsu.local (10.167.33.209) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 6 Aug 2020 10:21:17 +0800 From: Xiao Yang To: CC: , , , Xiao Yang Subject: [PATCH v9 5/8] xfs/260: Move and update xfs/260 Date: Thu, 6 Aug 2020 10:13:39 +0800 Message-ID: <20200806021342.10596-6-yangx.jy@cn.fujitsu.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20200806021342.10596-1-yangx.jy@cn.fujitsu.com> References: <20200806021342.10596-1-yangx.jy@cn.fujitsu.com> MIME-Version: 1.0 X-yoursite-MailScanner-ID: B427D4CE34F1.AD939 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: yangx.jy@cn.fujitsu.com X-Spam-Status: No Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org 1) Both ext4 and xfs have supported FS_XFLAG_DAX so move it to generic. 2) Modifying FS_XFLAG_DAX on flies does not take effect immediately so make files inherit the DAX state of parent directory. 3) Setting/clearing FS_XFLAG_DAX have no chance to change S_DAX flag if mount with dax option so remove the related subtest. 4) Setting/clearing FS_XFLAG_DAX doesn't change S_DAX flag on older xfs due to commit 742d84290739 ("xfs: disable per-inode DAX flag") so only do test when fs supports new dax=inode option. Signed-off-by: Xiao Yang Signed-off-by: Ira Weiny Reviewed-by: Ira Weiny Reviewed-by: Darrick J. Wong --- tests/{xfs/260 => generic/605} | 73 +++++++++++++++++++--------------- tests/generic/605.out | 2 + tests/generic/group | 1 + tests/xfs/260.out | 2 - tests/xfs/group | 1 - 5 files changed, 43 insertions(+), 36 deletions(-) rename tests/{xfs/260 => generic/605} (58%) create mode 100644 tests/generic/605.out delete mode 100644 tests/xfs/260.out diff --git a/tests/xfs/260 b/tests/generic/605 similarity index 58% rename from tests/xfs/260 rename to tests/generic/605 index 81b42f01..b2471f02 100755 --- a/tests/xfs/260 +++ b/tests/generic/605 @@ -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 605 # # Test per-inode DAX flag by mmap direct/buffered IO. # @@ -28,76 +28,80 @@ _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_scratch_dax_mountopt "dax=always" _require_test_program "feature" _require_test_program "t_mmap_dio" _require_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,11 @@ t_dax_flag_mmap_dio() do_tests() { + local mount_option=$1 + + _scratch_mount "$mount_option" + + prep_directories # less than page size t_dax_flag_mmap_dio 1024 # page size @@ -119,22 +128,20 @@ do_tests() # bigger sizes, for PMD faults t_dax_flag_mmap_dio $((16 * 1024 * 1024)) t_dax_flag_mmap_dio $((64 * 1024 * 1024)) + + _scratch_unmount } # 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 with dax=inode option +do_tests "-o dax=inode" -# mount again without dax option +# mount without dax option export MOUNT_OPTIONS="" -_scratch_mount do_tests # success, all done diff --git a/tests/generic/605.out b/tests/generic/605.out new file mode 100644 index 00000000..1ae20049 --- /dev/null +++ b/tests/generic/605.out @@ -0,0 +1,2 @@ +QA output created by 605 +Silence is golden diff --git a/tests/generic/group b/tests/generic/group index 75d56838..d06c1bf6 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -607,3 +607,4 @@ 602 auto quick encrypt 603 auto quick quota 604 auto quick mount +605 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 d6e8d1c3..ed0d389e 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