Hi, Please ignore the patch set due to the wrong serial number. Sorry, I will resend it soon. Best Regards, Xiao Yang -----Original Message----- From: Yang, Xiao/杨 晓 <yangx.jy@xxxxxxxxxxx> Sent: 2022年10月23日 14:41 To: djwong@xxxxxxxxxx; zlang@xxxxxxxxxx Cc: fstests@xxxxxxxxxxxxxxx; bfoster@xxxxxxxxxx; Yang, Xiao/杨 晓 <yangx.jy@xxxxxxxxxxx> Subject: [PATCH 2/3] generic/470: Replace thin volume with blkdiscard -z generic/470 was original designed to verify mmap(MAP_SYNC) which is only vaild to the DAX capable device(e.g. PMEM). Thin volume[1] was introduced to fix the inconsistent filesystem issue[2] but it make the test become not run because it doesn't support DAX. As Darrick mentioned[3], discarding the entire mapped range of scartch device can fix the issue as well, so I try to use blkdiscard -z instead. [1]: https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/commit/?id=fc5870da485aec0f9196a0f2bed32f73f6b2c664 [2]: https://lore.kernel.org/fstests/20190227061529.GF16436@dastard/ [3]: https://lore.kernel.org/linux-xfs/Y1NRNtToQTjs0Dbd@magnolia/T/#me0e77cb0ecd80bf4b5109e4433cb4863ae6e6727 Signed-off-by: Xiao Yang <yangx.jy@xxxxxxxxxxx> --- tests/generic/470 | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/tests/generic/470 b/tests/generic/470 index f3407511..d2846a38 100755 --- a/tests/generic/470 +++ b/tests/generic/470 @@ -15,38 +15,29 @@ _cleanup() { cd / _log_writes_cleanup - _dmthin_cleanup rm -f $tmp.* } # Import common functions. . ./common/filter -. ./common/dmthin . ./common/dmlogwrites # real QA test starts here _supported_fs generic -_require_scratch_nocheck +_require_scratch _require_no_logdev _require_log_writes_dax_mountopt "dax" -_require_dm_target thin-pool _require_xfs_io_command "mmap" "-S" _require_xfs_io_command "log_writes" +_require_command "$BLKDISCARD_PROG" blkdiscard -devsize=$((1024*1024*200 / 512)) # 200m phys/virt size -csize=$((1024*64 / 512)) # 64k cluster size -lowspace=$((1024*1024 / 512)) # 1m low space threshold - -# Use a thin device to provide deterministic discard behavior. Discards are used -# by the log replay tool for fast zeroing to prevent out-of-order replay issues. -_dmthin_init $devsize $devsize $csize $lowspace +RANGE=$((512 * 1024 * 1024)) # 512 MiB +LEN=$((1024 * 1024)) # 1 MiB -_log_writes_init $DMTHIN_VOL_DEV +_log_writes_init $SCRATCH_DEV $RANGE _log_writes_mkfs >> $seqres.full 2>&1 _log_writes_mount -o dax -LEN=$((1024 * 1024)) # 1 MiB - $XFS_IO_PROG -t -c "truncate $LEN" -c "mmap -S 0 $LEN" -c "mwrite 0 $LEN" \ -c "log_writes -d $LOGWRITES_NAME -m preunmap" \ -f $SCRATCH_MNT/test @@ -54,14 +45,16 @@ $XFS_IO_PROG -t -c "truncate $LEN" -c "mmap -S 0 $LEN" -c "mwrite 0 $LEN" \ # Unmount the scratch dir and tear down the log writes target _log_writes_unmount _log_writes_remove -_dmthin_check_fs +_check_scratch_fs -# destroy previous filesystem so we can be sure our rebuild works -_mkfs_dev $DMTHIN_VOL_DEV >> $seqres.full 2>&1 +# Discard the mapped range of scratch device and destroy previous +filesystem # so we can be sure our rebuild works $BLKDISCARD_PROG -fzl +$RANGE $SCRATCH_DEV >> $seqres.full 2>&1 _scratch_mkfs >> $seqres.full +2>&1 # check pre-unmap state -_log_writes_replay_log preunmap $DMTHIN_VOL_DEV -_dmthin_mount +_log_writes_replay_log preunmap $SCRATCH_DEV _scratch_mount # We should see $SCRATCH_MNT/test as having 1 MiB in block allocations du -sh $SCRATCH_MNT/test | _filter_scratch | _filter_spaces -- 2.34.1