All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: guaneryu@gmail.com, zlang@redhat.com
Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me,
	Allison Henderson <allison.henderson@oracle.com>,
	Catherine Hoang <catherine.hoang@oracle.com>
Subject: Re: [PATCH 2/3] xfs/018: fix LARP testing for small block sizes
Date: Thu, 7 Jul 2022 11:06:14 -0700	[thread overview]
Message-ID: <YscglleRpAIkrHiA@magnolia> (raw)
In-Reply-To: <165705853409.2820493.9590517059305128125.stgit@magnolia>

I guess I should've cc'd Allison and Catherine on this one.

Could either of you review these test changes, please?

--D

On Tue, Jul 05, 2022 at 03:02:14PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Fix this test to work properly when the filesystem block size is less
> than 4k.  Tripping the error injection points on shape changes in the
> xattr structure must be done dynamically.
> 
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> ---
>  tests/xfs/018     |   52 +++++++++++++++++++++++++++++++++++++++++++++++-----
>  tests/xfs/018.out |   16 ++++------------
>  2 files changed, 51 insertions(+), 17 deletions(-)
> 
> 
> diff --git a/tests/xfs/018 b/tests/xfs/018
> index 041a3b24..14a6f716 100755
> --- a/tests/xfs/018
> +++ b/tests/xfs/018
> @@ -54,6 +54,45 @@ test_attr_replay()
>  	echo ""
>  }
>  
> +test_attr_replay_loop()
> +{
> +	testfile=$testdir/$1
> +	attr_name=$2
> +	attr_value=$3
> +	flag=$4
> +	error_tag=$5
> +
> +	# Inject error
> +	_scratch_inject_error $error_tag
> +
> +	# Set attribute; hopefully 1000 of them is enough to cause whatever
> +	# attr structure shape change that the caller wants to test.
> +	for ((i = 0; i < 1024; i++)); do
> +		echo "$attr_value" | \
> +			${ATTR_PROG} -$flag "$attr_name$i" $testfile > $tmp.out 2> $tmp.err
> +		cat $tmp.out $tmp.err >> $seqres.full
> +		cat $tmp.err | _filter_scratch | sed -e 's/attr_name[0-9]*/attr_nameXXXX/g'
> +		touch $testfile &>/dev/null || break
> +	done
> +
> +	# FS should be shut down, touch will fail
> +	touch $testfile 2>&1 | _filter_scratch
> +
> +	# Remount to replay log
> +	_scratch_remount_dump_log >> $seqres.full
> +
> +	# FS should be online, touch should succeed
> +	touch $testfile
> +
> +	# Verify attr recovery
> +	$ATTR_PROG -l $testfile >> $seqres.full
> +	echo "Checking contents of $attr_name$i" >> $seqres.full
> +	echo -n "${attr_name}XXXX: "
> +	$ATTR_PROG -q -g $attr_name$i $testfile 2> /dev/null | md5sum;
> +
> +	echo ""
> +}
> +
>  create_test_file()
>  {
>  	filename=$testdir/$1
> @@ -88,6 +127,7 @@ echo 1 > /sys/fs/xfs/debug/larp
>  attr16="0123456789ABCDEF"
>  attr64="$attr16$attr16$attr16$attr16"
>  attr256="$attr64$attr64$attr64$attr64"
> +attr512="$attr256$attr256"
>  attr1k="$attr256$attr256$attr256$attr256"
>  attr4k="$attr1k$attr1k$attr1k$attr1k"
>  attr8k="$attr4k$attr4k"
> @@ -140,12 +180,14 @@ test_attr_replay extent_file1 "attr_name2" $attr1k "s" "larp"
>  test_attr_replay extent_file1 "attr_name2" $attr1k "r" "larp"
>  
>  # extent, inject error on split
> -create_test_file extent_file2 3 $attr1k
> -test_attr_replay extent_file2 "attr_name4" $attr1k "s" "da_leaf_split"
> +create_test_file extent_file2 0 $attr1k
> +test_attr_replay_loop extent_file2 "attr_name" $attr1k "s" "da_leaf_split"
>  
> -# extent, inject error on fork transition
> -create_test_file extent_file3 3 $attr1k
> -test_attr_replay extent_file3 "attr_name4" $attr1k "s" "attr_leaf_to_node"
> +# extent, inject error on fork transition.  The attr value must be less than
> +# a full filesystem block so that the attrs don't use remote xattr values,
> +# which means we miss the leaf to node transition.
> +create_test_file extent_file3 0 $attr1k
> +test_attr_replay_loop extent_file3 "attr_name" $attr512 "s" "attr_leaf_to_node"
>  
>  # extent, remote
>  create_test_file extent_file4 1 $attr1k
> diff --git a/tests/xfs/018.out b/tests/xfs/018.out
> index 022b0ca3..c3021ee3 100644
> --- a/tests/xfs/018.out
> +++ b/tests/xfs/018.out
> @@ -87,22 +87,14 @@ Attribute "attr_name1" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file
>  attr_name2: d41d8cd98f00b204e9800998ecf8427e  -
>  
>  attr_set: Input/output error
> -Could not set "attr_name4" for SCRATCH_MNT/testdir/extent_file2
> +Could not set "attr_nameXXXX" for SCRATCH_MNT/testdir/extent_file2
>  touch: cannot touch 'SCRATCH_MNT/testdir/extent_file2': Input/output error
> -Attribute "attr_name4" has a 1025 byte value for SCRATCH_MNT/testdir/extent_file2
> -Attribute "attr_name2" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file2
> -Attribute "attr_name3" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file2
> -Attribute "attr_name1" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file2
> -attr_name4: 9fd415c49d67afc4b78fad4055a3a376  -
> +attr_nameXXXX: 9fd415c49d67afc4b78fad4055a3a376  -
>  
>  attr_set: Input/output error
> -Could not set "attr_name4" for SCRATCH_MNT/testdir/extent_file3
> +Could not set "attr_nameXXXX" for SCRATCH_MNT/testdir/extent_file3
>  touch: cannot touch 'SCRATCH_MNT/testdir/extent_file3': Input/output error
> -Attribute "attr_name4" has a 1025 byte value for SCRATCH_MNT/testdir/extent_file3
> -Attribute "attr_name2" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file3
> -Attribute "attr_name3" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file3
> -Attribute "attr_name1" has a 1024 byte value for SCRATCH_MNT/testdir/extent_file3
> -attr_name4: 9fd415c49d67afc4b78fad4055a3a376  -
> +attr_nameXXXX: a597dc41e4574873516420a7e4e5a3e0  -
>  
>  attr_set: Input/output error
>  Could not set "attr_name2" for SCRATCH_MNT/testdir/extent_file4
> 

  reply	other threads:[~2022-07-07 18:06 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-05 22:02 [PATCHSET v2 0/3] fstests: random fixes Darrick J. Wong
2022-07-05 22:02 ` [PATCH 1/3] xfs: fix test mkfs.xfs sizing of internal logs that overflow the AG Darrick J. Wong
2022-07-07 13:29   ` Zorro Lang
2022-07-05 22:02 ` [PATCH 2/3] xfs/018: fix LARP testing for small block sizes Darrick J. Wong
2022-07-07 18:06   ` Darrick J. Wong [this message]
2022-07-07 21:55     ` Alli
2022-07-07 22:10       ` Darrick J. Wong
2022-07-07 22:57         ` Alli
2022-07-05 22:02 ` [PATCH 3/3] xfs/547: fix problems with realtime Darrick J. Wong
2022-07-07 13:15   ` Zorro Lang
2022-07-07 18:05     ` Darrick J. Wong
2022-07-08 14:56       ` Zorro Lang
2022-07-11  7:10 ` [PATCHSET v2 0/3] fstests: random fixes Zorro Lang

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=YscglleRpAIkrHiA@magnolia \
    --to=djwong@kernel.org \
    --cc=allison.henderson@oracle.com \
    --cc=catherine.hoang@oracle.com \
    --cc=fstests@vger.kernel.org \
    --cc=guan@eryu.me \
    --cc=guaneryu@gmail.com \
    --cc=linux-xfs@vger.kernel.org \
    --cc=zlang@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.