On Fri, Oct 20, 2017 at 10:56:56PM +0300, Anatoly Pugachev wrote: > 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 Oh, drat, md5 hashes. I guess we'll have to increase the hardcoded blocksize to 64k and fix all the resulting test failures. :( Will try to do that next week. --D > ... > (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 fstests" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- 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