mbox series

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

Message ID 20180912062626.14349-1-chandan@linux.vnet.ibm.com (mailing list archive)
Headers show
Series Fix tests to work on non-4k block sized fs instances | expand

Message

Chandan Rajendra Sept. 12, 2018, 6:26 a.m. UTC
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(-)

Comments

Zorro Lang Sept. 18, 2018, 5:20 a.m. UTC | #1
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

It test passed on xfstests which doesn't merged above patches:

# ./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 16s ...  16s
Ran: xfs/050
Passed all 1 tests

Thanks,
Zorro

[1] Ext4 test passed on 64k block size:
# ./check generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459
FSTYP         -- ext4
PLATFORM      -- Linux/ppc64le ibm-p9z-16-lp5 4.18.0-xfs-debug
MKFS_OPTIONS  -- -b 65536 /dev/sda5
MOUNT_OPTIONS -- -o acl,user_xattr -o context=system_u:object_r:root_t:s0 /dev/sda5 /mnt/xfstests/mnt2

generic/018 7s ...  7s
generic/102 5s ...  44s
generic/108 9s ...  6s
generic/172 16s ... [not run] Reflink not supported by scratch filesystem type: ext4
generic/177 5s ...  5s
generic/230 19s ...  18s
generic/235 4s ...  5s
generic/459 26s ...  19s
Ran: generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459
Not run: generic/172
Passed all 8 tests

[2] XFS test passed on 64k block size:
# ./check generic/018 generic/102 generic/108 generic/172 generic/177  generic/230 generic/235 generic/459 xfs/009 xfs/050 xfs/074 xfs/127 xfs/139 xfs/140 xfs/190 xfs/299 xfs/325
FSTYP         -- xfs (debug)
PLATFORM      -- Linux/ppc64le ibm-p9z-16-lp5 4.18.0-xfs-debug
MKFS_OPTIONS  -- -f -b size=65536 /dev/sda5
MOUNT_OPTIONS -- -o context=system_u:object_r:root_t:s0 /dev/sda5 /mnt/xfstests/mnt2

generic/018 5s ...  7s
generic/102 6s ...  5s
generic/108 16s ...  9s
generic/172 12s ...  16s
generic/177 14s ...  5s
generic/230 29s ...  19s
generic/235 5s ...  4s
generic/459 24s ...  26s
xfs/009 6s ...  6s
xfs/050 68s ...  34s
xfs/074 14s ...  7s
xfs/127 16s ...  25s
xfs/139 266s ...  33s
xfs/140 427s ...  90s
xfs/190 27s ...  7s
xfs/299 24s ...  20s
xfs/325 10s ...  9s
Ran: generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459 xfs/009 xfs/050 xfs/074 xfs/127 xfs/139 xfs/140 xfs/190 xfs/299 xfs/325
Passed all 17 tests

[3] Ext4 test passed on default block size
# ./check generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459
FSTYP         -- ext4
PLATFORM      -- Linux/ppc64le ibm-p9z-16-lp5 4.18.0-xfs-debug
MKFS_OPTIONS  -- /dev/sda5
MOUNT_OPTIONS -- -o acl,user_xattr -o context=system_u:object_r:root_t:s0 /dev/sda5 /mnt/xfstests/mnt2

generic/018 7s ...  4s
generic/102 44s ...  52s
generic/108 6s ...  7s
generic/172 16s ... [not run] Reflink not supported by scratch filesystem type: ext4
generic/177 5s ...  3s
generic/230 18s ...  16s
generic/235 5s ...  2s
generic/459 19s ...  22s
Ran: generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459
Not run: generic/172
Passed all 8 tests

[4] XFS test passed on default block size
# ./check generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459 xfs/009 xfs/050 xfs/074 xfs/127 xfs/139 xfs/140 xfs/190 xfs/299 xfs/325
FSTYP         -- xfs (debug)
PLATFORM      -- Linux/ppc64le ibm-p9z-16-lp5 4.18.0-xfs-debug                                            
MKFS_OPTIONS  -- -f -bsize=4096 /dev/sda5
MOUNT_OPTIONS -- -o context=system_u:object_r:root_t:s0 /dev/sda5 /mnt/xfstests/mnt2                      

generic/018 8s ...  5s
generic/102 70s ...  6s
generic/108 7s ...  7s
generic/172 16s ...  11s
generic/177 6s ...  4s
generic/230 18s ...  15s
generic/235 5s ...  3s
generic/459 21s ...  20s
xfs/009 6s ...  3s
xfs/050 34s ...  18s
xfs/074 7s ...  9s
xfs/127 25s ...  14s
xfs/139 33s ...  243s
xfs/140 90s ...  286s
xfs/190 7s ...  10s
xfs/299 20s ...  13s
xfs/325 9s ...  4s
Ran: generic/018 generic/102 generic/108 generic/172 generic/177 generic/230 generic/235 generic/459 xfs/009 xfs/050 xfs/074 xfs/127 xfs/139 xfs/140 xfs/190 xfs/299 xfs/325
Passed all 17 tests

> 2.9.5
>
Chandan Rajendra Sept. 18, 2018, 10:28 a.m. UTC | #2
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.