Re: [PATCH v2 6/6] xfs/260: Move xfs/260 to generic

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On 2020/6/19 23:15, Ira Weiny wrote:
On Thu, Jun 18, 2020 at 11:35:56PM +0800, Xiao Yang wrote:
On 6/18/20 5:48 AM, Ira Weiny wrote:
On Wed, Jun 17, 2020 at 05:32:04PM +0800, Xiao Yang wrote:
From: Xiao Yang<yangx.jy@xxxxxxxxxxxxxx>

Both ext4 and xfs support per-inode DAX flag now so move it to generic.

Signed-off-by: Xiao Yang<yangx.jy@xxxxxxxxxxxxxx>
Unfortunately this test needs to be modified to work with the final agreed upon
method for switching DAX, patch below.  Feel free to squash it into this patch
for v3.

There are more checks I had queued up but I'm happy to wait for this series to
be applied.

Again, thanks for moving this along!
Ira

  From 97b67a2773627cfe91b5f33a418ab646bb5fd0a8 Mon Sep 17 00:00:00 2001
From: Ira Weiny<ira.weiny@xxxxxxxxx>
Date: Wed, 17 Jun 2020 14:34:45 -0700
Subject: [PATCH] generic/602: Modify to work with agreed inheritance of DAX flag

Modifying the DAX flag on flies does not take effect immediately.  The
easiest way to ensure the file state for this test is to use inheritance
of the parent directory DAX state.
Hi Ira,

Modifying the DAX flag on directories can take effect immediately, right?
Yes and any file created under that directory will inherit the DAX flag
immediately.

Modify the test to use 2 directories which we can switch the DAX state on
and create the test files in those directories after setting the desired
state.
Good addition, and I will squash it into this v3 patch. :-)

BTW:

I wait someone(Darrick, Eryu or others) to review the code about PMD fault
testing in this patch set.
Yes, thanks.  I don't feel familiar enough with that code to review it.

Ira

Best Regards,

Xiao Yang

Signed-off-by: Ira Weiny<ira.weiny@xxxxxxxxx>
---
   tests/generic/602 | 81 +++++++++++++++++++++++++++++------------------
   1 file changed, 51 insertions(+), 30 deletions(-)

diff --git a/tests/generic/602 b/tests/generic/602
index 9137c5b9385f..20bf2c6bd246 100755
--- a/tests/generic/602
+++ b/tests/generic/602
@@ -36,68 +36,95 @@ _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
+
+clean_files()
   {
-	rm -f $SCRATCH_MNT/tf_{s,d}
+	rm -f $SRC_FILE
+	rm -f $DST_FILE
+	mkdir -p $SRC_DIR
+	mkdir -p $DST_DIR
+}
+
+prep_files()
+{
+	$XFS_IO_PROG -f -c "falloc 0 $tsize" \
+		$SRC_FILE>>  $seqres.full 2>&1
   	$XFS_IO_PROG -f -c "falloc 0 $tsize" \
-		$SCRATCH_MNT/tf_{s,d}>>  $seqres.full 2>&1
+		$DST_FILE>>  $seqres.full 2>&1
   }
   t_both_dax()
   {
+	clean_files
+	$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,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"
+	clean_files
+	$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,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()
   {
+	clean_files
+	$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"
+	clean_files
+	$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 -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()
   {
+	clean_files
+	$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"
+	clean_files
+	$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 -b $SCRATCH_MNT/tf_{s,d} \
+	$here/src/t_mmap_dio -b $SRC_FILE $DST_FILE \
   		$1 "buffered dax to nondax"
   }
   t_both_nondax()
   {
+	clean_files
+	$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,d}
-	$here/src/t_mmap_dio $SCRATCH_MNT/tf_{s,d} \
+	$here/src/t_mmap_dio $SRC_FILE $DST_FILE \
   		$1 "dio both nondax"
+	clean_files
+	$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,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"
   }
@@ -124,17 +151,11 @@ 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"
-
Hi Ira,

Why do you want to remove this combination(i.e. test per-inode DAX flag under mounting with dax option) ?
Is it because mounting with dax option ignore FS_XFLAG_DAX flag?
I think it is a reasonable combination. :-)

   tsize=$((128 * 1024 * 1024))
-do_tests
-_scratch_unmount
-
   # mount again without dax option
   export MOUNT_OPTIONS=""
-_scratch_mount
+_scratch_mount "-o dax=inode"
   do_tests
   # success, all done

Could we keep _scratch_mount without dax so that this test can run on both old and new kernel?
See the following reasons:
1) FS_XFLAG_DAX was introduced by commit 58f88ca("xfs: introduce per-inode DAX enablement") since 2017.
2) _scratch_mount with dax=inode is equal to _scratch_mount without dax.

Best Regards,
Xiao Yang

.







[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux