Re: [PATCH V3 00/19] Fix tests to work on non-4k block sized fs instances

Chandan Rajendra
2018-09-18T15:57:57Z

On Tuesday, September 18, 2018 10:50:27 AM IST Zorro Lang wrote:
> On Wed, Sep 12, 2018 at 11:56:07AM +0530, Chandan Rajendra wrote:
> > This patchset fixes tests (mostly XFS specific ones) to work on
> > variable block size. These patches now use the output of "od" utility
> > to verify the contents of the test files instead of the md5sum
> > utility.
> >
> > Also, The patchset modifies _filter_fiemap() filter function to
> > optionally print the file offset range in block size units.
> >
> > Changelog:
> > V2->V3:
> > Added fixes for getting generic/018, generic/108 and generic/459 tests
> > to work in 64k block size scenario.
> >
> > V1->V2:
> > Eryu Guan pointed out that some of the tests were obtaining the
> > filesystem's block size value from $TEST_DIR even though the test was
> > executed on the $SCRATCH_DEV's filesystem. This version of the
> > patchset fixes the following tests to obtain the block size from
> > $SCRATCH_MNT. The relevant changes was made to the following tests:
> > xfs/009, xfs/050, xfs/074, xfs/139, xfs/140, xfs/190, xfs/299,
> > generic/177 and generic/230.
> >
> > Chandan Rajendra (19):
> > Fix xfs/009 to work with 64k block size
> > xfs/050: Fix "Push past soft inode limit" case
> > Fix xfs/050 to work with 64k block size
> > Fix xfs/074 to work with 64k block size
> > Fix xfs/127 to work with 64k block size
> > Fix xfs/139 to work with 64k block size
> > Fix xfs/140 to work with 64k block size
> > Fix xfs/190 to work with 64k block size
> > Fix xfs/299 to work with 64k block size
> > xfs/325: Inject free_extent error after CoW operation
> > Fix generic/102 to work with 64k block size
> > Fix generic/172 to work with 64k block size
> > Filter fiemap output by FS block size
> > Fix generic/177 to work with 64k block size
> > Fix generic/230 to work with 64k block size
> > Fix generic/235 to work with 64k block size
> > Fix generic/459 to work with 64k block size
> > Fix generic/018 to work with 64k block size
> > Fix generic/108 to work with 64k block size
> >
> > common/punch | 19 ++++++++---
> > tests/generic/018 | 2 +-
> > tests/generic/102 | 4 +--
> > tests/generic/102.out | 20 +++++------
> > tests/generic/108 | 4 +--
> > tests/generic/172 | 4 +--
> > tests/generic/177 | 20 ++++++-----
> > tests/generic/177.out | 23 ++++++++-----
> > tests/generic/230 | 23 +++++++------
> > tests/generic/230.out | 16 ++++-----
> > tests/generic/235 | 2 +-
> > tests/generic/235.out | 4 +--
> > tests/generic/459 | 14 ++++----
> > tests/xfs/009 | 92 ++++++++++++++++++++++++++++++++++++++++++---------
> > tests/xfs/009.out | 66 ++++++++++++++++++------------------
> > tests/xfs/050 | 26 ++++++++++-----
> > tests/xfs/050.out | 60 ++++++++++++++++-----------------
> > tests/xfs/074 | 23 ++++++++++---
> > tests/xfs/127 | 2 +-
> > tests/xfs/139 | 15 +++++----
> > tests/xfs/139.out | 8 +++--
> > tests/xfs/140 | 12 ++++---
> > tests/xfs/190 | 26 ++++++++++-----
> > tests/xfs/299 | 29 ++++++++++------
> > tests/xfs/299.out | 60 ++++++++++++++++-----------------
> > tests/xfs/325 | 5 +--
> > tests/xfs/325.out | 2 +-
> > 27 files changed, 358 insertions(+), 223 deletions(-)
> >
>
> Hi,
>
> For help, I've tested this patchset on ppc64le machine with 4.18 released kernel.
> But only tested thoses cases which changed, 64k xfs/ext4 and 4k xfs/ext4 all
> test passed, refer to [1], [2], [3], [4].
>
> But I tested 512 block size (crc=0) XFS passingly, then hit a new failure:
>
> # ./check xfs/050
> FSTYP -- xfs (debug)
> PLATFORM -- Linux/ppc64le ibm-p9z-16-lp5 4.18.0-xfs-debug
> MKFS_OPTIONS -- -f -b size=512 -m crc=0 /dev/sda5
> MOUNT_OPTIONS -- -o context=system_u:object_r:root_t:s0 /dev/sda5 /mnt/xfstests/mnt2
>
> xfs/050 18s ... - output mismatch (see /root/xfstests-patched/results//xfs/050.out.bad)
> --- tests/xfs/050.out 2018-09-17 05:56:47.738590176 -0400
> +++ /root/xfstests-patched/results//xfs/050.out.bad 2018-09-18 01:12:55.538747111 -0400
> @@ -12,23 +12,24 @@
>
> *** report initial settings
> [ROOT] 0 0 0 00 [--------] 3 0 0 00 [--------] 0 0 0 00 [--------]
> -[NAME] 0 25 125 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------]
> +[NAME] 0 24 124 00 [--------] 1 4 10 00 [--------] 0 0 0 00 [--------]
>
> *** push past the soft inode limit
> ...
> (Run 'diff -u tests/xfs/050.out /root/xfstests-patched/results//xfs/050.out.bad' to see the entire diff)
> Ran: xfs/050
> Failures: xfs/050
> Failed 1 of 1 tests

Thanks for testing this. The mismatch happens here due to xfs_quota using 1K as
the minimum block size. I will have to think about how to solve this.

--
chandan