[PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing

Darrick J. Wong
2024-01-01T00:43:07Z

For each iteration of the fuzz test loop, we try to correct the problem,
and then we run fsstress on the (allegedly corrected) filesystem to
check that subsequent use of the filesystem won't crash the kernel or
panic.

Now that fsstress has a --duration switch, let's add a new config
variable that people can set to constrain the amount of time that a fuzz
test run takes.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
check | 12 ++++++++++++
common/fuzzy | 7 +++++--
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/check b/check
index 71b9fbd075..e567c5e4bb 100755
--- a/check
+++ b/check
@@ -382,6 +382,18 @@ if [ -n "$SOAK_DURATION" ]; then
fi
fi

+# If the test config specified a fuzz rewrite test duration, see if there are
+# any unit suffixes that need converting to an integer seconds count.
+if [ -n "$FUZZ_REWRITE_DURATION" ]; then
+ FUZZ_REWRITE_DURATION="$(echo "$FUZZ_REWRITE_DURATION" | \
+ sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
+ $AWK_PROG -f $here/src/soak_duration.awk)"
+ if [ $? -ne 0 ]; then
+ status=1
+ exit 1
+ fi
+fi
+
if [ -n "$subdir_xfile" ]; then
for d in $SRC_GROUPS $FSTYP; do
[ -f $SRC_DIR/$d/$subdir_xfile ] || continue
diff --git a/common/fuzzy b/common/fuzzy
index 35cf581cd3..bbf7f83d9e 100644
--- a/common/fuzzy
+++ b/common/fuzzy
@@ -6,15 +6,18 @@

# Modify various files after a fuzzing operation
_scratch_fuzz_modify() {
+ local fsstress_args=(-n $((TIME_FACTOR * 10000)) -p $((LOAD_FACTOR * 4)) )
+ test -n "${FUZZ_REWRITE_DURATION}" && fsstress_args+=("--duration=${FUZZ_REWRITE_DURATION}")
+
echo "+++ stressing filesystem"
mkdir -p $SCRATCH_MNT/data
_xfs_force_bdev data $SCRATCH_MNT/data
- $FSSTRESS_PROG -n $((TIME_FACTOR * 10000)) -p $((LOAD_FACTOR * 4)) -d $SCRATCH_MNT/data
+ $FSSTRESS_PROG "${fsstress_args[@]}" -d $SCRATCH_MNT/data

if _xfs_has_feature "$SCRATCH_MNT" realtime; then
mkdir -p $SCRATCH_MNT/rt
_xfs_force_bdev realtime $SCRATCH_MNT/rt
- $FSSTRESS_PROG -n $((TIME_FACTOR * 10000)) -p $((LOAD_FACTOR * 4)) -d $SCRATCH_MNT/rt
+ $FSSTRESS_PROG "${fsstress_args[@]}" -d $SCRATCH_MNT/rt
else
echo "+++ xfs realtime not configured"
fi