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. 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. 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" - 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 -- 2.25.1