On Fri, Oct 20, 2017 at 8:05 PM, Darrick J. Wong <darrick.wong@xxxxxxxxxx> wrote: > On Fri, Oct 20, 2017 at 07:52:31PM +0300, Anatoly Pugachev wrote: >> Can someone look into this issue? > > Does the following xfstests patch help? > > --D > > diff --git a/common/punch b/common/punch > index c4ed261..5648bd8 100644 > --- a/common/punch > +++ b/common/punch > @@ -341,13 +341,26 @@ _test_generic_punch() > testfile=$6 > multiple=1 > > + # This routine was originally written for fallocate modes that > + # don't have alignment requirements so the (sort of) hardcoded > + # 4k offsets didn't matter. fcollapse and finsert require > + # block-aligned arguments, so increase $multiple until we get > + # to the file's minimum data block size. > + case "$zero_cmd" in > + "fcollapse"|"finsert") > + touch $testfile > + bs=$(_get_file_block_size $testfile) > + test "$bs" -gt 4096 && multiple=$((bs / 4096)) > + ;; > + esac > + > # > # If we are testing collapse range, we increare all the offsets of this > # test by a factor of 4. We do this because unlike punch, collapse > # range also decreases the size of file hence require bigger offsets. > # > if [ "$zero_cmd" == "fcollapse" ]; then > - multiple=4 > + multiple=$((multiple * 4)) > fi > > _4k="$((multiple * 4))k" > diff --git a/common/rc b/common/rc > index fe68d67..b585016 100644 > --- a/common/rc > +++ b/common/rc > @@ -2063,8 +2063,8 @@ _require_xfs_io_command() > param_checked=1 > ;; > "fpunch" | "fcollapse" | "zero" | "fzero" | "finsert" | "funshare") > - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > - -c "$command 4k 8k" $testfile 2>&1` > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 256k" -c "fsync" \ > + -c "$command 64k 128k" $testfile 2>&1` > ;; > "fiemap") > testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ Darrick, I had to change from bs=$(_get_file_block_size $testfile) to bs=$(_get_file_block_size $testdir) since _get_file_block_size gets directory as a parameter (and i'm puzzled why it's called _get_file_block_size, if it really wants a directory as a parameter, and there's _get_block_size as well). the patch makes test as passed, but with error. For example, with the default mkfs.xfs (4k block size), it is executed as follows: root@ttip:xfstests-dev# mkfs.xfs -f /dev/vdiskb1 specified blocksize 4096 is less than device physical sector size 8192 switching to logical sector size 512 meta-data=/dev/vdiskb1 isize=512 agcount=4, agsize=1966016 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0 data = bsize=4096 blocks=7864064, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=3839, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 root@ttip:xfstests-dev# ./check generic/012 FSTYP -- xfs (debug) PLATFORM -- Linux/sparc64 ttip 4.14.0-rc5 MKFS_OPTIONS -- -f -m reflink=1 /dev/loop0 MOUNT_OPTIONS -- /dev/loop0 /1/scratch generic/012 2s ... 1s Ran: generic/012 Passed all 1 tests but if I change block size, it ends with an error: root@ttip:xfstests-dev# mkfs.xfs -f -b size=8192 /dev/vdiskb1 meta-data=/dev/vdiskb1 isize=512 agcount=4, agsize=983008 blks = sectsz=8192 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0 data = bsize=8192 blocks=3932032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=8192 ascii-ci=0 ftype=1 log =internal log bsize=8192 blocks=1919, version=2 = sectsz=8192 sunit=1 blks, lazy-count=1 realtime =none extsz=8192 blocks=0, rtextents=0 root@ttip:xfstests-dev# ./check generic/012 FSTYP -- xfs (debug) PLATFORM -- Linux/sparc64 ttip 4.14.0-rc5 MKFS_OPTIONS -- -f -m reflink=1 /dev/loop0 MOUNT_OPTIONS -- /dev/loop0 /1/scratch generic/012 1s ... - output mismatch (see /1/mator/xfstests-dev/results/generic/012.out.bad) --- tests/generic/012.out 2016-09-24 11:51:48.238890811 +0300 +++ /1/mator/xfstests-dev/results/generic/012.out.bad 2017-10-20 21:54:51.594814663 +0300 @@ -1,49 +1,49 @@ QA output created by 012 1. into a hole -f4f35d60b3cc18aaa6d8d92f0cd3708a +0a9156c4e3c48ef827980639c4d1e263 2. into allocated space -0: [0..95]: extent -f1894a71ac539f6f90426d98a4990a47 ... (Run 'diff -u tests/generic/012.out /1/mator/xfstests-dev/results/generic/012.out.bad' to see the entire diff) Ran: generic/012 Failures: generic/012 Failed 1 of 1 tests root@ttip:xfstests-dev# cat results/generic/012.out.bad QA output created by 012 1. into a hole 0a9156c4e3c48ef827980639c4d1e263 2. into allocated space 0: [0..191]: extent 6f1f8907250bdbf673e1e55212b56b82 3. into unwritten space 0: [0..191]: extent 39bf78f7c676fdcf11558ad3a1a23aef 4. hole -> data 0: [0..127]: extent 1: [128..191]: hole c9a5ea7ad1648eee6202850420432dfc 5. hole -> unwritten 0: [0..127]: extent 1: [128..191]: hole 39bf78f7c676fdcf11558ad3a1a23aef 6. data -> hole 0: [0..63]: extent 1: [64..191]: hole 39bf78f7c676fdcf11558ad3a1a23aef 7. data -> unwritten 0: [0..127]: extent 1: [128..191]: hole 39bf78f7c676fdcf11558ad3a1a23aef 8. unwritten -> hole 0: [0..63]: extent 1: [64..191]: hole 39bf78f7c676fdcf11558ad3a1a23aef 9. unwritten -> data 0: [0..127]: extent 1: [128..191]: hole c9a5ea7ad1648eee6202850420432dfc 10. hole -> data -> hole 0: [0..63]: extent 1: [64..127]: hole d5755b0153a84fc6789af22ab8d1bb04 11. data -> hole -> data 0: [0..127]: extent 27c9068d1b51da575a53ad34c57ca5cc 12. unwritten -> data -> unwritten 0: [0..127]: extent d5755b0153a84fc6789af22ab8d1bb04 13. data -> unwritten -> data 0: [0..127]: extent 27c9068d1b51da575a53ad34c57ca5cc 14. data -> hole @ 0 0: [0..191]: extent 6f1f8907250bdbf673e1e55212b56b82 root@ttip:xfstests-dev# -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html