From: Brian Foster <bfoster@redhat.com>
To: fstests@vger.kernel.org
Cc: linux-xfs@vger.kernel.org, djwong@kernel.org, hch@lst.de
Subject: [PATCH v2 2/2] xfs: online grow vs. log recovery stress test (realtime version)
Date: Tue, 29 Oct 2024 13:21:35 -0400 [thread overview]
Message-ID: <20241029172135.329428-3-bfoster@redhat.com> (raw)
In-Reply-To: <20241029172135.329428-1-bfoster@redhat.com>
This is fundamentally the same as the previous growfs vs. log
recovery test, with tweaks to support growing the XFS realtime
volume on such configurations. Changes include using the appropriate
mkfs params, growfs params, and enabling realtime inheritance on the
scratch fs.
Signed-off-by: Brian Foster <bfoster@redhat.com>
---
tests/xfs/610 | 83 +++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/610.out | 2 ++
2 files changed, 85 insertions(+)
create mode 100755 tests/xfs/610
create mode 100644 tests/xfs/610.out
diff --git a/tests/xfs/610 b/tests/xfs/610
new file mode 100755
index 00000000..6d3a526f
--- /dev/null
+++ b/tests/xfs/610
@@ -0,0 +1,83 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2024 Red Hat, Inc. All Rights Reserved.
+#
+# FS QA Test No. 610
+#
+# Test XFS online growfs log recovery.
+#
+. ./common/preamble
+_begin_fstest auto growfs stress shutdown log recoveryloop
+
+# Import common functions.
+. ./common/filter
+
+_stress_scratch()
+{
+ procs=4
+ nops=999999
+ # -w ensures that the only ops are ones which cause write I/O
+ FSSTRESS_ARGS=`_scale_fsstress_args -d $SCRATCH_MNT -w -p $procs \
+ -n $nops $FSSTRESS_AVOID`
+ $FSSTRESS_PROG $FSSTRESS_ARGS >> $seqres.full 2>&1 &
+}
+
+_require_scratch
+_require_realtime
+_require_command "$XFS_GROWFS_PROG" xfs_growfs
+_require_command "$KILLALL_PROG" killall
+
+_cleanup()
+{
+ $KILLALL_ALL fsstress > /dev/null 2>&1
+ wait
+ cd /
+ rm -f $tmp.*
+}
+
+_scratch_mkfs_xfs | _filter_mkfs >$seqres.full 2>$tmp.mkfs
+. $tmp.mkfs # extract blocksize and data size for scratch device
+
+endsize=`expr 550 \* 1048576` # stop after growing this big
+[ `expr $endsize / $dbsize` -lt $dblocks ] || _notrun "Scratch device too small"
+
+nags=4
+size=`expr 125 \* 1048576` # 120 megabytes initially
+sizeb=`expr $size / $dbsize` # in data blocks
+logblks=$(_scratch_find_xfs_min_logblocks -rsize=${size} -dagcount=${nags})
+
+_scratch_mkfs_xfs -lsize=${logblks}b -rsize=${size} -dagcount=${nags} \
+ >> $seqres.full || _fail "mkfs failed"
+_scratch_mount
+_xfs_force_bdev realtime $SCRATCH_MNT &> /dev/null
+
+# Grow the filesystem in random sized chunks while stressing and performing
+# shutdown and recovery. The randomization is intended to create a mix of sub-ag
+# and multi-ag grows.
+while [ $size -le $endsize ]; do
+ echo "*** stressing a ${sizeb} block filesystem" >> $seqres.full
+ _stress_scratch
+ incsize=$((RANDOM % 40 * 1048576))
+ size=`expr $size + $incsize`
+ sizeb=`expr $size / $dbsize` # in data blocks
+ echo "*** growing to a ${sizeb} block filesystem" >> $seqres.full
+ $XFS_GROWFS_PROG -R ${sizeb} $SCRATCH_MNT >> $seqres.full
+
+ sleep $((RANDOM % 3))
+ _scratch_shutdown
+ ps -e | grep fsstress > /dev/null 2>&1
+ while [ $? -eq 0 ]; do
+ $KILLALL_PROG -9 fsstress > /dev/null 2>&1
+ wait > /dev/null 2>&1
+ ps -e | grep fsstress > /dev/null 2>&1
+ done
+ _scratch_cycle_mount || _fail "cycle mount failed"
+done > /dev/null 2>&1
+wait # stop for any remaining stress processes
+
+_scratch_unmount
+
+echo Silence is golden.
+
+status=0
+exit
diff --git a/tests/xfs/610.out b/tests/xfs/610.out
new file mode 100644
index 00000000..c42a1cf8
--- /dev/null
+++ b/tests/xfs/610.out
@@ -0,0 +1,2 @@
+QA output created by 610
+Silence is golden.
--
2.46.2
next prev parent reply other threads:[~2024-10-29 17:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-29 17:21 [PATCH v2 0/2] fstests/xfs: a couple growfs log recovery tests Brian Foster
2024-10-29 17:21 ` [PATCH v2 1/2] xfs: online grow vs. log recovery stress test Brian Foster
2024-10-30 19:41 ` Zorro Lang
2024-10-31 13:18 ` Brian Foster
2024-10-29 17:21 ` Brian Foster [this message]
2024-10-30 19:54 ` [PATCH v2 2/2] xfs: online grow vs. log recovery stress test (realtime version) Zorro Lang
2024-10-31 13:20 ` Brian Foster
2024-10-31 16:35 ` Darrick J. Wong
2024-10-31 19:43 ` Zorro Lang
2024-10-30 4:36 ` [PATCH v2 0/2] fstests/xfs: a couple growfs log recovery tests Christoph Hellwig
2024-10-30 8:24 ` 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=20241029172135.329428-3-bfoster@redhat.com \
--to=bfoster@redhat.com \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=hch@lst.de \
--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