FS/XFS testing framework
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: Re: [PATCH 6/4] xfs/17[035]: fix intermittent failures when filesystem metadata gets large
Date: Tue, 22 Mar 2022 09:11:37 -0700	[thread overview]
Message-ID: <20220322161137.GO8200@magnolia> (raw)
In-Reply-To: <20220322071556.6iajo57ilyalwfdi@zlang-mailbox>

On Tue, Mar 22, 2022 at 03:15:56PM +0800, Zorro Lang wrote:
> On Wed, Mar 16, 2022 at 03:13:26PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > These tests check that the filestreams allocator never shares an AG
> > across multiple streams when there's plenty of space in the filesystem.
> > Recent increases in metadata overhead for newer features (e.g. bigger
> > logs due to reflink) can throw this off, so add another AG to the
> > formatted filesystem to encourage it to avoid the AG with the log.
> > 
> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> 
> 
> 
> >  common/filestreams |    2 +-
> >  tests/xfs/170      |   16 +++++++++++-----
> >  tests/xfs/170.out  |    8 ++++----
> >  tests/xfs/171      |   16 ++++++++++++----
> >  tests/xfs/171.out  |    8 ++++----
> >  tests/xfs/173      |   16 ++++++++++++----
> >  tests/xfs/173.out  |    8 ++++----
> 
> Looks good to me, and test passed after merging this patch. Just one
> tiny question, the subject is "xfs/17[035]: ...", if "17[035]" mean
> 170, 173 and 175, but the files you changed are 170, 171 and 173 as
> above :)

oops.  Clearly I suck at regex. :(

Subject: xfs/17*: fix filestreams test failures when...

--D

> Reviewed-by: Zorro Lang <zlang@redhat.com>
> 
> 
> 
> >  7 files changed, 48 insertions(+), 26 deletions(-)
> > 
> > diff --git a/common/filestreams b/common/filestreams
> > index 8165effe..62acb47c 100644
> > --- a/common/filestreams
> > +++ b/common/filestreams
> > @@ -80,7 +80,7 @@ _check_for_dupes()
> >  
> >  _test_streams() {
> >  
> > -	echo "# testing $* ...."
> > +	echo "# testing $* ...." | tee -a $seqres.full
> >  	local agcount="$1"
> >  	local agsize="$2" # in MB
> >  	local stream_count="$3"
> > diff --git a/tests/xfs/170 b/tests/xfs/170
> > index 5e622d24..b9ead341 100755
> > --- a/tests/xfs/170
> > +++ b/tests/xfs/170
> > @@ -25,11 +25,17 @@ _check_filestreams_support || _notrun "filestreams not available"
> >  # test small stream, multiple I/O per file, 30s timeout
> >  _set_stream_timeout_centisecs 3000
> >  
> > -# test streams does a mkfs and mount
> > -_test_streams 8 22 4 8 3 0 0
> > -_test_streams 8 22 4 8 3 1 0
> > -_test_streams 8 22 4 8 3 0 1
> > -_test_streams 8 22 4 8 3 1 1
> > +# This test checks that the filestreams allocator never allocates space in any
> > +# given AG into more than one stream when there's plenty of space on the
> > +# filesystem.  Newer feature sets (e.g. reflink) have increased the size of
> > +# the log for small filesystems, so we make sure there's one more AG than
> > +# filestreams to encourage the allocator to skip whichever AG owns the log.
> > +#
> > +# Exercise 9x 22MB AGs, 4 filestreams, 8 files per stream, and 3MB per file.
> > +_test_streams 9 22 4 8 3 0 0
> > +_test_streams 9 22 4 8 3 1 0
> > +_test_streams 9 22 4 8 3 0 1
> > +_test_streams 9 22 4 8 3 1 1
> >  
> >  status=0
> >  exit
> > diff --git a/tests/xfs/170.out b/tests/xfs/170.out
> > index e71515e9..16dcb795 100644
> > --- a/tests/xfs/170.out
> > +++ b/tests/xfs/170.out
> > @@ -1,20 +1,20 @@
> >  QA output created by 170
> > -# testing 8 22 4 8 3 0 0 ....
> > +# testing 9 22 4 8 3 0 0 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 8 22 4 8 3 1 0 ....
> > +# testing 9 22 4 8 3 1 0 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 8 22 4 8 3 0 1 ....
> > +# testing 9 22 4 8 3 0 1 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 8 22 4 8 3 1 1 ....
> > +# testing 9 22 4 8 3 1 1 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> > diff --git a/tests/xfs/171 b/tests/xfs/171
> > index 4412fe2f..f93b6011 100755
> > --- a/tests/xfs/171
> > +++ b/tests/xfs/171
> > @@ -29,10 +29,18 @@ _check_filestreams_support || _notrun "filestreams not available"
> >  # 100 = 78.1% full, should reliably succeed
> >  _set_stream_timeout_centisecs 12000
> >  
> > -_test_streams 64 16 8 100 1 1 0
> > -_test_streams 64 16 8 100 1 1 1
> > -_test_streams 64 16 8 100 1 0 0
> > -_test_streams 64 16 8 100 1 0 1
> > +# This test tries to get close to the exact point at which the filestreams
> > +# allocator will start to allocate space from some AG into more than one
> > +# stream.  Newer feature sets (e.g. reflink) have increased the size of the log
> > +# for small filesystems, so we make sure there's one more AG than filestreams
> > +# to encourage the allocator to skip whichever AG owns the log.
> > +#
> > +# This test exercises 64x 16MB AGs, 8 filestreams, 100 files per stream, and
> > +# 1MB per file.
> > +_test_streams 65 16 8 100 1 1 0
> > +_test_streams 65 16 8 100 1 1 1
> > +_test_streams 65 16 8 100 1 0 0
> > +_test_streams 65 16 8 100 1 0 1
> >  
> >  status=0
> >  exit
> > diff --git a/tests/xfs/171.out b/tests/xfs/171.out
> > index 89407cb2..73f73c90 100644
> > --- a/tests/xfs/171.out
> > +++ b/tests/xfs/171.out
> > @@ -1,20 +1,20 @@
> >  QA output created by 171
> > -# testing 64 16 8 100 1 1 0 ....
> > +# testing 65 16 8 100 1 1 0 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 64 16 8 100 1 1 1 ....
> > +# testing 65 16 8 100 1 1 1 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 64 16 8 100 1 0 0 ....
> > +# testing 65 16 8 100 1 0 0 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 64 16 8 100 1 0 1 ....
> > +# testing 65 16 8 100 1 0 1 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> > diff --git a/tests/xfs/173 b/tests/xfs/173
> > index bce6ac51..6b18d919 100755
> > --- a/tests/xfs/173
> > +++ b/tests/xfs/173
> > @@ -26,10 +26,18 @@ _check_filestreams_support || _notrun "filestreams not available"
> >  # be less than or equal to half the AG count so we don't run out of AGs.
> >  _set_stream_timeout_centisecs 12000
> >  
> > -_test_streams 64 16 33 8 2 1 1 fail
> > -_test_streams 64 16 32 8 2 0 1
> > -_test_streams 64 16 33 8 2 0 0 fail
> > -_test_streams 64 16 32 8 2 1 0
> > +# This test checks the exact point at which the filestreams allocator will
> > +# start to allocate space from some AG into more than one stream.  Newer
> > +# feature sets (e.g. reflink) have increased the size of the log for small
> > +# filesystems, so we make sure there's one more AG than filestreams to
> > +# encourage the allocator to skip whichever AG owns the log.
> > +#
> > +# Exercise 65x 16MB AGs, 32/33 filestreams, 8 files per stream, and 2MB per
> > +# file.
> > +_test_streams 65 16 34 8 2 1 1 fail
> > +_test_streams 65 16 32 8 2 0 1
> > +_test_streams 65 16 34 8 2 0 0 fail
> > +_test_streams 65 16 32 8 2 1 0
> >  
> >  status=0
> >  exit
> > diff --git a/tests/xfs/173.out b/tests/xfs/173.out
> > index 21493057..705c352a 100644
> > --- a/tests/xfs/173.out
> > +++ b/tests/xfs/173.out
> > @@ -1,20 +1,20 @@
> >  QA output created by 173
> > -# testing 64 16 33 8 2 1 1 fail ....
> > +# testing 65 16 34 8 2 1 1 fail ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + expected failure, matching AGs
> > -# testing 64 16 32 8 2 0 1 ....
> > +# testing 65 16 32 8 2 0 1 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + passed, streams are in seperate AGs
> > -# testing 64 16 33 8 2 0 0 fail ....
> > +# testing 65 16 34 8 2 0 0 fail ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> >  + expected failure, matching AGs
> > -# testing 64 16 32 8 2 1 0 ....
> > +# testing 65 16 32 8 2 1 0 ....
> >  # streaming
> >  # sync AGs...
> >  # checking stream AGs...
> > 
> 

      reply	other threads:[~2022-03-22 16:11 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-16  3:30 [PATCHSET 0/4] fstests: random fixes Darrick J. Wong
2022-03-16  3:30 ` [PATCH 1/4] generic/459: ensure that the lvm devices have been created Darrick J. Wong
2022-03-22  4:50   ` Zorro Lang
2022-03-16  3:30 ` [PATCH 2/4] common/xfs: fix broken code in _check_xfs_filesystem Darrick J. Wong
2022-03-22  4:57   ` Zorro Lang
2022-03-16  3:30 ` [PATCH 3/4] xfs/420: fix occasional test failures due to pagecache readahead Darrick J. Wong
2022-03-22  5:13   ` Zorro Lang
2022-03-22 16:10     ` Darrick J. Wong
2022-03-16  3:30 ` [PATCH 4/4] generic/673: fix golden output to reflect vfs setgid behavior Darrick J. Wong
2022-03-22  5:24   ` Zorro Lang
2022-03-16 22:12 ` [PATCH 5/4] xfs/076: only create files on the data device Darrick J. Wong
2022-03-22  8:31   ` Zorro Lang
2022-03-16 22:13 ` [PATCH 6/4] xfs/17[035]: fix intermittent failures when filesystem metadata gets large Darrick J. Wong
2022-03-22  7:15   ` Zorro Lang
2022-03-22 16:11     ` Darrick J. Wong [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220322161137.GO8200@magnolia \
    --to=djwong@kernel.org \
    --cc=fstests@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox