FS/XFS testing framework
 help / color / mirror / Atom feed
* [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
@ 2023-12-27 13:42   ` Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 3/3] fuzzy: test other dquot ids Darrick J. Wong
  2 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:42 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

XFS doesn't do any validation for filestreams, so don't waste time
fuzzing that.  Exclude the bigtime flag, since we already have inode
timestamps on the no-fuzz list.  Exclude the warning counters, since
they're defunct now.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 common/fuzzy |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)


diff --git a/common/fuzzy b/common/fuzzy
index f5d45cb28f..35cf581cd3 100644
--- a/common/fuzzy
+++ b/common/fuzzy
@@ -120,7 +120,11 @@ __filter_unvalidated_xfs_db_fields() {
 	    -e '/^entries.*secure/d' \
 	    -e '/^a.sfattr.list.*value/d' \
 	    -e '/^a.sfattr.list.*root/d' \
-	    -e '/^a.sfattr.list.*secure/d'
+	    -e '/^a.sfattr.list.*secure/d' \
+	    -e '/^core.filestream/d' \
+	    -e '/^v3.bigtime/d' \
+	    -e '/\.rtbwarns/d' \
+	    -e '/\.[ib]warns/d'
 }
 
 # Filter the xfs_db print command's field debug information


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
  2023-12-27 13:42   ` [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests Darrick J. Wong
@ 2023-12-27 13:43   ` Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 3/3] fuzzy: test other dquot ids Darrick J. Wong
  2 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:43 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

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


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 3/3] fuzzy: test other dquot ids
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
  2023-12-27 13:42   ` [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing Darrick J. Wong
@ 2023-12-27 13:43   ` Darrick J. Wong
  2 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:43 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 common/fuzzy    |   14 ++++++++++++++
 common/populate |   14 ++++++++++++++
 tests/xfs/425   |   10 +++++++---
 tests/xfs/426   |   10 +++++++---
 tests/xfs/427   |   10 +++++++---
 tests/xfs/428   |   10 +++++++---
 tests/xfs/429   |   10 +++++++---
 tests/xfs/430   |   10 +++++++---
 tests/xfs/487   |   10 +++++++---
 tests/xfs/488   |   10 +++++++---
 tests/xfs/489   |   10 +++++++---
 tests/xfs/779   |   10 +++++++---
 tests/xfs/780   |   10 +++++++---
 tests/xfs/781   |   10 +++++++---
 14 files changed, 112 insertions(+), 36 deletions(-)


diff --git a/common/fuzzy b/common/fuzzy
index bbf7f83d9e..b72b4a9fe7 100644
--- a/common/fuzzy
+++ b/common/fuzzy
@@ -678,6 +678,20 @@ _scratch_xfs_set_xattr_fuzz_types() {
 	SCRATCH_XFS_XATTR_FUZZ_TYPES=(EXTENTS_REMOTE3K EXTENTS_REMOTE4K LEAF NODE)
 }
 
+# Sets the array SCRATCH_XFS_QUOTA_FUZZ_IDS to the list of dquot ids available
+# for fuzzing.  By default, this list contains 0 (root), 4242 (non-root), and
+# 8484 (zero counts).  Users can override this by setting
+# SCRATCH_XFS_LIST_FUZZ_QUOTAIDS in the environment.
+_scratch_xfs_set_quota_fuzz_ids() {
+	if [ -n "${SCRATCH_XFS_LIST_FUZZ_QUOTAIDS}" ]; then
+		mapfile -t SCRATCH_XFS_QUOTA_FUZZ_IDS < \
+				<(echo "${SCRATCH_XFS_LIST_FUZZ_QUOTAIDS}" | tr '[ ,]' '[\n\n]')
+		return
+	fi
+
+	SCRATCH_XFS_QUOTA_FUZZ_IDS=(0 4242 8484)
+}
+
 # Grab the list of available fuzzing verbs
 _scratch_xfs_list_fuzz_verbs() {
 	if [ -n "${SCRATCH_XFS_LIST_FUZZ_VERBS}" ]; then
diff --git a/common/populate b/common/populate
index 3d233073c9..8097151919 100644
--- a/common/populate
+++ b/common/populate
@@ -360,6 +360,20 @@ _scratch_xfs_populate() {
 	mknod "${SCRATCH_MNT}/S_IFBLK" b 1 1
 	mknod "${SCRATCH_MNT}/S_IFIFO" p
 
+	# non-root dquot
+	local nonroot_id=4242
+	echo "${nonroot_id}" > "${SCRATCH_MNT}/non_root_dquot"
+	chown "${nonroot_id}:${nonroot_id}" "${SCRATCH_MNT}/non_root_dquot"
+	$XFS_IO_PROG -c "chproj ${nonroot_id}" "${SCRATCH_MNT}/non_root_dquot"
+
+	# empty dquot
+	local empty_id=8484
+	echo "${empty_id}" > "${SCRATCH_MNT}/empty_dquot"
+	chown "${empty_id}:${empty_id}" "${SCRATCH_MNT}/empty_dquot"
+	$XFS_IO_PROG -c "chproj ${empty_id}" "${SCRATCH_MNT}/empty_dquot"
+	chown "0:0" "${SCRATCH_MNT}/empty_dquot"
+	$XFS_IO_PROG -c "chproj 0" "${SCRATCH_MNT}/empty_dquot"
+
 	# special file with an xattr
 	setfacl -P -m u:nobody:r ${SCRATCH_MNT}/S_IFCHR
 
diff --git a/tests/xfs/425 b/tests/xfs/425
index c2e16ee87e..5275e594b2 100755
--- a/tests/xfs/425
+++ b/tests/xfs/425
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'usrquota' || _notrun "user quota disabled"
 
-echo "Fuzz user 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -u 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz user $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -u $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/426 b/tests/xfs/426
index e52b15f28d..06f0f44b62 100755
--- a/tests/xfs/426
+++ b/tests/xfs/426
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'usrquota' || _notrun "user quota disabled"
 
-echo "Fuzz user 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'online'  "dquot -u 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz user $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'online'  "dquot -u $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/427 b/tests/xfs/427
index 19f45fbd81..327cddd879 100755
--- a/tests/xfs/427
+++ b/tests/xfs/427
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled"
 
-echo "Fuzz group 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -g 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz group $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -g $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/428 b/tests/xfs/428
index 338e659df2..80b05b8450 100755
--- a/tests/xfs/428
+++ b/tests/xfs/428
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled"
 
-echo "Fuzz group 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'online'  "dquot -g 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz group $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'online'  "dquot -g $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/429 b/tests/xfs/429
index a4aeb6e440..5fa3b2ce29 100755
--- a/tests/xfs/429
+++ b/tests/xfs/429
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'prjquota' || _notrun "project quota disabled"
 
-echo "Fuzz project 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -p 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz project $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'offline'  "dquot -p $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/430 b/tests/xfs/430
index d94f65bd14..6f5c772dfb 100755
--- a/tests/xfs/430
+++ b/tests/xfs/430
@@ -27,9 +27,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'prjquota' || _notrun "project quota disabled"
 
-echo "Fuzz project 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'online'  "dquot -p 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz project $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'online'  "dquot -p $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/487 b/tests/xfs/487
index 337541bbcd..a688593950 100755
--- a/tests/xfs/487
+++ b/tests/xfs/487
@@ -28,9 +28,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'usrquota' || _notrun "user quota disabled"
 
-echo "Fuzz user 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'none'  "dquot -u 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz user $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'none'  "dquot -u $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/488 b/tests/xfs/488
index 4347768964..0d54ab8c7d 100755
--- a/tests/xfs/488
+++ b/tests/xfs/488
@@ -28,9 +28,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled"
 
-echo "Fuzz group 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'none'  "dquot -g 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz group $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'none'  "dquot -g $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/489 b/tests/xfs/489
index c70e674ccc..012416f989 100755
--- a/tests/xfs/489
+++ b/tests/xfs/489
@@ -28,9 +28,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'prjquota' || _notrun "project quota disabled"
 
-echo "Fuzz project 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'none'  "dquot -p 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz project $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'none'  "dquot -p $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/779 b/tests/xfs/779
index fe0de3087a..05f2718632 100755
--- a/tests/xfs/779
+++ b/tests/xfs/779
@@ -29,9 +29,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'usrquota' || _notrun "user quota disabled"
 
-echo "Fuzz user 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'both'  "dquot -u 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz user $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'both'  "dquot -u $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/780 b/tests/xfs/780
index 0a23473538..9dd8f4527e 100755
--- a/tests/xfs/780
+++ b/tests/xfs/780
@@ -29,9 +29,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled"
 
-echo "Fuzz group 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'both'  "dquot -g 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz group $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'both'  "dquot -g $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0
diff --git a/tests/xfs/781 b/tests/xfs/781
index ada0f8a1ca..604c9bdd87 100755
--- a/tests/xfs/781
+++ b/tests/xfs/781
@@ -29,9 +29,13 @@ echo "Format and populate"
 _scratch_populate_cached nofill > $seqres.full 2>&1
 echo "${MOUNT_OPTIONS}" | grep -q 'prjquota' || _notrun "project quota disabled"
 
-echo "Fuzz project 0 dquot"
-_scratch_xfs_fuzz_metadata '' 'both'  "dquot -p 0" >> $seqres.full
-echo "Done fuzzing dquot"
+_scratch_xfs_set_quota_fuzz_ids
+
+for id in "${SCRATCH_XFS_QUOTA_FUZZ_IDS[@]}"; do
+	echo "Fuzz project $id dquot"
+	_scratch_xfs_fuzz_metadata '' 'both'  "dquot -p $id" >> $seqres.full
+	echo "Done fuzzing dquot"
+done
 
 # success, all done
 status=0


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/1] xfs: test scaling of the mkfs concurrency options
  2023-12-31 19:57 ` [PATCHSET 2/8] xfsprogs: scale shards on ssds Darrick J. Wong
@ 2023-12-27 13:43   ` Darrick J. Wong
  0 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:43 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Make sure that the AG count and log size scale up with the new
concurrency options to mkfs.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/1842     |   51 +++++++++++++++
 tests/xfs/1842.out |  177 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 228 insertions(+)
 create mode 100755 tests/xfs/1842
 create mode 100644 tests/xfs/1842.out


diff --git a/tests/xfs/1842 b/tests/xfs/1842
new file mode 100755
index 0000000000..41254a1581
--- /dev/null
+++ b/tests/xfs/1842
@@ -0,0 +1,51 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2022-2024 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1842
+#
+# mkfs concurrency test - ensure the log and agsize scaling works for various
+# concurrency= parameters
+#
+. ./common/preamble
+_begin_fstest log metadata auto quick
+
+# Import common functions.
+. ./common/filter
+. ./common/reflink
+
+_cleanup()
+{
+	cd /
+	rm -r -f $tmp.* $loop_file
+}
+
+# real QA test starts here
+_supported_fs xfs
+
+_require_test
+_require_loop
+$MKFS_XFS_PROG 2>&1 | grep -q concurrency || \
+	_notrun "mkfs does not support concurrency options"
+
+loop_file=$TEST_DIR/$seq.loop
+
+rm -f "$loop_file"
+for sz in 16M 512M 1G 2G 16G 64G 256G 512G 1T 2T 4T 16T 64T 256T 512T 1P; do
+	for cpus in 2 4 8 16 32 40 64 96 160 512; do
+		truncate -s "$sz" "$loop_file"
+		echo "sz $sz cpus $cpus" >> $seqres.full
+		echo "-----------------" >> $seqres.full
+
+		$MKFS_XFS_PROG -f -N "$loop_file" -d concurrency=$cpus -l concurrency=$cpus &> $tmp.mkfsout
+		cat $tmp.mkfsout >> $seqres.full
+
+		_filter_mkfs > /dev/null 2> $tmp.mkfs < $tmp.mkfsout
+		. $tmp.mkfs
+		echo "sz $sz cpus $cpus agcount $agcount logblocks $lblocks"
+	done
+	echo "-----------------"
+done
+
+status=0
+exit
diff --git a/tests/xfs/1842.out b/tests/xfs/1842.out
new file mode 100644
index 0000000000..9d1e22120b
--- /dev/null
+++ b/tests/xfs/1842.out
@@ -0,0 +1,177 @@
+QA output created by 1842
+sz 16M cpus 2 agcount 1 logblocks 3075
+sz 16M cpus 4 agcount 1 logblocks 3075
+sz 16M cpus 8 agcount 1 logblocks 3075
+sz 16M cpus 16 agcount 1 logblocks 3075
+sz 16M cpus 32 agcount 1 logblocks 3075
+sz 16M cpus 40 agcount 1 logblocks 3075
+sz 16M cpus 64 agcount 1 logblocks 3075
+sz 16M cpus 96 agcount 1 logblocks 3075
+sz 16M cpus 160 agcount 1 logblocks 3075
+sz 16M cpus 512 agcount 1 logblocks 3075
+-----------------
+sz 512M cpus 2 agcount 4 logblocks 16384
+sz 512M cpus 4 agcount 4 logblocks 16384
+sz 512M cpus 8 agcount 4 logblocks 16384
+sz 512M cpus 16 agcount 4 logblocks 16384
+sz 512M cpus 32 agcount 4 logblocks 16384
+sz 512M cpus 40 agcount 4 logblocks 16384
+sz 512M cpus 64 agcount 4 logblocks 16384
+sz 512M cpus 96 agcount 4 logblocks 16384
+sz 512M cpus 160 agcount 4 logblocks 16384
+sz 512M cpus 512 agcount 4 logblocks 16384
+-----------------
+sz 1G cpus 2 agcount 4 logblocks 16384
+sz 1G cpus 4 agcount 4 logblocks 16384
+sz 1G cpus 8 agcount 4 logblocks 16384
+sz 1G cpus 16 agcount 4 logblocks 22482
+sz 1G cpus 32 agcount 4 logblocks 44964
+sz 1G cpus 40 agcount 4 logblocks 56205
+sz 1G cpus 64 agcount 4 logblocks 65524
+sz 1G cpus 96 agcount 4 logblocks 65524
+sz 1G cpus 160 agcount 4 logblocks 65524
+sz 1G cpus 512 agcount 4 logblocks 65524
+-----------------
+sz 2G cpus 2 agcount 4 logblocks 16384
+sz 2G cpus 4 agcount 4 logblocks 16384
+sz 2G cpus 8 agcount 4 logblocks 16384
+sz 2G cpus 16 agcount 4 logblocks 25650
+sz 2G cpus 32 agcount 4 logblocks 51300
+sz 2G cpus 40 agcount 4 logblocks 64125
+sz 2G cpus 64 agcount 4 logblocks 102600
+sz 2G cpus 96 agcount 4 logblocks 131060
+sz 2G cpus 160 agcount 4 logblocks 131060
+sz 2G cpus 512 agcount 4 logblocks 131060
+-----------------
+sz 16G cpus 2 agcount 4 logblocks 16384
+sz 16G cpus 4 agcount 4 logblocks 16384
+sz 16G cpus 8 agcount 4 logblocks 16384
+sz 16G cpus 16 agcount 4 logblocks 25650
+sz 16G cpus 32 agcount 4 logblocks 51300
+sz 16G cpus 40 agcount 4 logblocks 64125
+sz 16G cpus 64 agcount 4 logblocks 102600
+sz 16G cpus 96 agcount 4 logblocks 153900
+sz 16G cpus 160 agcount 4 logblocks 256500
+sz 16G cpus 512 agcount 4 logblocks 296512
+-----------------
+sz 64G cpus 2 agcount 4 logblocks 16384
+sz 64G cpus 4 agcount 4 logblocks 16384
+sz 64G cpus 8 agcount 8 logblocks 16384
+sz 64G cpus 16 agcount 16 logblocks 25650
+sz 64G cpus 32 agcount 16 logblocks 51300
+sz 64G cpus 40 agcount 16 logblocks 64125
+sz 64G cpus 64 agcount 16 logblocks 102600
+sz 64G cpus 96 agcount 16 logblocks 153900
+sz 64G cpus 160 agcount 16 logblocks 256500
+sz 64G cpus 512 agcount 16 logblocks 296512
+-----------------
+sz 256G cpus 2 agcount 4 logblocks 32768
+sz 256G cpus 4 agcount 4 logblocks 32768
+sz 256G cpus 8 agcount 8 logblocks 32768
+sz 256G cpus 16 agcount 16 logblocks 32768
+sz 256G cpus 32 agcount 32 logblocks 51300
+sz 256G cpus 40 agcount 40 logblocks 64125
+sz 256G cpus 64 agcount 64 logblocks 102600
+sz 256G cpus 96 agcount 64 logblocks 153900
+sz 256G cpus 160 agcount 64 logblocks 256500
+sz 256G cpus 512 agcount 64 logblocks 296512
+-----------------
+sz 512G cpus 2 agcount 4 logblocks 65536
+sz 512G cpus 4 agcount 4 logblocks 65536
+sz 512G cpus 8 agcount 8 logblocks 65536
+sz 512G cpus 16 agcount 16 logblocks 65536
+sz 512G cpus 32 agcount 32 logblocks 65536
+sz 512G cpus 40 agcount 40 logblocks 65535
+sz 512G cpus 64 agcount 64 logblocks 102600
+sz 512G cpus 96 agcount 96 logblocks 153900
+sz 512G cpus 160 agcount 128 logblocks 256500
+sz 512G cpus 512 agcount 128 logblocks 296512
+-----------------
+sz 1T cpus 2 agcount 4 logblocks 131072
+sz 1T cpus 4 agcount 4 logblocks 131072
+sz 1T cpus 8 agcount 8 logblocks 131072
+sz 1T cpus 16 agcount 16 logblocks 131072
+sz 1T cpus 32 agcount 32 logblocks 131072
+sz 1T cpus 40 agcount 40 logblocks 131071
+sz 1T cpus 64 agcount 64 logblocks 131072
+sz 1T cpus 96 agcount 96 logblocks 153900
+sz 1T cpus 160 agcount 160 logblocks 256500
+sz 1T cpus 512 agcount 256 logblocks 296512
+-----------------
+sz 2T cpus 2 agcount 4 logblocks 262144
+sz 2T cpus 4 agcount 4 logblocks 262144
+sz 2T cpus 8 agcount 8 logblocks 262144
+sz 2T cpus 16 agcount 16 logblocks 262144
+sz 2T cpus 32 agcount 32 logblocks 262144
+sz 2T cpus 40 agcount 40 logblocks 262143
+sz 2T cpus 64 agcount 64 logblocks 262144
+sz 2T cpus 96 agcount 96 logblocks 262143
+sz 2T cpus 160 agcount 160 logblocks 262143
+sz 2T cpus 512 agcount 512 logblocks 296512
+-----------------
+sz 4T cpus 2 agcount 4 logblocks 521728
+sz 4T cpus 4 agcount 4 logblocks 521728
+sz 4T cpus 8 agcount 8 logblocks 521728
+sz 4T cpus 16 agcount 16 logblocks 521728
+sz 4T cpus 32 agcount 32 logblocks 521728
+sz 4T cpus 40 agcount 40 logblocks 521728
+sz 4T cpus 64 agcount 64 logblocks 521728
+sz 4T cpus 96 agcount 96 logblocks 521728
+sz 4T cpus 160 agcount 160 logblocks 521728
+sz 4T cpus 512 agcount 512 logblocks 521728
+-----------------
+sz 16T cpus 2 agcount 16 logblocks 521728
+sz 16T cpus 4 agcount 16 logblocks 521728
+sz 16T cpus 8 agcount 16 logblocks 521728
+sz 16T cpus 16 agcount 16 logblocks 521728
+sz 16T cpus 32 agcount 32 logblocks 521728
+sz 16T cpus 40 agcount 40 logblocks 521728
+sz 16T cpus 64 agcount 64 logblocks 521728
+sz 16T cpus 96 agcount 96 logblocks 521728
+sz 16T cpus 160 agcount 160 logblocks 521728
+sz 16T cpus 512 agcount 512 logblocks 521728
+-----------------
+sz 64T cpus 2 agcount 64 logblocks 521728
+sz 64T cpus 4 agcount 64 logblocks 521728
+sz 64T cpus 8 agcount 64 logblocks 521728
+sz 64T cpus 16 agcount 64 logblocks 521728
+sz 64T cpus 32 agcount 64 logblocks 521728
+sz 64T cpus 40 agcount 64 logblocks 521728
+sz 64T cpus 64 agcount 64 logblocks 521728
+sz 64T cpus 96 agcount 96 logblocks 521728
+sz 64T cpus 160 agcount 160 logblocks 521728
+sz 64T cpus 512 agcount 512 logblocks 521728
+-----------------
+sz 256T cpus 2 agcount 256 logblocks 521728
+sz 256T cpus 4 agcount 256 logblocks 521728
+sz 256T cpus 8 agcount 256 logblocks 521728
+sz 256T cpus 16 agcount 256 logblocks 521728
+sz 256T cpus 32 agcount 256 logblocks 521728
+sz 256T cpus 40 agcount 256 logblocks 521728
+sz 256T cpus 64 agcount 256 logblocks 521728
+sz 256T cpus 96 agcount 256 logblocks 521728
+sz 256T cpus 160 agcount 256 logblocks 521728
+sz 256T cpus 512 agcount 512 logblocks 521728
+-----------------
+sz 512T cpus 2 agcount 512 logblocks 521728
+sz 512T cpus 4 agcount 512 logblocks 521728
+sz 512T cpus 8 agcount 512 logblocks 521728
+sz 512T cpus 16 agcount 512 logblocks 521728
+sz 512T cpus 32 agcount 512 logblocks 521728
+sz 512T cpus 40 agcount 512 logblocks 521728
+sz 512T cpus 64 agcount 512 logblocks 521728
+sz 512T cpus 96 agcount 512 logblocks 521728
+sz 512T cpus 160 agcount 512 logblocks 521728
+sz 512T cpus 512 agcount 512 logblocks 521728
+-----------------
+sz 1P cpus 2 agcount 1024 logblocks 521728
+sz 1P cpus 4 agcount 1024 logblocks 521728
+sz 1P cpus 8 agcount 1024 logblocks 521728
+sz 1P cpus 16 agcount 1024 logblocks 521728
+sz 1P cpus 32 agcount 1024 logblocks 521728
+sz 1P cpus 40 agcount 1024 logblocks 521728
+sz 1P cpus 64 agcount 1024 logblocks 521728
+sz 1P cpus 96 agcount 1024 logblocks 521728
+sz 1P cpus 160 agcount 1024 logblocks 521728
+sz 1P cpus 512 agcount 1024 logblocks 521728
+-----------------


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/4] xfs: online fuzz test known output
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
@ 2023-12-27 13:43   ` Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 2/4] xfs: offline " Darrick J. Wong
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:43 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Record all the currently known failures of the xfs_scrub check and
repair code when parent pointers and rtgroups are enabled.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/351.out |   75 ++++++++++++++++++++++++++++++
 tests/xfs/353.out |   96 +++++++++++++++++++++++++++++++++++++++
 tests/xfs/355.out |   47 +++++++++++++++++++
 tests/xfs/357.out |  109 ++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/361.out |   14 ++++++
 tests/xfs/369.out |   57 +++++++++++++++++++++++
 tests/xfs/371.out |  108 +++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/375.out |   94 ++++++++++++++++++++++++++++++++++++++
 tests/xfs/377.out |   62 +++++++++++++++++++++++++
 tests/xfs/379.out |   74 ++++++++++++++++++++++++++++++
 tests/xfs/381.out |    1 
 tests/xfs/383.out |    4 ++
 tests/xfs/385.out |   68 +++++++++++++++++++++++++++
 tests/xfs/399.out |   63 +++++++++++++++++++++++++
 tests/xfs/401.out |   72 +++++++++++++++++++++++++++++
 tests/xfs/405.out |    5 ++
 tests/xfs/413.out |   48 +++++++++++++++++++
 tests/xfs/415.out |   56 ++++++++++++++++++++++
 tests/xfs/417.out |   56 ++++++++++++++++++++++
 tests/xfs/426.out |  132 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/428.out |  132 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/430.out |  132 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/730.out |   10 ++++
 23 files changed, 1515 insertions(+)


diff --git a/tests/xfs/351.out b/tests/xfs/351.out
index 36d7b96a11..7f8dbdfebd 100644
--- a/tests/xfs/351.out
+++ b/tests/xfs/351.out
@@ -1,4 +1,79 @@
 QA output created by 351
 Format and populate
 Fuzz superblock
+uuid = zeroes: online scrub didn't fail.
+uuid = ones: online scrub didn't fail.
+uuid = firstbit: online scrub didn't fail.
+uuid = middlebit: online scrub didn't fail.
+uuid = lastbit: online scrub didn't fail.
+rootino = zeroes: online scrub didn't fail.
+rootino = ones: online scrub didn't fail.
+rootino = firstbit: online scrub didn't fail.
+rootino = middlebit: online scrub didn't fail.
+rootino = lastbit: online scrub didn't fail.
+rootino = add: online scrub didn't fail.
+rootino = sub: online scrub didn't fail.
+metadirino = zeroes: online scrub didn't fail.
+metadirino = firstbit: online scrub didn't fail.
+metadirino = middlebit: online scrub didn't fail.
+metadirino = lastbit: online scrub didn't fail.
+metadirino = add: online scrub didn't fail.
+metadirino = sub: online scrub didn't fail.
+rgblocks = middlebit: online scrub didn't fail.
+rgblocks = lastbit: online scrub didn't fail.
+rgblocks = add: online scrub didn't fail.
+rgblocks = sub: online scrub didn't fail.
+fname = ones: online scrub didn't fail.
+fname = firstbit: online scrub didn't fail.
+fname = middlebit: online scrub didn't fail.
+fname = lastbit: online scrub didn't fail.
+inprogress = zeroes: online scrub didn't fail.
+inprogress = ones: online scrub didn't fail.
+inprogress = firstbit: online scrub didn't fail.
+inprogress = middlebit: online scrub didn't fail.
+inprogress = lastbit: online scrub didn't fail.
+inprogress = add: online scrub didn't fail.
+inprogress = sub: online scrub didn't fail.
+imax_pct = zeroes: online scrub didn't fail.
+imax_pct = middlebit: online scrub didn't fail.
+imax_pct = lastbit: online scrub didn't fail.
+icount = ones: online scrub didn't fail.
+icount = firstbit: online scrub didn't fail.
+icount = middlebit: online scrub didn't fail.
+icount = lastbit: online scrub didn't fail.
+icount = add: online scrub didn't fail.
+icount = sub: online scrub didn't fail.
+ifree = ones: online scrub didn't fail.
+ifree = firstbit: online scrub didn't fail.
+ifree = middlebit: online scrub didn't fail.
+ifree = lastbit: online scrub didn't fail.
+ifree = add: online scrub didn't fail.
+ifree = sub: online scrub didn't fail.
+fdblocks = zeroes: online scrub didn't fail.
+fdblocks = ones: online scrub didn't fail.
+fdblocks = firstbit: online scrub didn't fail.
+fdblocks = middlebit: online scrub didn't fail.
+fdblocks = lastbit: online scrub didn't fail.
+fdblocks = add: online scrub didn't fail.
+fdblocks = sub: online scrub didn't fail.
+qflags = firstbit: online scrub didn't fail.
+qflags = middlebit: online scrub didn't fail.
+qflags = lastbit: online scrub didn't fail.
+bad_features2 = zeroes: online scrub didn't fail.
+bad_features2 = ones: online scrub didn't fail.
+bad_features2 = firstbit: online scrub didn't fail.
+bad_features2 = middlebit: online scrub didn't fail.
+bad_features2 = lastbit: online scrub didn't fail.
+bad_features2 = add: online scrub didn't fail.
+bad_features2 = sub: online scrub didn't fail.
+features_log_incompat = ones: online scrub didn't fail.
+features_log_incompat = firstbit: online scrub didn't fail.
+features_log_incompat = middlebit: online scrub didn't fail.
+features_log_incompat = lastbit: online scrub didn't fail.
+features_log_incompat = add: online scrub didn't fail.
+features_log_incompat = sub: online scrub didn't fail.
+meta_uuid = ones: online scrub didn't fail.
+meta_uuid = firstbit: online scrub didn't fail.
+meta_uuid = middlebit: online scrub didn't fail.
+meta_uuid = lastbit: online scrub didn't fail.
 Done fuzzing superblock
diff --git a/tests/xfs/353.out b/tests/xfs/353.out
index 6f0ec45d6e..7c8af7b8e5 100644
--- a/tests/xfs/353.out
+++ b/tests/xfs/353.out
@@ -1,4 +1,100 @@
 QA output created by 353
 Format and populate
 Fuzz AGF
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+bnolevel = zeroes: mount failed (32).
+bnolevel = ones: mount failed (32).
+bnolevel = firstbit: mount failed (32).
+bnolevel = middlebit: mount failed (32).
+bnolevel = add: mount failed (32).
+bnolevel = sub: mount failed (32).
+cntlevel = zeroes: mount failed (32).
+cntlevel = ones: mount failed (32).
+cntlevel = firstbit: mount failed (32).
+cntlevel = middlebit: mount failed (32).
+cntlevel = add: mount failed (32).
+cntlevel = sub: mount failed (32).
+rmaplevel = zeroes: mount failed (32).
+rmaplevel = ones: mount failed (32).
+rmaplevel = firstbit: mount failed (32).
+rmaplevel = middlebit: mount failed (32).
+rmaplevel = add: mount failed (32).
+rmaplevel = sub: mount failed (32).
+refcntlevel = zeroes: mount failed (32).
+refcntlevel = ones: mount failed (32).
+refcntlevel = firstbit: mount failed (32).
+refcntlevel = middlebit: mount failed (32).
+refcntlevel = add: mount failed (32).
+refcntlevel = sub: mount failed (32).
+rmapblocks = ones: mount failed (32).
+rmapblocks = firstbit: mount failed (32).
+rmapblocks = sub: mount failed (32).
+refcntblocks = ones: mount failed (32).
+refcntblocks = firstbit: mount failed (32).
+refcntblocks = sub: mount failed (32).
+flfirst = ones: mount failed (32).
+flfirst = firstbit: mount failed (32).
+flfirst = middlebit: mount failed (32).
+flfirst = add: mount failed (32).
+flfirst = sub: mount failed (32).
+fllast = ones: mount failed (32).
+fllast = firstbit: mount failed (32).
+fllast = middlebit: mount failed (32).
+fllast = add: mount failed (32).
+fllast = sub: mount failed (32).
+flcount = ones: mount failed (32).
+flcount = firstbit: mount failed (32).
+flcount = middlebit: mount failed (32).
+flcount = add: mount failed (32).
+flcount = sub: mount failed (32).
+freeblks = zeroes: mount failed (32).
+freeblks = ones: mount failed (32).
+freeblks = firstbit: mount failed (32).
+freeblks = middlebit: mount failed (32).
+freeblks = add: mount failed (32).
+freeblks = sub: mount failed (32).
+longest = ones: mount failed (32).
+longest = firstbit: mount failed (32).
+longest = add: mount failed (32).
+btreeblks = ones: mount failed (32).
+btreeblks = firstbit: mount failed (32).
+btreeblks = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
 Done fuzzing AGF
diff --git a/tests/xfs/355.out b/tests/xfs/355.out
index d537761abf..1df816c083 100644
--- a/tests/xfs/355.out
+++ b/tests/xfs/355.out
@@ -1,6 +1,53 @@
 QA output created by 355
 Format and populate
 Fuzz AGFL
+bno[0] = zeroes: online scrub didn't fail.
+bno[0] = add: online scrub didn't fail.
+bno[1] = zeroes: online scrub didn't fail.
+bno[1] = ones: online scrub didn't fail.
+bno[1] = middlebit: online scrub didn't fail.
+bno[1] = lastbit: online scrub didn't fail.
+bno[1] = add: online scrub didn't fail.
+bno[2] = zeroes: online scrub didn't fail.
+bno[2] = ones: online scrub didn't fail.
+bno[2] = middlebit: online scrub didn't fail.
+bno[2] = lastbit: online scrub didn't fail.
+bno[2] = add: online scrub didn't fail.
+bno[3] = zeroes: online scrub didn't fail.
+bno[3] = ones: online scrub didn't fail.
+bno[3] = middlebit: online scrub didn't fail.
+bno[3] = lastbit: online scrub didn't fail.
+bno[3] = add: online scrub didn't fail.
+bno[4] = zeroes: online scrub didn't fail.
+bno[4] = ones: online scrub didn't fail.
+bno[4] = middlebit: online scrub didn't fail.
+bno[4] = lastbit: online scrub didn't fail.
+bno[4] = add: online scrub didn't fail.
+bno[5] = zeroes: online scrub didn't fail.
+bno[5] = ones: online scrub didn't fail.
+bno[5] = middlebit: online scrub didn't fail.
+bno[5] = lastbit: online scrub didn't fail.
+bno[5] = add: online scrub didn't fail.
+bno[6] = zeroes: online scrub didn't fail.
+bno[6] = ones: online scrub didn't fail.
+bno[6] = middlebit: online scrub didn't fail.
+bno[6] = lastbit: online scrub didn't fail.
+bno[6] = add: online scrub didn't fail.
+bno[7] = zeroes: online scrub didn't fail.
+bno[7] = ones: online scrub didn't fail.
+bno[7] = middlebit: online scrub didn't fail.
+bno[7] = lastbit: online scrub didn't fail.
+bno[7] = add: online scrub didn't fail.
+bno[8] = zeroes: online scrub didn't fail.
+bno[8] = ones: online scrub didn't fail.
+bno[8] = middlebit: online scrub didn't fail.
+bno[8] = lastbit: online scrub didn't fail.
+bno[8] = add: online scrub didn't fail.
+bno[9] = zeroes: online scrub didn't fail.
+bno[9] = ones: online scrub didn't fail.
+bno[9] = middlebit: online scrub didn't fail.
+bno[9] = lastbit: online scrub didn't fail.
+bno[9] = add: online scrub didn't fail.
 Done fuzzing AGFL
 Fuzz AGFL flfirst
 Done fuzzing AGFL flfirst
diff --git a/tests/xfs/357.out b/tests/xfs/357.out
index c9cf6d2681..400530ff0e 100644
--- a/tests/xfs/357.out
+++ b/tests/xfs/357.out
@@ -1,4 +1,113 @@
 QA output created by 357
 Format and populate
 Fuzz AGI
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = zeroes: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+level = zeroes: mount failed (32).
+level = ones: mount failed (32).
+level = firstbit: mount failed (32).
+level = middlebit: mount failed (32).
+level = lastbit: mount failed (32).
+level = add: mount failed (32).
+level = sub: mount failed (32).
+newino = ones: online scrub didn't fail.
+newino = middlebit: online scrub didn't fail.
+newino = lastbit: online scrub didn't fail.
+newino = add: online scrub didn't fail.
+dirino = add: online scrub didn't fail.
+unlinked[0] = zeroes: mount failed (32).
+unlinked[0] = firstbit: mount failed (32).
+unlinked[0] = middlebit: mount failed (32).
+unlinked[0] = lastbit: mount failed (32).
+unlinked[0] = sub: mount failed (32).
+unlinked[1] = zeroes: mount failed (32).
+unlinked[1] = firstbit: mount failed (32).
+unlinked[1] = middlebit: mount failed (32).
+unlinked[1] = lastbit: mount failed (32).
+unlinked[1] = sub: mount failed (32).
+unlinked[2] = zeroes: mount failed (32).
+unlinked[2] = firstbit: mount failed (32).
+unlinked[2] = middlebit: mount failed (32).
+unlinked[2] = lastbit: mount failed (32).
+unlinked[2] = sub: mount failed (32).
+unlinked[3] = zeroes: mount failed (32).
+unlinked[3] = firstbit: mount failed (32).
+unlinked[3] = middlebit: mount failed (32).
+unlinked[3] = lastbit: mount failed (32).
+unlinked[3] = sub: mount failed (32).
+unlinked[4] = zeroes: mount failed (32).
+unlinked[4] = firstbit: mount failed (32).
+unlinked[4] = middlebit: mount failed (32).
+unlinked[4] = lastbit: mount failed (32).
+unlinked[4] = sub: mount failed (32).
+unlinked[5] = zeroes: mount failed (32).
+unlinked[5] = firstbit: mount failed (32).
+unlinked[5] = middlebit: mount failed (32).
+unlinked[5] = lastbit: mount failed (32).
+unlinked[5] = sub: mount failed (32).
+unlinked[6] = zeroes: mount failed (32).
+unlinked[6] = firstbit: mount failed (32).
+unlinked[6] = middlebit: mount failed (32).
+unlinked[6] = lastbit: mount failed (32).
+unlinked[6] = sub: mount failed (32).
+unlinked[7] = zeroes: mount failed (32).
+unlinked[7] = firstbit: mount failed (32).
+unlinked[7] = middlebit: mount failed (32).
+unlinked[7] = lastbit: mount failed (32).
+unlinked[7] = sub: mount failed (32).
+unlinked[8] = zeroes: mount failed (32).
+unlinked[8] = firstbit: mount failed (32).
+unlinked[8] = middlebit: mount failed (32).
+unlinked[8] = lastbit: mount failed (32).
+unlinked[8] = sub: mount failed (32).
+unlinked[9] = zeroes: mount failed (32).
+unlinked[9] = firstbit: mount failed (32).
+unlinked[9] = middlebit: mount failed (32).
+unlinked[9] = lastbit: mount failed (32).
+unlinked[9] = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
+free_level = zeroes: mount failed (32).
+free_level = ones: mount failed (32).
+free_level = firstbit: mount failed (32).
+free_level = middlebit: mount failed (32).
+free_level = lastbit: mount failed (32).
+free_level = add: mount failed (32).
+free_level = sub: mount failed (32).
 Done fuzzing AGI
diff --git a/tests/xfs/361.out b/tests/xfs/361.out
index d8e021bddb..95ae5f5e71 100644
--- a/tests/xfs/361.out
+++ b/tests/xfs/361.out
@@ -1,4 +1,18 @@
 QA output created by 361
 Format and populate
 Fuzz bnobt keyptr
+keys[1].blockcount = zeroes: online scrub didn't fail.
+keys[1].blockcount = ones: online scrub didn't fail.
+keys[1].blockcount = firstbit: online scrub didn't fail.
+keys[1].blockcount = middlebit: online scrub didn't fail.
+keys[1].blockcount = lastbit: online scrub didn't fail.
+keys[1].blockcount = add: online scrub didn't fail.
+keys[1].blockcount = sub: online scrub didn't fail.
+keys[2].blockcount = zeroes: online scrub didn't fail.
+keys[2].blockcount = ones: online scrub didn't fail.
+keys[2].blockcount = firstbit: online scrub didn't fail.
+keys[2].blockcount = middlebit: online scrub didn't fail.
+keys[2].blockcount = lastbit: online scrub didn't fail.
+keys[2].blockcount = add: online scrub didn't fail.
+keys[2].blockcount = sub: online scrub didn't fail.
 Done fuzzing bnobt keyptr
diff --git a/tests/xfs/369.out b/tests/xfs/369.out
index 1f97134ab4..4b399d7b47 100644
--- a/tests/xfs/369.out
+++ b/tests/xfs/369.out
@@ -1,4 +1,61 @@
 QA output created by 369
 Format and populate
 Fuzz rmapbt recs
+recs[2].owner = add: offline re-scrub failed (1).
+recs[2].owner = add: offline post-mod scrub failed (1).
+recs[3].owner = add: offline re-scrub failed (1).
+recs[3].owner = add: offline post-mod scrub failed (1).
+recs[5].owner = lastbit: online repair failed (1).
+recs[5].owner = lastbit: online re-scrub failed (5).
+recs[5].owner = lastbit: offline re-scrub failed (1).
+recs[5].owner = lastbit: online post-mod scrub failed (1).
+recs[5].owner = lastbit: offline post-mod scrub failed (1).
+recs[7].owner = lastbit: offline re-scrub failed (1).
+recs[7].owner = lastbit: offline post-mod scrub failed (1).
+recs[7].owner = add: offline re-scrub failed (1).
+recs[7].owner = add: offline post-mod scrub failed (1).
+recs[7].attrfork = ones: offline re-scrub failed (1).
+recs[7].attrfork = ones: offline post-mod scrub failed (1).
+recs[7].attrfork = firstbit: offline re-scrub failed (1).
+recs[7].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[7].attrfork = middlebit: offline re-scrub failed (1).
+recs[7].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[7].attrfork = lastbit: offline re-scrub failed (1).
+recs[7].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[7].attrfork = add: offline re-scrub failed (1).
+recs[7].attrfork = add: offline post-mod scrub failed (1).
+recs[7].attrfork = sub: offline re-scrub failed (1).
+recs[7].attrfork = sub: offline post-mod scrub failed (1).
+recs[8].owner = lastbit: offline re-scrub failed (1).
+recs[8].owner = lastbit: offline post-mod scrub failed (1).
+recs[8].owner = add: offline re-scrub failed (1).
+recs[8].owner = add: offline post-mod scrub failed (1).
+recs[8].attrfork = ones: offline re-scrub failed (1).
+recs[8].attrfork = ones: offline post-mod scrub failed (1).
+recs[8].attrfork = firstbit: offline re-scrub failed (1).
+recs[8].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[8].attrfork = middlebit: offline re-scrub failed (1).
+recs[8].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[8].attrfork = lastbit: offline re-scrub failed (1).
+recs[8].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[8].attrfork = add: offline re-scrub failed (1).
+recs[8].attrfork = add: offline post-mod scrub failed (1).
+recs[8].attrfork = sub: offline re-scrub failed (1).
+recs[8].attrfork = sub: offline post-mod scrub failed (1).
+recs[9].owner = lastbit: offline re-scrub failed (1).
+recs[9].owner = lastbit: offline post-mod scrub failed (1).
+recs[9].owner = add: offline re-scrub failed (1).
+recs[9].owner = add: offline post-mod scrub failed (1).
+recs[9].attrfork = ones: offline re-scrub failed (1).
+recs[9].attrfork = ones: offline post-mod scrub failed (1).
+recs[9].attrfork = firstbit: offline re-scrub failed (1).
+recs[9].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[9].attrfork = middlebit: offline re-scrub failed (1).
+recs[9].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[9].attrfork = lastbit: offline re-scrub failed (1).
+recs[9].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[9].attrfork = add: offline re-scrub failed (1).
+recs[9].attrfork = add: offline post-mod scrub failed (1).
+recs[9].attrfork = sub: offline re-scrub failed (1).
+recs[9].attrfork = sub: offline post-mod scrub failed (1).
 Done fuzzing rmapbt recs
diff --git a/tests/xfs/371.out b/tests/xfs/371.out
index c7c943f332..477cd32e51 100644
--- a/tests/xfs/371.out
+++ b/tests/xfs/371.out
@@ -1,4 +1,112 @@
 QA output created by 371
 Format and populate
 Fuzz rmapbt keyptr
+keys[1].extentflag = ones: online scrub didn't fail.
+keys[1].extentflag = firstbit: online scrub didn't fail.
+keys[1].extentflag = middlebit: online scrub didn't fail.
+keys[1].extentflag = lastbit: online scrub didn't fail.
+keys[1].extentflag = add: online scrub didn't fail.
+keys[1].extentflag = sub: online scrub didn't fail.
+keys[1].extentflag_hi = ones: online scrub didn't fail.
+keys[1].extentflag_hi = firstbit: online scrub didn't fail.
+keys[1].extentflag_hi = middlebit: online scrub didn't fail.
+keys[1].extentflag_hi = lastbit: online scrub didn't fail.
+keys[1].extentflag_hi = add: online scrub didn't fail.
+keys[1].extentflag_hi = sub: online scrub didn't fail.
+keys[2].extentflag = ones: online scrub didn't fail.
+keys[2].extentflag = firstbit: online scrub didn't fail.
+keys[2].extentflag = middlebit: online scrub didn't fail.
+keys[2].extentflag = lastbit: online scrub didn't fail.
+keys[2].extentflag = add: online scrub didn't fail.
+keys[2].extentflag = sub: online scrub didn't fail.
+keys[2].extentflag_hi = ones: online scrub didn't fail.
+keys[2].extentflag_hi = firstbit: online scrub didn't fail.
+keys[2].extentflag_hi = middlebit: online scrub didn't fail.
+keys[2].extentflag_hi = lastbit: online scrub didn't fail.
+keys[2].extentflag_hi = add: online scrub didn't fail.
+keys[2].extentflag_hi = sub: online scrub didn't fail.
+keys[3].extentflag = ones: online scrub didn't fail.
+keys[3].extentflag = firstbit: online scrub didn't fail.
+keys[3].extentflag = middlebit: online scrub didn't fail.
+keys[3].extentflag = lastbit: online scrub didn't fail.
+keys[3].extentflag = add: online scrub didn't fail.
+keys[3].extentflag = sub: online scrub didn't fail.
+keys[3].extentflag_hi = ones: online scrub didn't fail.
+keys[3].extentflag_hi = firstbit: online scrub didn't fail.
+keys[3].extentflag_hi = middlebit: online scrub didn't fail.
+keys[3].extentflag_hi = lastbit: online scrub didn't fail.
+keys[3].extentflag_hi = add: online scrub didn't fail.
+keys[3].extentflag_hi = sub: online scrub didn't fail.
+keys[4].extentflag = ones: online scrub didn't fail.
+keys[4].extentflag = firstbit: online scrub didn't fail.
+keys[4].extentflag = middlebit: online scrub didn't fail.
+keys[4].extentflag = lastbit: online scrub didn't fail.
+keys[4].extentflag = add: online scrub didn't fail.
+keys[4].extentflag = sub: online scrub didn't fail.
+keys[4].extentflag_hi = ones: online scrub didn't fail.
+keys[4].extentflag_hi = firstbit: online scrub didn't fail.
+keys[4].extentflag_hi = middlebit: online scrub didn't fail.
+keys[4].extentflag_hi = lastbit: online scrub didn't fail.
+keys[4].extentflag_hi = add: online scrub didn't fail.
+keys[4].extentflag_hi = sub: online scrub didn't fail.
+keys[5].extentflag = ones: online scrub didn't fail.
+keys[5].extentflag = firstbit: online scrub didn't fail.
+keys[5].extentflag = middlebit: online scrub didn't fail.
+keys[5].extentflag = lastbit: online scrub didn't fail.
+keys[5].extentflag = add: online scrub didn't fail.
+keys[5].extentflag = sub: online scrub didn't fail.
+keys[5].extentflag_hi = ones: online scrub didn't fail.
+keys[5].extentflag_hi = firstbit: online scrub didn't fail.
+keys[5].extentflag_hi = middlebit: online scrub didn't fail.
+keys[5].extentflag_hi = lastbit: online scrub didn't fail.
+keys[5].extentflag_hi = add: online scrub didn't fail.
+keys[5].extentflag_hi = sub: online scrub didn't fail.
+keys[6].extentflag = ones: online scrub didn't fail.
+keys[6].extentflag = firstbit: online scrub didn't fail.
+keys[6].extentflag = middlebit: online scrub didn't fail.
+keys[6].extentflag = lastbit: online scrub didn't fail.
+keys[6].extentflag = add: online scrub didn't fail.
+keys[6].extentflag = sub: online scrub didn't fail.
+keys[6].extentflag_hi = ones: online scrub didn't fail.
+keys[6].extentflag_hi = firstbit: online scrub didn't fail.
+keys[6].extentflag_hi = middlebit: online scrub didn't fail.
+keys[6].extentflag_hi = lastbit: online scrub didn't fail.
+keys[6].extentflag_hi = add: online scrub didn't fail.
+keys[6].extentflag_hi = sub: online scrub didn't fail.
+keys[7].extentflag = ones: online scrub didn't fail.
+keys[7].extentflag = firstbit: online scrub didn't fail.
+keys[7].extentflag = middlebit: online scrub didn't fail.
+keys[7].extentflag = lastbit: online scrub didn't fail.
+keys[7].extentflag = add: online scrub didn't fail.
+keys[7].extentflag = sub: online scrub didn't fail.
+keys[7].extentflag_hi = ones: online scrub didn't fail.
+keys[7].extentflag_hi = firstbit: online scrub didn't fail.
+keys[7].extentflag_hi = middlebit: online scrub didn't fail.
+keys[7].extentflag_hi = lastbit: online scrub didn't fail.
+keys[7].extentflag_hi = add: online scrub didn't fail.
+keys[7].extentflag_hi = sub: online scrub didn't fail.
+keys[8].extentflag = ones: online scrub didn't fail.
+keys[8].extentflag = firstbit: online scrub didn't fail.
+keys[8].extentflag = middlebit: online scrub didn't fail.
+keys[8].extentflag = lastbit: online scrub didn't fail.
+keys[8].extentflag = add: online scrub didn't fail.
+keys[8].extentflag = sub: online scrub didn't fail.
+keys[8].extentflag_hi = ones: online scrub didn't fail.
+keys[8].extentflag_hi = firstbit: online scrub didn't fail.
+keys[8].extentflag_hi = middlebit: online scrub didn't fail.
+keys[8].extentflag_hi = lastbit: online scrub didn't fail.
+keys[8].extentflag_hi = add: online scrub didn't fail.
+keys[8].extentflag_hi = sub: online scrub didn't fail.
+keys[9].extentflag = ones: online scrub didn't fail.
+keys[9].extentflag = firstbit: online scrub didn't fail.
+keys[9].extentflag = middlebit: online scrub didn't fail.
+keys[9].extentflag = lastbit: online scrub didn't fail.
+keys[9].extentflag = add: online scrub didn't fail.
+keys[9].extentflag = sub: online scrub didn't fail.
+keys[9].extentflag_hi = ones: online scrub didn't fail.
+keys[9].extentflag_hi = firstbit: online scrub didn't fail.
+keys[9].extentflag_hi = middlebit: online scrub didn't fail.
+keys[9].extentflag_hi = lastbit: online scrub didn't fail.
+keys[9].extentflag_hi = add: online scrub didn't fail.
+keys[9].extentflag_hi = sub: online scrub didn't fail.
 Done fuzzing rmapbt keyptr
diff --git a/tests/xfs/375.out b/tests/xfs/375.out
index ea92d7087f..746fa31ea0 100644
--- a/tests/xfs/375.out
+++ b/tests/xfs/375.out
@@ -2,4 +2,98 @@ QA output created by 375
 Format and populate
 Find btree-format dir inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = firstbit: online repair failed (1).
+core.mode = firstbit: online re-scrub failed (5).
+core.mode = firstbit: offline re-scrub failed (1).
+core.mode = firstbit: online post-mod scrub failed (1).
+core.mode = firstbit: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (1).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.size = zeroes: online repair failed (1).
+core.size = zeroes: online re-scrub failed (5).
+core.size = zeroes: offline re-scrub failed (1).
+core.size = zeroes: online post-mod scrub failed (1).
+core.size = zeroes: offline post-mod scrub failed (1).
+core.size = middlebit: online health check failed (0).
+core.size = middlebit: online repair failed (4).
+core.size = middlebit: online re-scrub failed (4).
+core.size = middlebit: online post-mod scrub failed (4).
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.naextents = lastbit: online repair failed (1).
+core.naextents = lastbit: online re-scrub failed (5).
+core.naextents = lastbit: offline re-scrub failed (1).
+core.naextents = lastbit: online post-mod scrub failed (1).
+core.naextents = lastbit: offline post-mod scrub failed (1).
+core.forkoff = ones: online repair failed (1).
+core.forkoff = ones: online re-scrub failed (5).
+core.forkoff = ones: offline re-scrub failed (1).
+core.forkoff = ones: online post-mod scrub failed (1).
+core.forkoff = ones: offline post-mod scrub failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = firstbit: online re-scrub failed (5).
+core.forkoff = firstbit: offline re-scrub failed (1).
+core.forkoff = firstbit: online post-mod scrub failed (1).
+core.forkoff = firstbit: offline post-mod scrub failed (1).
+core.forkoff = add: online repair failed (1).
+core.forkoff = add: online re-scrub failed (5).
+core.forkoff = add: offline re-scrub failed (1).
+core.forkoff = add: online post-mod scrub failed (1).
+core.forkoff = add: offline post-mod scrub failed (1).
+core.forkoff = sub: online repair failed (1).
+core.forkoff = sub: online re-scrub failed (5).
+core.forkoff = sub: offline re-scrub failed (1).
+core.forkoff = sub: online post-mod scrub failed (1).
+core.forkoff = sub: offline post-mod scrub failed (1).
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+u3.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/377.out b/tests/xfs/377.out
index e70a34fd17..acc01a4669 100644
--- a/tests/xfs/377.out
+++ b/tests/xfs/377.out
@@ -2,4 +2,66 @@ QA output created by 377
 Format and populate
 Find extents-format file inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = firstbit: online re-scrub failed (5).
+core.forkoff = firstbit: offline re-scrub failed (1).
+core.forkoff = firstbit: online post-mod scrub failed (1).
+core.forkoff = firstbit: offline post-mod scrub failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+u3.bmx[0].blockcount = middlebit: online repair failed (4).
+u3.bmx[0].blockcount = middlebit: online re-scrub failed (4).
+u3.bmx[0].blockcount = middlebit: offline re-scrub failed (1).
+u3.bmx[0].blockcount = middlebit: pre-mod mount failed (32).
+u3.bmx[0].blockcount = add: online repair failed (4).
+u3.bmx[0].blockcount = add: online re-scrub failed (4).
+u3.bmx[0].blockcount = add: offline re-scrub failed (1).
+u3.bmx[0].blockcount = add: pre-mod mount failed (32).
 Done fuzzing inode
diff --git a/tests/xfs/379.out b/tests/xfs/379.out
index 308b193490..2b856af2f4 100644
--- a/tests/xfs/379.out
+++ b/tests/xfs/379.out
@@ -2,4 +2,78 @@ QA output created by 379
 Format and populate
 Find btree-format file inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.naextents = lastbit: online repair failed (1).
+core.naextents = lastbit: online re-scrub failed (5).
+core.naextents = lastbit: offline re-scrub failed (1).
+core.naextents = lastbit: online post-mod scrub failed (1).
+core.naextents = lastbit: offline post-mod scrub failed (1).
+core.forkoff = ones: online repair failed (1).
+core.forkoff = ones: online re-scrub failed (5).
+core.forkoff = ones: offline re-scrub failed (1).
+core.forkoff = ones: online post-mod scrub failed (1).
+core.forkoff = ones: offline post-mod scrub failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = firstbit: online re-scrub failed (5).
+core.forkoff = firstbit: offline re-scrub failed (1).
+core.forkoff = firstbit: online post-mod scrub failed (1).
+core.forkoff = firstbit: offline post-mod scrub failed (1).
+core.forkoff = add: online repair failed (1).
+core.forkoff = add: online re-scrub failed (5).
+core.forkoff = add: offline re-scrub failed (1).
+core.forkoff = add: online post-mod scrub failed (1).
+core.forkoff = add: offline post-mod scrub failed (1).
+core.forkoff = sub: online repair failed (1).
+core.forkoff = sub: online re-scrub failed (5).
+core.forkoff = sub: offline re-scrub failed (1).
+core.forkoff = sub: online post-mod scrub failed (1).
+core.forkoff = sub: offline post-mod scrub failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/381.out b/tests/xfs/381.out
index 217b15e325..4141e66342 100644
--- a/tests/xfs/381.out
+++ b/tests/xfs/381.out
@@ -2,4 +2,5 @@ QA output created by 381
 Format and populate
 Find bmbt block
 Fuzz bmbt
+rightsib = lastbit: online re-scrub failed (5).
 Done fuzzing bmbt
diff --git a/tests/xfs/383.out b/tests/xfs/383.out
index 69e2bca491..b124a4e2a9 100644
--- a/tests/xfs/383.out
+++ b/tests/xfs/383.out
@@ -2,4 +2,8 @@ QA output created by 383
 Format and populate
 Find symlink remote block
 Fuzz symlink remote block
+data = ones: online scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing symlink remote block
diff --git a/tests/xfs/385.out b/tests/xfs/385.out
index e2b6bffd90..02dd1d5085 100644
--- a/tests/xfs/385.out
+++ b/tests/xfs/385.out
@@ -2,4 +2,72 @@ QA output created by 385
 Format and populate
 Find inline-format dir inode
 Fuzz inline-format dir inode
+core.mode = firstbit: online repair failed (1).
+core.mode = firstbit: online re-scrub failed (5).
+core.mode = firstbit: offline re-scrub failed (1).
+core.mode = firstbit: online post-mod scrub failed (1).
+core.mode = firstbit: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = firstbit: online re-scrub failed (5).
+core.forkoff = firstbit: offline re-scrub failed (1).
+core.forkoff = firstbit: online post-mod scrub failed (1).
+core.forkoff = firstbit: offline post-mod scrub failed (1).
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = add: online scrub didn't fail.
 Done fuzzing inline-format dir inode
diff --git a/tests/xfs/399.out b/tests/xfs/399.out
index 229bcc0353..8379781def 100644
--- a/tests/xfs/399.out
+++ b/tests/xfs/399.out
@@ -2,4 +2,67 @@ QA output created by 399
 Format and populate
 Find inline-format attr inode
 Fuzz inline-format attr inode
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+a.sfattr.list[1].name = ones: online scrub didn't fail.
+a.sfattr.list[1].name = firstbit: online scrub didn't fail.
+a.sfattr.list[1].name = middlebit: online scrub didn't fail.
+a.sfattr.list[1].name = lastbit: online scrub didn't fail.
+a.sfattr.list[1].name = add: online scrub didn't fail.
+a.sfattr.list[1].name = sub: online scrub didn't fail.
+a.sfattr.list[2].name = ones: online scrub didn't fail.
+a.sfattr.list[2].name = firstbit: online scrub didn't fail.
+a.sfattr.list[2].name = middlebit: online scrub didn't fail.
+a.sfattr.list[2].name = lastbit: online scrub didn't fail.
+a.sfattr.list[2].name = add: online scrub didn't fail.
+a.sfattr.list[2].name = sub: online scrub didn't fail.
 Done fuzzing inline-format attr inode
diff --git a/tests/xfs/401.out b/tests/xfs/401.out
index 2729f3eafb..3102736cff 100644
--- a/tests/xfs/401.out
+++ b/tests/xfs/401.out
@@ -2,4 +2,76 @@ QA output created by 401
 Format and populate
 Find leaf-format attr block
 Fuzz leaf-format attr block
+hdr.firstused = middlebit: online scrub didn't fail.
+hdr.firstused = middlebit: offline re-scrub failed (1).
+hdr.firstused = middlebit: offline post-mod scrub failed (1).
+hdr.holes = ones: online scrub didn't fail.
+hdr.holes = firstbit: online scrub didn't fail.
+hdr.holes = middlebit: online scrub didn't fail.
+hdr.holes = lastbit: online scrub didn't fail.
+hdr.holes = add: online scrub didn't fail.
+hdr.holes = sub: online scrub didn't fail.
+hdr.freemap[0].size = zeroes: online scrub didn't fail.
+hdr.freemap[1].base = middlebit: online scrub didn't fail.
+hdr.freemap[2].base = middlebit: online scrub didn't fail.
+entries[0].incomplete = ones: online scrub didn't fail.
+entries[0].incomplete = firstbit: online scrub didn't fail.
+entries[0].incomplete = middlebit: online scrub didn't fail.
+entries[0].incomplete = lastbit: online scrub didn't fail.
+entries[0].incomplete = add: online scrub didn't fail.
+entries[0].incomplete = sub: online scrub didn't fail.
+entries[1].incomplete = ones: online scrub didn't fail.
+entries[1].incomplete = firstbit: online scrub didn't fail.
+entries[1].incomplete = middlebit: online scrub didn't fail.
+entries[1].incomplete = lastbit: online scrub didn't fail.
+entries[1].incomplete = add: online scrub didn't fail.
+entries[1].incomplete = sub: online scrub didn't fail.
+entries[2].incomplete = ones: online scrub didn't fail.
+entries[2].incomplete = firstbit: online scrub didn't fail.
+entries[2].incomplete = middlebit: online scrub didn't fail.
+entries[2].incomplete = lastbit: online scrub didn't fail.
+entries[2].incomplete = add: online scrub didn't fail.
+entries[2].incomplete = sub: online scrub didn't fail.
+entries[3].incomplete = ones: online scrub didn't fail.
+entries[3].incomplete = firstbit: online scrub didn't fail.
+entries[3].incomplete = middlebit: online scrub didn't fail.
+entries[3].incomplete = lastbit: online scrub didn't fail.
+entries[3].incomplete = add: online scrub didn't fail.
+entries[3].incomplete = sub: online scrub didn't fail.
+entries[4].incomplete = ones: online scrub didn't fail.
+entries[4].incomplete = firstbit: online scrub didn't fail.
+entries[4].incomplete = middlebit: online scrub didn't fail.
+entries[4].incomplete = lastbit: online scrub didn't fail.
+entries[4].incomplete = add: online scrub didn't fail.
+entries[4].incomplete = sub: online scrub didn't fail.
+entries[5].incomplete = ones: online scrub didn't fail.
+entries[5].incomplete = firstbit: online scrub didn't fail.
+entries[5].incomplete = middlebit: online scrub didn't fail.
+entries[5].incomplete = lastbit: online scrub didn't fail.
+entries[5].incomplete = add: online scrub didn't fail.
+entries[5].incomplete = sub: online scrub didn't fail.
+entries[6].incomplete = ones: online scrub didn't fail.
+entries[6].incomplete = firstbit: online scrub didn't fail.
+entries[6].incomplete = middlebit: online scrub didn't fail.
+entries[6].incomplete = lastbit: online scrub didn't fail.
+entries[6].incomplete = add: online scrub didn't fail.
+entries[6].incomplete = sub: online scrub didn't fail.
+entries[7].incomplete = ones: online scrub didn't fail.
+entries[7].incomplete = firstbit: online scrub didn't fail.
+entries[7].incomplete = middlebit: online scrub didn't fail.
+entries[7].incomplete = lastbit: online scrub didn't fail.
+entries[7].incomplete = add: online scrub didn't fail.
+entries[7].incomplete = sub: online scrub didn't fail.
+entries[8].incomplete = ones: online scrub didn't fail.
+entries[8].incomplete = firstbit: online scrub didn't fail.
+entries[8].incomplete = middlebit: online scrub didn't fail.
+entries[8].incomplete = lastbit: online scrub didn't fail.
+entries[8].incomplete = add: online scrub didn't fail.
+entries[8].incomplete = sub: online scrub didn't fail.
+entries[9].incomplete = ones: online scrub didn't fail.
+entries[9].incomplete = firstbit: online scrub didn't fail.
+entries[9].incomplete = middlebit: online scrub didn't fail.
+entries[9].incomplete = lastbit: online scrub didn't fail.
+entries[9].incomplete = add: online scrub didn't fail.
+entries[9].incomplete = sub: online scrub didn't fail.
 Done fuzzing leaf-format attr block
diff --git a/tests/xfs/405.out b/tests/xfs/405.out
index b7c114cf69..0f9ad76bd5 100644
--- a/tests/xfs/405.out
+++ b/tests/xfs/405.out
@@ -2,4 +2,9 @@ QA output created by 405
 Format and populate
 Find external attr block
 Fuzz external attr block
+data = zeroes: online scrub didn't fail.
+data = ones: online scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing external attr block
diff --git a/tests/xfs/413.out b/tests/xfs/413.out
index cebe104e6e..8ad1b3d239 100644
--- a/tests/xfs/413.out
+++ b/tests/xfs/413.out
@@ -2,4 +2,52 @@ QA output created by 413
 Format and populate
 Find btree-format attr inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/415.out b/tests/xfs/415.out
index 0784c0d5d8..6ff2573796 100644
--- a/tests/xfs/415.out
+++ b/tests/xfs/415.out
@@ -2,4 +2,60 @@ QA output created by 415
 Format and populate
 Find blockdev inode
 Fuzz inode
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.size = middlebit: online scrub didn't fail.
+core.size = middlebit: offline re-scrub failed (1).
+core.size = middlebit: offline post-mod scrub failed (1).
+core.size = lastbit: online scrub didn't fail.
+core.size = lastbit: offline re-scrub failed (1).
+core.size = lastbit: offline post-mod scrub failed (1).
+core.size = add: online scrub didn't fail.
+core.size = add: offline re-scrub failed (1).
+core.size = add: offline post-mod scrub failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.dev = zeroes: online scrub didn't fail.
+u3.dev = ones: online scrub didn't fail.
+u3.dev = firstbit: online scrub didn't fail.
+u3.dev = middlebit: online scrub didn't fail.
+u3.dev = lastbit: online scrub didn't fail.
+u3.dev = add: online scrub didn't fail.
+u3.dev = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/417.out b/tests/xfs/417.out
index 744cc2c715..cbd2b8f6e3 100644
--- a/tests/xfs/417.out
+++ b/tests/xfs/417.out
@@ -2,4 +2,60 @@ QA output created by 417
 Format and populate
 Find local-format symlink inode
 Fuzz inode
+core.mode = firstbit: online repair failed (1).
+core.mode = firstbit: online re-scrub failed (5).
+core.mode = firstbit: offline re-scrub failed (1).
+core.mode = firstbit: online post-mod scrub failed (1).
+core.mode = firstbit: offline post-mod scrub failed (1).
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.uid = ones: online re-scrub failed (1).
+core.gid = ones: online re-scrub failed (1).
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = zeroes: online re-scrub failed (4).
+core.nlinkv2 = zeroes: offline re-scrub failed (1).
+core.nlinkv2 = zeroes: online post-mod scrub failed (4).
+core.nlinkv2 = zeroes: offline post-mod scrub failed (1).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.nlinkv2 = lastbit: online re-scrub failed (4).
+core.nlinkv2 = lastbit: offline re-scrub failed (1).
+core.nlinkv2 = lastbit: online post-mod scrub failed (4).
+core.nlinkv2 = lastbit: offline post-mod scrub failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = firstbit: online re-scrub failed (5).
+core.forkoff = firstbit: offline re-scrub failed (1).
+core.forkoff = firstbit: online post-mod scrub failed (1).
+core.forkoff = firstbit: offline post-mod scrub failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.symlink = ones: online scrub didn't fail.
+u3.symlink = firstbit: online scrub didn't fail.
+u3.symlink = middlebit: online scrub didn't fail.
+u3.symlink = lastbit: online scrub didn't fail.
+u3.symlink = add: online scrub didn't fail.
+u3.symlink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/426.out b/tests/xfs/426.out
index daddd1f3c8..d431c3dfb9 100644
--- a/tests/xfs/426.out
+++ b/tests/xfs/426.out
@@ -1,4 +1,136 @@
 QA output created by 426
 Format and populate
 Fuzz user 0 dquot
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 4242 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 8484 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/428.out b/tests/xfs/428.out
index f694aa03a6..b0ea71f271 100644
--- a/tests/xfs/428.out
+++ b/tests/xfs/428.out
@@ -1,4 +1,136 @@
 QA output created by 428
 Format and populate
 Fuzz group 0 dquot
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 4242 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 8484 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/430.out b/tests/xfs/430.out
index 0e7fa85c30..5193cae57e 100644
--- a/tests/xfs/430.out
+++ b/tests/xfs/430.out
@@ -1,4 +1,136 @@
 QA output created by 430
 Format and populate
 Fuzz project 0 dquot
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 4242 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 8484 dquot
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/730.out b/tests/xfs/730.out
index 28d4becad3..c35b704a11 100644
--- a/tests/xfs/730.out
+++ b/tests/xfs/730.out
@@ -1,4 +1,14 @@
 QA output created by 730
 Format and populate
 Fuzz fscounters
+icount = zeroes: online scrub didn't fail.
+icount = ones: online scrub didn't fail.
+icount = firstbit: online scrub didn't fail.
+icount = middlebit: online scrub didn't fail.
+ifree = ones: online scrub didn't fail.
+ifree = firstbit: online scrub didn't fail.
+ifree = middlebit: online scrub didn't fail.
+fdblocks = ones: online scrub didn't fail.
+fdblocks = firstbit: online scrub didn't fail.
+fdblocks = middlebit: online scrub didn't fail.
 Done fuzzing fscounters


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 2/4] xfs: offline fuzz test known output
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 1/4] xfs: online fuzz test known output Darrick J. Wong
@ 2023-12-27 13:44   ` Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 3/4] xfs: norepair " Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 4/4] xfs: bothrepair " Darrick J. Wong
  3 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:44 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Record all the currently known failures of the xfs_repair check and
repair code.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/350.out |   91 +++++++++
 tests/xfs/354.out |   87 +++++++++
 tests/xfs/356.out |   13 +
 tests/xfs/358.out |    5 
 tests/xfs/360.out |   30 +++
 tests/xfs/362.out |    5 
 tests/xfs/364.out |    6 +
 tests/xfs/366.out |    6 +
 tests/xfs/368.out |    8 +
 tests/xfs/370.out |  417 +++++++++++++++++++++++++++++++++++++++++
 tests/xfs/372.out |    5 
 tests/xfs/374.out |   35 +++
 tests/xfs/376.out |   22 ++
 tests/xfs/378.out |   22 ++
 tests/xfs/382.out |    4 
 tests/xfs/384.out |   38 ++++
 tests/xfs/386.out |   28 +++
 tests/xfs/388.out |  535 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/392.out |    7 +
 tests/xfs/394.out |   12 +
 tests/xfs/398.out |   38 ++++
 tests/xfs/400.out |   26 +++
 tests/xfs/402.out |    7 +
 tests/xfs/404.out |   33 +++
 tests/xfs/410.out |    6 +
 tests/xfs/412.out |   21 ++
 tests/xfs/414.out |   23 ++
 tests/xfs/416.out |   22 ++
 tests/xfs/418.out |   90 +++++++++
 tests/xfs/425.out |  258 ++++++++++++++++++++++++++
 tests/xfs/427.out |  258 ++++++++++++++++++++++++++
 tests/xfs/429.out |  258 ++++++++++++++++++++++++++
 tests/xfs/496.out |   24 ++
 tests/xfs/734.out |    9 +
 tests/xfs/737.out |   14 +
 tests/xfs/754.out |   23 ++
 tests/xfs/785.out |   23 ++
 37 files changed, 2509 insertions(+)


diff --git a/tests/xfs/350.out b/tests/xfs/350.out
index 3bb9762b30..a0b70cf907 100644
--- a/tests/xfs/350.out
+++ b/tests/xfs/350.out
@@ -1,4 +1,95 @@
 QA output created by 350
 Format and populate
 Fuzz superblock
+rgblocks = middlebit: offline scrub didn't fail.
+rgblocks = lastbit: offline scrub didn't fail.
+rgblocks = add: offline scrub didn't fail.
+rgblocks = sub: offline scrub didn't fail.
+fname = ones: offline scrub didn't fail.
+fname = firstbit: offline scrub didn't fail.
+fname = middlebit: offline scrub didn't fail.
+fname = lastbit: offline scrub didn't fail.
+imax_pct = zeroes: offline scrub didn't fail.
+imax_pct = middlebit: offline scrub didn't fail.
+imax_pct = lastbit: offline scrub didn't fail.
+qflags = zeroes: offline scrub didn't fail.
+qflags = ones: offline scrub didn't fail.
+qflags = firstbit: offline scrub didn't fail.
+qflags = middlebit: offline scrub didn't fail.
+qflags = lastbit: offline scrub didn't fail.
+qflags = add: offline scrub didn't fail.
+qflags = sub: offline scrub didn't fail.
+dirblklog = lastbit: online post-mod scrub failed (1).
+logsunit = zeroes: offline scrub didn't fail.
+logsunit = zeroes: online post-mod scrub failed (1).
+logsunit = lastbit: offline scrub didn't fail.
+logsunit = lastbit: online post-mod scrub failed (1).
+bad_features2 = zeroes: offline scrub didn't fail.
+features_compat = ones: offline repair failed (1).
+features_compat = ones: offline re-scrub failed (1).
+features_compat = ones: pre-mod mount failed (32).
+features_compat = firstbit: offline repair failed (1).
+features_compat = firstbit: offline re-scrub failed (1).
+features_compat = firstbit: pre-mod mount failed (32).
+features_compat = middlebit: offline repair failed (1).
+features_compat = middlebit: offline re-scrub failed (1).
+features_compat = middlebit: pre-mod mount failed (32).
+features_compat = lastbit: offline repair failed (1).
+features_compat = lastbit: offline re-scrub failed (1).
+features_compat = lastbit: pre-mod mount failed (32).
+features_compat = add: offline repair failed (1).
+features_compat = add: offline re-scrub failed (1).
+features_compat = add: pre-mod mount failed (32).
+features_compat = sub: offline repair failed (1).
+features_compat = sub: offline re-scrub failed (1).
+features_compat = sub: pre-mod mount failed (32).
+features_ro_compat = zeroes: offline re-scrub failed (1).
+features_ro_compat = zeroes: offline post-mod scrub failed (1).
+features_ro_compat = ones: offline repair failed (1).
+features_ro_compat = ones: offline re-scrub failed (1).
+features_ro_compat = ones: pre-mod mount failed (32).
+features_ro_compat = firstbit: offline repair failed (1).
+features_ro_compat = firstbit: offline re-scrub failed (1).
+features_ro_compat = firstbit: pre-mod mount failed (32).
+features_ro_compat = middlebit: offline repair failed (1).
+features_ro_compat = middlebit: offline re-scrub failed (1).
+features_ro_compat = middlebit: pre-mod mount failed (32).
+features_ro_compat = lastbit: offline re-scrub failed (1).
+features_ro_compat = lastbit: offline post-mod scrub failed (1).
+features_ro_compat = add: offline repair failed (1).
+features_ro_compat = add: offline re-scrub failed (1).
+features_ro_compat = add: pre-mod mount failed (32).
+features_ro_compat = sub: offline repair failed (1).
+features_ro_compat = sub: offline re-scrub failed (1).
+features_ro_compat = sub: pre-mod mount failed (32).
+features_incompat = ones: offline repair failed (1).
+features_incompat = ones: offline re-scrub failed (1).
+features_incompat = ones: pre-mod mount failed (32).
+features_incompat = middlebit: offline repair failed (1).
+features_incompat = middlebit: offline re-scrub failed (1).
+features_incompat = middlebit: pre-mod mount failed (32).
+features_incompat = lastbit: offline repair failed (1).
+features_incompat = lastbit: offline re-scrub failed (1).
+features_incompat = lastbit: pre-mod mount failed (32).
+features_incompat = sub: offline repair failed (1).
+features_incompat = sub: offline re-scrub failed (1).
+features_incompat = sub: pre-mod mount failed (32).
+features_log_incompat = ones: offline scrub didn't fail.
+features_log_incompat = ones: offline repair failed (1).
+features_log_incompat = ones: offline re-scrub failed (1).
+features_log_incompat = ones: pre-mod mount failed (32).
+features_log_incompat = firstbit: offline scrub didn't fail.
+features_log_incompat = middlebit: offline scrub didn't fail.
+features_log_incompat = middlebit: offline repair failed (1).
+features_log_incompat = middlebit: offline re-scrub failed (1).
+features_log_incompat = middlebit: pre-mod mount failed (32).
+features_log_incompat = lastbit: offline scrub didn't fail.
+features_log_incompat = add: offline scrub didn't fail.
+features_log_incompat = add: offline repair failed (1).
+features_log_incompat = add: offline re-scrub failed (1).
+features_log_incompat = add: pre-mod mount failed (32).
+features_log_incompat = sub: offline scrub didn't fail.
+features_log_incompat = sub: offline repair failed (1).
+features_log_incompat = sub: offline re-scrub failed (1).
+features_log_incompat = sub: pre-mod mount failed (32).
 Done fuzzing superblock
diff --git a/tests/xfs/354.out b/tests/xfs/354.out
index d8b33f64ea..0e53e4909f 100644
--- a/tests/xfs/354.out
+++ b/tests/xfs/354.out
@@ -1,6 +1,93 @@
 QA output created by 354
 Format and populate
 Fuzz AGFL
+magicnum = zeroes: offline scrub didn't fail.
+magicnum = ones: offline scrub didn't fail.
+magicnum = firstbit: offline scrub didn't fail.
+magicnum = middlebit: offline scrub didn't fail.
+magicnum = lastbit: offline scrub didn't fail.
+magicnum = add: offline scrub didn't fail.
+magicnum = sub: offline scrub didn't fail.
+seqno = ones: offline scrub didn't fail.
+seqno = firstbit: offline scrub didn't fail.
+seqno = middlebit: offline scrub didn't fail.
+seqno = lastbit: offline scrub didn't fail.
+seqno = add: offline scrub didn't fail.
+seqno = sub: offline scrub didn't fail.
+uuid = zeroes: offline scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+bno[0] = zeroes: offline scrub didn't fail.
+bno[0] = firstbit: offline scrub didn't fail.
+bno[0] = middlebit: offline scrub didn't fail.
+bno[0] = lastbit: offline scrub didn't fail.
+bno[0] = add: offline scrub didn't fail.
+bno[0] = sub: offline scrub didn't fail.
+bno[1] = zeroes: offline scrub didn't fail.
+bno[1] = ones: offline scrub didn't fail.
+bno[1] = firstbit: offline scrub didn't fail.
+bno[1] = middlebit: offline scrub didn't fail.
+bno[1] = lastbit: offline scrub didn't fail.
+bno[1] = add: offline scrub didn't fail.
+bno[1] = sub: offline scrub didn't fail.
+bno[2] = zeroes: offline scrub didn't fail.
+bno[2] = ones: offline scrub didn't fail.
+bno[2] = firstbit: offline scrub didn't fail.
+bno[2] = middlebit: offline scrub didn't fail.
+bno[2] = lastbit: offline scrub didn't fail.
+bno[2] = add: offline scrub didn't fail.
+bno[2] = sub: offline scrub didn't fail.
+bno[3] = zeroes: offline scrub didn't fail.
+bno[3] = ones: offline scrub didn't fail.
+bno[3] = firstbit: offline scrub didn't fail.
+bno[3] = middlebit: offline scrub didn't fail.
+bno[3] = lastbit: offline scrub didn't fail.
+bno[3] = add: offline scrub didn't fail.
+bno[3] = sub: offline scrub didn't fail.
+bno[4] = zeroes: offline scrub didn't fail.
+bno[4] = ones: offline scrub didn't fail.
+bno[4] = firstbit: offline scrub didn't fail.
+bno[4] = middlebit: offline scrub didn't fail.
+bno[4] = lastbit: offline scrub didn't fail.
+bno[4] = add: offline scrub didn't fail.
+bno[4] = sub: offline scrub didn't fail.
+bno[5] = zeroes: offline scrub didn't fail.
+bno[5] = ones: offline scrub didn't fail.
+bno[5] = firstbit: offline scrub didn't fail.
+bno[5] = middlebit: offline scrub didn't fail.
+bno[5] = lastbit: offline scrub didn't fail.
+bno[5] = add: offline scrub didn't fail.
+bno[5] = sub: offline scrub didn't fail.
+bno[6] = zeroes: offline scrub didn't fail.
+bno[6] = ones: offline scrub didn't fail.
+bno[6] = firstbit: offline scrub didn't fail.
+bno[6] = middlebit: offline scrub didn't fail.
+bno[6] = lastbit: offline scrub didn't fail.
+bno[6] = add: offline scrub didn't fail.
+bno[6] = sub: offline scrub didn't fail.
+bno[7] = zeroes: offline scrub didn't fail.
+bno[7] = ones: offline scrub didn't fail.
+bno[7] = firstbit: offline scrub didn't fail.
+bno[7] = middlebit: offline scrub didn't fail.
+bno[7] = lastbit: offline scrub didn't fail.
+bno[7] = add: offline scrub didn't fail.
+bno[7] = sub: offline scrub didn't fail.
+bno[8] = zeroes: offline scrub didn't fail.
+bno[8] = ones: offline scrub didn't fail.
+bno[8] = firstbit: offline scrub didn't fail.
+bno[8] = middlebit: offline scrub didn't fail.
+bno[8] = lastbit: offline scrub didn't fail.
+bno[8] = add: offline scrub didn't fail.
+bno[8] = sub: offline scrub didn't fail.
+bno[9] = zeroes: offline scrub didn't fail.
+bno[9] = ones: offline scrub didn't fail.
+bno[9] = firstbit: offline scrub didn't fail.
+bno[9] = middlebit: offline scrub didn't fail.
+bno[9] = lastbit: offline scrub didn't fail.
+bno[9] = add: offline scrub didn't fail.
+bno[9] = sub: offline scrub didn't fail.
 Done fuzzing AGFL
 Fuzz AGFL flfirst
 Done fuzzing AGFL flfirst
diff --git a/tests/xfs/356.out b/tests/xfs/356.out
index ca7834467a..aa40e3e1a3 100644
--- a/tests/xfs/356.out
+++ b/tests/xfs/356.out
@@ -1,4 +1,17 @@
 QA output created by 356
 Format and populate
 Fuzz AGI
+newino = zeroes: offline scrub didn't fail.
+newino = ones: offline scrub didn't fail.
+newino = firstbit: offline scrub didn't fail.
+newino = middlebit: offline scrub didn't fail.
+newino = lastbit: offline scrub didn't fail.
+newino = add: offline scrub didn't fail.
+newino = sub: offline scrub didn't fail.
+dirino = zeroes: offline scrub didn't fail.
+dirino = firstbit: offline scrub didn't fail.
+dirino = middlebit: offline scrub didn't fail.
+dirino = lastbit: offline scrub didn't fail.
+dirino = add: offline scrub didn't fail.
+dirino = sub: offline scrub didn't fail.
 Done fuzzing AGI
diff --git a/tests/xfs/358.out b/tests/xfs/358.out
index e1ec8623ad..0e04f3a81c 100644
--- a/tests/xfs/358.out
+++ b/tests/xfs/358.out
@@ -1,4 +1,9 @@
 QA output created by 358
 Format and populate
 Fuzz bnobt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing bnobt recs
diff --git a/tests/xfs/360.out b/tests/xfs/360.out
index fd7ce6cdb3..30011ce698 100644
--- a/tests/xfs/360.out
+++ b/tests/xfs/360.out
@@ -1,4 +1,34 @@
 QA output created by 360
 Format and populate
 Fuzz bnobt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = ones: offline scrub didn't fail.
+keys[1].startblock = firstbit: offline scrub didn't fail.
+keys[1].startblock = middlebit: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = add: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
+keys[1].blockcount = zeroes: offline scrub didn't fail.
+keys[1].blockcount = ones: offline scrub didn't fail.
+keys[1].blockcount = firstbit: offline scrub didn't fail.
+keys[1].blockcount = middlebit: offline scrub didn't fail.
+keys[1].blockcount = lastbit: offline scrub didn't fail.
+keys[1].blockcount = add: offline scrub didn't fail.
+keys[1].blockcount = sub: offline scrub didn't fail.
+keys[2].startblock = zeroes: offline scrub didn't fail.
+keys[2].startblock = ones: offline scrub didn't fail.
+keys[2].startblock = firstbit: offline scrub didn't fail.
+keys[2].startblock = middlebit: offline scrub didn't fail.
+keys[2].startblock = lastbit: offline scrub didn't fail.
+keys[2].startblock = add: offline scrub didn't fail.
+keys[2].startblock = sub: offline scrub didn't fail.
+keys[2].blockcount = zeroes: offline scrub didn't fail.
+keys[2].blockcount = ones: offline scrub didn't fail.
+keys[2].blockcount = firstbit: offline scrub didn't fail.
+keys[2].blockcount = middlebit: offline scrub didn't fail.
+keys[2].blockcount = lastbit: offline scrub didn't fail.
+keys[2].blockcount = add: offline scrub didn't fail.
+keys[2].blockcount = sub: offline scrub didn't fail.
 Done fuzzing bnobt keyptr
diff --git a/tests/xfs/362.out b/tests/xfs/362.out
index d39175e590..9c5fb8064d 100644
--- a/tests/xfs/362.out
+++ b/tests/xfs/362.out
@@ -1,4 +1,9 @@
 QA output created by 362
 Format and populate
 Fuzz cntbt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing cntbt
diff --git a/tests/xfs/364.out b/tests/xfs/364.out
index 2d6fad24e4..2df69904ed 100644
--- a/tests/xfs/364.out
+++ b/tests/xfs/364.out
@@ -1,4 +1,10 @@
 QA output created by 364
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing inobt
diff --git a/tests/xfs/366.out b/tests/xfs/366.out
index 14906508ea..0970587bc9 100644
--- a/tests/xfs/366.out
+++ b/tests/xfs/366.out
@@ -1,4 +1,10 @@
 QA output created by 366
 Format and populate
 Fuzz finobt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing finobt
diff --git a/tests/xfs/368.out b/tests/xfs/368.out
index 370ea0ef9a..213e1dab3d 100644
--- a/tests/xfs/368.out
+++ b/tests/xfs/368.out
@@ -1,4 +1,12 @@
 QA output created by 368
 Format and populate
 Fuzz rmapbt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+recs[3].startblock = lastbit: offline scrub didn't fail.
+recs[3].blockcount = lastbit: offline scrub didn't fail.
+recs[6].owner = lastbit: offline scrub didn't fail.
 Done fuzzing rmapbt recs
diff --git a/tests/xfs/370.out b/tests/xfs/370.out
index 6858e135ad..84b9ded9b5 100644
--- a/tests/xfs/370.out
+++ b/tests/xfs/370.out
@@ -1,4 +1,421 @@
 QA output created by 370
 Format and populate
 Fuzz rmapbt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].owner = zeroes: offline scrub didn't fail.
+keys[1].owner = ones: offline scrub didn't fail.
+keys[1].owner = firstbit: offline scrub didn't fail.
+keys[1].owner = middlebit: offline scrub didn't fail.
+keys[1].owner = lastbit: offline scrub didn't fail.
+keys[1].owner = add: offline scrub didn't fail.
+keys[1].owner = sub: offline scrub didn't fail.
+keys[1].offset = ones: offline scrub didn't fail.
+keys[1].offset = firstbit: offline scrub didn't fail.
+keys[1].offset = middlebit: offline scrub didn't fail.
+keys[1].offset = lastbit: offline scrub didn't fail.
+keys[1].offset = add: offline scrub didn't fail.
+keys[1].offset = sub: offline scrub didn't fail.
+keys[1].extentflag = ones: offline scrub didn't fail.
+keys[1].extentflag = firstbit: offline scrub didn't fail.
+keys[1].extentflag = middlebit: offline scrub didn't fail.
+keys[1].extentflag = lastbit: offline scrub didn't fail.
+keys[1].extentflag = add: offline scrub didn't fail.
+keys[1].extentflag = sub: offline scrub didn't fail.
+keys[1].attrfork = ones: offline scrub didn't fail.
+keys[1].attrfork = firstbit: offline scrub didn't fail.
+keys[1].attrfork = middlebit: offline scrub didn't fail.
+keys[1].attrfork = lastbit: offline scrub didn't fail.
+keys[1].attrfork = add: offline scrub didn't fail.
+keys[1].attrfork = sub: offline scrub didn't fail.
+keys[1].bmbtblock = ones: offline scrub didn't fail.
+keys[1].bmbtblock = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock = add: offline scrub didn't fail.
+keys[1].bmbtblock = sub: offline scrub didn't fail.
+keys[1].startblock_hi = ones: offline scrub didn't fail.
+keys[1].startblock_hi = firstbit: offline scrub didn't fail.
+keys[1].startblock_hi = middlebit: offline scrub didn't fail.
+keys[1].startblock_hi = lastbit: offline scrub didn't fail.
+keys[1].startblock_hi = add: offline scrub didn't fail.
+keys[1].startblock_hi = sub: offline scrub didn't fail.
+keys[1].owner_hi = ones: offline scrub didn't fail.
+keys[1].owner_hi = firstbit: offline scrub didn't fail.
+keys[1].owner_hi = middlebit: offline scrub didn't fail.
+keys[1].owner_hi = lastbit: offline scrub didn't fail.
+keys[1].owner_hi = add: offline scrub didn't fail.
+keys[1].owner_hi = sub: offline scrub didn't fail.
+keys[1].offset_hi = ones: offline scrub didn't fail.
+keys[1].offset_hi = firstbit: offline scrub didn't fail.
+keys[1].offset_hi = middlebit: offline scrub didn't fail.
+keys[1].offset_hi = add: offline scrub didn't fail.
+keys[1].offset_hi = sub: offline scrub didn't fail.
+keys[1].extentflag_hi = ones: offline scrub didn't fail.
+keys[1].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[1].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[1].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[1].extentflag_hi = add: offline scrub didn't fail.
+keys[1].extentflag_hi = sub: offline scrub didn't fail.
+keys[1].attrfork_hi = ones: offline scrub didn't fail.
+keys[1].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[1].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[1].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[1].attrfork_hi = add: offline scrub didn't fail.
+keys[1].attrfork_hi = sub: offline scrub didn't fail.
+keys[1].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[1].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = add: offline scrub didn't fail.
+keys[1].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[2].owner = zeroes: offline scrub didn't fail.
+keys[2].offset = zeroes: offline scrub didn't fail.
+keys[2].offset = lastbit: offline scrub didn't fail.
+keys[2].extentflag = ones: offline scrub didn't fail.
+keys[2].extentflag = firstbit: offline scrub didn't fail.
+keys[2].extentflag = middlebit: offline scrub didn't fail.
+keys[2].extentflag = lastbit: offline scrub didn't fail.
+keys[2].extentflag = add: offline scrub didn't fail.
+keys[2].extentflag = sub: offline scrub didn't fail.
+keys[2].startblock_hi = ones: offline scrub didn't fail.
+keys[2].startblock_hi = firstbit: offline scrub didn't fail.
+keys[2].startblock_hi = middlebit: offline scrub didn't fail.
+keys[2].startblock_hi = lastbit: offline scrub didn't fail.
+keys[2].startblock_hi = add: offline scrub didn't fail.
+keys[2].startblock_hi = sub: offline scrub didn't fail.
+keys[2].owner_hi = ones: offline scrub didn't fail.
+keys[2].owner_hi = firstbit: offline scrub didn't fail.
+keys[2].owner_hi = middlebit: offline scrub didn't fail.
+keys[2].owner_hi = lastbit: offline scrub didn't fail.
+keys[2].owner_hi = add: offline scrub didn't fail.
+keys[2].owner_hi = sub: offline scrub didn't fail.
+keys[2].offset_hi = ones: offline scrub didn't fail.
+keys[2].offset_hi = firstbit: offline scrub didn't fail.
+keys[2].offset_hi = middlebit: offline scrub didn't fail.
+keys[2].offset_hi = add: offline scrub didn't fail.
+keys[2].offset_hi = sub: offline scrub didn't fail.
+keys[2].extentflag_hi = ones: offline scrub didn't fail.
+keys[2].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[2].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[2].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[2].extentflag_hi = add: offline scrub didn't fail.
+keys[2].extentflag_hi = sub: offline scrub didn't fail.
+keys[2].attrfork_hi = ones: offline scrub didn't fail.
+keys[2].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[2].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[2].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[2].attrfork_hi = add: offline scrub didn't fail.
+keys[2].attrfork_hi = sub: offline scrub didn't fail.
+keys[2].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[2].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = add: offline scrub didn't fail.
+keys[2].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[3].owner = zeroes: offline scrub didn't fail.
+keys[3].offset = zeroes: offline scrub didn't fail.
+keys[3].offset = lastbit: offline scrub didn't fail.
+keys[3].extentflag = ones: offline scrub didn't fail.
+keys[3].extentflag = firstbit: offline scrub didn't fail.
+keys[3].extentflag = middlebit: offline scrub didn't fail.
+keys[3].extentflag = lastbit: offline scrub didn't fail.
+keys[3].extentflag = add: offline scrub didn't fail.
+keys[3].extentflag = sub: offline scrub didn't fail.
+keys[3].startblock_hi = ones: offline scrub didn't fail.
+keys[3].startblock_hi = firstbit: offline scrub didn't fail.
+keys[3].startblock_hi = middlebit: offline scrub didn't fail.
+keys[3].startblock_hi = lastbit: offline scrub didn't fail.
+keys[3].startblock_hi = add: offline scrub didn't fail.
+keys[3].startblock_hi = sub: offline scrub didn't fail.
+keys[3].owner_hi = ones: offline scrub didn't fail.
+keys[3].owner_hi = firstbit: offline scrub didn't fail.
+keys[3].owner_hi = middlebit: offline scrub didn't fail.
+keys[3].owner_hi = lastbit: offline scrub didn't fail.
+keys[3].owner_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = ones: offline scrub didn't fail.
+keys[3].offset_hi = firstbit: offline scrub didn't fail.
+keys[3].offset_hi = middlebit: offline scrub didn't fail.
+keys[3].offset_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = sub: offline scrub didn't fail.
+keys[3].extentflag_hi = ones: offline scrub didn't fail.
+keys[3].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[3].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[3].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[3].extentflag_hi = add: offline scrub didn't fail.
+keys[3].extentflag_hi = sub: offline scrub didn't fail.
+keys[3].attrfork_hi = ones: offline scrub didn't fail.
+keys[3].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[3].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[3].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[3].attrfork_hi = add: offline scrub didn't fail.
+keys[3].attrfork_hi = sub: offline scrub didn't fail.
+keys[3].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[3].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = add: offline scrub didn't fail.
+keys[3].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[4].owner = zeroes: offline scrub didn't fail.
+keys[4].owner = sub: offline scrub didn't fail.
+keys[4].offset = zeroes: offline scrub didn't fail.
+keys[4].offset = lastbit: offline scrub didn't fail.
+keys[4].extentflag = ones: offline scrub didn't fail.
+keys[4].extentflag = firstbit: offline scrub didn't fail.
+keys[4].extentflag = middlebit: offline scrub didn't fail.
+keys[4].extentflag = lastbit: offline scrub didn't fail.
+keys[4].extentflag = add: offline scrub didn't fail.
+keys[4].extentflag = sub: offline scrub didn't fail.
+keys[4].startblock_hi = ones: offline scrub didn't fail.
+keys[4].startblock_hi = firstbit: offline scrub didn't fail.
+keys[4].startblock_hi = middlebit: offline scrub didn't fail.
+keys[4].startblock_hi = lastbit: offline scrub didn't fail.
+keys[4].startblock_hi = add: offline scrub didn't fail.
+keys[4].startblock_hi = sub: offline scrub didn't fail.
+keys[4].owner_hi = ones: offline scrub didn't fail.
+keys[4].owner_hi = firstbit: offline scrub didn't fail.
+keys[4].owner_hi = middlebit: offline scrub didn't fail.
+keys[4].owner_hi = lastbit: offline scrub didn't fail.
+keys[4].owner_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = ones: offline scrub didn't fail.
+keys[4].offset_hi = firstbit: offline scrub didn't fail.
+keys[4].offset_hi = middlebit: offline scrub didn't fail.
+keys[4].offset_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = sub: offline scrub didn't fail.
+keys[4].extentflag_hi = ones: offline scrub didn't fail.
+keys[4].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[4].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[4].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[4].extentflag_hi = add: offline scrub didn't fail.
+keys[4].extentflag_hi = sub: offline scrub didn't fail.
+keys[4].attrfork_hi = ones: offline scrub didn't fail.
+keys[4].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[4].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[4].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[4].attrfork_hi = add: offline scrub didn't fail.
+keys[4].attrfork_hi = sub: offline scrub didn't fail.
+keys[4].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[4].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = add: offline scrub didn't fail.
+keys[4].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[5].owner = zeroes: offline scrub didn't fail.
+keys[5].owner = sub: offline scrub didn't fail.
+keys[5].offset = zeroes: offline scrub didn't fail.
+keys[5].offset = lastbit: offline scrub didn't fail.
+keys[5].extentflag = ones: offline scrub didn't fail.
+keys[5].extentflag = firstbit: offline scrub didn't fail.
+keys[5].extentflag = middlebit: offline scrub didn't fail.
+keys[5].extentflag = lastbit: offline scrub didn't fail.
+keys[5].extentflag = add: offline scrub didn't fail.
+keys[5].extentflag = sub: offline scrub didn't fail.
+keys[5].startblock_hi = ones: offline scrub didn't fail.
+keys[5].startblock_hi = firstbit: offline scrub didn't fail.
+keys[5].startblock_hi = middlebit: offline scrub didn't fail.
+keys[5].startblock_hi = lastbit: offline scrub didn't fail.
+keys[5].startblock_hi = add: offline scrub didn't fail.
+keys[5].startblock_hi = sub: offline scrub didn't fail.
+keys[5].owner_hi = ones: offline scrub didn't fail.
+keys[5].owner_hi = firstbit: offline scrub didn't fail.
+keys[5].owner_hi = middlebit: offline scrub didn't fail.
+keys[5].owner_hi = lastbit: offline scrub didn't fail.
+keys[5].owner_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = ones: offline scrub didn't fail.
+keys[5].offset_hi = firstbit: offline scrub didn't fail.
+keys[5].offset_hi = middlebit: offline scrub didn't fail.
+keys[5].offset_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = sub: offline scrub didn't fail.
+keys[5].extentflag_hi = ones: offline scrub didn't fail.
+keys[5].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[5].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[5].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[5].extentflag_hi = add: offline scrub didn't fail.
+keys[5].extentflag_hi = sub: offline scrub didn't fail.
+keys[5].attrfork_hi = ones: offline scrub didn't fail.
+keys[5].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[5].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[5].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[5].attrfork_hi = add: offline scrub didn't fail.
+keys[5].attrfork_hi = sub: offline scrub didn't fail.
+keys[5].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[5].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = add: offline scrub didn't fail.
+keys[5].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[6].owner = zeroes: offline scrub didn't fail.
+keys[6].owner = sub: offline scrub didn't fail.
+keys[6].offset = zeroes: offline scrub didn't fail.
+keys[6].offset = lastbit: offline scrub didn't fail.
+keys[6].extentflag = ones: offline scrub didn't fail.
+keys[6].extentflag = firstbit: offline scrub didn't fail.
+keys[6].extentflag = middlebit: offline scrub didn't fail.
+keys[6].extentflag = lastbit: offline scrub didn't fail.
+keys[6].extentflag = add: offline scrub didn't fail.
+keys[6].extentflag = sub: offline scrub didn't fail.
+keys[6].startblock_hi = ones: offline scrub didn't fail.
+keys[6].startblock_hi = firstbit: offline scrub didn't fail.
+keys[6].startblock_hi = middlebit: offline scrub didn't fail.
+keys[6].startblock_hi = lastbit: offline scrub didn't fail.
+keys[6].startblock_hi = add: offline scrub didn't fail.
+keys[6].owner_hi = ones: offline scrub didn't fail.
+keys[6].owner_hi = firstbit: offline scrub didn't fail.
+keys[6].owner_hi = middlebit: offline scrub didn't fail.
+keys[6].owner_hi = lastbit: offline scrub didn't fail.
+keys[6].owner_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = ones: offline scrub didn't fail.
+keys[6].offset_hi = firstbit: offline scrub didn't fail.
+keys[6].offset_hi = middlebit: offline scrub didn't fail.
+keys[6].offset_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = sub: offline scrub didn't fail.
+keys[6].extentflag_hi = ones: offline scrub didn't fail.
+keys[6].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[6].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[6].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[6].extentflag_hi = add: offline scrub didn't fail.
+keys[6].extentflag_hi = sub: offline scrub didn't fail.
+keys[6].attrfork_hi = ones: offline scrub didn't fail.
+keys[6].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[6].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[6].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[6].attrfork_hi = add: offline scrub didn't fail.
+keys[6].attrfork_hi = sub: offline scrub didn't fail.
+keys[6].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[6].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = add: offline scrub didn't fail.
+keys[6].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[7].owner = zeroes: offline scrub didn't fail.
+keys[7].owner = lastbit: offline scrub didn't fail.
+keys[7].owner = sub: offline scrub didn't fail.
+keys[7].offset = zeroes: offline scrub didn't fail.
+keys[7].offset = lastbit: offline scrub didn't fail.
+keys[7].extentflag = ones: offline scrub didn't fail.
+keys[7].extentflag = firstbit: offline scrub didn't fail.
+keys[7].extentflag = middlebit: offline scrub didn't fail.
+keys[7].extentflag = lastbit: offline scrub didn't fail.
+keys[7].extentflag = add: offline scrub didn't fail.
+keys[7].extentflag = sub: offline scrub didn't fail.
+keys[7].startblock_hi = ones: offline scrub didn't fail.
+keys[7].startblock_hi = firstbit: offline scrub didn't fail.
+keys[7].startblock_hi = middlebit: offline scrub didn't fail.
+keys[7].startblock_hi = lastbit: offline scrub didn't fail.
+keys[7].startblock_hi = add: offline scrub didn't fail.
+keys[7].owner_hi = ones: offline scrub didn't fail.
+keys[7].owner_hi = firstbit: offline scrub didn't fail.
+keys[7].owner_hi = middlebit: offline scrub didn't fail.
+keys[7].owner_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = ones: offline scrub didn't fail.
+keys[7].offset_hi = firstbit: offline scrub didn't fail.
+keys[7].offset_hi = middlebit: offline scrub didn't fail.
+keys[7].offset_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = sub: offline scrub didn't fail.
+keys[7].extentflag_hi = ones: offline scrub didn't fail.
+keys[7].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[7].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[7].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[7].extentflag_hi = add: offline scrub didn't fail.
+keys[7].extentflag_hi = sub: offline scrub didn't fail.
+keys[7].attrfork_hi = ones: offline scrub didn't fail.
+keys[7].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[7].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[7].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[7].attrfork_hi = add: offline scrub didn't fail.
+keys[7].attrfork_hi = sub: offline scrub didn't fail.
+keys[7].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[7].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = add: offline scrub didn't fail.
+keys[7].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[8].owner = zeroes: offline scrub didn't fail.
+keys[8].owner = lastbit: offline scrub didn't fail.
+keys[8].owner = sub: offline scrub didn't fail.
+keys[8].offset = zeroes: offline scrub didn't fail.
+keys[8].offset = lastbit: offline scrub didn't fail.
+keys[8].extentflag = ones: offline scrub didn't fail.
+keys[8].extentflag = firstbit: offline scrub didn't fail.
+keys[8].extentflag = middlebit: offline scrub didn't fail.
+keys[8].extentflag = lastbit: offline scrub didn't fail.
+keys[8].extentflag = add: offline scrub didn't fail.
+keys[8].extentflag = sub: offline scrub didn't fail.
+keys[8].startblock_hi = ones: offline scrub didn't fail.
+keys[8].startblock_hi = firstbit: offline scrub didn't fail.
+keys[8].startblock_hi = middlebit: offline scrub didn't fail.
+keys[8].startblock_hi = lastbit: offline scrub didn't fail.
+keys[8].startblock_hi = add: offline scrub didn't fail.
+keys[8].owner_hi = ones: offline scrub didn't fail.
+keys[8].owner_hi = firstbit: offline scrub didn't fail.
+keys[8].owner_hi = middlebit: offline scrub didn't fail.
+keys[8].owner_hi = lastbit: offline scrub didn't fail.
+keys[8].owner_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = ones: offline scrub didn't fail.
+keys[8].offset_hi = firstbit: offline scrub didn't fail.
+keys[8].offset_hi = middlebit: offline scrub didn't fail.
+keys[8].offset_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = sub: offline scrub didn't fail.
+keys[8].extentflag_hi = ones: offline scrub didn't fail.
+keys[8].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[8].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[8].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[8].extentflag_hi = add: offline scrub didn't fail.
+keys[8].extentflag_hi = sub: offline scrub didn't fail.
+keys[8].attrfork_hi = ones: offline scrub didn't fail.
+keys[8].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[8].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[8].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[8].attrfork_hi = add: offline scrub didn't fail.
+keys[8].attrfork_hi = sub: offline scrub didn't fail.
+keys[8].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[8].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = add: offline scrub didn't fail.
+keys[8].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[9].owner = zeroes: offline scrub didn't fail.
+keys[9].owner = sub: offline scrub didn't fail.
+keys[9].offset = zeroes: offline scrub didn't fail.
+keys[9].offset = lastbit: offline scrub didn't fail.
+keys[9].extentflag = ones: offline scrub didn't fail.
+keys[9].extentflag = firstbit: offline scrub didn't fail.
+keys[9].extentflag = middlebit: offline scrub didn't fail.
+keys[9].extentflag = lastbit: offline scrub didn't fail.
+keys[9].extentflag = add: offline scrub didn't fail.
+keys[9].extentflag = sub: offline scrub didn't fail.
+keys[9].startblock_hi = ones: offline scrub didn't fail.
+keys[9].startblock_hi = firstbit: offline scrub didn't fail.
+keys[9].startblock_hi = middlebit: offline scrub didn't fail.
+keys[9].startblock_hi = lastbit: offline scrub didn't fail.
+keys[9].startblock_hi = add: offline scrub didn't fail.
+keys[9].owner_hi = ones: offline scrub didn't fail.
+keys[9].owner_hi = firstbit: offline scrub didn't fail.
+keys[9].owner_hi = middlebit: offline scrub didn't fail.
+keys[9].owner_hi = lastbit: offline scrub didn't fail.
+keys[9].owner_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = ones: offline scrub didn't fail.
+keys[9].offset_hi = firstbit: offline scrub didn't fail.
+keys[9].offset_hi = middlebit: offline scrub didn't fail.
+keys[9].offset_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = sub: offline scrub didn't fail.
+keys[9].extentflag_hi = ones: offline scrub didn't fail.
+keys[9].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[9].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[9].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[9].extentflag_hi = add: offline scrub didn't fail.
+keys[9].extentflag_hi = sub: offline scrub didn't fail.
+keys[9].attrfork_hi = ones: offline scrub didn't fail.
+keys[9].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[9].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[9].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[9].attrfork_hi = add: offline scrub didn't fail.
+keys[9].attrfork_hi = sub: offline scrub didn't fail.
+keys[9].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[9].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = add: offline scrub didn't fail.
+keys[9].bmbtblock_hi = sub: offline scrub didn't fail.
 Done fuzzing rmapbt keyptr
diff --git a/tests/xfs/372.out b/tests/xfs/372.out
index da95f3d5eb..45fcdfc61f 100644
--- a/tests/xfs/372.out
+++ b/tests/xfs/372.out
@@ -1,4 +1,9 @@
 QA output created by 372
 Format and populate
 Fuzz refcountbt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/374.out b/tests/xfs/374.out
index 853d07a90b..116a4c17ec 100644
--- a/tests/xfs/374.out
+++ b/tests/xfs/374.out
@@ -2,4 +2,39 @@ QA output created by 374
 Format and populate
 Find btree-format dir inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online post-mod scrub failed (4).
+core.size = lastbit: offline scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+u3.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/376.out b/tests/xfs/376.out
index 40f360e97f..de52138584 100644
--- a/tests/xfs/376.out
+++ b/tests/xfs/376.out
@@ -2,4 +2,26 @@ QA output created by 376
 Format and populate
 Find extents-format file inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.size = zeroes: offline scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/378.out b/tests/xfs/378.out
index f0b1c640d8..04a10ba1c4 100644
--- a/tests/xfs/378.out
+++ b/tests/xfs/378.out
@@ -2,4 +2,26 @@ QA output created by 378
 Format and populate
 Find btree-format file inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.size = zeroes: offline scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/382.out b/tests/xfs/382.out
index 255bd382db..a20d560f74 100644
--- a/tests/xfs/382.out
+++ b/tests/xfs/382.out
@@ -2,4 +2,8 @@ QA output created by 382
 Format and populate
 Find symlink remote block
 Fuzz symlink remote block
+data = ones: offline scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
 Done fuzzing symlink remote block
diff --git a/tests/xfs/384.out b/tests/xfs/384.out
index 6d0a6ae14a..3b11cb3f7d 100644
--- a/tests/xfs/384.out
+++ b/tests/xfs/384.out
@@ -2,4 +2,42 @@ QA output created by 384
 Format and populate
 Find inline-format dir inode
 Fuzz inline-format dir inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = add: offline scrub didn't fail.
 Done fuzzing inline-format dir inode
diff --git a/tests/xfs/386.out b/tests/xfs/386.out
index a1f1afc8a6..9d9f9c6818 100644
--- a/tests/xfs/386.out
+++ b/tests/xfs/386.out
@@ -2,4 +2,32 @@ QA output created by 386
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+bhdr.hdr.crc = zeroes: offline scrub didn't fail.
+bhdr.hdr.crc = ones: offline scrub didn't fail.
+bhdr.hdr.crc = firstbit: offline scrub didn't fail.
+bhdr.hdr.crc = middlebit: offline scrub didn't fail.
+bhdr.hdr.crc = lastbit: offline scrub didn't fail.
+bhdr.hdr.crc = add: offline scrub didn't fail.
+bhdr.hdr.crc = sub: offline scrub didn't fail.
+bhdr.hdr.owner = zeroes: offline re-scrub failed (1).
+bhdr.hdr.owner = zeroes: online post-mod scrub failed (1).
+bhdr.hdr.owner = zeroes: offline post-mod scrub failed (1).
+bhdr.hdr.owner = ones: offline re-scrub failed (1).
+bhdr.hdr.owner = ones: online post-mod scrub failed (1).
+bhdr.hdr.owner = ones: offline post-mod scrub failed (1).
+bhdr.hdr.owner = firstbit: offline re-scrub failed (1).
+bhdr.hdr.owner = firstbit: online post-mod scrub failed (1).
+bhdr.hdr.owner = firstbit: offline post-mod scrub failed (1).
+bhdr.hdr.owner = middlebit: offline re-scrub failed (1).
+bhdr.hdr.owner = middlebit: online post-mod scrub failed (1).
+bhdr.hdr.owner = middlebit: offline post-mod scrub failed (1).
+bhdr.hdr.owner = lastbit: offline re-scrub failed (1).
+bhdr.hdr.owner = lastbit: online post-mod scrub failed (1).
+bhdr.hdr.owner = lastbit: offline post-mod scrub failed (1).
+bhdr.hdr.owner = add: offline re-scrub failed (1).
+bhdr.hdr.owner = add: online post-mod scrub failed (1).
+bhdr.hdr.owner = add: offline post-mod scrub failed (1).
+bhdr.hdr.owner = sub: offline re-scrub failed (1).
+bhdr.hdr.owner = sub: online post-mod scrub failed (1).
+bhdr.hdr.owner = sub: offline post-mod scrub failed (1).
 Done fuzzing data-format dir block
diff --git a/tests/xfs/388.out b/tests/xfs/388.out
index 175d3b46f2..4848c6c9de 100644
--- a/tests/xfs/388.out
+++ b/tests/xfs/388.out
@@ -2,4 +2,539 @@ QA output created by 388
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+dhdr.hdr.crc = zeroes: offline scrub didn't fail.
+dhdr.hdr.crc = ones: offline scrub didn't fail.
+dhdr.hdr.crc = firstbit: offline scrub didn't fail.
+dhdr.hdr.crc = middlebit: offline scrub didn't fail.
+dhdr.hdr.crc = lastbit: offline scrub didn't fail.
+dhdr.hdr.crc = add: offline scrub didn't fail.
+dhdr.hdr.crc = sub: offline scrub didn't fail.
+dhdr.hdr.bno = zeroes: offline re-scrub failed (1).
+dhdr.hdr.bno = zeroes: online post-mod scrub failed (1).
+dhdr.hdr.bno = zeroes: offline post-mod scrub failed (1).
+dhdr.hdr.bno = ones: offline re-scrub failed (1).
+dhdr.hdr.bno = ones: online post-mod scrub failed (1).
+dhdr.hdr.bno = ones: offline post-mod scrub failed (1).
+dhdr.hdr.bno = firstbit: offline re-scrub failed (1).
+dhdr.hdr.bno = firstbit: online post-mod scrub failed (1).
+dhdr.hdr.bno = firstbit: offline post-mod scrub failed (1).
+dhdr.hdr.bno = middlebit: offline re-scrub failed (1).
+dhdr.hdr.bno = middlebit: online post-mod scrub failed (1).
+dhdr.hdr.bno = middlebit: offline post-mod scrub failed (1).
+dhdr.hdr.bno = lastbit: offline re-scrub failed (1).
+dhdr.hdr.bno = lastbit: online post-mod scrub failed (1).
+dhdr.hdr.bno = lastbit: offline post-mod scrub failed (1).
+dhdr.hdr.bno = add: offline re-scrub failed (1).
+dhdr.hdr.bno = add: online post-mod scrub failed (1).
+dhdr.hdr.bno = add: offline post-mod scrub failed (1).
+dhdr.hdr.bno = sub: offline re-scrub failed (1).
+dhdr.hdr.bno = sub: online post-mod scrub failed (1).
+dhdr.hdr.bno = sub: offline post-mod scrub failed (1).
+dhdr.hdr.uuid = zeroes: offline re-scrub failed (1).
+dhdr.hdr.uuid = zeroes: online post-mod scrub failed (1).
+dhdr.hdr.uuid = zeroes: offline post-mod scrub failed (1).
+dhdr.hdr.uuid = ones: offline re-scrub failed (1).
+dhdr.hdr.uuid = ones: online post-mod scrub failed (1).
+dhdr.hdr.uuid = ones: offline post-mod scrub failed (1).
+dhdr.hdr.uuid = firstbit: offline re-scrub failed (1).
+dhdr.hdr.uuid = firstbit: online post-mod scrub failed (1).
+dhdr.hdr.uuid = firstbit: offline post-mod scrub failed (1).
+dhdr.hdr.uuid = middlebit: offline re-scrub failed (1).
+dhdr.hdr.uuid = middlebit: online post-mod scrub failed (1).
+dhdr.hdr.uuid = middlebit: offline post-mod scrub failed (1).
+dhdr.hdr.uuid = lastbit: offline re-scrub failed (1).
+dhdr.hdr.uuid = lastbit: online post-mod scrub failed (1).
+dhdr.hdr.uuid = lastbit: offline post-mod scrub failed (1).
+dhdr.hdr.owner = zeroes: offline re-scrub failed (1).
+dhdr.hdr.owner = zeroes: online post-mod scrub failed (1).
+dhdr.hdr.owner = zeroes: offline post-mod scrub failed (1).
+dhdr.hdr.owner = ones: offline re-scrub failed (1).
+dhdr.hdr.owner = ones: online post-mod scrub failed (1).
+dhdr.hdr.owner = ones: offline post-mod scrub failed (1).
+dhdr.hdr.owner = firstbit: offline re-scrub failed (1).
+dhdr.hdr.owner = firstbit: online post-mod scrub failed (1).
+dhdr.hdr.owner = firstbit: offline post-mod scrub failed (1).
+dhdr.hdr.owner = middlebit: offline re-scrub failed (1).
+dhdr.hdr.owner = middlebit: online post-mod scrub failed (1).
+dhdr.hdr.owner = middlebit: offline post-mod scrub failed (1).
+dhdr.hdr.owner = lastbit: offline re-scrub failed (1).
+dhdr.hdr.owner = lastbit: online post-mod scrub failed (1).
+dhdr.hdr.owner = lastbit: offline post-mod scrub failed (1).
+dhdr.hdr.owner = add: offline re-scrub failed (1).
+dhdr.hdr.owner = add: online post-mod scrub failed (1).
+dhdr.hdr.owner = add: offline post-mod scrub failed (1).
+dhdr.hdr.owner = sub: offline re-scrub failed (1).
+dhdr.hdr.owner = sub: online post-mod scrub failed (1).
+dhdr.hdr.owner = sub: offline post-mod scrub failed (1).
+du[0].inumber = ones: offline re-scrub failed (1).
+du[0].inumber = ones: online post-mod scrub failed (1).
+du[0].inumber = ones: offline post-mod scrub failed (1).
+du[0].inumber = sub: offline re-scrub failed (1).
+du[0].inumber = sub: online post-mod scrub failed (1).
+du[0].inumber = sub: offline post-mod scrub failed (1).
+du[0].namelen = zeroes: offline re-scrub failed (1).
+du[0].namelen = zeroes: online post-mod scrub failed (1).
+du[0].namelen = zeroes: offline post-mod scrub failed (1).
+du[0].namelen = ones: offline re-scrub failed (1).
+du[0].namelen = ones: online post-mod scrub failed (1).
+du[0].namelen = ones: offline post-mod scrub failed (1).
+du[0].namelen = firstbit: offline re-scrub failed (1).
+du[0].namelen = firstbit: online post-mod scrub failed (1).
+du[0].namelen = firstbit: offline post-mod scrub failed (1).
+du[0].namelen = middlebit: offline re-scrub failed (1).
+du[0].namelen = middlebit: online post-mod scrub failed (1).
+du[0].namelen = middlebit: offline post-mod scrub failed (1).
+du[0].namelen = lastbit: offline re-scrub failed (1).
+du[0].namelen = lastbit: online post-mod scrub failed (1).
+du[0].namelen = lastbit: offline post-mod scrub failed (1).
+du[0].namelen = add: offline re-scrub failed (1).
+du[0].namelen = add: online post-mod scrub failed (1).
+du[0].namelen = add: offline post-mod scrub failed (1).
+du[0].namelen = sub: offline re-scrub failed (1).
+du[0].namelen = sub: online post-mod scrub failed (1).
+du[0].namelen = sub: offline post-mod scrub failed (1).
+du[0].name = zeroes: offline re-scrub failed (1).
+du[0].name = zeroes: online post-mod scrub failed (1).
+du[0].name = zeroes: offline post-mod scrub failed (1).
+du[0].name = ones: offline re-scrub failed (1).
+du[0].name = ones: online post-mod scrub failed (1).
+du[0].name = ones: offline post-mod scrub failed (1).
+du[0].name = firstbit: offline re-scrub failed (1).
+du[0].name = firstbit: online post-mod scrub failed (1).
+du[0].name = firstbit: offline post-mod scrub failed (1).
+du[0].name = middlebit: offline re-scrub failed (1).
+du[0].name = middlebit: online post-mod scrub failed (1).
+du[0].name = middlebit: offline post-mod scrub failed (1).
+du[0].name = lastbit: offline re-scrub failed (1).
+du[0].name = lastbit: online post-mod scrub failed (1).
+du[0].name = lastbit: offline post-mod scrub failed (1).
+du[0].name = add: offline re-scrub failed (1).
+du[0].name = add: online post-mod scrub failed (1).
+du[0].name = add: offline post-mod scrub failed (1).
+du[0].name = sub: offline re-scrub failed (1).
+du[0].name = sub: online post-mod scrub failed (1).
+du[0].name = sub: offline post-mod scrub failed (1).
+du[0].tag = zeroes: offline re-scrub failed (1).
+du[0].tag = zeroes: online post-mod scrub failed (1).
+du[0].tag = zeroes: offline post-mod scrub failed (1).
+du[0].tag = ones: offline re-scrub failed (1).
+du[0].tag = ones: online post-mod scrub failed (1).
+du[0].tag = ones: offline post-mod scrub failed (1).
+du[0].tag = firstbit: offline re-scrub failed (1).
+du[0].tag = firstbit: online post-mod scrub failed (1).
+du[0].tag = firstbit: offline post-mod scrub failed (1).
+du[0].tag = middlebit: offline re-scrub failed (1).
+du[0].tag = middlebit: online post-mod scrub failed (1).
+du[0].tag = middlebit: offline post-mod scrub failed (1).
+du[0].tag = lastbit: offline re-scrub failed (1).
+du[0].tag = lastbit: online post-mod scrub failed (1).
+du[0].tag = lastbit: offline post-mod scrub failed (1).
+du[0].tag = add: offline re-scrub failed (1).
+du[0].tag = add: online post-mod scrub failed (1).
+du[0].tag = add: offline post-mod scrub failed (1).
+du[0].tag = sub: offline re-scrub failed (1).
+du[0].tag = sub: online post-mod scrub failed (1).
+du[0].tag = sub: offline post-mod scrub failed (1).
+du[1].inumber = ones: offline re-scrub failed (1).
+du[1].inumber = ones: online post-mod scrub failed (1).
+du[1].inumber = ones: offline post-mod scrub failed (1).
+du[1].inumber = sub: offline re-scrub failed (1).
+du[1].inumber = sub: online post-mod scrub failed (1).
+du[1].inumber = sub: offline post-mod scrub failed (1).
+du[1].namelen = ones: offline re-scrub failed (1).
+du[1].namelen = ones: online post-mod scrub failed (1).
+du[1].namelen = ones: offline post-mod scrub failed (1).
+du[1].namelen = firstbit: offline re-scrub failed (1).
+du[1].namelen = firstbit: online post-mod scrub failed (1).
+du[1].namelen = firstbit: offline post-mod scrub failed (1).
+du[1].namelen = middlebit: offline re-scrub failed (1).
+du[1].namelen = middlebit: online post-mod scrub failed (1).
+du[1].namelen = middlebit: offline post-mod scrub failed (1).
+du[1].namelen = add: offline re-scrub failed (1).
+du[1].namelen = add: online post-mod scrub failed (1).
+du[1].namelen = add: offline post-mod scrub failed (1).
+du[1].namelen = sub: offline re-scrub failed (1).
+du[1].namelen = sub: online post-mod scrub failed (1).
+du[1].namelen = sub: offline post-mod scrub failed (1).
+du[1].tag = zeroes: offline re-scrub failed (1).
+du[1].tag = zeroes: online post-mod scrub failed (1).
+du[1].tag = zeroes: offline post-mod scrub failed (1).
+du[1].tag = ones: offline re-scrub failed (1).
+du[1].tag = ones: online post-mod scrub failed (1).
+du[1].tag = ones: offline post-mod scrub failed (1).
+du[1].tag = firstbit: offline re-scrub failed (1).
+du[1].tag = firstbit: online post-mod scrub failed (1).
+du[1].tag = firstbit: offline post-mod scrub failed (1).
+du[1].tag = middlebit: offline re-scrub failed (1).
+du[1].tag = middlebit: online post-mod scrub failed (1).
+du[1].tag = middlebit: offline post-mod scrub failed (1).
+du[1].tag = lastbit: offline re-scrub failed (1).
+du[1].tag = lastbit: online post-mod scrub failed (1).
+du[1].tag = lastbit: offline post-mod scrub failed (1).
+du[1].tag = add: offline re-scrub failed (1).
+du[1].tag = add: online post-mod scrub failed (1).
+du[1].tag = add: offline post-mod scrub failed (1).
+du[1].tag = sub: offline re-scrub failed (1).
+du[1].tag = sub: online post-mod scrub failed (1).
+du[1].tag = sub: offline post-mod scrub failed (1).
+du[2].inumber = ones: offline re-scrub failed (1).
+du[2].inumber = ones: online post-mod scrub failed (1).
+du[2].inumber = ones: offline post-mod scrub failed (1).
+du[2].inumber = sub: offline re-scrub failed (1).
+du[2].inumber = sub: online post-mod scrub failed (1).
+du[2].inumber = sub: offline post-mod scrub failed (1).
+du[2].namelen = zeroes: offline re-scrub failed (1).
+du[2].namelen = zeroes: online post-mod scrub failed (1).
+du[2].namelen = zeroes: offline post-mod scrub failed (1).
+du[2].namelen = ones: offline re-scrub failed (1).
+du[2].namelen = ones: online post-mod scrub failed (1).
+du[2].namelen = ones: offline post-mod scrub failed (1).
+du[2].namelen = firstbit: offline re-scrub failed (1).
+du[2].namelen = firstbit: online post-mod scrub failed (1).
+du[2].namelen = firstbit: offline post-mod scrub failed (1).
+du[2].namelen = middlebit: offline re-scrub failed (1).
+du[2].namelen = middlebit: online post-mod scrub failed (1).
+du[2].namelen = middlebit: offline post-mod scrub failed (1).
+du[2].namelen = add: offline re-scrub failed (1).
+du[2].namelen = add: online post-mod scrub failed (1).
+du[2].namelen = add: offline post-mod scrub failed (1).
+du[2].namelen = sub: offline re-scrub failed (1).
+du[2].namelen = sub: online post-mod scrub failed (1).
+du[2].namelen = sub: offline post-mod scrub failed (1).
+du[2].tag = zeroes: offline re-scrub failed (1).
+du[2].tag = zeroes: online post-mod scrub failed (1).
+du[2].tag = zeroes: offline post-mod scrub failed (1).
+du[2].tag = ones: offline re-scrub failed (1).
+du[2].tag = ones: online post-mod scrub failed (1).
+du[2].tag = ones: offline post-mod scrub failed (1).
+du[2].tag = firstbit: offline re-scrub failed (1).
+du[2].tag = firstbit: online post-mod scrub failed (1).
+du[2].tag = firstbit: offline post-mod scrub failed (1).
+du[2].tag = middlebit: offline re-scrub failed (1).
+du[2].tag = middlebit: online post-mod scrub failed (1).
+du[2].tag = middlebit: offline post-mod scrub failed (1).
+du[2].tag = lastbit: offline re-scrub failed (1).
+du[2].tag = lastbit: online post-mod scrub failed (1).
+du[2].tag = lastbit: offline post-mod scrub failed (1).
+du[2].tag = add: offline re-scrub failed (1).
+du[2].tag = add: online post-mod scrub failed (1).
+du[2].tag = add: offline post-mod scrub failed (1).
+du[2].tag = sub: offline re-scrub failed (1).
+du[2].tag = sub: online post-mod scrub failed (1).
+du[2].tag = sub: offline post-mod scrub failed (1).
+du[3].inumber = ones: offline re-scrub failed (1).
+du[3].inumber = ones: online post-mod scrub failed (1).
+du[3].inumber = ones: offline post-mod scrub failed (1).
+du[3].inumber = sub: offline re-scrub failed (1).
+du[3].inumber = sub: online post-mod scrub failed (1).
+du[3].inumber = sub: offline post-mod scrub failed (1).
+du[3].namelen = zeroes: offline re-scrub failed (1).
+du[3].namelen = zeroes: online post-mod scrub failed (1).
+du[3].namelen = zeroes: offline post-mod scrub failed (1).
+du[3].namelen = ones: offline re-scrub failed (1).
+du[3].namelen = ones: online post-mod scrub failed (1).
+du[3].namelen = ones: offline post-mod scrub failed (1).
+du[3].namelen = firstbit: offline re-scrub failed (1).
+du[3].namelen = firstbit: online post-mod scrub failed (1).
+du[3].namelen = firstbit: offline post-mod scrub failed (1).
+du[3].namelen = middlebit: offline re-scrub failed (1).
+du[3].namelen = middlebit: online post-mod scrub failed (1).
+du[3].namelen = middlebit: offline post-mod scrub failed (1).
+du[3].namelen = add: offline re-scrub failed (1).
+du[3].namelen = add: online post-mod scrub failed (1).
+du[3].namelen = add: offline post-mod scrub failed (1).
+du[3].namelen = sub: offline re-scrub failed (1).
+du[3].namelen = sub: online post-mod scrub failed (1).
+du[3].namelen = sub: offline post-mod scrub failed (1).
+du[3].tag = zeroes: offline re-scrub failed (1).
+du[3].tag = zeroes: online post-mod scrub failed (1).
+du[3].tag = zeroes: offline post-mod scrub failed (1).
+du[3].tag = ones: offline re-scrub failed (1).
+du[3].tag = ones: online post-mod scrub failed (1).
+du[3].tag = ones: offline post-mod scrub failed (1).
+du[3].tag = firstbit: offline re-scrub failed (1).
+du[3].tag = firstbit: online post-mod scrub failed (1).
+du[3].tag = firstbit: offline post-mod scrub failed (1).
+du[3].tag = middlebit: offline re-scrub failed (1).
+du[3].tag = middlebit: online post-mod scrub failed (1).
+du[3].tag = middlebit: offline post-mod scrub failed (1).
+du[3].tag = lastbit: offline re-scrub failed (1).
+du[3].tag = lastbit: online post-mod scrub failed (1).
+du[3].tag = lastbit: offline post-mod scrub failed (1).
+du[3].tag = add: offline re-scrub failed (1).
+du[3].tag = add: online post-mod scrub failed (1).
+du[3].tag = add: offline post-mod scrub failed (1).
+du[3].tag = sub: offline re-scrub failed (1).
+du[3].tag = sub: online post-mod scrub failed (1).
+du[3].tag = sub: offline post-mod scrub failed (1).
+du[4].inumber = ones: offline re-scrub failed (1).
+du[4].inumber = ones: online post-mod scrub failed (1).
+du[4].inumber = ones: offline post-mod scrub failed (1).
+du[4].inumber = sub: offline re-scrub failed (1).
+du[4].inumber = sub: online post-mod scrub failed (1).
+du[4].inumber = sub: offline post-mod scrub failed (1).
+du[4].namelen = zeroes: offline re-scrub failed (1).
+du[4].namelen = zeroes: online post-mod scrub failed (1).
+du[4].namelen = zeroes: offline post-mod scrub failed (1).
+du[4].namelen = ones: offline re-scrub failed (1).
+du[4].namelen = ones: online post-mod scrub failed (1).
+du[4].namelen = ones: offline post-mod scrub failed (1).
+du[4].namelen = firstbit: offline re-scrub failed (1).
+du[4].namelen = firstbit: online post-mod scrub failed (1).
+du[4].namelen = firstbit: offline post-mod scrub failed (1).
+du[4].namelen = middlebit: offline re-scrub failed (1).
+du[4].namelen = middlebit: online post-mod scrub failed (1).
+du[4].namelen = middlebit: offline post-mod scrub failed (1).
+du[4].namelen = add: offline re-scrub failed (1).
+du[4].namelen = add: online post-mod scrub failed (1).
+du[4].namelen = add: offline post-mod scrub failed (1).
+du[4].namelen = sub: offline re-scrub failed (1).
+du[4].namelen = sub: online post-mod scrub failed (1).
+du[4].namelen = sub: offline post-mod scrub failed (1).
+du[4].tag = zeroes: offline re-scrub failed (1).
+du[4].tag = zeroes: online post-mod scrub failed (1).
+du[4].tag = zeroes: offline post-mod scrub failed (1).
+du[4].tag = ones: offline re-scrub failed (1).
+du[4].tag = ones: online post-mod scrub failed (1).
+du[4].tag = ones: offline post-mod scrub failed (1).
+du[4].tag = firstbit: offline re-scrub failed (1).
+du[4].tag = firstbit: online post-mod scrub failed (1).
+du[4].tag = firstbit: offline post-mod scrub failed (1).
+du[4].tag = middlebit: offline re-scrub failed (1).
+du[4].tag = middlebit: online post-mod scrub failed (1).
+du[4].tag = middlebit: offline post-mod scrub failed (1).
+du[4].tag = lastbit: offline re-scrub failed (1).
+du[4].tag = lastbit: online post-mod scrub failed (1).
+du[4].tag = lastbit: offline post-mod scrub failed (1).
+du[4].tag = add: offline re-scrub failed (1).
+du[4].tag = add: online post-mod scrub failed (1).
+du[4].tag = add: offline post-mod scrub failed (1).
+du[4].tag = sub: offline re-scrub failed (1).
+du[4].tag = sub: online post-mod scrub failed (1).
+du[4].tag = sub: offline post-mod scrub failed (1).
+du[5].inumber = ones: offline re-scrub failed (1).
+du[5].inumber = ones: online post-mod scrub failed (1).
+du[5].inumber = ones: offline post-mod scrub failed (1).
+du[5].inumber = sub: offline re-scrub failed (1).
+du[5].inumber = sub: online post-mod scrub failed (1).
+du[5].inumber = sub: offline post-mod scrub failed (1).
+du[5].namelen = zeroes: offline re-scrub failed (1).
+du[5].namelen = zeroes: online post-mod scrub failed (1).
+du[5].namelen = zeroes: offline post-mod scrub failed (1).
+du[5].namelen = ones: offline re-scrub failed (1).
+du[5].namelen = ones: online post-mod scrub failed (1).
+du[5].namelen = ones: offline post-mod scrub failed (1).
+du[5].namelen = firstbit: offline re-scrub failed (1).
+du[5].namelen = firstbit: online post-mod scrub failed (1).
+du[5].namelen = firstbit: offline post-mod scrub failed (1).
+du[5].namelen = middlebit: offline re-scrub failed (1).
+du[5].namelen = middlebit: online post-mod scrub failed (1).
+du[5].namelen = middlebit: offline post-mod scrub failed (1).
+du[5].namelen = add: offline re-scrub failed (1).
+du[5].namelen = add: online post-mod scrub failed (1).
+du[5].namelen = add: offline post-mod scrub failed (1).
+du[5].namelen = sub: offline re-scrub failed (1).
+du[5].namelen = sub: online post-mod scrub failed (1).
+du[5].namelen = sub: offline post-mod scrub failed (1).
+du[5].tag = zeroes: offline re-scrub failed (1).
+du[5].tag = zeroes: online post-mod scrub failed (1).
+du[5].tag = zeroes: offline post-mod scrub failed (1).
+du[5].tag = ones: offline re-scrub failed (1).
+du[5].tag = ones: online post-mod scrub failed (1).
+du[5].tag = ones: offline post-mod scrub failed (1).
+du[5].tag = firstbit: offline re-scrub failed (1).
+du[5].tag = firstbit: online post-mod scrub failed (1).
+du[5].tag = firstbit: offline post-mod scrub failed (1).
+du[5].tag = middlebit: offline re-scrub failed (1).
+du[5].tag = middlebit: online post-mod scrub failed (1).
+du[5].tag = middlebit: offline post-mod scrub failed (1).
+du[5].tag = lastbit: offline re-scrub failed (1).
+du[5].tag = lastbit: online post-mod scrub failed (1).
+du[5].tag = lastbit: offline post-mod scrub failed (1).
+du[5].tag = add: offline re-scrub failed (1).
+du[5].tag = add: online post-mod scrub failed (1).
+du[5].tag = add: offline post-mod scrub failed (1).
+du[5].tag = sub: offline re-scrub failed (1).
+du[5].tag = sub: online post-mod scrub failed (1).
+du[5].tag = sub: offline post-mod scrub failed (1).
+du[6].inumber = ones: offline re-scrub failed (1).
+du[6].inumber = ones: online post-mod scrub failed (1).
+du[6].inumber = ones: offline post-mod scrub failed (1).
+du[6].inumber = sub: offline re-scrub failed (1).
+du[6].inumber = sub: online post-mod scrub failed (1).
+du[6].inumber = sub: offline post-mod scrub failed (1).
+du[6].namelen = zeroes: offline re-scrub failed (1).
+du[6].namelen = zeroes: online post-mod scrub failed (1).
+du[6].namelen = zeroes: offline post-mod scrub failed (1).
+du[6].namelen = ones: offline re-scrub failed (1).
+du[6].namelen = ones: online post-mod scrub failed (1).
+du[6].namelen = ones: offline post-mod scrub failed (1).
+du[6].namelen = firstbit: offline re-scrub failed (1).
+du[6].namelen = firstbit: online post-mod scrub failed (1).
+du[6].namelen = firstbit: offline post-mod scrub failed (1).
+du[6].namelen = middlebit: offline re-scrub failed (1).
+du[6].namelen = middlebit: online post-mod scrub failed (1).
+du[6].namelen = middlebit: offline post-mod scrub failed (1).
+du[6].namelen = add: offline re-scrub failed (1).
+du[6].namelen = add: online post-mod scrub failed (1).
+du[6].namelen = add: offline post-mod scrub failed (1).
+du[6].namelen = sub: offline re-scrub failed (1).
+du[6].namelen = sub: online post-mod scrub failed (1).
+du[6].namelen = sub: offline post-mod scrub failed (1).
+du[6].tag = zeroes: offline re-scrub failed (1).
+du[6].tag = zeroes: online post-mod scrub failed (1).
+du[6].tag = zeroes: offline post-mod scrub failed (1).
+du[6].tag = ones: offline re-scrub failed (1).
+du[6].tag = ones: online post-mod scrub failed (1).
+du[6].tag = ones: offline post-mod scrub failed (1).
+du[6].tag = firstbit: offline re-scrub failed (1).
+du[6].tag = firstbit: online post-mod scrub failed (1).
+du[6].tag = firstbit: offline post-mod scrub failed (1).
+du[6].tag = middlebit: offline re-scrub failed (1).
+du[6].tag = middlebit: online post-mod scrub failed (1).
+du[6].tag = middlebit: offline post-mod scrub failed (1).
+du[6].tag = lastbit: offline re-scrub failed (1).
+du[6].tag = lastbit: online post-mod scrub failed (1).
+du[6].tag = lastbit: offline post-mod scrub failed (1).
+du[6].tag = add: offline re-scrub failed (1).
+du[6].tag = add: online post-mod scrub failed (1).
+du[6].tag = add: offline post-mod scrub failed (1).
+du[6].tag = sub: offline re-scrub failed (1).
+du[6].tag = sub: online post-mod scrub failed (1).
+du[6].tag = sub: offline post-mod scrub failed (1).
+du[7].inumber = ones: offline re-scrub failed (1).
+du[7].inumber = ones: online post-mod scrub failed (1).
+du[7].inumber = ones: offline post-mod scrub failed (1).
+du[7].inumber = sub: offline re-scrub failed (1).
+du[7].inumber = sub: online post-mod scrub failed (1).
+du[7].inumber = sub: offline post-mod scrub failed (1).
+du[7].namelen = zeroes: offline re-scrub failed (1).
+du[7].namelen = zeroes: online post-mod scrub failed (1).
+du[7].namelen = zeroes: offline post-mod scrub failed (1).
+du[7].namelen = ones: offline re-scrub failed (1).
+du[7].namelen = ones: online post-mod scrub failed (1).
+du[7].namelen = ones: offline post-mod scrub failed (1).
+du[7].namelen = firstbit: offline re-scrub failed (1).
+du[7].namelen = firstbit: online post-mod scrub failed (1).
+du[7].namelen = firstbit: offline post-mod scrub failed (1).
+du[7].namelen = middlebit: offline re-scrub failed (1).
+du[7].namelen = middlebit: online post-mod scrub failed (1).
+du[7].namelen = middlebit: offline post-mod scrub failed (1).
+du[7].namelen = add: offline re-scrub failed (1).
+du[7].namelen = add: online post-mod scrub failed (1).
+du[7].namelen = add: offline post-mod scrub failed (1).
+du[7].namelen = sub: offline re-scrub failed (1).
+du[7].namelen = sub: online post-mod scrub failed (1).
+du[7].namelen = sub: offline post-mod scrub failed (1).
+du[7].tag = zeroes: offline re-scrub failed (1).
+du[7].tag = zeroes: online post-mod scrub failed (1).
+du[7].tag = zeroes: offline post-mod scrub failed (1).
+du[7].tag = ones: offline re-scrub failed (1).
+du[7].tag = ones: online post-mod scrub failed (1).
+du[7].tag = ones: offline post-mod scrub failed (1).
+du[7].tag = firstbit: offline re-scrub failed (1).
+du[7].tag = firstbit: online post-mod scrub failed (1).
+du[7].tag = firstbit: offline post-mod scrub failed (1).
+du[7].tag = middlebit: offline re-scrub failed (1).
+du[7].tag = middlebit: online post-mod scrub failed (1).
+du[7].tag = middlebit: offline post-mod scrub failed (1).
+du[7].tag = lastbit: offline re-scrub failed (1).
+du[7].tag = lastbit: online post-mod scrub failed (1).
+du[7].tag = lastbit: offline post-mod scrub failed (1).
+du[7].tag = add: offline re-scrub failed (1).
+du[7].tag = add: online post-mod scrub failed (1).
+du[7].tag = add: offline post-mod scrub failed (1).
+du[7].tag = sub: offline re-scrub failed (1).
+du[7].tag = sub: online post-mod scrub failed (1).
+du[7].tag = sub: offline post-mod scrub failed (1).
+du[8].inumber = ones: offline re-scrub failed (1).
+du[8].inumber = ones: online post-mod scrub failed (1).
+du[8].inumber = ones: offline post-mod scrub failed (1).
+du[8].inumber = sub: offline re-scrub failed (1).
+du[8].inumber = sub: online post-mod scrub failed (1).
+du[8].inumber = sub: offline post-mod scrub failed (1).
+du[8].namelen = zeroes: offline re-scrub failed (1).
+du[8].namelen = zeroes: online post-mod scrub failed (1).
+du[8].namelen = zeroes: offline post-mod scrub failed (1).
+du[8].namelen = ones: offline re-scrub failed (1).
+du[8].namelen = ones: online post-mod scrub failed (1).
+du[8].namelen = ones: offline post-mod scrub failed (1).
+du[8].namelen = firstbit: offline re-scrub failed (1).
+du[8].namelen = firstbit: online post-mod scrub failed (1).
+du[8].namelen = firstbit: offline post-mod scrub failed (1).
+du[8].namelen = middlebit: offline re-scrub failed (1).
+du[8].namelen = middlebit: online post-mod scrub failed (1).
+du[8].namelen = middlebit: offline post-mod scrub failed (1).
+du[8].namelen = add: offline re-scrub failed (1).
+du[8].namelen = add: online post-mod scrub failed (1).
+du[8].namelen = add: offline post-mod scrub failed (1).
+du[8].namelen = sub: offline re-scrub failed (1).
+du[8].namelen = sub: online post-mod scrub failed (1).
+du[8].namelen = sub: offline post-mod scrub failed (1).
+du[8].tag = zeroes: offline re-scrub failed (1).
+du[8].tag = zeroes: online post-mod scrub failed (1).
+du[8].tag = zeroes: offline post-mod scrub failed (1).
+du[8].tag = ones: offline re-scrub failed (1).
+du[8].tag = ones: online post-mod scrub failed (1).
+du[8].tag = ones: offline post-mod scrub failed (1).
+du[8].tag = firstbit: offline re-scrub failed (1).
+du[8].tag = firstbit: online post-mod scrub failed (1).
+du[8].tag = firstbit: offline post-mod scrub failed (1).
+du[8].tag = middlebit: offline re-scrub failed (1).
+du[8].tag = middlebit: online post-mod scrub failed (1).
+du[8].tag = middlebit: offline post-mod scrub failed (1).
+du[8].tag = lastbit: offline re-scrub failed (1).
+du[8].tag = lastbit: online post-mod scrub failed (1).
+du[8].tag = lastbit: offline post-mod scrub failed (1).
+du[8].tag = add: offline re-scrub failed (1).
+du[8].tag = add: online post-mod scrub failed (1).
+du[8].tag = add: offline post-mod scrub failed (1).
+du[8].tag = sub: offline re-scrub failed (1).
+du[8].tag = sub: online post-mod scrub failed (1).
+du[8].tag = sub: offline post-mod scrub failed (1).
+du[9].inumber = ones: offline re-scrub failed (1).
+du[9].inumber = ones: online post-mod scrub failed (1).
+du[9].inumber = ones: offline post-mod scrub failed (1).
+du[9].inumber = sub: offline re-scrub failed (1).
+du[9].inumber = sub: online post-mod scrub failed (1).
+du[9].inumber = sub: offline post-mod scrub failed (1).
+du[9].namelen = zeroes: offline re-scrub failed (1).
+du[9].namelen = zeroes: online post-mod scrub failed (1).
+du[9].namelen = zeroes: offline post-mod scrub failed (1).
+du[9].namelen = ones: offline re-scrub failed (1).
+du[9].namelen = ones: online post-mod scrub failed (1).
+du[9].namelen = ones: offline post-mod scrub failed (1).
+du[9].namelen = firstbit: offline re-scrub failed (1).
+du[9].namelen = firstbit: online post-mod scrub failed (1).
+du[9].namelen = firstbit: offline post-mod scrub failed (1).
+du[9].namelen = middlebit: offline re-scrub failed (1).
+du[9].namelen = middlebit: online post-mod scrub failed (1).
+du[9].namelen = middlebit: offline post-mod scrub failed (1).
+du[9].namelen = add: offline re-scrub failed (1).
+du[9].namelen = add: online post-mod scrub failed (1).
+du[9].namelen = add: offline post-mod scrub failed (1).
+du[9].namelen = sub: offline re-scrub failed (1).
+du[9].namelen = sub: online post-mod scrub failed (1).
+du[9].namelen = sub: offline post-mod scrub failed (1).
+du[9].tag = zeroes: offline re-scrub failed (1).
+du[9].tag = zeroes: online post-mod scrub failed (1).
+du[9].tag = zeroes: offline post-mod scrub failed (1).
+du[9].tag = ones: offline re-scrub failed (1).
+du[9].tag = ones: online post-mod scrub failed (1).
+du[9].tag = ones: offline post-mod scrub failed (1).
+du[9].tag = firstbit: offline re-scrub failed (1).
+du[9].tag = firstbit: online post-mod scrub failed (1).
+du[9].tag = firstbit: offline post-mod scrub failed (1).
+du[9].tag = middlebit: offline re-scrub failed (1).
+du[9].tag = middlebit: online post-mod scrub failed (1).
+du[9].tag = middlebit: offline post-mod scrub failed (1).
+du[9].tag = lastbit: offline re-scrub failed (1).
+du[9].tag = lastbit: online post-mod scrub failed (1).
+du[9].tag = lastbit: offline post-mod scrub failed (1).
+du[9].tag = add: offline re-scrub failed (1).
+du[9].tag = add: online post-mod scrub failed (1).
+du[9].tag = add: offline post-mod scrub failed (1).
+du[9].tag = sub: offline re-scrub failed (1).
+du[9].tag = sub: online post-mod scrub failed (1).
+du[9].tag = sub: offline post-mod scrub failed (1).
 Done fuzzing data-format dir block
diff --git a/tests/xfs/392.out b/tests/xfs/392.out
index 9ff34805a8..8bc5d14cd2 100644
--- a/tests/xfs/392.out
+++ b/tests/xfs/392.out
@@ -2,4 +2,11 @@ QA output created by 392
 Format and populate
 Find leafn-format dir block
 Fuzz leafn-format dir block
+lhdr.info.crc = zeroes: offline scrub didn't fail.
+lhdr.info.crc = ones: offline scrub didn't fail.
+lhdr.info.crc = firstbit: offline scrub didn't fail.
+lhdr.info.crc = middlebit: offline scrub didn't fail.
+lhdr.info.crc = lastbit: offline scrub didn't fail.
+lhdr.info.crc = add: offline scrub didn't fail.
+lhdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing leafn-format dir block
diff --git a/tests/xfs/394.out b/tests/xfs/394.out
index bc50b85217..5c26f64289 100644
--- a/tests/xfs/394.out
+++ b/tests/xfs/394.out
@@ -2,4 +2,16 @@ QA output created by 394
 Format and populate
 Find node-format dir block
 Fuzz node-format dir block
+nhdr.info.hdr.back = ones: offline scrub didn't fail.
+nhdr.info.hdr.back = ones: online post-mod scrub failed (1).
+nhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+nhdr.info.hdr.back = firstbit: online post-mod scrub failed (1).
+nhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+nhdr.info.hdr.back = middlebit: online post-mod scrub failed (1).
+nhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+nhdr.info.hdr.back = lastbit: online post-mod scrub failed (1).
+nhdr.info.hdr.back = add: offline scrub didn't fail.
+nhdr.info.hdr.back = add: online post-mod scrub failed (1).
+nhdr.info.hdr.back = sub: offline scrub didn't fail.
+nhdr.info.hdr.back = sub: online post-mod scrub failed (1).
 Done fuzzing node-format dir block
diff --git a/tests/xfs/398.out b/tests/xfs/398.out
index 63c899d2e5..11bac3af85 100644
--- a/tests/xfs/398.out
+++ b/tests/xfs/398.out
@@ -2,4 +2,42 @@ QA output created by 398
 Format and populate
 Find inline-format attr inode
 Fuzz inline-format attr inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+a.sfattr.list[1].name = ones: offline scrub didn't fail.
+a.sfattr.list[1].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[1].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[1].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[1].name = add: offline scrub didn't fail.
+a.sfattr.list[1].name = sub: offline scrub didn't fail.
+a.sfattr.list[2].name = ones: offline scrub didn't fail.
+a.sfattr.list[2].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[2].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[2].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[2].name = add: offline scrub didn't fail.
+a.sfattr.list[2].name = sub: offline scrub didn't fail.
 Done fuzzing inline-format attr inode
diff --git a/tests/xfs/400.out b/tests/xfs/400.out
index 6ac33ef2c5..9a0555448e 100644
--- a/tests/xfs/400.out
+++ b/tests/xfs/400.out
@@ -2,4 +2,30 @@ QA output created by 400
 Format and populate
 Find leaf-format attr block
 Fuzz leaf-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
+hdr.holes = ones: offline scrub didn't fail.
+hdr.holes = firstbit: offline scrub didn't fail.
+hdr.holes = middlebit: offline scrub didn't fail.
+hdr.holes = lastbit: offline scrub didn't fail.
+hdr.holes = add: offline scrub didn't fail.
+hdr.holes = sub: offline scrub didn't fail.
+hdr.freemap[0].base = zeroes: offline scrub didn't fail.
+hdr.freemap[0].base = zeroes: online post-mod scrub failed (1).
+hdr.freemap[0].base = middlebit: offline scrub didn't fail.
+hdr.freemap[0].base = middlebit: online post-mod scrub failed (1).
+hdr.freemap[0].size = zeroes: offline scrub didn't fail.
+hdr.freemap[0].size = middlebit: offline scrub didn't fail.
+hdr.freemap[0].size = middlebit: online post-mod scrub failed (1).
+hdr.freemap[1].base = middlebit: offline scrub didn't fail.
+hdr.freemap[1].size = middlebit: offline scrub didn't fail.
+hdr.freemap[1].size = middlebit: online post-mod scrub failed (1).
+hdr.freemap[2].base = middlebit: offline scrub didn't fail.
+hdr.freemap[2].size = middlebit: offline scrub didn't fail.
+hdr.freemap[2].size = middlebit: online post-mod scrub failed (1).
 Done fuzzing leaf-format attr block
diff --git a/tests/xfs/402.out b/tests/xfs/402.out
index 94e89f4c87..b7e36901d1 100644
--- a/tests/xfs/402.out
+++ b/tests/xfs/402.out
@@ -2,4 +2,11 @@ QA output created by 402
 Format and populate
 Find node-format attr block
 Fuzz node-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing node-format attr block
diff --git a/tests/xfs/404.out b/tests/xfs/404.out
index 30ddbd87c8..45d47248e9 100644
--- a/tests/xfs/404.out
+++ b/tests/xfs/404.out
@@ -2,4 +2,37 @@ QA output created by 404
 Format and populate
 Find external attr block
 Fuzz external attr block
+hdr.offset = ones: offline scrub didn't fail.
+hdr.offset = ones: online post-mod scrub failed (1).
+hdr.offset = middlebit: offline scrub didn't fail.
+hdr.offset = middlebit: online post-mod scrub failed (1).
+hdr.offset = lastbit: offline scrub didn't fail.
+hdr.offset = lastbit: online post-mod scrub failed (1).
+hdr.offset = add: offline scrub didn't fail.
+hdr.offset = add: online post-mod scrub failed (1).
+hdr.offset = sub: offline scrub didn't fail.
+hdr.offset = sub: online post-mod scrub failed (1).
+hdr.bytes = zeroes: offline scrub didn't fail.
+hdr.bytes = zeroes: online post-mod scrub failed (1).
+hdr.bytes = lastbit: offline scrub didn't fail.
+hdr.bytes = lastbit: online post-mod scrub failed (1).
+hdr.bytes = sub: offline scrub didn't fail.
+hdr.bytes = sub: online post-mod scrub failed (1).
+hdr.owner = ones: offline scrub didn't fail.
+hdr.owner = ones: online post-mod scrub failed (1).
+hdr.owner = firstbit: offline scrub didn't fail.
+hdr.owner = firstbit: online post-mod scrub failed (1).
+hdr.owner = middlebit: offline scrub didn't fail.
+hdr.owner = middlebit: online post-mod scrub failed (1).
+hdr.owner = lastbit: offline scrub didn't fail.
+hdr.owner = lastbit: online post-mod scrub failed (1).
+hdr.owner = add: offline scrub didn't fail.
+hdr.owner = add: online post-mod scrub failed (1).
+hdr.owner = sub: offline scrub didn't fail.
+hdr.owner = sub: online post-mod scrub failed (1).
+data = zeroes: offline scrub didn't fail.
+data = ones: offline scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
 Done fuzzing external attr block
diff --git a/tests/xfs/410.out b/tests/xfs/410.out
index c43ae75efd..47a9eab8f9 100644
--- a/tests/xfs/410.out
+++ b/tests/xfs/410.out
@@ -1,4 +1,10 @@
 QA output created by 410
 Format and populate
 Fuzz refcountbt
+numrecs = lastbit: offline scrub didn't fail.
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/412.out b/tests/xfs/412.out
index b93eec2262..550ca4e85c 100644
--- a/tests/xfs/412.out
+++ b/tests/xfs/412.out
@@ -2,4 +2,25 @@ QA output created by 412
 Format and populate
 Find btree-format attr inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/414.out b/tests/xfs/414.out
index 3d6e4d2f5e..107c625114 100644
--- a/tests/xfs/414.out
+++ b/tests/xfs/414.out
@@ -2,4 +2,27 @@ QA output created by 414
 Format and populate
 Find blockdev inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+u3.dev = zeroes: offline scrub didn't fail.
+u3.dev = ones: offline scrub didn't fail.
+u3.dev = firstbit: offline scrub didn't fail.
+u3.dev = middlebit: offline scrub didn't fail.
+u3.dev = lastbit: offline scrub didn't fail.
+u3.dev = add: offline scrub didn't fail.
+u3.dev = sub: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/416.out b/tests/xfs/416.out
index d17d2f73a1..9abc7867da 100644
--- a/tests/xfs/416.out
+++ b/tests/xfs/416.out
@@ -2,4 +2,26 @@ QA output created by 416
 Format and populate
 Find local-format symlink inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+u3.symlink = ones: offline scrub didn't fail.
+u3.symlink = firstbit: offline scrub didn't fail.
+u3.symlink = middlebit: offline scrub didn't fail.
+u3.symlink = lastbit: offline scrub didn't fail.
+u3.symlink = add: offline scrub didn't fail.
+u3.symlink = sub: offline scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/418.out b/tests/xfs/418.out
index 9051605b9c..ae181693a1 100644
--- a/tests/xfs/418.out
+++ b/tests/xfs/418.out
@@ -1,4 +1,94 @@
 QA output created by 418
 Format and populate
 Fuzz superblock
+uuid = zeroes: offline scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+rootino = zeroes: offline scrub didn't fail.
+rootino = ones: offline scrub didn't fail.
+rootino = firstbit: offline scrub didn't fail.
+rootino = middlebit: offline scrub didn't fail.
+rootino = lastbit: offline scrub didn't fail.
+rootino = add: offline scrub didn't fail.
+rootino = sub: offline scrub didn't fail.
+metadirino = zeroes: offline scrub didn't fail.
+metadirino = firstbit: offline scrub didn't fail.
+metadirino = middlebit: offline scrub didn't fail.
+metadirino = lastbit: offline scrub didn't fail.
+metadirino = add: offline scrub didn't fail.
+metadirino = sub: offline scrub didn't fail.
+rgblocks = middlebit: offline scrub didn't fail.
+rgblocks = lastbit: offline scrub didn't fail.
+rgblocks = add: offline scrub didn't fail.
+rgblocks = sub: offline scrub didn't fail.
+fname = ones: offline scrub didn't fail.
+fname = firstbit: offline scrub didn't fail.
+fname = middlebit: offline scrub didn't fail.
+fname = lastbit: offline scrub didn't fail.
+inprogress = zeroes: offline scrub didn't fail.
+inprogress = ones: offline scrub didn't fail.
+inprogress = firstbit: offline scrub didn't fail.
+inprogress = middlebit: offline scrub didn't fail.
+inprogress = lastbit: offline scrub didn't fail.
+inprogress = add: offline scrub didn't fail.
+inprogress = sub: offline scrub didn't fail.
+imax_pct = zeroes: offline scrub didn't fail.
+imax_pct = middlebit: offline scrub didn't fail.
+imax_pct = lastbit: offline scrub didn't fail.
+icount = ones: offline scrub didn't fail.
+icount = firstbit: offline scrub didn't fail.
+icount = middlebit: offline scrub didn't fail.
+icount = lastbit: offline scrub didn't fail.
+icount = add: offline scrub didn't fail.
+icount = sub: offline scrub didn't fail.
+ifree = ones: offline scrub didn't fail.
+ifree = firstbit: offline scrub didn't fail.
+ifree = middlebit: offline scrub didn't fail.
+ifree = lastbit: offline scrub didn't fail.
+ifree = add: offline scrub didn't fail.
+ifree = sub: offline scrub didn't fail.
+fdblocks = zeroes: offline scrub didn't fail.
+fdblocks = ones: offline scrub didn't fail.
+fdblocks = firstbit: offline scrub didn't fail.
+fdblocks = middlebit: offline scrub didn't fail.
+fdblocks = lastbit: offline scrub didn't fail.
+fdblocks = add: offline scrub didn't fail.
+fdblocks = sub: offline scrub didn't fail.
+shared_vn = ones: offline scrub didn't fail.
+shared_vn = ones: online post-mod scrub failed (1).
+shared_vn = firstbit: offline scrub didn't fail.
+shared_vn = firstbit: online post-mod scrub failed (1).
+shared_vn = middlebit: offline scrub didn't fail.
+shared_vn = middlebit: online post-mod scrub failed (1).
+shared_vn = lastbit: offline scrub didn't fail.
+shared_vn = lastbit: online post-mod scrub failed (1).
+shared_vn = add: offline scrub didn't fail.
+shared_vn = add: online post-mod scrub failed (1).
+shared_vn = sub: offline scrub didn't fail.
+shared_vn = sub: online post-mod scrub failed (1).
+dirblklog = lastbit: offline scrub didn't fail.
+dirblklog = lastbit: online post-mod scrub failed (1).
+logsunit = zeroes: offline scrub didn't fail.
+logsunit = zeroes: online post-mod scrub failed (1).
+logsunit = lastbit: offline scrub didn't fail.
+logsunit = lastbit: online post-mod scrub failed (1).
+bad_features2 = zeroes: offline scrub didn't fail.
+bad_features2 = ones: offline scrub didn't fail.
+bad_features2 = firstbit: offline scrub didn't fail.
+bad_features2 = middlebit: offline scrub didn't fail.
+bad_features2 = lastbit: offline scrub didn't fail.
+bad_features2 = add: offline scrub didn't fail.
+bad_features2 = sub: offline scrub didn't fail.
+features_incompat = sub: offline repair failed (1).
+features_incompat = sub: offline re-scrub failed (1).
+features_incompat = sub: online post-mod scrub failed (1).
+features_incompat = sub: offline post-mod scrub failed (1).
+features_log_incompat = ones: offline scrub didn't fail.
+features_log_incompat = firstbit: offline scrub didn't fail.
+features_log_incompat = middlebit: offline scrub didn't fail.
+features_log_incompat = lastbit: offline scrub didn't fail.
+features_log_incompat = add: offline scrub didn't fail.
+features_log_incompat = sub: offline scrub didn't fail.
 Done fuzzing superblock
diff --git a/tests/xfs/425.out b/tests/xfs/425.out
index 14445b44c0..ddeb2ba6bb 100644
--- a/tests/xfs/425.out
+++ b/tests/xfs/425.out
@@ -1,4 +1,262 @@
 QA output created by 425
 Format and populate
 Fuzz user 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
+Done fuzzing dquot
+Fuzz user 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
 Done fuzzing dquot
diff --git a/tests/xfs/427.out b/tests/xfs/427.out
index 9074c64527..2a79e3e621 100644
--- a/tests/xfs/427.out
+++ b/tests/xfs/427.out
@@ -1,4 +1,262 @@
 QA output created by 427
 Format and populate
 Fuzz group 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
+Done fuzzing dquot
+Fuzz group 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
 Done fuzzing dquot
diff --git a/tests/xfs/429.out b/tests/xfs/429.out
index b5ea503b01..c212bb7fe3 100644
--- a/tests/xfs/429.out
+++ b/tests/xfs/429.out
@@ -1,4 +1,262 @@
 QA output created by 429
 Format and populate
 Fuzz project 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
+Done fuzzing dquot
+Fuzz project 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online post-mod scrub failed (1).
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online post-mod scrub failed (1).
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online post-mod scrub failed (1).
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online post-mod scrub failed (1).
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online post-mod scrub failed (1).
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online post-mod scrub failed (1).
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online post-mod scrub failed (1).
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online post-mod scrub failed (1).
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online post-mod scrub failed (1).
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online post-mod scrub failed (1).
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online post-mod scrub failed (1).
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online post-mod scrub failed (1).
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online post-mod scrub failed (1).
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online post-mod scrub failed (1).
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online post-mod scrub failed (1).
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online post-mod scrub failed (1).
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online post-mod scrub failed (1).
 Done fuzzing dquot
diff --git a/tests/xfs/496.out b/tests/xfs/496.out
index 08597a2d88..c0ed81584b 100644
--- a/tests/xfs/496.out
+++ b/tests/xfs/496.out
@@ -2,4 +2,28 @@ QA output created by 496
 Format and populate
 Find single-leafn-format dir block
 Fuzz single-leafn-format dir block
+lhdr.info.hdr.forw = ones: offline scrub didn't fail.
+lhdr.info.hdr.forw = ones: online post-mod scrub failed (1).
+lhdr.info.hdr.forw = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = firstbit: online post-mod scrub failed (1).
+lhdr.info.hdr.forw = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.forw = middlebit: online post-mod scrub failed (1).
+lhdr.info.hdr.forw = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = lastbit: online post-mod scrub failed (1).
+lhdr.info.hdr.forw = add: offline scrub didn't fail.
+lhdr.info.hdr.forw = add: online post-mod scrub failed (1).
+lhdr.info.hdr.forw = sub: offline scrub didn't fail.
+lhdr.info.hdr.forw = sub: online post-mod scrub failed (1).
+lhdr.info.hdr.back = ones: offline scrub didn't fail.
+lhdr.info.hdr.back = ones: online post-mod scrub failed (1).
+lhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.back = firstbit: online post-mod scrub failed (1).
+lhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.back = middlebit: online post-mod scrub failed (1).
+lhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.back = lastbit: online post-mod scrub failed (1).
+lhdr.info.hdr.back = add: offline scrub didn't fail.
+lhdr.info.hdr.back = add: online post-mod scrub failed (1).
+lhdr.info.hdr.back = sub: offline scrub didn't fail.
+lhdr.info.hdr.back = sub: online post-mod scrub failed (1).
 Done fuzzing single-leafn-format dir block
diff --git a/tests/xfs/734.out b/tests/xfs/734.out
index 80b91b6a9b..68b6b7dd8a 100644
--- a/tests/xfs/734.out
+++ b/tests/xfs/734.out
@@ -3,8 +3,17 @@ Format and populate
 Fuzz block map for BLOCK
 Done fuzzing dir map BLOCK
 Fuzz block map for LEAF
+u3.bmx[0].startblock = add: offline repair failed (1).
+u3.bmx[0].startblock = add: offline re-scrub failed (1).
+u3.bmx[0].startblock = add: pre-mod mount failed (32).
+u3.bmx[1].startblock = add: offline repair failed (1).
+u3.bmx[1].startblock = add: offline re-scrub failed (1).
+u3.bmx[1].startblock = add: pre-mod mount failed (32).
 Done fuzzing dir map LEAF
 Fuzz block map for LEAFN
+u3.bmx[0].startblock = add: offline re-scrub failed (1).
+u3.bmx[0].startblock = add: online post-mod scrub failed (1).
+u3.bmx[0].startblock = add: offline post-mod scrub failed (1).
 Done fuzzing dir map LEAFN
 Fuzz block map for NODE
 Done fuzzing dir map NODE
diff --git a/tests/xfs/737.out b/tests/xfs/737.out
index 7ee0f0c625..ba2105d891 100644
--- a/tests/xfs/737.out
+++ b/tests/xfs/737.out
@@ -1,10 +1,24 @@
 QA output created by 737
 Format and populate
 Fuzz block map for EXTENTS_REMOTE3K
+a.bmx[0].blockcount = middlebit: online post-mod scrub failed (1).
+a.bmx[0].blockcount = lastbit: online post-mod scrub failed (1).
 Done fuzzing attr map EXTENTS_REMOTE3K
 Fuzz block map for EXTENTS_REMOTE4K
+a.bmx[0].blockcount = middlebit: offline repair failed (1).
+a.bmx[0].blockcount = middlebit: offline re-scrub failed (1).
+a.bmx[0].blockcount = middlebit: online post-mod scrub failed (1).
+a.bmx[0].blockcount = middlebit: offline post-mod scrub failed (1).
 Done fuzzing attr map EXTENTS_REMOTE4K
 Fuzz block map for LEAF
+a.bmx[0].blockcount = middlebit: offline repair failed (1).
+a.bmx[0].blockcount = middlebit: offline re-scrub failed (1).
+a.bmx[0].blockcount = middlebit: online post-mod scrub failed (1).
+a.bmx[0].blockcount = middlebit: offline post-mod scrub failed (1).
 Done fuzzing attr map LEAF
 Fuzz block map for NODE
+a.bmx[0].blockcount = middlebit: offline repair failed (1).
+a.bmx[0].blockcount = middlebit: offline re-scrub failed (1).
+a.bmx[0].blockcount = middlebit: online post-mod scrub failed (1).
+a.bmx[0].blockcount = middlebit: offline post-mod scrub failed (1).
 Done fuzzing attr map NODE
diff --git a/tests/xfs/754.out b/tests/xfs/754.out
index 0b8eef9ced..174c4300d8 100644
--- a/tests/xfs/754.out
+++ b/tests/xfs/754.out
@@ -1,4 +1,27 @@
 QA output created by 754
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startino = zeroes: offline scrub didn't fail.
+keys[1].startino = ones: offline scrub didn't fail.
+keys[1].startino = firstbit: offline scrub didn't fail.
+keys[1].startino = middlebit: offline scrub didn't fail.
+keys[1].startino = lastbit: offline scrub didn't fail.
+keys[1].startino = add: offline scrub didn't fail.
+keys[1].startino = sub: offline scrub didn't fail.
+keys[2].startino = zeroes: offline scrub didn't fail.
+keys[2].startino = ones: offline scrub didn't fail.
+keys[2].startino = firstbit: offline scrub didn't fail.
+keys[2].startino = middlebit: offline scrub didn't fail.
+keys[2].startino = lastbit: offline scrub didn't fail.
+keys[2].startino = add: offline scrub didn't fail.
+keys[2].startino = sub: offline scrub didn't fail.
+keys[3].startino = zeroes: offline scrub didn't fail.
+keys[3].startino = ones: offline scrub didn't fail.
+keys[3].startino = firstbit: offline scrub didn't fail.
+keys[3].startino = middlebit: offline scrub didn't fail.
+keys[3].startino = lastbit: offline scrub didn't fail.
+keys[3].startino = add: offline scrub didn't fail.
+keys[3].startino = sub: offline scrub didn't fail.
 Done fuzzing inobt
diff --git a/tests/xfs/785.out b/tests/xfs/785.out
index f5cdc6b73d..062b80f967 100644
--- a/tests/xfs/785.out
+++ b/tests/xfs/785.out
@@ -1,4 +1,27 @@
 QA output created by 785
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startino = zeroes: offline scrub didn't fail.
+keys[1].startino = ones: offline scrub didn't fail.
+keys[1].startino = firstbit: offline scrub didn't fail.
+keys[1].startino = middlebit: offline scrub didn't fail.
+keys[1].startino = lastbit: offline scrub didn't fail.
+keys[1].startino = add: offline scrub didn't fail.
+keys[1].startino = sub: offline scrub didn't fail.
+keys[2].startino = zeroes: offline scrub didn't fail.
+keys[2].startino = ones: offline scrub didn't fail.
+keys[2].startino = firstbit: offline scrub didn't fail.
+keys[2].startino = middlebit: offline scrub didn't fail.
+keys[2].startino = lastbit: offline scrub didn't fail.
+keys[2].startino = add: offline scrub didn't fail.
+keys[2].startino = sub: offline scrub didn't fail.
+keys[3].startino = zeroes: offline scrub didn't fail.
+keys[3].startino = ones: offline scrub didn't fail.
+keys[3].startino = firstbit: offline scrub didn't fail.
+keys[3].startino = middlebit: offline scrub didn't fail.
+keys[3].startino = lastbit: offline scrub didn't fail.
+keys[3].startino = add: offline scrub didn't fail.
+keys[3].startino = sub: offline scrub didn't fail.
 Done fuzzing inobt


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 3/4] xfs: norepair fuzz test known output
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 1/4] xfs: online fuzz test known output Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 2/4] xfs: offline " Darrick J. Wong
@ 2023-12-27 13:44   ` Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 4/4] xfs: bothrepair " Darrick J. Wong
  3 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:44 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Record all the currently known failures of the kernel verifier code.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/453.out |  152 +++++++++++++++
 tests/xfs/454.out |   96 ++++++++++
 tests/xfs/455.out |  134 ++++++++++++++
 tests/xfs/456.out |  129 +++++++++++++
 tests/xfs/457.out |    5 +
 tests/xfs/458.out |   44 ++++
 tests/xfs/459.out |    5 +
 tests/xfs/460.out |    6 +
 tests/xfs/461.out |    6 +
 tests/xfs/462.out |    8 +
 tests/xfs/463.out |  525 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/464.out |    5 +
 tests/xfs/465.out |   71 +++++++
 tests/xfs/466.out |   51 +++++
 tests/xfs/467.out |   47 +++++
 tests/xfs/469.out |    8 +
 tests/xfs/470.out |   79 ++++++++
 tests/xfs/471.out |    7 +
 tests/xfs/472.out |    7 +
 tests/xfs/474.out |    7 +
 tests/xfs/475.out |    6 +
 tests/xfs/477.out |   79 ++++++++
 tests/xfs/478.out |   91 +++++++++
 tests/xfs/479.out |    7 +
 tests/xfs/480.out |   24 ++
 tests/xfs/483.out |    6 +
 tests/xfs/484.out |   45 +++++
 tests/xfs/485.out |   51 +++++
 tests/xfs/486.out |   46 +++++
 tests/xfs/487.out |  242 ++++++++++++++++++++++++
 tests/xfs/488.out |  242 ++++++++++++++++++++++++
 tests/xfs/489.out |  242 ++++++++++++++++++++++++
 tests/xfs/498.out |   12 +
 tests/xfs/788.out |   23 ++
 34 files changed, 2508 insertions(+)


diff --git a/tests/xfs/453.out b/tests/xfs/453.out
index 4b89bb01d8..15626b9caa 100644
--- a/tests/xfs/453.out
+++ b/tests/xfs/453.out
@@ -1,4 +1,156 @@
 QA output created by 453
 Format and populate
 Fuzz superblock
+uuid = zeroes: offline scrub didn't fail.
+uuid = zeroes: online scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = ones: online scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = firstbit: online scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = middlebit: online scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+uuid = lastbit: online scrub didn't fail.
+rootino = zeroes: offline scrub didn't fail.
+rootino = zeroes: online scrub didn't fail.
+rootino = ones: offline scrub didn't fail.
+rootino = ones: online scrub didn't fail.
+rootino = firstbit: offline scrub didn't fail.
+rootino = firstbit: online scrub didn't fail.
+rootino = middlebit: offline scrub didn't fail.
+rootino = middlebit: online scrub didn't fail.
+rootino = lastbit: offline scrub didn't fail.
+rootino = lastbit: online scrub didn't fail.
+rootino = add: offline scrub didn't fail.
+rootino = add: online scrub didn't fail.
+rootino = sub: offline scrub didn't fail.
+rootino = sub: online scrub didn't fail.
+metadirino = zeroes: offline scrub didn't fail.
+metadirino = zeroes: online scrub didn't fail.
+metadirino = firstbit: offline scrub didn't fail.
+metadirino = firstbit: online scrub didn't fail.
+metadirino = middlebit: offline scrub didn't fail.
+metadirino = middlebit: online scrub didn't fail.
+metadirino = lastbit: offline scrub didn't fail.
+metadirino = lastbit: online scrub didn't fail.
+metadirino = add: offline scrub didn't fail.
+metadirino = add: online scrub didn't fail.
+metadirino = sub: offline scrub didn't fail.
+metadirino = sub: online scrub didn't fail.
+rgblocks = middlebit: offline scrub didn't fail.
+rgblocks = middlebit: online scrub didn't fail.
+rgblocks = lastbit: offline scrub didn't fail.
+rgblocks = lastbit: online scrub didn't fail.
+rgblocks = add: offline scrub didn't fail.
+rgblocks = add: online scrub didn't fail.
+rgblocks = sub: offline scrub didn't fail.
+rgblocks = sub: online scrub didn't fail.
+fname = ones: offline scrub didn't fail.
+fname = ones: online scrub didn't fail.
+fname = firstbit: offline scrub didn't fail.
+fname = firstbit: online scrub didn't fail.
+fname = middlebit: offline scrub didn't fail.
+fname = middlebit: online scrub didn't fail.
+fname = lastbit: offline scrub didn't fail.
+fname = lastbit: online scrub didn't fail.
+inprogress = zeroes: offline scrub didn't fail.
+inprogress = zeroes: online scrub didn't fail.
+inprogress = ones: offline scrub didn't fail.
+inprogress = ones: online scrub didn't fail.
+inprogress = firstbit: offline scrub didn't fail.
+inprogress = firstbit: online scrub didn't fail.
+inprogress = middlebit: offline scrub didn't fail.
+inprogress = middlebit: online scrub didn't fail.
+inprogress = lastbit: offline scrub didn't fail.
+inprogress = lastbit: online scrub didn't fail.
+inprogress = add: offline scrub didn't fail.
+inprogress = add: online scrub didn't fail.
+inprogress = sub: offline scrub didn't fail.
+inprogress = sub: online scrub didn't fail.
+imax_pct = zeroes: offline scrub didn't fail.
+imax_pct = zeroes: online scrub didn't fail.
+imax_pct = middlebit: offline scrub didn't fail.
+imax_pct = middlebit: online scrub didn't fail.
+imax_pct = lastbit: offline scrub didn't fail.
+imax_pct = lastbit: online scrub didn't fail.
+icount = ones: offline scrub didn't fail.
+icount = ones: online scrub didn't fail.
+icount = firstbit: offline scrub didn't fail.
+icount = firstbit: online scrub didn't fail.
+icount = middlebit: offline scrub didn't fail.
+icount = middlebit: online scrub didn't fail.
+icount = lastbit: offline scrub didn't fail.
+icount = lastbit: online scrub didn't fail.
+icount = add: offline scrub didn't fail.
+icount = add: online scrub didn't fail.
+icount = sub: offline scrub didn't fail.
+icount = sub: online scrub didn't fail.
+ifree = ones: offline scrub didn't fail.
+ifree = ones: online scrub didn't fail.
+ifree = firstbit: offline scrub didn't fail.
+ifree = firstbit: online scrub didn't fail.
+ifree = middlebit: offline scrub didn't fail.
+ifree = middlebit: online scrub didn't fail.
+ifree = lastbit: offline scrub didn't fail.
+ifree = lastbit: online scrub didn't fail.
+ifree = add: offline scrub didn't fail.
+ifree = add: online scrub didn't fail.
+ifree = sub: offline scrub didn't fail.
+ifree = sub: online scrub didn't fail.
+fdblocks = zeroes: offline scrub didn't fail.
+fdblocks = zeroes: online scrub didn't fail.
+fdblocks = ones: offline scrub didn't fail.
+fdblocks = ones: online scrub didn't fail.
+fdblocks = firstbit: offline scrub didn't fail.
+fdblocks = firstbit: online scrub didn't fail.
+fdblocks = middlebit: offline scrub didn't fail.
+fdblocks = middlebit: online scrub didn't fail.
+fdblocks = lastbit: offline scrub didn't fail.
+fdblocks = lastbit: online scrub didn't fail.
+fdblocks = add: offline scrub didn't fail.
+fdblocks = add: online scrub didn't fail.
+fdblocks = sub: offline scrub didn't fail.
+fdblocks = sub: online scrub didn't fail.
+qflags = firstbit: online scrub didn't fail.
+qflags = middlebit: online scrub didn't fail.
+qflags = lastbit: online scrub didn't fail.
+shared_vn = ones: offline scrub didn't fail.
+shared_vn = firstbit: offline scrub didn't fail.
+shared_vn = middlebit: offline scrub didn't fail.
+shared_vn = lastbit: offline scrub didn't fail.
+shared_vn = add: offline scrub didn't fail.
+shared_vn = sub: offline scrub didn't fail.
+dirblklog = lastbit: offline scrub didn't fail.
+logsunit = zeroes: offline scrub didn't fail.
+logsunit = lastbit: offline scrub didn't fail.
+bad_features2 = zeroes: offline scrub didn't fail.
+bad_features2 = zeroes: online scrub didn't fail.
+bad_features2 = ones: offline scrub didn't fail.
+bad_features2 = ones: online scrub didn't fail.
+bad_features2 = firstbit: offline scrub didn't fail.
+bad_features2 = firstbit: online scrub didn't fail.
+bad_features2 = middlebit: offline scrub didn't fail.
+bad_features2 = middlebit: online scrub didn't fail.
+bad_features2 = lastbit: offline scrub didn't fail.
+bad_features2 = lastbit: online scrub didn't fail.
+bad_features2 = add: offline scrub didn't fail.
+bad_features2 = add: online scrub didn't fail.
+bad_features2 = sub: offline scrub didn't fail.
+bad_features2 = sub: online scrub didn't fail.
+features_log_incompat = ones: offline scrub didn't fail.
+features_log_incompat = ones: online scrub didn't fail.
+features_log_incompat = firstbit: offline scrub didn't fail.
+features_log_incompat = firstbit: online scrub didn't fail.
+features_log_incompat = middlebit: offline scrub didn't fail.
+features_log_incompat = middlebit: online scrub didn't fail.
+features_log_incompat = lastbit: offline scrub didn't fail.
+features_log_incompat = lastbit: online scrub didn't fail.
+features_log_incompat = add: offline scrub didn't fail.
+features_log_incompat = add: online scrub didn't fail.
+features_log_incompat = sub: offline scrub didn't fail.
+features_log_incompat = sub: online scrub didn't fail.
+meta_uuid = ones: online scrub didn't fail.
+meta_uuid = firstbit: online scrub didn't fail.
+meta_uuid = middlebit: online scrub didn't fail.
+meta_uuid = lastbit: online scrub didn't fail.
 Done fuzzing superblock
diff --git a/tests/xfs/454.out b/tests/xfs/454.out
index ba7a8c24ba..dc89b2a488 100644
--- a/tests/xfs/454.out
+++ b/tests/xfs/454.out
@@ -1,4 +1,100 @@
 QA output created by 454
 Format and populate
 Fuzz AGF
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+bnolevel = zeroes: mount failed (32).
+bnolevel = ones: mount failed (32).
+bnolevel = firstbit: mount failed (32).
+bnolevel = middlebit: mount failed (32).
+bnolevel = add: mount failed (32).
+bnolevel = sub: mount failed (32).
+cntlevel = zeroes: mount failed (32).
+cntlevel = ones: mount failed (32).
+cntlevel = firstbit: mount failed (32).
+cntlevel = middlebit: mount failed (32).
+cntlevel = add: mount failed (32).
+cntlevel = sub: mount failed (32).
+rmaplevel = zeroes: mount failed (32).
+rmaplevel = ones: mount failed (32).
+rmaplevel = firstbit: mount failed (32).
+rmaplevel = middlebit: mount failed (32).
+rmaplevel = add: mount failed (32).
+rmaplevel = sub: mount failed (32).
+refcntlevel = zeroes: mount failed (32).
+refcntlevel = ones: mount failed (32).
+refcntlevel = firstbit: mount failed (32).
+refcntlevel = middlebit: mount failed (32).
+refcntlevel = add: mount failed (32).
+refcntlevel = sub: mount failed (32).
+rmapblocks = ones: mount failed (32).
+rmapblocks = firstbit: mount failed (32).
+rmapblocks = sub: mount failed (32).
+refcntblocks = ones: mount failed (32).
+refcntblocks = firstbit: mount failed (32).
+refcntblocks = sub: mount failed (32).
+flfirst = ones: mount failed (32).
+flfirst = firstbit: mount failed (32).
+flfirst = middlebit: mount failed (32).
+flfirst = add: mount failed (32).
+flfirst = sub: mount failed (32).
+fllast = ones: mount failed (32).
+fllast = firstbit: mount failed (32).
+fllast = middlebit: mount failed (32).
+fllast = add: mount failed (32).
+fllast = sub: mount failed (32).
+flcount = ones: mount failed (32).
+flcount = firstbit: mount failed (32).
+flcount = middlebit: mount failed (32).
+flcount = add: mount failed (32).
+flcount = sub: mount failed (32).
+freeblks = zeroes: mount failed (32).
+freeblks = ones: mount failed (32).
+freeblks = firstbit: mount failed (32).
+freeblks = middlebit: mount failed (32).
+freeblks = add: mount failed (32).
+freeblks = sub: mount failed (32).
+longest = ones: mount failed (32).
+longest = firstbit: mount failed (32).
+longest = add: mount failed (32).
+btreeblks = ones: mount failed (32).
+btreeblks = firstbit: mount failed (32).
+btreeblks = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
 Done fuzzing AGF
diff --git a/tests/xfs/455.out b/tests/xfs/455.out
index ff68505f92..ffe9c557a1 100644
--- a/tests/xfs/455.out
+++ b/tests/xfs/455.out
@@ -1,6 +1,140 @@
 QA output created by 455
 Format and populate
 Fuzz AGFL
+magicnum = zeroes: offline scrub didn't fail.
+magicnum = ones: offline scrub didn't fail.
+magicnum = firstbit: offline scrub didn't fail.
+magicnum = middlebit: offline scrub didn't fail.
+magicnum = lastbit: offline scrub didn't fail.
+magicnum = add: offline scrub didn't fail.
+magicnum = sub: offline scrub didn't fail.
+seqno = ones: offline scrub didn't fail.
+seqno = firstbit: offline scrub didn't fail.
+seqno = middlebit: offline scrub didn't fail.
+seqno = lastbit: offline scrub didn't fail.
+seqno = add: offline scrub didn't fail.
+seqno = sub: offline scrub didn't fail.
+uuid = zeroes: offline scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+bno[0] = zeroes: offline scrub didn't fail.
+bno[0] = zeroes: online scrub didn't fail.
+bno[0] = firstbit: offline scrub didn't fail.
+bno[0] = middlebit: offline scrub didn't fail.
+bno[0] = lastbit: offline scrub didn't fail.
+bno[0] = add: offline scrub didn't fail.
+bno[0] = add: online scrub didn't fail.
+bno[0] = sub: offline scrub didn't fail.
+bno[1] = zeroes: offline scrub didn't fail.
+bno[1] = zeroes: online scrub didn't fail.
+bno[1] = ones: offline scrub didn't fail.
+bno[1] = ones: online scrub didn't fail.
+bno[1] = firstbit: offline scrub didn't fail.
+bno[1] = middlebit: offline scrub didn't fail.
+bno[1] = middlebit: online scrub didn't fail.
+bno[1] = lastbit: offline scrub didn't fail.
+bno[1] = lastbit: online scrub didn't fail.
+bno[1] = add: offline scrub didn't fail.
+bno[1] = add: online scrub didn't fail.
+bno[1] = sub: offline scrub didn't fail.
+bno[2] = zeroes: offline scrub didn't fail.
+bno[2] = zeroes: online scrub didn't fail.
+bno[2] = ones: offline scrub didn't fail.
+bno[2] = ones: online scrub didn't fail.
+bno[2] = firstbit: offline scrub didn't fail.
+bno[2] = middlebit: offline scrub didn't fail.
+bno[2] = middlebit: online scrub didn't fail.
+bno[2] = lastbit: offline scrub didn't fail.
+bno[2] = lastbit: online scrub didn't fail.
+bno[2] = add: offline scrub didn't fail.
+bno[2] = add: online scrub didn't fail.
+bno[2] = sub: offline scrub didn't fail.
+bno[3] = zeroes: offline scrub didn't fail.
+bno[3] = zeroes: online scrub didn't fail.
+bno[3] = ones: offline scrub didn't fail.
+bno[3] = ones: online scrub didn't fail.
+bno[3] = firstbit: offline scrub didn't fail.
+bno[3] = middlebit: offline scrub didn't fail.
+bno[3] = middlebit: online scrub didn't fail.
+bno[3] = lastbit: offline scrub didn't fail.
+bno[3] = lastbit: online scrub didn't fail.
+bno[3] = add: offline scrub didn't fail.
+bno[3] = add: online scrub didn't fail.
+bno[3] = sub: offline scrub didn't fail.
+bno[4] = zeroes: offline scrub didn't fail.
+bno[4] = zeroes: online scrub didn't fail.
+bno[4] = ones: offline scrub didn't fail.
+bno[4] = ones: online scrub didn't fail.
+bno[4] = firstbit: offline scrub didn't fail.
+bno[4] = middlebit: offline scrub didn't fail.
+bno[4] = middlebit: online scrub didn't fail.
+bno[4] = lastbit: offline scrub didn't fail.
+bno[4] = lastbit: online scrub didn't fail.
+bno[4] = add: offline scrub didn't fail.
+bno[4] = add: online scrub didn't fail.
+bno[4] = sub: offline scrub didn't fail.
+bno[5] = zeroes: offline scrub didn't fail.
+bno[5] = zeroes: online scrub didn't fail.
+bno[5] = ones: offline scrub didn't fail.
+bno[5] = ones: online scrub didn't fail.
+bno[5] = firstbit: offline scrub didn't fail.
+bno[5] = middlebit: offline scrub didn't fail.
+bno[5] = middlebit: online scrub didn't fail.
+bno[5] = lastbit: offline scrub didn't fail.
+bno[5] = lastbit: online scrub didn't fail.
+bno[5] = add: offline scrub didn't fail.
+bno[5] = add: online scrub didn't fail.
+bno[5] = sub: offline scrub didn't fail.
+bno[6] = zeroes: offline scrub didn't fail.
+bno[6] = zeroes: online scrub didn't fail.
+bno[6] = ones: offline scrub didn't fail.
+bno[6] = ones: online scrub didn't fail.
+bno[6] = firstbit: offline scrub didn't fail.
+bno[6] = middlebit: offline scrub didn't fail.
+bno[6] = middlebit: online scrub didn't fail.
+bno[6] = lastbit: offline scrub didn't fail.
+bno[6] = lastbit: online scrub didn't fail.
+bno[6] = add: offline scrub didn't fail.
+bno[6] = add: online scrub didn't fail.
+bno[6] = sub: offline scrub didn't fail.
+bno[7] = zeroes: offline scrub didn't fail.
+bno[7] = zeroes: online scrub didn't fail.
+bno[7] = ones: offline scrub didn't fail.
+bno[7] = ones: online scrub didn't fail.
+bno[7] = firstbit: offline scrub didn't fail.
+bno[7] = middlebit: offline scrub didn't fail.
+bno[7] = middlebit: online scrub didn't fail.
+bno[7] = lastbit: offline scrub didn't fail.
+bno[7] = lastbit: online scrub didn't fail.
+bno[7] = add: offline scrub didn't fail.
+bno[7] = add: online scrub didn't fail.
+bno[7] = sub: offline scrub didn't fail.
+bno[8] = zeroes: offline scrub didn't fail.
+bno[8] = zeroes: online scrub didn't fail.
+bno[8] = ones: offline scrub didn't fail.
+bno[8] = ones: online scrub didn't fail.
+bno[8] = firstbit: offline scrub didn't fail.
+bno[8] = middlebit: offline scrub didn't fail.
+bno[8] = middlebit: online scrub didn't fail.
+bno[8] = lastbit: offline scrub didn't fail.
+bno[8] = lastbit: online scrub didn't fail.
+bno[8] = add: offline scrub didn't fail.
+bno[8] = add: online scrub didn't fail.
+bno[8] = sub: offline scrub didn't fail.
+bno[9] = zeroes: offline scrub didn't fail.
+bno[9] = zeroes: online scrub didn't fail.
+bno[9] = ones: offline scrub didn't fail.
+bno[9] = ones: online scrub didn't fail.
+bno[9] = firstbit: offline scrub didn't fail.
+bno[9] = middlebit: offline scrub didn't fail.
+bno[9] = middlebit: online scrub didn't fail.
+bno[9] = lastbit: offline scrub didn't fail.
+bno[9] = lastbit: online scrub didn't fail.
+bno[9] = add: offline scrub didn't fail.
+bno[9] = add: online scrub didn't fail.
+bno[9] = sub: offline scrub didn't fail.
 Done fuzzing AGFL
 Fuzz AGFL flfirst
 Done fuzzing AGFL flfirst
diff --git a/tests/xfs/456.out b/tests/xfs/456.out
index 75c6ef160c..a896b754ed 100644
--- a/tests/xfs/456.out
+++ b/tests/xfs/456.out
@@ -1,4 +1,133 @@
 QA output created by 456
 Format and populate
 Fuzz AGI
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+root = zeroes: mount failed (32).
+root = ones: mount failed (32).
+root = firstbit: mount failed (32).
+root = middlebit: mount failed (32).
+root = lastbit: mount failed (32).
+root = add: mount failed (32).
+root = sub: mount failed (32).
+level = zeroes: mount failed (32).
+level = ones: mount failed (32).
+level = firstbit: mount failed (32).
+level = middlebit: mount failed (32).
+level = lastbit: mount failed (32).
+level = add: mount failed (32).
+level = sub: mount failed (32).
+newino = zeroes: offline scrub didn't fail.
+newino = ones: offline scrub didn't fail.
+newino = ones: online scrub didn't fail.
+newino = firstbit: offline scrub didn't fail.
+newino = middlebit: offline scrub didn't fail.
+newino = middlebit: online scrub didn't fail.
+newino = lastbit: offline scrub didn't fail.
+newino = lastbit: online scrub didn't fail.
+newino = add: offline scrub didn't fail.
+newino = add: online scrub didn't fail.
+newino = sub: offline scrub didn't fail.
+newino = sub: online scrub didn't fail.
+dirino = zeroes: offline scrub didn't fail.
+dirino = firstbit: offline scrub didn't fail.
+dirino = middlebit: offline scrub didn't fail.
+dirino = lastbit: offline scrub didn't fail.
+dirino = add: offline scrub didn't fail.
+dirino = add: online scrub didn't fail.
+dirino = sub: offline scrub didn't fail.
+unlinked[0] = zeroes: mount failed (32).
+unlinked[0] = firstbit: mount failed (32).
+unlinked[0] = middlebit: mount failed (32).
+unlinked[0] = lastbit: mount failed (32).
+unlinked[0] = sub: mount failed (32).
+unlinked[1] = zeroes: mount failed (32).
+unlinked[1] = firstbit: mount failed (32).
+unlinked[1] = middlebit: mount failed (32).
+unlinked[1] = lastbit: mount failed (32).
+unlinked[1] = sub: mount failed (32).
+unlinked[2] = zeroes: mount failed (32).
+unlinked[2] = firstbit: mount failed (32).
+unlinked[2] = middlebit: mount failed (32).
+unlinked[2] = lastbit: mount failed (32).
+unlinked[2] = sub: mount failed (32).
+unlinked[3] = zeroes: mount failed (32).
+unlinked[3] = firstbit: mount failed (32).
+unlinked[3] = middlebit: mount failed (32).
+unlinked[3] = lastbit: mount failed (32).
+unlinked[3] = sub: mount failed (32).
+unlinked[4] = zeroes: mount failed (32).
+unlinked[4] = firstbit: mount failed (32).
+unlinked[4] = middlebit: mount failed (32).
+unlinked[4] = lastbit: mount failed (32).
+unlinked[4] = sub: mount failed (32).
+unlinked[5] = zeroes: mount failed (32).
+unlinked[5] = firstbit: mount failed (32).
+unlinked[5] = middlebit: mount failed (32).
+unlinked[5] = lastbit: mount failed (32).
+unlinked[5] = sub: mount failed (32).
+unlinked[6] = zeroes: mount failed (32).
+unlinked[6] = firstbit: mount failed (32).
+unlinked[6] = middlebit: mount failed (32).
+unlinked[6] = lastbit: mount failed (32).
+unlinked[6] = sub: mount failed (32).
+unlinked[7] = zeroes: mount failed (32).
+unlinked[7] = firstbit: mount failed (32).
+unlinked[7] = middlebit: mount failed (32).
+unlinked[7] = lastbit: mount failed (32).
+unlinked[7] = sub: mount failed (32).
+unlinked[8] = zeroes: mount failed (32).
+unlinked[8] = firstbit: mount failed (32).
+unlinked[8] = middlebit: mount failed (32).
+unlinked[8] = lastbit: mount failed (32).
+unlinked[8] = sub: mount failed (32).
+unlinked[9] = zeroes: mount failed (32).
+unlinked[9] = firstbit: mount failed (32).
+unlinked[9] = middlebit: mount failed (32).
+unlinked[9] = lastbit: mount failed (32).
+unlinked[9] = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
+free_level = zeroes: mount failed (32).
+free_level = ones: mount failed (32).
+free_level = firstbit: mount failed (32).
+free_level = middlebit: mount failed (32).
+free_level = lastbit: mount failed (32).
+free_level = add: mount failed (32).
+free_level = sub: mount failed (32).
 Done fuzzing AGI
diff --git a/tests/xfs/457.out b/tests/xfs/457.out
index 9d5c40150c..414fd7096e 100644
--- a/tests/xfs/457.out
+++ b/tests/xfs/457.out
@@ -1,4 +1,9 @@
 QA output created by 457
 Format and populate
 Fuzz bnobt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing bnobt recs
diff --git a/tests/xfs/458.out b/tests/xfs/458.out
index a6ab9879c2..ba9de90280 100644
--- a/tests/xfs/458.out
+++ b/tests/xfs/458.out
@@ -1,4 +1,48 @@
 QA output created by 458
 Format and populate
 Fuzz bnobt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = ones: offline scrub didn't fail.
+keys[1].startblock = firstbit: offline scrub didn't fail.
+keys[1].startblock = middlebit: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = add: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
+keys[1].blockcount = zeroes: offline scrub didn't fail.
+keys[1].blockcount = zeroes: online scrub didn't fail.
+keys[1].blockcount = ones: offline scrub didn't fail.
+keys[1].blockcount = ones: online scrub didn't fail.
+keys[1].blockcount = firstbit: offline scrub didn't fail.
+keys[1].blockcount = firstbit: online scrub didn't fail.
+keys[1].blockcount = middlebit: offline scrub didn't fail.
+keys[1].blockcount = middlebit: online scrub didn't fail.
+keys[1].blockcount = lastbit: offline scrub didn't fail.
+keys[1].blockcount = lastbit: online scrub didn't fail.
+keys[1].blockcount = add: offline scrub didn't fail.
+keys[1].blockcount = add: online scrub didn't fail.
+keys[1].blockcount = sub: offline scrub didn't fail.
+keys[1].blockcount = sub: online scrub didn't fail.
+keys[2].startblock = zeroes: offline scrub didn't fail.
+keys[2].startblock = ones: offline scrub didn't fail.
+keys[2].startblock = firstbit: offline scrub didn't fail.
+keys[2].startblock = middlebit: offline scrub didn't fail.
+keys[2].startblock = lastbit: offline scrub didn't fail.
+keys[2].startblock = add: offline scrub didn't fail.
+keys[2].startblock = sub: offline scrub didn't fail.
+keys[2].blockcount = zeroes: offline scrub didn't fail.
+keys[2].blockcount = zeroes: online scrub didn't fail.
+keys[2].blockcount = ones: offline scrub didn't fail.
+keys[2].blockcount = ones: online scrub didn't fail.
+keys[2].blockcount = firstbit: offline scrub didn't fail.
+keys[2].blockcount = firstbit: online scrub didn't fail.
+keys[2].blockcount = middlebit: offline scrub didn't fail.
+keys[2].blockcount = middlebit: online scrub didn't fail.
+keys[2].blockcount = lastbit: offline scrub didn't fail.
+keys[2].blockcount = lastbit: online scrub didn't fail.
+keys[2].blockcount = add: offline scrub didn't fail.
+keys[2].blockcount = add: online scrub didn't fail.
+keys[2].blockcount = sub: offline scrub didn't fail.
+keys[2].blockcount = sub: online scrub didn't fail.
 Done fuzzing bnobt keyptr
diff --git a/tests/xfs/459.out b/tests/xfs/459.out
index 3100f78360..9b39b14e97 100644
--- a/tests/xfs/459.out
+++ b/tests/xfs/459.out
@@ -1,4 +1,9 @@
 QA output created by 459
 Format and populate
 Fuzz cntbt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing cntbt
diff --git a/tests/xfs/460.out b/tests/xfs/460.out
index 3ca46b4c4c..e8bb9625ab 100644
--- a/tests/xfs/460.out
+++ b/tests/xfs/460.out
@@ -1,4 +1,10 @@
 QA output created by 460
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing inobt
diff --git a/tests/xfs/461.out b/tests/xfs/461.out
index 8d616bf2fd..429b1711d1 100644
--- a/tests/xfs/461.out
+++ b/tests/xfs/461.out
@@ -1,4 +1,10 @@
 QA output created by 461
 Format and populate
 Fuzz finobt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing finobt
diff --git a/tests/xfs/462.out b/tests/xfs/462.out
index 4ff2d33b7c..842095dc9b 100644
--- a/tests/xfs/462.out
+++ b/tests/xfs/462.out
@@ -1,4 +1,12 @@
 QA output created by 462
 Format and populate
 Fuzz rmapbt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+recs[3].startblock = lastbit: offline scrub didn't fail.
+recs[3].blockcount = lastbit: offline scrub didn't fail.
+recs[6].owner = lastbit: offline scrub didn't fail.
 Done fuzzing rmapbt recs
diff --git a/tests/xfs/463.out b/tests/xfs/463.out
index 87d2eef540..a7482abdb9 100644
--- a/tests/xfs/463.out
+++ b/tests/xfs/463.out
@@ -1,4 +1,529 @@
 QA output created by 463
 Format and populate
 Fuzz rmapbt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].owner = zeroes: offline scrub didn't fail.
+keys[1].owner = ones: offline scrub didn't fail.
+keys[1].owner = firstbit: offline scrub didn't fail.
+keys[1].owner = middlebit: offline scrub didn't fail.
+keys[1].owner = lastbit: offline scrub didn't fail.
+keys[1].owner = add: offline scrub didn't fail.
+keys[1].owner = sub: offline scrub didn't fail.
+keys[1].offset = ones: offline scrub didn't fail.
+keys[1].offset = firstbit: offline scrub didn't fail.
+keys[1].offset = middlebit: offline scrub didn't fail.
+keys[1].offset = lastbit: offline scrub didn't fail.
+keys[1].offset = add: offline scrub didn't fail.
+keys[1].offset = sub: offline scrub didn't fail.
+keys[1].extentflag = ones: offline scrub didn't fail.
+keys[1].extentflag = ones: online scrub didn't fail.
+keys[1].extentflag = firstbit: offline scrub didn't fail.
+keys[1].extentflag = firstbit: online scrub didn't fail.
+keys[1].extentflag = middlebit: offline scrub didn't fail.
+keys[1].extentflag = middlebit: online scrub didn't fail.
+keys[1].extentflag = lastbit: offline scrub didn't fail.
+keys[1].extentflag = lastbit: online scrub didn't fail.
+keys[1].extentflag = add: offline scrub didn't fail.
+keys[1].extentflag = add: online scrub didn't fail.
+keys[1].extentflag = sub: offline scrub didn't fail.
+keys[1].extentflag = sub: online scrub didn't fail.
+keys[1].attrfork = ones: offline scrub didn't fail.
+keys[1].attrfork = firstbit: offline scrub didn't fail.
+keys[1].attrfork = middlebit: offline scrub didn't fail.
+keys[1].attrfork = lastbit: offline scrub didn't fail.
+keys[1].attrfork = add: offline scrub didn't fail.
+keys[1].attrfork = sub: offline scrub didn't fail.
+keys[1].bmbtblock = ones: offline scrub didn't fail.
+keys[1].bmbtblock = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock = add: offline scrub didn't fail.
+keys[1].bmbtblock = sub: offline scrub didn't fail.
+keys[1].startblock_hi = ones: offline scrub didn't fail.
+keys[1].startblock_hi = firstbit: offline scrub didn't fail.
+keys[1].startblock_hi = middlebit: offline scrub didn't fail.
+keys[1].startblock_hi = lastbit: offline scrub didn't fail.
+keys[1].startblock_hi = add: offline scrub didn't fail.
+keys[1].startblock_hi = sub: offline scrub didn't fail.
+keys[1].owner_hi = ones: offline scrub didn't fail.
+keys[1].owner_hi = firstbit: offline scrub didn't fail.
+keys[1].owner_hi = middlebit: offline scrub didn't fail.
+keys[1].owner_hi = lastbit: offline scrub didn't fail.
+keys[1].owner_hi = add: offline scrub didn't fail.
+keys[1].owner_hi = sub: offline scrub didn't fail.
+keys[1].offset_hi = ones: offline scrub didn't fail.
+keys[1].offset_hi = firstbit: offline scrub didn't fail.
+keys[1].offset_hi = middlebit: offline scrub didn't fail.
+keys[1].offset_hi = add: offline scrub didn't fail.
+keys[1].offset_hi = sub: offline scrub didn't fail.
+keys[1].extentflag_hi = ones: offline scrub didn't fail.
+keys[1].extentflag_hi = ones: online scrub didn't fail.
+keys[1].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[1].extentflag_hi = firstbit: online scrub didn't fail.
+keys[1].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[1].extentflag_hi = middlebit: online scrub didn't fail.
+keys[1].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[1].extentflag_hi = lastbit: online scrub didn't fail.
+keys[1].extentflag_hi = add: offline scrub didn't fail.
+keys[1].extentflag_hi = add: online scrub didn't fail.
+keys[1].extentflag_hi = sub: offline scrub didn't fail.
+keys[1].extentflag_hi = sub: online scrub didn't fail.
+keys[1].attrfork_hi = ones: offline scrub didn't fail.
+keys[1].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[1].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[1].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[1].attrfork_hi = add: offline scrub didn't fail.
+keys[1].attrfork_hi = sub: offline scrub didn't fail.
+keys[1].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[1].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = add: offline scrub didn't fail.
+keys[1].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[2].owner = zeroes: offline scrub didn't fail.
+keys[2].offset = zeroes: offline scrub didn't fail.
+keys[2].offset = lastbit: offline scrub didn't fail.
+keys[2].extentflag = ones: offline scrub didn't fail.
+keys[2].extentflag = ones: online scrub didn't fail.
+keys[2].extentflag = firstbit: offline scrub didn't fail.
+keys[2].extentflag = firstbit: online scrub didn't fail.
+keys[2].extentflag = middlebit: offline scrub didn't fail.
+keys[2].extentflag = middlebit: online scrub didn't fail.
+keys[2].extentflag = lastbit: offline scrub didn't fail.
+keys[2].extentflag = lastbit: online scrub didn't fail.
+keys[2].extentflag = add: offline scrub didn't fail.
+keys[2].extentflag = add: online scrub didn't fail.
+keys[2].extentflag = sub: offline scrub didn't fail.
+keys[2].extentflag = sub: online scrub didn't fail.
+keys[2].startblock_hi = ones: offline scrub didn't fail.
+keys[2].startblock_hi = firstbit: offline scrub didn't fail.
+keys[2].startblock_hi = middlebit: offline scrub didn't fail.
+keys[2].startblock_hi = lastbit: offline scrub didn't fail.
+keys[2].startblock_hi = add: offline scrub didn't fail.
+keys[2].startblock_hi = sub: offline scrub didn't fail.
+keys[2].owner_hi = ones: offline scrub didn't fail.
+keys[2].owner_hi = firstbit: offline scrub didn't fail.
+keys[2].owner_hi = middlebit: offline scrub didn't fail.
+keys[2].owner_hi = lastbit: offline scrub didn't fail.
+keys[2].owner_hi = add: offline scrub didn't fail.
+keys[2].owner_hi = sub: offline scrub didn't fail.
+keys[2].offset_hi = ones: offline scrub didn't fail.
+keys[2].offset_hi = firstbit: offline scrub didn't fail.
+keys[2].offset_hi = middlebit: offline scrub didn't fail.
+keys[2].offset_hi = add: offline scrub didn't fail.
+keys[2].offset_hi = sub: offline scrub didn't fail.
+keys[2].extentflag_hi = ones: offline scrub didn't fail.
+keys[2].extentflag_hi = ones: online scrub didn't fail.
+keys[2].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[2].extentflag_hi = firstbit: online scrub didn't fail.
+keys[2].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[2].extentflag_hi = middlebit: online scrub didn't fail.
+keys[2].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[2].extentflag_hi = lastbit: online scrub didn't fail.
+keys[2].extentflag_hi = add: offline scrub didn't fail.
+keys[2].extentflag_hi = add: online scrub didn't fail.
+keys[2].extentflag_hi = sub: offline scrub didn't fail.
+keys[2].extentflag_hi = sub: online scrub didn't fail.
+keys[2].attrfork_hi = ones: offline scrub didn't fail.
+keys[2].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[2].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[2].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[2].attrfork_hi = add: offline scrub didn't fail.
+keys[2].attrfork_hi = sub: offline scrub didn't fail.
+keys[2].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[2].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = add: offline scrub didn't fail.
+keys[2].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[3].owner = zeroes: offline scrub didn't fail.
+keys[3].offset = zeroes: offline scrub didn't fail.
+keys[3].offset = lastbit: offline scrub didn't fail.
+keys[3].extentflag = ones: offline scrub didn't fail.
+keys[3].extentflag = ones: online scrub didn't fail.
+keys[3].extentflag = firstbit: offline scrub didn't fail.
+keys[3].extentflag = firstbit: online scrub didn't fail.
+keys[3].extentflag = middlebit: offline scrub didn't fail.
+keys[3].extentflag = middlebit: online scrub didn't fail.
+keys[3].extentflag = lastbit: offline scrub didn't fail.
+keys[3].extentflag = lastbit: online scrub didn't fail.
+keys[3].extentflag = add: offline scrub didn't fail.
+keys[3].extentflag = add: online scrub didn't fail.
+keys[3].extentflag = sub: offline scrub didn't fail.
+keys[3].extentflag = sub: online scrub didn't fail.
+keys[3].startblock_hi = ones: offline scrub didn't fail.
+keys[3].startblock_hi = firstbit: offline scrub didn't fail.
+keys[3].startblock_hi = middlebit: offline scrub didn't fail.
+keys[3].startblock_hi = lastbit: offline scrub didn't fail.
+keys[3].startblock_hi = add: offline scrub didn't fail.
+keys[3].startblock_hi = sub: offline scrub didn't fail.
+keys[3].owner_hi = ones: offline scrub didn't fail.
+keys[3].owner_hi = firstbit: offline scrub didn't fail.
+keys[3].owner_hi = middlebit: offline scrub didn't fail.
+keys[3].owner_hi = lastbit: offline scrub didn't fail.
+keys[3].owner_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = ones: offline scrub didn't fail.
+keys[3].offset_hi = firstbit: offline scrub didn't fail.
+keys[3].offset_hi = middlebit: offline scrub didn't fail.
+keys[3].offset_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = sub: offline scrub didn't fail.
+keys[3].extentflag_hi = ones: offline scrub didn't fail.
+keys[3].extentflag_hi = ones: online scrub didn't fail.
+keys[3].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[3].extentflag_hi = firstbit: online scrub didn't fail.
+keys[3].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[3].extentflag_hi = middlebit: online scrub didn't fail.
+keys[3].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[3].extentflag_hi = lastbit: online scrub didn't fail.
+keys[3].extentflag_hi = add: offline scrub didn't fail.
+keys[3].extentflag_hi = add: online scrub didn't fail.
+keys[3].extentflag_hi = sub: offline scrub didn't fail.
+keys[3].extentflag_hi = sub: online scrub didn't fail.
+keys[3].attrfork_hi = ones: offline scrub didn't fail.
+keys[3].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[3].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[3].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[3].attrfork_hi = add: offline scrub didn't fail.
+keys[3].attrfork_hi = sub: offline scrub didn't fail.
+keys[3].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[3].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = add: offline scrub didn't fail.
+keys[3].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[4].owner = zeroes: offline scrub didn't fail.
+keys[4].owner = sub: offline scrub didn't fail.
+keys[4].offset = zeroes: offline scrub didn't fail.
+keys[4].offset = lastbit: offline scrub didn't fail.
+keys[4].extentflag = ones: offline scrub didn't fail.
+keys[4].extentflag = ones: online scrub didn't fail.
+keys[4].extentflag = firstbit: offline scrub didn't fail.
+keys[4].extentflag = firstbit: online scrub didn't fail.
+keys[4].extentflag = middlebit: offline scrub didn't fail.
+keys[4].extentflag = middlebit: online scrub didn't fail.
+keys[4].extentflag = lastbit: offline scrub didn't fail.
+keys[4].extentflag = lastbit: online scrub didn't fail.
+keys[4].extentflag = add: offline scrub didn't fail.
+keys[4].extentflag = add: online scrub didn't fail.
+keys[4].extentflag = sub: offline scrub didn't fail.
+keys[4].extentflag = sub: online scrub didn't fail.
+keys[4].startblock_hi = ones: offline scrub didn't fail.
+keys[4].startblock_hi = firstbit: offline scrub didn't fail.
+keys[4].startblock_hi = middlebit: offline scrub didn't fail.
+keys[4].startblock_hi = lastbit: offline scrub didn't fail.
+keys[4].startblock_hi = add: offline scrub didn't fail.
+keys[4].startblock_hi = sub: offline scrub didn't fail.
+keys[4].owner_hi = ones: offline scrub didn't fail.
+keys[4].owner_hi = firstbit: offline scrub didn't fail.
+keys[4].owner_hi = middlebit: offline scrub didn't fail.
+keys[4].owner_hi = lastbit: offline scrub didn't fail.
+keys[4].owner_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = ones: offline scrub didn't fail.
+keys[4].offset_hi = firstbit: offline scrub didn't fail.
+keys[4].offset_hi = middlebit: offline scrub didn't fail.
+keys[4].offset_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = sub: offline scrub didn't fail.
+keys[4].extentflag_hi = ones: offline scrub didn't fail.
+keys[4].extentflag_hi = ones: online scrub didn't fail.
+keys[4].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[4].extentflag_hi = firstbit: online scrub didn't fail.
+keys[4].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[4].extentflag_hi = middlebit: online scrub didn't fail.
+keys[4].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[4].extentflag_hi = lastbit: online scrub didn't fail.
+keys[4].extentflag_hi = add: offline scrub didn't fail.
+keys[4].extentflag_hi = add: online scrub didn't fail.
+keys[4].extentflag_hi = sub: offline scrub didn't fail.
+keys[4].extentflag_hi = sub: online scrub didn't fail.
+keys[4].attrfork_hi = ones: offline scrub didn't fail.
+keys[4].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[4].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[4].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[4].attrfork_hi = add: offline scrub didn't fail.
+keys[4].attrfork_hi = sub: offline scrub didn't fail.
+keys[4].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[4].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = add: offline scrub didn't fail.
+keys[4].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[5].owner = zeroes: offline scrub didn't fail.
+keys[5].owner = sub: offline scrub didn't fail.
+keys[5].offset = zeroes: offline scrub didn't fail.
+keys[5].offset = lastbit: offline scrub didn't fail.
+keys[5].extentflag = ones: offline scrub didn't fail.
+keys[5].extentflag = ones: online scrub didn't fail.
+keys[5].extentflag = firstbit: offline scrub didn't fail.
+keys[5].extentflag = firstbit: online scrub didn't fail.
+keys[5].extentflag = middlebit: offline scrub didn't fail.
+keys[5].extentflag = middlebit: online scrub didn't fail.
+keys[5].extentflag = lastbit: offline scrub didn't fail.
+keys[5].extentflag = lastbit: online scrub didn't fail.
+keys[5].extentflag = add: offline scrub didn't fail.
+keys[5].extentflag = add: online scrub didn't fail.
+keys[5].extentflag = sub: offline scrub didn't fail.
+keys[5].extentflag = sub: online scrub didn't fail.
+keys[5].startblock_hi = ones: offline scrub didn't fail.
+keys[5].startblock_hi = firstbit: offline scrub didn't fail.
+keys[5].startblock_hi = middlebit: offline scrub didn't fail.
+keys[5].startblock_hi = lastbit: offline scrub didn't fail.
+keys[5].startblock_hi = add: offline scrub didn't fail.
+keys[5].startblock_hi = sub: offline scrub didn't fail.
+keys[5].owner_hi = ones: offline scrub didn't fail.
+keys[5].owner_hi = firstbit: offline scrub didn't fail.
+keys[5].owner_hi = middlebit: offline scrub didn't fail.
+keys[5].owner_hi = lastbit: offline scrub didn't fail.
+keys[5].owner_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = ones: offline scrub didn't fail.
+keys[5].offset_hi = firstbit: offline scrub didn't fail.
+keys[5].offset_hi = middlebit: offline scrub didn't fail.
+keys[5].offset_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = sub: offline scrub didn't fail.
+keys[5].extentflag_hi = ones: offline scrub didn't fail.
+keys[5].extentflag_hi = ones: online scrub didn't fail.
+keys[5].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[5].extentflag_hi = firstbit: online scrub didn't fail.
+keys[5].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[5].extentflag_hi = middlebit: online scrub didn't fail.
+keys[5].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[5].extentflag_hi = lastbit: online scrub didn't fail.
+keys[5].extentflag_hi = add: offline scrub didn't fail.
+keys[5].extentflag_hi = add: online scrub didn't fail.
+keys[5].extentflag_hi = sub: offline scrub didn't fail.
+keys[5].extentflag_hi = sub: online scrub didn't fail.
+keys[5].attrfork_hi = ones: offline scrub didn't fail.
+keys[5].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[5].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[5].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[5].attrfork_hi = add: offline scrub didn't fail.
+keys[5].attrfork_hi = sub: offline scrub didn't fail.
+keys[5].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[5].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = add: offline scrub didn't fail.
+keys[5].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[6].owner = zeroes: offline scrub didn't fail.
+keys[6].owner = sub: offline scrub didn't fail.
+keys[6].offset = zeroes: offline scrub didn't fail.
+keys[6].offset = lastbit: offline scrub didn't fail.
+keys[6].extentflag = ones: offline scrub didn't fail.
+keys[6].extentflag = ones: online scrub didn't fail.
+keys[6].extentflag = firstbit: offline scrub didn't fail.
+keys[6].extentflag = firstbit: online scrub didn't fail.
+keys[6].extentflag = middlebit: offline scrub didn't fail.
+keys[6].extentflag = middlebit: online scrub didn't fail.
+keys[6].extentflag = lastbit: offline scrub didn't fail.
+keys[6].extentflag = lastbit: online scrub didn't fail.
+keys[6].extentflag = add: offline scrub didn't fail.
+keys[6].extentflag = add: online scrub didn't fail.
+keys[6].extentflag = sub: offline scrub didn't fail.
+keys[6].extentflag = sub: online scrub didn't fail.
+keys[6].startblock_hi = ones: offline scrub didn't fail.
+keys[6].startblock_hi = firstbit: offline scrub didn't fail.
+keys[6].startblock_hi = middlebit: offline scrub didn't fail.
+keys[6].startblock_hi = lastbit: offline scrub didn't fail.
+keys[6].startblock_hi = add: offline scrub didn't fail.
+keys[6].owner_hi = ones: offline scrub didn't fail.
+keys[6].owner_hi = firstbit: offline scrub didn't fail.
+keys[6].owner_hi = middlebit: offline scrub didn't fail.
+keys[6].owner_hi = lastbit: offline scrub didn't fail.
+keys[6].owner_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = ones: offline scrub didn't fail.
+keys[6].offset_hi = firstbit: offline scrub didn't fail.
+keys[6].offset_hi = middlebit: offline scrub didn't fail.
+keys[6].offset_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = sub: offline scrub didn't fail.
+keys[6].extentflag_hi = ones: offline scrub didn't fail.
+keys[6].extentflag_hi = ones: online scrub didn't fail.
+keys[6].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[6].extentflag_hi = firstbit: online scrub didn't fail.
+keys[6].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[6].extentflag_hi = middlebit: online scrub didn't fail.
+keys[6].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[6].extentflag_hi = lastbit: online scrub didn't fail.
+keys[6].extentflag_hi = add: offline scrub didn't fail.
+keys[6].extentflag_hi = add: online scrub didn't fail.
+keys[6].extentflag_hi = sub: offline scrub didn't fail.
+keys[6].extentflag_hi = sub: online scrub didn't fail.
+keys[6].attrfork_hi = ones: offline scrub didn't fail.
+keys[6].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[6].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[6].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[6].attrfork_hi = add: offline scrub didn't fail.
+keys[6].attrfork_hi = sub: offline scrub didn't fail.
+keys[6].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[6].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = add: offline scrub didn't fail.
+keys[6].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[7].owner = zeroes: offline scrub didn't fail.
+keys[7].owner = lastbit: offline scrub didn't fail.
+keys[7].owner = sub: offline scrub didn't fail.
+keys[7].offset = zeroes: offline scrub didn't fail.
+keys[7].offset = lastbit: offline scrub didn't fail.
+keys[7].extentflag = ones: offline scrub didn't fail.
+keys[7].extentflag = ones: online scrub didn't fail.
+keys[7].extentflag = firstbit: offline scrub didn't fail.
+keys[7].extentflag = firstbit: online scrub didn't fail.
+keys[7].extentflag = middlebit: offline scrub didn't fail.
+keys[7].extentflag = middlebit: online scrub didn't fail.
+keys[7].extentflag = lastbit: offline scrub didn't fail.
+keys[7].extentflag = lastbit: online scrub didn't fail.
+keys[7].extentflag = add: offline scrub didn't fail.
+keys[7].extentflag = add: online scrub didn't fail.
+keys[7].extentflag = sub: offline scrub didn't fail.
+keys[7].extentflag = sub: online scrub didn't fail.
+keys[7].startblock_hi = ones: offline scrub didn't fail.
+keys[7].startblock_hi = firstbit: offline scrub didn't fail.
+keys[7].startblock_hi = middlebit: offline scrub didn't fail.
+keys[7].startblock_hi = lastbit: offline scrub didn't fail.
+keys[7].startblock_hi = add: offline scrub didn't fail.
+keys[7].owner_hi = ones: offline scrub didn't fail.
+keys[7].owner_hi = firstbit: offline scrub didn't fail.
+keys[7].owner_hi = middlebit: offline scrub didn't fail.
+keys[7].owner_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = ones: offline scrub didn't fail.
+keys[7].offset_hi = firstbit: offline scrub didn't fail.
+keys[7].offset_hi = middlebit: offline scrub didn't fail.
+keys[7].offset_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = sub: offline scrub didn't fail.
+keys[7].extentflag_hi = ones: offline scrub didn't fail.
+keys[7].extentflag_hi = ones: online scrub didn't fail.
+keys[7].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[7].extentflag_hi = firstbit: online scrub didn't fail.
+keys[7].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[7].extentflag_hi = middlebit: online scrub didn't fail.
+keys[7].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[7].extentflag_hi = lastbit: online scrub didn't fail.
+keys[7].extentflag_hi = add: offline scrub didn't fail.
+keys[7].extentflag_hi = add: online scrub didn't fail.
+keys[7].extentflag_hi = sub: offline scrub didn't fail.
+keys[7].extentflag_hi = sub: online scrub didn't fail.
+keys[7].attrfork_hi = ones: offline scrub didn't fail.
+keys[7].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[7].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[7].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[7].attrfork_hi = add: offline scrub didn't fail.
+keys[7].attrfork_hi = sub: offline scrub didn't fail.
+keys[7].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[7].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = add: offline scrub didn't fail.
+keys[7].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[8].owner = zeroes: offline scrub didn't fail.
+keys[8].owner = lastbit: offline scrub didn't fail.
+keys[8].owner = sub: offline scrub didn't fail.
+keys[8].offset = zeroes: offline scrub didn't fail.
+keys[8].offset = lastbit: offline scrub didn't fail.
+keys[8].extentflag = ones: offline scrub didn't fail.
+keys[8].extentflag = ones: online scrub didn't fail.
+keys[8].extentflag = firstbit: offline scrub didn't fail.
+keys[8].extentflag = firstbit: online scrub didn't fail.
+keys[8].extentflag = middlebit: offline scrub didn't fail.
+keys[8].extentflag = middlebit: online scrub didn't fail.
+keys[8].extentflag = lastbit: offline scrub didn't fail.
+keys[8].extentflag = lastbit: online scrub didn't fail.
+keys[8].extentflag = add: offline scrub didn't fail.
+keys[8].extentflag = add: online scrub didn't fail.
+keys[8].extentflag = sub: offline scrub didn't fail.
+keys[8].extentflag = sub: online scrub didn't fail.
+keys[8].startblock_hi = ones: offline scrub didn't fail.
+keys[8].startblock_hi = firstbit: offline scrub didn't fail.
+keys[8].startblock_hi = middlebit: offline scrub didn't fail.
+keys[8].startblock_hi = lastbit: offline scrub didn't fail.
+keys[8].startblock_hi = add: offline scrub didn't fail.
+keys[8].owner_hi = ones: offline scrub didn't fail.
+keys[8].owner_hi = firstbit: offline scrub didn't fail.
+keys[8].owner_hi = middlebit: offline scrub didn't fail.
+keys[8].owner_hi = lastbit: offline scrub didn't fail.
+keys[8].owner_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = ones: offline scrub didn't fail.
+keys[8].offset_hi = firstbit: offline scrub didn't fail.
+keys[8].offset_hi = middlebit: offline scrub didn't fail.
+keys[8].offset_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = sub: offline scrub didn't fail.
+keys[8].extentflag_hi = ones: offline scrub didn't fail.
+keys[8].extentflag_hi = ones: online scrub didn't fail.
+keys[8].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[8].extentflag_hi = firstbit: online scrub didn't fail.
+keys[8].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[8].extentflag_hi = middlebit: online scrub didn't fail.
+keys[8].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[8].extentflag_hi = lastbit: online scrub didn't fail.
+keys[8].extentflag_hi = add: offline scrub didn't fail.
+keys[8].extentflag_hi = add: online scrub didn't fail.
+keys[8].extentflag_hi = sub: offline scrub didn't fail.
+keys[8].extentflag_hi = sub: online scrub didn't fail.
+keys[8].attrfork_hi = ones: offline scrub didn't fail.
+keys[8].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[8].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[8].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[8].attrfork_hi = add: offline scrub didn't fail.
+keys[8].attrfork_hi = sub: offline scrub didn't fail.
+keys[8].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[8].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = add: offline scrub didn't fail.
+keys[8].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[9].owner = zeroes: offline scrub didn't fail.
+keys[9].owner = sub: offline scrub didn't fail.
+keys[9].offset = zeroes: offline scrub didn't fail.
+keys[9].offset = lastbit: offline scrub didn't fail.
+keys[9].extentflag = ones: offline scrub didn't fail.
+keys[9].extentflag = ones: online scrub didn't fail.
+keys[9].extentflag = firstbit: offline scrub didn't fail.
+keys[9].extentflag = firstbit: online scrub didn't fail.
+keys[9].extentflag = middlebit: offline scrub didn't fail.
+keys[9].extentflag = middlebit: online scrub didn't fail.
+keys[9].extentflag = lastbit: offline scrub didn't fail.
+keys[9].extentflag = lastbit: online scrub didn't fail.
+keys[9].extentflag = add: offline scrub didn't fail.
+keys[9].extentflag = add: online scrub didn't fail.
+keys[9].extentflag = sub: offline scrub didn't fail.
+keys[9].extentflag = sub: online scrub didn't fail.
+keys[9].startblock_hi = ones: offline scrub didn't fail.
+keys[9].startblock_hi = firstbit: offline scrub didn't fail.
+keys[9].startblock_hi = middlebit: offline scrub didn't fail.
+keys[9].startblock_hi = lastbit: offline scrub didn't fail.
+keys[9].startblock_hi = add: offline scrub didn't fail.
+keys[9].owner_hi = ones: offline scrub didn't fail.
+keys[9].owner_hi = firstbit: offline scrub didn't fail.
+keys[9].owner_hi = middlebit: offline scrub didn't fail.
+keys[9].owner_hi = lastbit: offline scrub didn't fail.
+keys[9].owner_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = ones: offline scrub didn't fail.
+keys[9].offset_hi = firstbit: offline scrub didn't fail.
+keys[9].offset_hi = middlebit: offline scrub didn't fail.
+keys[9].offset_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = sub: offline scrub didn't fail.
+keys[9].extentflag_hi = ones: offline scrub didn't fail.
+keys[9].extentflag_hi = ones: online scrub didn't fail.
+keys[9].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[9].extentflag_hi = firstbit: online scrub didn't fail.
+keys[9].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[9].extentflag_hi = middlebit: online scrub didn't fail.
+keys[9].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[9].extentflag_hi = lastbit: online scrub didn't fail.
+keys[9].extentflag_hi = add: offline scrub didn't fail.
+keys[9].extentflag_hi = add: online scrub didn't fail.
+keys[9].extentflag_hi = sub: offline scrub didn't fail.
+keys[9].extentflag_hi = sub: online scrub didn't fail.
+keys[9].attrfork_hi = ones: offline scrub didn't fail.
+keys[9].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[9].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[9].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[9].attrfork_hi = add: offline scrub didn't fail.
+keys[9].attrfork_hi = sub: offline scrub didn't fail.
+keys[9].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[9].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = add: offline scrub didn't fail.
+keys[9].bmbtblock_hi = sub: offline scrub didn't fail.
 Done fuzzing rmapbt keyptr
diff --git a/tests/xfs/464.out b/tests/xfs/464.out
index fd949298f5..a949fa0875 100644
--- a/tests/xfs/464.out
+++ b/tests/xfs/464.out
@@ -1,4 +1,9 @@
 QA output created by 464
 Format and populate
 Fuzz refcountbt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/465.out b/tests/xfs/465.out
index bb560881ae..5d8e6818fb 100644
--- a/tests/xfs/465.out
+++ b/tests/xfs/465.out
@@ -2,4 +2,75 @@ QA output created by 465
 Format and populate
 Find btree-format dir inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online health check failed (0).
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+u3.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
+u3.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/466.out b/tests/xfs/466.out
index b1762f2478..b2d84cd0fa 100644
--- a/tests/xfs/466.out
+++ b/tests/xfs/466.out
@@ -2,4 +2,55 @@ QA output created by 466
 Format and populate
 Find extents-format file inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = zeroes: offline scrub didn't fail.
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+u3.bmx[0].startoff = lastbit: pre-mod mount failed (32).
+u3.bmx[0].blockcount = middlebit: pre-mod mount failed (32).
+u3.bmx[0].blockcount = add: pre-mod mount failed (32).
+a.sfattr.list[0].parent_ino = lastbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/467.out b/tests/xfs/467.out
index 1ca0e21d40..f68fab8444 100644
--- a/tests/xfs/467.out
+++ b/tests/xfs/467.out
@@ -2,4 +2,51 @@ QA output created by 467
 Format and populate
 Find btree-format file inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = zeroes: offline scrub didn't fail.
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/469.out b/tests/xfs/469.out
index 1f514019b8..641a63fee7 100644
--- a/tests/xfs/469.out
+++ b/tests/xfs/469.out
@@ -2,4 +2,12 @@ QA output created by 469
 Format and populate
 Find symlink remote block
 Fuzz symlink remote block
+data = ones: offline scrub didn't fail.
+data = ones: online scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing symlink remote block
diff --git a/tests/xfs/470.out b/tests/xfs/470.out
index 88abc0bc6a..41b0739d9d 100644
--- a/tests/xfs/470.out
+++ b/tests/xfs/470.out
@@ -2,4 +2,83 @@ QA output created by 470
 Format and populate
 Find inline-format dir inode
 Fuzz inline-format dir inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = add: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = add: online scrub didn't fail.
 Done fuzzing inline-format dir inode
diff --git a/tests/xfs/471.out b/tests/xfs/471.out
index 25e55ff03b..cbc61d9491 100644
--- a/tests/xfs/471.out
+++ b/tests/xfs/471.out
@@ -2,4 +2,11 @@ QA output created by 471
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+bhdr.hdr.crc = zeroes: offline scrub didn't fail.
+bhdr.hdr.crc = ones: offline scrub didn't fail.
+bhdr.hdr.crc = firstbit: offline scrub didn't fail.
+bhdr.hdr.crc = middlebit: offline scrub didn't fail.
+bhdr.hdr.crc = lastbit: offline scrub didn't fail.
+bhdr.hdr.crc = add: offline scrub didn't fail.
+bhdr.hdr.crc = sub: offline scrub didn't fail.
 Done fuzzing data-format dir block
diff --git a/tests/xfs/472.out b/tests/xfs/472.out
index 3f4d23acce..a2eead205e 100644
--- a/tests/xfs/472.out
+++ b/tests/xfs/472.out
@@ -2,4 +2,11 @@ QA output created by 472
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+dhdr.hdr.crc = zeroes: offline scrub didn't fail.
+dhdr.hdr.crc = ones: offline scrub didn't fail.
+dhdr.hdr.crc = firstbit: offline scrub didn't fail.
+dhdr.hdr.crc = middlebit: offline scrub didn't fail.
+dhdr.hdr.crc = lastbit: offline scrub didn't fail.
+dhdr.hdr.crc = add: offline scrub didn't fail.
+dhdr.hdr.crc = sub: offline scrub didn't fail.
 Done fuzzing data-format dir block
diff --git a/tests/xfs/474.out b/tests/xfs/474.out
index bba106d249..93e1147d3f 100644
--- a/tests/xfs/474.out
+++ b/tests/xfs/474.out
@@ -2,4 +2,11 @@ QA output created by 474
 Format and populate
 Find leafn-format dir block
 Fuzz leafn-format dir block
+lhdr.info.crc = zeroes: offline scrub didn't fail.
+lhdr.info.crc = ones: offline scrub didn't fail.
+lhdr.info.crc = firstbit: offline scrub didn't fail.
+lhdr.info.crc = middlebit: offline scrub didn't fail.
+lhdr.info.crc = lastbit: offline scrub didn't fail.
+lhdr.info.crc = add: offline scrub didn't fail.
+lhdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing leafn-format dir block
diff --git a/tests/xfs/475.out b/tests/xfs/475.out
index 5e64381922..d4d8b9ec9d 100644
--- a/tests/xfs/475.out
+++ b/tests/xfs/475.out
@@ -2,4 +2,10 @@ QA output created by 475
 Format and populate
 Find node-format dir block
 Fuzz node-format dir block
+nhdr.info.hdr.back = ones: offline scrub didn't fail.
+nhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+nhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+nhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+nhdr.info.hdr.back = add: offline scrub didn't fail.
+nhdr.info.hdr.back = sub: offline scrub didn't fail.
 Done fuzzing node-format dir block
diff --git a/tests/xfs/477.out b/tests/xfs/477.out
index f3dd00ea51..c6f06d5efc 100644
--- a/tests/xfs/477.out
+++ b/tests/xfs/477.out
@@ -2,4 +2,83 @@ QA output created by 477
 Format and populate
 Find inline-format attr inode
 Fuzz inline-format attr inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+a.sfattr.list[1].name = ones: offline scrub didn't fail.
+a.sfattr.list[1].name = ones: online scrub didn't fail.
+a.sfattr.list[1].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[1].name = firstbit: online scrub didn't fail.
+a.sfattr.list[1].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[1].name = middlebit: online scrub didn't fail.
+a.sfattr.list[1].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[1].name = lastbit: online scrub didn't fail.
+a.sfattr.list[1].name = add: offline scrub didn't fail.
+a.sfattr.list[1].name = add: online scrub didn't fail.
+a.sfattr.list[1].name = sub: offline scrub didn't fail.
+a.sfattr.list[1].name = sub: online scrub didn't fail.
+a.sfattr.list[2].name = ones: offline scrub didn't fail.
+a.sfattr.list[2].name = ones: online scrub didn't fail.
+a.sfattr.list[2].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[2].name = firstbit: online scrub didn't fail.
+a.sfattr.list[2].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[2].name = middlebit: online scrub didn't fail.
+a.sfattr.list[2].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[2].name = lastbit: online scrub didn't fail.
+a.sfattr.list[2].name = add: offline scrub didn't fail.
+a.sfattr.list[2].name = add: online scrub didn't fail.
+a.sfattr.list[2].name = sub: offline scrub didn't fail.
+a.sfattr.list[2].name = sub: online scrub didn't fail.
 Done fuzzing inline-format attr inode
diff --git a/tests/xfs/478.out b/tests/xfs/478.out
index ff2067f09f..961be25626 100644
--- a/tests/xfs/478.out
+++ b/tests/xfs/478.out
@@ -2,4 +2,95 @@ QA output created by 478
 Format and populate
 Find leaf-format attr block
 Fuzz leaf-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
+hdr.firstused = middlebit: online scrub didn't fail.
+hdr.holes = ones: offline scrub didn't fail.
+hdr.holes = ones: online scrub didn't fail.
+hdr.holes = firstbit: offline scrub didn't fail.
+hdr.holes = firstbit: online scrub didn't fail.
+hdr.holes = middlebit: offline scrub didn't fail.
+hdr.holes = middlebit: online scrub didn't fail.
+hdr.holes = lastbit: offline scrub didn't fail.
+hdr.holes = lastbit: online scrub didn't fail.
+hdr.holes = add: offline scrub didn't fail.
+hdr.holes = add: online scrub didn't fail.
+hdr.holes = sub: offline scrub didn't fail.
+hdr.holes = sub: online scrub didn't fail.
+hdr.freemap[0].base = zeroes: offline scrub didn't fail.
+hdr.freemap[0].base = middlebit: offline scrub didn't fail.
+hdr.freemap[0].size = zeroes: offline scrub didn't fail.
+hdr.freemap[0].size = zeroes: online scrub didn't fail.
+hdr.freemap[0].size = middlebit: offline scrub didn't fail.
+hdr.freemap[1].base = middlebit: offline scrub didn't fail.
+hdr.freemap[1].base = middlebit: online scrub didn't fail.
+hdr.freemap[1].size = middlebit: offline scrub didn't fail.
+hdr.freemap[2].base = middlebit: offline scrub didn't fail.
+hdr.freemap[2].base = middlebit: online scrub didn't fail.
+hdr.freemap[2].size = middlebit: offline scrub didn't fail.
+entries[0].incomplete = ones: online scrub didn't fail.
+entries[0].incomplete = firstbit: online scrub didn't fail.
+entries[0].incomplete = middlebit: online scrub didn't fail.
+entries[0].incomplete = lastbit: online scrub didn't fail.
+entries[0].incomplete = add: online scrub didn't fail.
+entries[0].incomplete = sub: online scrub didn't fail.
+entries[1].incomplete = ones: online scrub didn't fail.
+entries[1].incomplete = firstbit: online scrub didn't fail.
+entries[1].incomplete = middlebit: online scrub didn't fail.
+entries[1].incomplete = lastbit: online scrub didn't fail.
+entries[1].incomplete = add: online scrub didn't fail.
+entries[1].incomplete = sub: online scrub didn't fail.
+entries[2].incomplete = ones: online scrub didn't fail.
+entries[2].incomplete = firstbit: online scrub didn't fail.
+entries[2].incomplete = middlebit: online scrub didn't fail.
+entries[2].incomplete = lastbit: online scrub didn't fail.
+entries[2].incomplete = add: online scrub didn't fail.
+entries[2].incomplete = sub: online scrub didn't fail.
+entries[3].incomplete = ones: online scrub didn't fail.
+entries[3].incomplete = firstbit: online scrub didn't fail.
+entries[3].incomplete = middlebit: online scrub didn't fail.
+entries[3].incomplete = lastbit: online scrub didn't fail.
+entries[3].incomplete = add: online scrub didn't fail.
+entries[3].incomplete = sub: online scrub didn't fail.
+entries[4].incomplete = ones: online scrub didn't fail.
+entries[4].incomplete = firstbit: online scrub didn't fail.
+entries[4].incomplete = middlebit: online scrub didn't fail.
+entries[4].incomplete = lastbit: online scrub didn't fail.
+entries[4].incomplete = add: online scrub didn't fail.
+entries[4].incomplete = sub: online scrub didn't fail.
+entries[5].incomplete = ones: online scrub didn't fail.
+entries[5].incomplete = firstbit: online scrub didn't fail.
+entries[5].incomplete = middlebit: online scrub didn't fail.
+entries[5].incomplete = lastbit: online scrub didn't fail.
+entries[5].incomplete = add: online scrub didn't fail.
+entries[5].incomplete = sub: online scrub didn't fail.
+entries[6].incomplete = ones: online scrub didn't fail.
+entries[6].incomplete = firstbit: online scrub didn't fail.
+entries[6].incomplete = middlebit: online scrub didn't fail.
+entries[6].incomplete = lastbit: online scrub didn't fail.
+entries[6].incomplete = add: online scrub didn't fail.
+entries[6].incomplete = sub: online scrub didn't fail.
+entries[7].incomplete = ones: online scrub didn't fail.
+entries[7].incomplete = firstbit: online scrub didn't fail.
+entries[7].incomplete = middlebit: online scrub didn't fail.
+entries[7].incomplete = lastbit: online scrub didn't fail.
+entries[7].incomplete = add: online scrub didn't fail.
+entries[7].incomplete = sub: online scrub didn't fail.
+entries[8].incomplete = ones: online scrub didn't fail.
+entries[8].incomplete = firstbit: online scrub didn't fail.
+entries[8].incomplete = middlebit: online scrub didn't fail.
+entries[8].incomplete = lastbit: online scrub didn't fail.
+entries[8].incomplete = add: online scrub didn't fail.
+entries[8].incomplete = sub: online scrub didn't fail.
+entries[9].incomplete = ones: online scrub didn't fail.
+entries[9].incomplete = firstbit: online scrub didn't fail.
+entries[9].incomplete = middlebit: online scrub didn't fail.
+entries[9].incomplete = lastbit: online scrub didn't fail.
+entries[9].incomplete = add: online scrub didn't fail.
+entries[9].incomplete = sub: online scrub didn't fail.
 Done fuzzing leaf-format attr block
diff --git a/tests/xfs/479.out b/tests/xfs/479.out
index 320a82ac39..ca8ff9f71f 100644
--- a/tests/xfs/479.out
+++ b/tests/xfs/479.out
@@ -2,4 +2,11 @@ QA output created by 479
 Format and populate
 Find node-format attr block
 Fuzz node-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing node-format attr block
diff --git a/tests/xfs/480.out b/tests/xfs/480.out
index 6225f4daad..d4628171ba 100644
--- a/tests/xfs/480.out
+++ b/tests/xfs/480.out
@@ -2,4 +2,28 @@ QA output created by 480
 Format and populate
 Find external attr block
 Fuzz external attr block
+hdr.offset = ones: offline scrub didn't fail.
+hdr.offset = middlebit: offline scrub didn't fail.
+hdr.offset = lastbit: offline scrub didn't fail.
+hdr.offset = add: offline scrub didn't fail.
+hdr.offset = sub: offline scrub didn't fail.
+hdr.bytes = zeroes: offline scrub didn't fail.
+hdr.bytes = lastbit: offline scrub didn't fail.
+hdr.bytes = sub: offline scrub didn't fail.
+hdr.owner = ones: offline scrub didn't fail.
+hdr.owner = firstbit: offline scrub didn't fail.
+hdr.owner = middlebit: offline scrub didn't fail.
+hdr.owner = lastbit: offline scrub didn't fail.
+hdr.owner = add: offline scrub didn't fail.
+hdr.owner = sub: offline scrub didn't fail.
+data = zeroes: offline scrub didn't fail.
+data = zeroes: online scrub didn't fail.
+data = ones: offline scrub didn't fail.
+data = ones: online scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing external attr block
diff --git a/tests/xfs/483.out b/tests/xfs/483.out
index 07b75b3655..01c95a3bac 100644
--- a/tests/xfs/483.out
+++ b/tests/xfs/483.out
@@ -1,4 +1,10 @@
 QA output created by 483
 Format and populate
 Fuzz refcountbt
+numrecs = lastbit: offline scrub didn't fail.
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/484.out b/tests/xfs/484.out
index 1295aaad34..89ee83772d 100644
--- a/tests/xfs/484.out
+++ b/tests/xfs/484.out
@@ -2,4 +2,49 @@ QA output created by 484
 Format and populate
 Find btree-format attr inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/485.out b/tests/xfs/485.out
index c89c0e5a37..dfd131d4f3 100644
--- a/tests/xfs/485.out
+++ b/tests/xfs/485.out
@@ -2,4 +2,55 @@ QA output created by 485
 Format and populate
 Find blockdev inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.dev = zeroes: offline scrub didn't fail.
+u3.dev = zeroes: online scrub didn't fail.
+u3.dev = ones: offline scrub didn't fail.
+u3.dev = ones: online scrub didn't fail.
+u3.dev = firstbit: offline scrub didn't fail.
+u3.dev = firstbit: online scrub didn't fail.
+u3.dev = middlebit: offline scrub didn't fail.
+u3.dev = middlebit: online scrub didn't fail.
+u3.dev = lastbit: offline scrub didn't fail.
+u3.dev = lastbit: online scrub didn't fail.
+u3.dev = add: offline scrub didn't fail.
+u3.dev = add: online scrub didn't fail.
+u3.dev = sub: offline scrub didn't fail.
+u3.dev = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/486.out b/tests/xfs/486.out
index 26f1a362d9..1e4f7102a3 100644
--- a/tests/xfs/486.out
+++ b/tests/xfs/486.out
@@ -2,4 +2,50 @@ QA output created by 486
 Format and populate
 Find local-format symlink inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.symlink = ones: offline scrub didn't fail.
+u3.symlink = ones: online scrub didn't fail.
+u3.symlink = firstbit: offline scrub didn't fail.
+u3.symlink = firstbit: online scrub didn't fail.
+u3.symlink = middlebit: offline scrub didn't fail.
+u3.symlink = middlebit: online scrub didn't fail.
+u3.symlink = lastbit: offline scrub didn't fail.
+u3.symlink = lastbit: online scrub didn't fail.
+u3.symlink = add: offline scrub didn't fail.
+u3.symlink = add: online scrub didn't fail.
+u3.symlink = sub: offline scrub didn't fail.
+u3.symlink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/487.out b/tests/xfs/487.out
index a7d2926ce5..4e036a7d6b 100644
--- a/tests/xfs/487.out
+++ b/tests/xfs/487.out
@@ -1,4 +1,246 @@
 QA output created by 487
 Format and populate
 Fuzz user 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/488.out b/tests/xfs/488.out
index 2fc75d163e..738a7297a3 100644
--- a/tests/xfs/488.out
+++ b/tests/xfs/488.out
@@ -1,4 +1,246 @@
 QA output created by 488
 Format and populate
 Fuzz group 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/489.out b/tests/xfs/489.out
index 7483e6420c..15aa6efefc 100644
--- a/tests/xfs/489.out
+++ b/tests/xfs/489.out
@@ -1,4 +1,246 @@
 QA output created by 489
 Format and populate
 Fuzz project 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/498.out b/tests/xfs/498.out
index 5c5ef5917c..5295aeb3e5 100644
--- a/tests/xfs/498.out
+++ b/tests/xfs/498.out
@@ -2,4 +2,16 @@ QA output created by 498
 Format and populate
 Find single-leafn-format dir block
 Fuzz single-leafn-format dir block
+lhdr.info.hdr.forw = ones: offline scrub didn't fail.
+lhdr.info.hdr.forw = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.forw = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = add: offline scrub didn't fail.
+lhdr.info.hdr.forw = sub: offline scrub didn't fail.
+lhdr.info.hdr.back = ones: offline scrub didn't fail.
+lhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.back = add: offline scrub didn't fail.
+lhdr.info.hdr.back = sub: offline scrub didn't fail.
 Done fuzzing single-leafn-format dir block
diff --git a/tests/xfs/788.out b/tests/xfs/788.out
index 5f6414d0f1..525d385160 100644
--- a/tests/xfs/788.out
+++ b/tests/xfs/788.out
@@ -1,4 +1,27 @@
 QA output created by 788
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startino = zeroes: offline scrub didn't fail.
+keys[1].startino = ones: offline scrub didn't fail.
+keys[1].startino = firstbit: offline scrub didn't fail.
+keys[1].startino = middlebit: offline scrub didn't fail.
+keys[1].startino = lastbit: offline scrub didn't fail.
+keys[1].startino = add: offline scrub didn't fail.
+keys[1].startino = sub: offline scrub didn't fail.
+keys[2].startino = zeroes: offline scrub didn't fail.
+keys[2].startino = ones: offline scrub didn't fail.
+keys[2].startino = firstbit: offline scrub didn't fail.
+keys[2].startino = middlebit: offline scrub didn't fail.
+keys[2].startino = lastbit: offline scrub didn't fail.
+keys[2].startino = add: offline scrub didn't fail.
+keys[2].startino = sub: offline scrub didn't fail.
+keys[3].startino = zeroes: offline scrub didn't fail.
+keys[3].startino = ones: offline scrub didn't fail.
+keys[3].startino = firstbit: offline scrub didn't fail.
+keys[3].startino = middlebit: offline scrub didn't fail.
+keys[3].startino = lastbit: offline scrub didn't fail.
+keys[3].startino = add: offline scrub didn't fail.
+keys[3].startino = sub: offline scrub didn't fail.
 Done fuzzing inobt


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 4/4] xfs: bothrepair fuzz test known output
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
                     ` (2 preceding siblings ...)
  2023-12-27 13:44   ` [PATCH 3/4] xfs: norepair " Darrick J. Wong
@ 2023-12-27 13:44   ` Darrick J. Wong
  3 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:44 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Record all the currently known failures of the online-then-offline
repair code.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/747.out |  152 +++++++++++++++
 tests/xfs/748.out |   96 ++++++++++
 tests/xfs/749.out |  134 ++++++++++++++
 tests/xfs/750.out |  129 +++++++++++++
 tests/xfs/751.out |    5 +
 tests/xfs/752.out |   44 ++++
 tests/xfs/753.out |    5 +
 tests/xfs/754.out |   25 ---
 tests/xfs/755.out |    6 +
 tests/xfs/756.out |   61 ++++++
 tests/xfs/757.out |  525 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/758.out |    5 +
 tests/xfs/759.out |   94 +++++++++
 tests/xfs/760.out |   64 ++++++
 tests/xfs/761.out |   66 +++++++
 tests/xfs/762.out |    1 
 tests/xfs/763.out |    8 +
 tests/xfs/764.out |   92 +++++++++
 tests/xfs/765.out |    7 +
 tests/xfs/766.out |   11 +
 tests/xfs/768.out |    7 +
 tests/xfs/769.out |    6 +
 tests/xfs/771.out |   91 +++++++++
 tests/xfs/772.out |   93 +++++++++
 tests/xfs/773.out |    7 +
 tests/xfs/774.out |   24 ++
 tests/xfs/775.out |    6 +
 tests/xfs/776.out |   59 ++++++
 tests/xfs/777.out |   69 +++++++
 tests/xfs/778.out |   60 ++++++
 tests/xfs/779.out |  296 ++++++++++++++++++++++++++++++
 tests/xfs/780.out |  296 ++++++++++++++++++++++++++++++
 tests/xfs/781.out |  296 ++++++++++++++++++++++++++++++
 tests/xfs/782.out |   12 +
 tests/xfs/783.out |  210 +++++++++++++++++++++
 tests/xfs/784.out |   10 +
 tests/xfs/787.out |   23 ++
 37 files changed, 3074 insertions(+), 21 deletions(-)


diff --git a/tests/xfs/747.out b/tests/xfs/747.out
index 1cf4e747fb..80ef3c1fd7 100644
--- a/tests/xfs/747.out
+++ b/tests/xfs/747.out
@@ -1,4 +1,156 @@
 QA output created by 747
 Format and populate
 Fuzz superblock
+uuid = zeroes: offline scrub didn't fail.
+uuid = zeroes: online scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = ones: online scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = firstbit: online scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = middlebit: online scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+uuid = lastbit: online scrub didn't fail.
+rootino = zeroes: offline scrub didn't fail.
+rootino = zeroes: online scrub didn't fail.
+rootino = ones: offline scrub didn't fail.
+rootino = ones: online scrub didn't fail.
+rootino = firstbit: offline scrub didn't fail.
+rootino = firstbit: online scrub didn't fail.
+rootino = middlebit: offline scrub didn't fail.
+rootino = middlebit: online scrub didn't fail.
+rootino = lastbit: offline scrub didn't fail.
+rootino = lastbit: online scrub didn't fail.
+rootino = add: offline scrub didn't fail.
+rootino = add: online scrub didn't fail.
+rootino = sub: offline scrub didn't fail.
+rootino = sub: online scrub didn't fail.
+metadirino = zeroes: offline scrub didn't fail.
+metadirino = zeroes: online scrub didn't fail.
+metadirino = firstbit: offline scrub didn't fail.
+metadirino = firstbit: online scrub didn't fail.
+metadirino = middlebit: offline scrub didn't fail.
+metadirino = middlebit: online scrub didn't fail.
+metadirino = lastbit: offline scrub didn't fail.
+metadirino = lastbit: online scrub didn't fail.
+metadirino = add: offline scrub didn't fail.
+metadirino = add: online scrub didn't fail.
+metadirino = sub: offline scrub didn't fail.
+metadirino = sub: online scrub didn't fail.
+rgblocks = middlebit: offline scrub didn't fail.
+rgblocks = middlebit: online scrub didn't fail.
+rgblocks = lastbit: offline scrub didn't fail.
+rgblocks = lastbit: online scrub didn't fail.
+rgblocks = add: offline scrub didn't fail.
+rgblocks = add: online scrub didn't fail.
+rgblocks = sub: offline scrub didn't fail.
+rgblocks = sub: online scrub didn't fail.
+fname = ones: offline scrub didn't fail.
+fname = ones: online scrub didn't fail.
+fname = firstbit: offline scrub didn't fail.
+fname = firstbit: online scrub didn't fail.
+fname = middlebit: offline scrub didn't fail.
+fname = middlebit: online scrub didn't fail.
+fname = lastbit: offline scrub didn't fail.
+fname = lastbit: online scrub didn't fail.
+inprogress = zeroes: offline scrub didn't fail.
+inprogress = zeroes: online scrub didn't fail.
+inprogress = ones: offline scrub didn't fail.
+inprogress = ones: online scrub didn't fail.
+inprogress = firstbit: offline scrub didn't fail.
+inprogress = firstbit: online scrub didn't fail.
+inprogress = middlebit: offline scrub didn't fail.
+inprogress = middlebit: online scrub didn't fail.
+inprogress = lastbit: offline scrub didn't fail.
+inprogress = lastbit: online scrub didn't fail.
+inprogress = add: offline scrub didn't fail.
+inprogress = add: online scrub didn't fail.
+inprogress = sub: offline scrub didn't fail.
+inprogress = sub: online scrub didn't fail.
+imax_pct = zeroes: offline scrub didn't fail.
+imax_pct = zeroes: online scrub didn't fail.
+imax_pct = middlebit: offline scrub didn't fail.
+imax_pct = middlebit: online scrub didn't fail.
+imax_pct = lastbit: offline scrub didn't fail.
+imax_pct = lastbit: online scrub didn't fail.
+icount = ones: offline scrub didn't fail.
+icount = ones: online scrub didn't fail.
+icount = firstbit: offline scrub didn't fail.
+icount = firstbit: online scrub didn't fail.
+icount = middlebit: offline scrub didn't fail.
+icount = middlebit: online scrub didn't fail.
+icount = lastbit: offline scrub didn't fail.
+icount = lastbit: online scrub didn't fail.
+icount = add: offline scrub didn't fail.
+icount = add: online scrub didn't fail.
+icount = sub: offline scrub didn't fail.
+icount = sub: online scrub didn't fail.
+ifree = ones: offline scrub didn't fail.
+ifree = ones: online scrub didn't fail.
+ifree = firstbit: offline scrub didn't fail.
+ifree = firstbit: online scrub didn't fail.
+ifree = middlebit: offline scrub didn't fail.
+ifree = middlebit: online scrub didn't fail.
+ifree = lastbit: offline scrub didn't fail.
+ifree = lastbit: online scrub didn't fail.
+ifree = add: offline scrub didn't fail.
+ifree = add: online scrub didn't fail.
+ifree = sub: offline scrub didn't fail.
+ifree = sub: online scrub didn't fail.
+fdblocks = zeroes: offline scrub didn't fail.
+fdblocks = zeroes: online scrub didn't fail.
+fdblocks = ones: offline scrub didn't fail.
+fdblocks = ones: online scrub didn't fail.
+fdblocks = firstbit: offline scrub didn't fail.
+fdblocks = firstbit: online scrub didn't fail.
+fdblocks = middlebit: offline scrub didn't fail.
+fdblocks = middlebit: online scrub didn't fail.
+fdblocks = lastbit: offline scrub didn't fail.
+fdblocks = lastbit: online scrub didn't fail.
+fdblocks = add: offline scrub didn't fail.
+fdblocks = add: online scrub didn't fail.
+fdblocks = sub: offline scrub didn't fail.
+fdblocks = sub: online scrub didn't fail.
+qflags = firstbit: online scrub didn't fail.
+qflags = middlebit: online scrub didn't fail.
+qflags = lastbit: online scrub didn't fail.
+shared_vn = ones: offline scrub didn't fail.
+shared_vn = firstbit: offline scrub didn't fail.
+shared_vn = middlebit: offline scrub didn't fail.
+shared_vn = lastbit: offline scrub didn't fail.
+shared_vn = add: offline scrub didn't fail.
+shared_vn = sub: offline scrub didn't fail.
+dirblklog = lastbit: offline scrub didn't fail.
+logsunit = zeroes: offline scrub didn't fail.
+logsunit = lastbit: offline scrub didn't fail.
+bad_features2 = zeroes: offline scrub didn't fail.
+bad_features2 = zeroes: online scrub didn't fail.
+bad_features2 = ones: offline scrub didn't fail.
+bad_features2 = ones: online scrub didn't fail.
+bad_features2 = firstbit: offline scrub didn't fail.
+bad_features2 = firstbit: online scrub didn't fail.
+bad_features2 = middlebit: offline scrub didn't fail.
+bad_features2 = middlebit: online scrub didn't fail.
+bad_features2 = lastbit: offline scrub didn't fail.
+bad_features2 = lastbit: online scrub didn't fail.
+bad_features2 = add: offline scrub didn't fail.
+bad_features2 = add: online scrub didn't fail.
+bad_features2 = sub: offline scrub didn't fail.
+bad_features2 = sub: online scrub didn't fail.
+features_log_incompat = ones: offline scrub didn't fail.
+features_log_incompat = ones: online scrub didn't fail.
+features_log_incompat = firstbit: offline scrub didn't fail.
+features_log_incompat = firstbit: online scrub didn't fail.
+features_log_incompat = middlebit: offline scrub didn't fail.
+features_log_incompat = middlebit: online scrub didn't fail.
+features_log_incompat = lastbit: offline scrub didn't fail.
+features_log_incompat = lastbit: online scrub didn't fail.
+features_log_incompat = add: offline scrub didn't fail.
+features_log_incompat = add: online scrub didn't fail.
+features_log_incompat = sub: offline scrub didn't fail.
+features_log_incompat = sub: online scrub didn't fail.
+meta_uuid = ones: online scrub didn't fail.
+meta_uuid = firstbit: online scrub didn't fail.
+meta_uuid = middlebit: online scrub didn't fail.
+meta_uuid = lastbit: online scrub didn't fail.
 Done fuzzing superblock
diff --git a/tests/xfs/748.out b/tests/xfs/748.out
index a281c130ea..4caad4f092 100644
--- a/tests/xfs/748.out
+++ b/tests/xfs/748.out
@@ -1,4 +1,100 @@
 QA output created by 748
 Format and populate
 Fuzz AGF
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+bnolevel = zeroes: mount failed (32).
+bnolevel = ones: mount failed (32).
+bnolevel = firstbit: mount failed (32).
+bnolevel = middlebit: mount failed (32).
+bnolevel = add: mount failed (32).
+bnolevel = sub: mount failed (32).
+cntlevel = zeroes: mount failed (32).
+cntlevel = ones: mount failed (32).
+cntlevel = firstbit: mount failed (32).
+cntlevel = middlebit: mount failed (32).
+cntlevel = add: mount failed (32).
+cntlevel = sub: mount failed (32).
+rmaplevel = zeroes: mount failed (32).
+rmaplevel = ones: mount failed (32).
+rmaplevel = firstbit: mount failed (32).
+rmaplevel = middlebit: mount failed (32).
+rmaplevel = add: mount failed (32).
+rmaplevel = sub: mount failed (32).
+refcntlevel = zeroes: mount failed (32).
+refcntlevel = ones: mount failed (32).
+refcntlevel = firstbit: mount failed (32).
+refcntlevel = middlebit: mount failed (32).
+refcntlevel = add: mount failed (32).
+refcntlevel = sub: mount failed (32).
+rmapblocks = ones: mount failed (32).
+rmapblocks = firstbit: mount failed (32).
+rmapblocks = sub: mount failed (32).
+refcntblocks = ones: mount failed (32).
+refcntblocks = firstbit: mount failed (32).
+refcntblocks = sub: mount failed (32).
+flfirst = ones: mount failed (32).
+flfirst = firstbit: mount failed (32).
+flfirst = middlebit: mount failed (32).
+flfirst = add: mount failed (32).
+flfirst = sub: mount failed (32).
+fllast = ones: mount failed (32).
+fllast = firstbit: mount failed (32).
+fllast = middlebit: mount failed (32).
+fllast = add: mount failed (32).
+fllast = sub: mount failed (32).
+flcount = ones: mount failed (32).
+flcount = firstbit: mount failed (32).
+flcount = middlebit: mount failed (32).
+flcount = add: mount failed (32).
+flcount = sub: mount failed (32).
+freeblks = zeroes: mount failed (32).
+freeblks = ones: mount failed (32).
+freeblks = firstbit: mount failed (32).
+freeblks = middlebit: mount failed (32).
+freeblks = add: mount failed (32).
+freeblks = sub: mount failed (32).
+longest = ones: mount failed (32).
+longest = firstbit: mount failed (32).
+longest = add: mount failed (32).
+btreeblks = ones: mount failed (32).
+btreeblks = firstbit: mount failed (32).
+btreeblks = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
 Done fuzzing AGF
diff --git a/tests/xfs/749.out b/tests/xfs/749.out
index 478ce52818..57b505aa85 100644
--- a/tests/xfs/749.out
+++ b/tests/xfs/749.out
@@ -1,6 +1,140 @@
 QA output created by 749
 Format and populate
 Fuzz AGFL
+magicnum = zeroes: offline scrub didn't fail.
+magicnum = ones: offline scrub didn't fail.
+magicnum = firstbit: offline scrub didn't fail.
+magicnum = middlebit: offline scrub didn't fail.
+magicnum = lastbit: offline scrub didn't fail.
+magicnum = add: offline scrub didn't fail.
+magicnum = sub: offline scrub didn't fail.
+seqno = ones: offline scrub didn't fail.
+seqno = firstbit: offline scrub didn't fail.
+seqno = middlebit: offline scrub didn't fail.
+seqno = lastbit: offline scrub didn't fail.
+seqno = add: offline scrub didn't fail.
+seqno = sub: offline scrub didn't fail.
+uuid = zeroes: offline scrub didn't fail.
+uuid = ones: offline scrub didn't fail.
+uuid = firstbit: offline scrub didn't fail.
+uuid = middlebit: offline scrub didn't fail.
+uuid = lastbit: offline scrub didn't fail.
+bno[0] = zeroes: offline scrub didn't fail.
+bno[0] = zeroes: online scrub didn't fail.
+bno[0] = firstbit: offline scrub didn't fail.
+bno[0] = middlebit: offline scrub didn't fail.
+bno[0] = lastbit: offline scrub didn't fail.
+bno[0] = add: offline scrub didn't fail.
+bno[0] = add: online scrub didn't fail.
+bno[0] = sub: offline scrub didn't fail.
+bno[1] = zeroes: offline scrub didn't fail.
+bno[1] = zeroes: online scrub didn't fail.
+bno[1] = ones: offline scrub didn't fail.
+bno[1] = ones: online scrub didn't fail.
+bno[1] = firstbit: offline scrub didn't fail.
+bno[1] = middlebit: offline scrub didn't fail.
+bno[1] = middlebit: online scrub didn't fail.
+bno[1] = lastbit: offline scrub didn't fail.
+bno[1] = lastbit: online scrub didn't fail.
+bno[1] = add: offline scrub didn't fail.
+bno[1] = add: online scrub didn't fail.
+bno[1] = sub: offline scrub didn't fail.
+bno[2] = zeroes: offline scrub didn't fail.
+bno[2] = zeroes: online scrub didn't fail.
+bno[2] = ones: offline scrub didn't fail.
+bno[2] = ones: online scrub didn't fail.
+bno[2] = firstbit: offline scrub didn't fail.
+bno[2] = middlebit: offline scrub didn't fail.
+bno[2] = middlebit: online scrub didn't fail.
+bno[2] = lastbit: offline scrub didn't fail.
+bno[2] = lastbit: online scrub didn't fail.
+bno[2] = add: offline scrub didn't fail.
+bno[2] = add: online scrub didn't fail.
+bno[2] = sub: offline scrub didn't fail.
+bno[3] = zeroes: offline scrub didn't fail.
+bno[3] = zeroes: online scrub didn't fail.
+bno[3] = ones: offline scrub didn't fail.
+bno[3] = ones: online scrub didn't fail.
+bno[3] = firstbit: offline scrub didn't fail.
+bno[3] = middlebit: offline scrub didn't fail.
+bno[3] = middlebit: online scrub didn't fail.
+bno[3] = lastbit: offline scrub didn't fail.
+bno[3] = lastbit: online scrub didn't fail.
+bno[3] = add: offline scrub didn't fail.
+bno[3] = add: online scrub didn't fail.
+bno[3] = sub: offline scrub didn't fail.
+bno[4] = zeroes: offline scrub didn't fail.
+bno[4] = zeroes: online scrub didn't fail.
+bno[4] = ones: offline scrub didn't fail.
+bno[4] = ones: online scrub didn't fail.
+bno[4] = firstbit: offline scrub didn't fail.
+bno[4] = middlebit: offline scrub didn't fail.
+bno[4] = middlebit: online scrub didn't fail.
+bno[4] = lastbit: offline scrub didn't fail.
+bno[4] = lastbit: online scrub didn't fail.
+bno[4] = add: offline scrub didn't fail.
+bno[4] = add: online scrub didn't fail.
+bno[4] = sub: offline scrub didn't fail.
+bno[5] = zeroes: offline scrub didn't fail.
+bno[5] = zeroes: online scrub didn't fail.
+bno[5] = ones: offline scrub didn't fail.
+bno[5] = ones: online scrub didn't fail.
+bno[5] = firstbit: offline scrub didn't fail.
+bno[5] = middlebit: offline scrub didn't fail.
+bno[5] = middlebit: online scrub didn't fail.
+bno[5] = lastbit: offline scrub didn't fail.
+bno[5] = lastbit: online scrub didn't fail.
+bno[5] = add: offline scrub didn't fail.
+bno[5] = add: online scrub didn't fail.
+bno[5] = sub: offline scrub didn't fail.
+bno[6] = zeroes: offline scrub didn't fail.
+bno[6] = zeroes: online scrub didn't fail.
+bno[6] = ones: offline scrub didn't fail.
+bno[6] = ones: online scrub didn't fail.
+bno[6] = firstbit: offline scrub didn't fail.
+bno[6] = middlebit: offline scrub didn't fail.
+bno[6] = middlebit: online scrub didn't fail.
+bno[6] = lastbit: offline scrub didn't fail.
+bno[6] = lastbit: online scrub didn't fail.
+bno[6] = add: offline scrub didn't fail.
+bno[6] = add: online scrub didn't fail.
+bno[6] = sub: offline scrub didn't fail.
+bno[7] = zeroes: offline scrub didn't fail.
+bno[7] = zeroes: online scrub didn't fail.
+bno[7] = ones: offline scrub didn't fail.
+bno[7] = ones: online scrub didn't fail.
+bno[7] = firstbit: offline scrub didn't fail.
+bno[7] = middlebit: offline scrub didn't fail.
+bno[7] = middlebit: online scrub didn't fail.
+bno[7] = lastbit: offline scrub didn't fail.
+bno[7] = lastbit: online scrub didn't fail.
+bno[7] = add: offline scrub didn't fail.
+bno[7] = add: online scrub didn't fail.
+bno[7] = sub: offline scrub didn't fail.
+bno[8] = zeroes: offline scrub didn't fail.
+bno[8] = zeroes: online scrub didn't fail.
+bno[8] = ones: offline scrub didn't fail.
+bno[8] = ones: online scrub didn't fail.
+bno[8] = firstbit: offline scrub didn't fail.
+bno[8] = middlebit: offline scrub didn't fail.
+bno[8] = middlebit: online scrub didn't fail.
+bno[8] = lastbit: offline scrub didn't fail.
+bno[8] = lastbit: online scrub didn't fail.
+bno[8] = add: offline scrub didn't fail.
+bno[8] = add: online scrub didn't fail.
+bno[8] = sub: offline scrub didn't fail.
+bno[9] = zeroes: offline scrub didn't fail.
+bno[9] = zeroes: online scrub didn't fail.
+bno[9] = ones: offline scrub didn't fail.
+bno[9] = ones: online scrub didn't fail.
+bno[9] = firstbit: offline scrub didn't fail.
+bno[9] = middlebit: offline scrub didn't fail.
+bno[9] = middlebit: online scrub didn't fail.
+bno[9] = lastbit: offline scrub didn't fail.
+bno[9] = lastbit: online scrub didn't fail.
+bno[9] = add: offline scrub didn't fail.
+bno[9] = add: online scrub didn't fail.
+bno[9] = sub: offline scrub didn't fail.
 Done fuzzing AGFL
 Fuzz AGFL flfirst
 Done fuzzing AGFL flfirst
diff --git a/tests/xfs/750.out b/tests/xfs/750.out
index 7521416f9b..047728583d 100644
--- a/tests/xfs/750.out
+++ b/tests/xfs/750.out
@@ -1,4 +1,133 @@
 QA output created by 750
 Format and populate
 Fuzz AGI
+magicnum = zeroes: mount failed (32).
+magicnum = ones: mount failed (32).
+magicnum = firstbit: mount failed (32).
+magicnum = middlebit: mount failed (32).
+magicnum = lastbit: mount failed (32).
+magicnum = add: mount failed (32).
+magicnum = sub: mount failed (32).
+versionnum = zeroes: mount failed (32).
+versionnum = ones: mount failed (32).
+versionnum = firstbit: mount failed (32).
+versionnum = middlebit: mount failed (32).
+versionnum = lastbit: mount failed (32).
+versionnum = add: mount failed (32).
+versionnum = sub: mount failed (32).
+seqno = ones: mount failed (32).
+seqno = firstbit: mount failed (32).
+seqno = middlebit: mount failed (32).
+seqno = lastbit: mount failed (32).
+seqno = add: mount failed (32).
+seqno = sub: mount failed (32).
+length = zeroes: mount failed (32).
+length = ones: mount failed (32).
+length = firstbit: mount failed (32).
+length = middlebit: mount failed (32).
+length = lastbit: mount failed (32).
+length = add: mount failed (32).
+length = sub: mount failed (32).
+root = zeroes: mount failed (32).
+root = ones: mount failed (32).
+root = firstbit: mount failed (32).
+root = middlebit: mount failed (32).
+root = lastbit: mount failed (32).
+root = add: mount failed (32).
+root = sub: mount failed (32).
+level = zeroes: mount failed (32).
+level = ones: mount failed (32).
+level = firstbit: mount failed (32).
+level = middlebit: mount failed (32).
+level = lastbit: mount failed (32).
+level = add: mount failed (32).
+level = sub: mount failed (32).
+newino = zeroes: offline scrub didn't fail.
+newino = ones: offline scrub didn't fail.
+newino = ones: online scrub didn't fail.
+newino = firstbit: offline scrub didn't fail.
+newino = middlebit: offline scrub didn't fail.
+newino = middlebit: online scrub didn't fail.
+newino = lastbit: offline scrub didn't fail.
+newino = lastbit: online scrub didn't fail.
+newino = add: offline scrub didn't fail.
+newino = add: online scrub didn't fail.
+newino = sub: offline scrub didn't fail.
+newino = sub: online scrub didn't fail.
+dirino = zeroes: offline scrub didn't fail.
+dirino = firstbit: offline scrub didn't fail.
+dirino = middlebit: offline scrub didn't fail.
+dirino = lastbit: offline scrub didn't fail.
+dirino = add: offline scrub didn't fail.
+dirino = add: online scrub didn't fail.
+dirino = sub: offline scrub didn't fail.
+unlinked[0] = zeroes: mount failed (32).
+unlinked[0] = firstbit: mount failed (32).
+unlinked[0] = middlebit: mount failed (32).
+unlinked[0] = lastbit: mount failed (32).
+unlinked[0] = sub: mount failed (32).
+unlinked[1] = zeroes: mount failed (32).
+unlinked[1] = firstbit: mount failed (32).
+unlinked[1] = middlebit: mount failed (32).
+unlinked[1] = lastbit: mount failed (32).
+unlinked[1] = sub: mount failed (32).
+unlinked[2] = zeroes: mount failed (32).
+unlinked[2] = firstbit: mount failed (32).
+unlinked[2] = middlebit: mount failed (32).
+unlinked[2] = lastbit: mount failed (32).
+unlinked[2] = sub: mount failed (32).
+unlinked[3] = zeroes: mount failed (32).
+unlinked[3] = firstbit: mount failed (32).
+unlinked[3] = middlebit: mount failed (32).
+unlinked[3] = lastbit: mount failed (32).
+unlinked[3] = sub: mount failed (32).
+unlinked[4] = zeroes: mount failed (32).
+unlinked[4] = firstbit: mount failed (32).
+unlinked[4] = middlebit: mount failed (32).
+unlinked[4] = lastbit: mount failed (32).
+unlinked[4] = sub: mount failed (32).
+unlinked[5] = zeroes: mount failed (32).
+unlinked[5] = firstbit: mount failed (32).
+unlinked[5] = middlebit: mount failed (32).
+unlinked[5] = lastbit: mount failed (32).
+unlinked[5] = sub: mount failed (32).
+unlinked[6] = zeroes: mount failed (32).
+unlinked[6] = firstbit: mount failed (32).
+unlinked[6] = middlebit: mount failed (32).
+unlinked[6] = lastbit: mount failed (32).
+unlinked[6] = sub: mount failed (32).
+unlinked[7] = zeroes: mount failed (32).
+unlinked[7] = firstbit: mount failed (32).
+unlinked[7] = middlebit: mount failed (32).
+unlinked[7] = lastbit: mount failed (32).
+unlinked[7] = sub: mount failed (32).
+unlinked[8] = zeroes: mount failed (32).
+unlinked[8] = firstbit: mount failed (32).
+unlinked[8] = middlebit: mount failed (32).
+unlinked[8] = lastbit: mount failed (32).
+unlinked[8] = sub: mount failed (32).
+unlinked[9] = zeroes: mount failed (32).
+unlinked[9] = firstbit: mount failed (32).
+unlinked[9] = middlebit: mount failed (32).
+unlinked[9] = lastbit: mount failed (32).
+unlinked[9] = sub: mount failed (32).
+uuid = zeroes: mount failed (32).
+uuid = ones: mount failed (32).
+uuid = firstbit: mount failed (32).
+uuid = middlebit: mount failed (32).
+uuid = lastbit: mount failed (32).
+crc = zeroes: mount failed (32).
+crc = ones: mount failed (32).
+crc = firstbit: mount failed (32).
+crc = middlebit: mount failed (32).
+crc = lastbit: mount failed (32).
+crc = add: mount failed (32).
+crc = sub: mount failed (32).
+free_level = zeroes: mount failed (32).
+free_level = ones: mount failed (32).
+free_level = firstbit: mount failed (32).
+free_level = middlebit: mount failed (32).
+free_level = lastbit: mount failed (32).
+free_level = add: mount failed (32).
+free_level = sub: mount failed (32).
 Done fuzzing AGI
diff --git a/tests/xfs/751.out b/tests/xfs/751.out
index 77a74f3b4c..655a943dd1 100644
--- a/tests/xfs/751.out
+++ b/tests/xfs/751.out
@@ -1,4 +1,9 @@
 QA output created by 751
 Format and populate
 Fuzz bnobt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing bnobt recs
diff --git a/tests/xfs/752.out b/tests/xfs/752.out
index 2e8348d5d2..b4eaed97c8 100644
--- a/tests/xfs/752.out
+++ b/tests/xfs/752.out
@@ -1,4 +1,48 @@
 QA output created by 752
 Format and populate
 Fuzz bnobt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = ones: offline scrub didn't fail.
+keys[1].startblock = firstbit: offline scrub didn't fail.
+keys[1].startblock = middlebit: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = add: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
+keys[1].blockcount = zeroes: offline scrub didn't fail.
+keys[1].blockcount = zeroes: online scrub didn't fail.
+keys[1].blockcount = ones: offline scrub didn't fail.
+keys[1].blockcount = ones: online scrub didn't fail.
+keys[1].blockcount = firstbit: offline scrub didn't fail.
+keys[1].blockcount = firstbit: online scrub didn't fail.
+keys[1].blockcount = middlebit: offline scrub didn't fail.
+keys[1].blockcount = middlebit: online scrub didn't fail.
+keys[1].blockcount = lastbit: offline scrub didn't fail.
+keys[1].blockcount = lastbit: online scrub didn't fail.
+keys[1].blockcount = add: offline scrub didn't fail.
+keys[1].blockcount = add: online scrub didn't fail.
+keys[1].blockcount = sub: offline scrub didn't fail.
+keys[1].blockcount = sub: online scrub didn't fail.
+keys[2].startblock = zeroes: offline scrub didn't fail.
+keys[2].startblock = ones: offline scrub didn't fail.
+keys[2].startblock = firstbit: offline scrub didn't fail.
+keys[2].startblock = middlebit: offline scrub didn't fail.
+keys[2].startblock = lastbit: offline scrub didn't fail.
+keys[2].startblock = add: offline scrub didn't fail.
+keys[2].startblock = sub: offline scrub didn't fail.
+keys[2].blockcount = zeroes: offline scrub didn't fail.
+keys[2].blockcount = zeroes: online scrub didn't fail.
+keys[2].blockcount = ones: offline scrub didn't fail.
+keys[2].blockcount = ones: online scrub didn't fail.
+keys[2].blockcount = firstbit: offline scrub didn't fail.
+keys[2].blockcount = firstbit: online scrub didn't fail.
+keys[2].blockcount = middlebit: offline scrub didn't fail.
+keys[2].blockcount = middlebit: online scrub didn't fail.
+keys[2].blockcount = lastbit: offline scrub didn't fail.
+keys[2].blockcount = lastbit: online scrub didn't fail.
+keys[2].blockcount = add: offline scrub didn't fail.
+keys[2].blockcount = add: online scrub didn't fail.
+keys[2].blockcount = sub: offline scrub didn't fail.
+keys[2].blockcount = sub: online scrub didn't fail.
 Done fuzzing bnobt keyptr
diff --git a/tests/xfs/753.out b/tests/xfs/753.out
index 0c981968b0..f2fb9daa01 100644
--- a/tests/xfs/753.out
+++ b/tests/xfs/753.out
@@ -1,4 +1,9 @@
 QA output created by 753
 Format and populate
 Fuzz cntbt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing cntbt
diff --git a/tests/xfs/754.out b/tests/xfs/754.out
index 174c4300d8..7f8da151ed 100644
--- a/tests/xfs/754.out
+++ b/tests/xfs/754.out
@@ -2,26 +2,9 @@ QA output created by 754
 Format and populate
 Fuzz inobt
 leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
 rightsib = add: offline scrub didn't fail.
-keys[1].startino = zeroes: offline scrub didn't fail.
-keys[1].startino = ones: offline scrub didn't fail.
-keys[1].startino = firstbit: offline scrub didn't fail.
-keys[1].startino = middlebit: offline scrub didn't fail.
-keys[1].startino = lastbit: offline scrub didn't fail.
-keys[1].startino = add: offline scrub didn't fail.
-keys[1].startino = sub: offline scrub didn't fail.
-keys[2].startino = zeroes: offline scrub didn't fail.
-keys[2].startino = ones: offline scrub didn't fail.
-keys[2].startino = firstbit: offline scrub didn't fail.
-keys[2].startino = middlebit: offline scrub didn't fail.
-keys[2].startino = lastbit: offline scrub didn't fail.
-keys[2].startino = add: offline scrub didn't fail.
-keys[2].startino = sub: offline scrub didn't fail.
-keys[3].startino = zeroes: offline scrub didn't fail.
-keys[3].startino = ones: offline scrub didn't fail.
-keys[3].startino = firstbit: offline scrub didn't fail.
-keys[3].startino = middlebit: offline scrub didn't fail.
-keys[3].startino = lastbit: offline scrub didn't fail.
-keys[3].startino = add: offline scrub didn't fail.
-keys[3].startino = sub: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing inobt
diff --git a/tests/xfs/755.out b/tests/xfs/755.out
index 55e5ff4fcb..a5ff9a1f9f 100644
--- a/tests/xfs/755.out
+++ b/tests/xfs/755.out
@@ -1,4 +1,10 @@
 QA output created by 755
 Format and populate
 Fuzz finobt
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+rightsib = sub: offline scrub didn't fail.
 Done fuzzing finobt
diff --git a/tests/xfs/756.out b/tests/xfs/756.out
index 76df05ad60..05094c2fce 100644
--- a/tests/xfs/756.out
+++ b/tests/xfs/756.out
@@ -1,4 +1,65 @@
 QA output created by 756
 Format and populate
 Fuzz rmapbt recs
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+recs[2].owner = add: offline re-scrub failed (1).
+recs[2].owner = add: offline post-mod scrub failed (1).
+recs[3].startblock = lastbit: offline scrub didn't fail.
+recs[3].blockcount = lastbit: offline scrub didn't fail.
+recs[3].owner = add: offline re-scrub failed (1).
+recs[3].owner = add: offline post-mod scrub failed (1).
+recs[5].owner = lastbit: online repair failed (1).
+recs[6].owner = lastbit: offline scrub didn't fail.
+recs[7].owner = lastbit: offline re-scrub failed (1).
+recs[7].owner = lastbit: offline post-mod scrub failed (1).
+recs[7].owner = add: offline re-scrub failed (1).
+recs[7].owner = add: offline post-mod scrub failed (1).
+recs[7].attrfork = ones: offline re-scrub failed (1).
+recs[7].attrfork = ones: offline post-mod scrub failed (1).
+recs[7].attrfork = firstbit: offline re-scrub failed (1).
+recs[7].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[7].attrfork = middlebit: offline re-scrub failed (1).
+recs[7].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[7].attrfork = lastbit: offline re-scrub failed (1).
+recs[7].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[7].attrfork = add: offline re-scrub failed (1).
+recs[7].attrfork = add: offline post-mod scrub failed (1).
+recs[7].attrfork = sub: offline re-scrub failed (1).
+recs[7].attrfork = sub: offline post-mod scrub failed (1).
+recs[8].owner = lastbit: offline re-scrub failed (1).
+recs[8].owner = lastbit: offline post-mod scrub failed (1).
+recs[8].owner = add: offline re-scrub failed (1).
+recs[8].owner = add: offline post-mod scrub failed (1).
+recs[8].attrfork = ones: offline re-scrub failed (1).
+recs[8].attrfork = ones: offline post-mod scrub failed (1).
+recs[8].attrfork = firstbit: offline re-scrub failed (1).
+recs[8].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[8].attrfork = middlebit: offline re-scrub failed (1).
+recs[8].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[8].attrfork = lastbit: offline re-scrub failed (1).
+recs[8].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[8].attrfork = add: offline re-scrub failed (1).
+recs[8].attrfork = add: offline post-mod scrub failed (1).
+recs[8].attrfork = sub: offline re-scrub failed (1).
+recs[8].attrfork = sub: offline post-mod scrub failed (1).
+recs[9].owner = lastbit: offline re-scrub failed (1).
+recs[9].owner = lastbit: offline post-mod scrub failed (1).
+recs[9].owner = add: offline re-scrub failed (1).
+recs[9].owner = add: offline post-mod scrub failed (1).
+recs[9].attrfork = ones: offline re-scrub failed (1).
+recs[9].attrfork = ones: offline post-mod scrub failed (1).
+recs[9].attrfork = firstbit: offline re-scrub failed (1).
+recs[9].attrfork = firstbit: offline post-mod scrub failed (1).
+recs[9].attrfork = middlebit: offline re-scrub failed (1).
+recs[9].attrfork = middlebit: offline post-mod scrub failed (1).
+recs[9].attrfork = lastbit: offline re-scrub failed (1).
+recs[9].attrfork = lastbit: offline post-mod scrub failed (1).
+recs[9].attrfork = add: offline re-scrub failed (1).
+recs[9].attrfork = add: offline post-mod scrub failed (1).
+recs[9].attrfork = sub: offline re-scrub failed (1).
+recs[9].attrfork = sub: offline post-mod scrub failed (1).
 Done fuzzing rmapbt recs
diff --git a/tests/xfs/757.out b/tests/xfs/757.out
index 293a86329d..b0622d5cf1 100644
--- a/tests/xfs/757.out
+++ b/tests/xfs/757.out
@@ -1,4 +1,529 @@
 QA output created by 757
 Format and populate
 Fuzz rmapbt keyptr
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].owner = zeroes: offline scrub didn't fail.
+keys[1].owner = ones: offline scrub didn't fail.
+keys[1].owner = firstbit: offline scrub didn't fail.
+keys[1].owner = middlebit: offline scrub didn't fail.
+keys[1].owner = lastbit: offline scrub didn't fail.
+keys[1].owner = add: offline scrub didn't fail.
+keys[1].owner = sub: offline scrub didn't fail.
+keys[1].offset = ones: offline scrub didn't fail.
+keys[1].offset = firstbit: offline scrub didn't fail.
+keys[1].offset = middlebit: offline scrub didn't fail.
+keys[1].offset = lastbit: offline scrub didn't fail.
+keys[1].offset = add: offline scrub didn't fail.
+keys[1].offset = sub: offline scrub didn't fail.
+keys[1].extentflag = ones: offline scrub didn't fail.
+keys[1].extentflag = ones: online scrub didn't fail.
+keys[1].extentflag = firstbit: offline scrub didn't fail.
+keys[1].extentflag = firstbit: online scrub didn't fail.
+keys[1].extentflag = middlebit: offline scrub didn't fail.
+keys[1].extentflag = middlebit: online scrub didn't fail.
+keys[1].extentflag = lastbit: offline scrub didn't fail.
+keys[1].extentflag = lastbit: online scrub didn't fail.
+keys[1].extentflag = add: offline scrub didn't fail.
+keys[1].extentflag = add: online scrub didn't fail.
+keys[1].extentflag = sub: offline scrub didn't fail.
+keys[1].extentflag = sub: online scrub didn't fail.
+keys[1].attrfork = ones: offline scrub didn't fail.
+keys[1].attrfork = firstbit: offline scrub didn't fail.
+keys[1].attrfork = middlebit: offline scrub didn't fail.
+keys[1].attrfork = lastbit: offline scrub didn't fail.
+keys[1].attrfork = add: offline scrub didn't fail.
+keys[1].attrfork = sub: offline scrub didn't fail.
+keys[1].bmbtblock = ones: offline scrub didn't fail.
+keys[1].bmbtblock = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock = add: offline scrub didn't fail.
+keys[1].bmbtblock = sub: offline scrub didn't fail.
+keys[1].startblock_hi = ones: offline scrub didn't fail.
+keys[1].startblock_hi = firstbit: offline scrub didn't fail.
+keys[1].startblock_hi = middlebit: offline scrub didn't fail.
+keys[1].startblock_hi = lastbit: offline scrub didn't fail.
+keys[1].startblock_hi = add: offline scrub didn't fail.
+keys[1].startblock_hi = sub: offline scrub didn't fail.
+keys[1].owner_hi = ones: offline scrub didn't fail.
+keys[1].owner_hi = firstbit: offline scrub didn't fail.
+keys[1].owner_hi = middlebit: offline scrub didn't fail.
+keys[1].owner_hi = lastbit: offline scrub didn't fail.
+keys[1].owner_hi = add: offline scrub didn't fail.
+keys[1].owner_hi = sub: offline scrub didn't fail.
+keys[1].offset_hi = ones: offline scrub didn't fail.
+keys[1].offset_hi = firstbit: offline scrub didn't fail.
+keys[1].offset_hi = middlebit: offline scrub didn't fail.
+keys[1].offset_hi = add: offline scrub didn't fail.
+keys[1].offset_hi = sub: offline scrub didn't fail.
+keys[1].extentflag_hi = ones: offline scrub didn't fail.
+keys[1].extentflag_hi = ones: online scrub didn't fail.
+keys[1].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[1].extentflag_hi = firstbit: online scrub didn't fail.
+keys[1].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[1].extentflag_hi = middlebit: online scrub didn't fail.
+keys[1].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[1].extentflag_hi = lastbit: online scrub didn't fail.
+keys[1].extentflag_hi = add: offline scrub didn't fail.
+keys[1].extentflag_hi = add: online scrub didn't fail.
+keys[1].extentflag_hi = sub: offline scrub didn't fail.
+keys[1].extentflag_hi = sub: online scrub didn't fail.
+keys[1].attrfork_hi = ones: offline scrub didn't fail.
+keys[1].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[1].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[1].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[1].attrfork_hi = add: offline scrub didn't fail.
+keys[1].attrfork_hi = sub: offline scrub didn't fail.
+keys[1].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[1].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[1].bmbtblock_hi = add: offline scrub didn't fail.
+keys[1].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[2].owner = zeroes: offline scrub didn't fail.
+keys[2].offset = zeroes: offline scrub didn't fail.
+keys[2].offset = lastbit: offline scrub didn't fail.
+keys[2].extentflag = ones: offline scrub didn't fail.
+keys[2].extentflag = ones: online scrub didn't fail.
+keys[2].extentflag = firstbit: offline scrub didn't fail.
+keys[2].extentflag = firstbit: online scrub didn't fail.
+keys[2].extentflag = middlebit: offline scrub didn't fail.
+keys[2].extentflag = middlebit: online scrub didn't fail.
+keys[2].extentflag = lastbit: offline scrub didn't fail.
+keys[2].extentflag = lastbit: online scrub didn't fail.
+keys[2].extentflag = add: offline scrub didn't fail.
+keys[2].extentflag = add: online scrub didn't fail.
+keys[2].extentflag = sub: offline scrub didn't fail.
+keys[2].extentflag = sub: online scrub didn't fail.
+keys[2].startblock_hi = ones: offline scrub didn't fail.
+keys[2].startblock_hi = firstbit: offline scrub didn't fail.
+keys[2].startblock_hi = middlebit: offline scrub didn't fail.
+keys[2].startblock_hi = lastbit: offline scrub didn't fail.
+keys[2].startblock_hi = add: offline scrub didn't fail.
+keys[2].startblock_hi = sub: offline scrub didn't fail.
+keys[2].owner_hi = ones: offline scrub didn't fail.
+keys[2].owner_hi = firstbit: offline scrub didn't fail.
+keys[2].owner_hi = middlebit: offline scrub didn't fail.
+keys[2].owner_hi = lastbit: offline scrub didn't fail.
+keys[2].owner_hi = add: offline scrub didn't fail.
+keys[2].owner_hi = sub: offline scrub didn't fail.
+keys[2].offset_hi = ones: offline scrub didn't fail.
+keys[2].offset_hi = firstbit: offline scrub didn't fail.
+keys[2].offset_hi = middlebit: offline scrub didn't fail.
+keys[2].offset_hi = add: offline scrub didn't fail.
+keys[2].offset_hi = sub: offline scrub didn't fail.
+keys[2].extentflag_hi = ones: offline scrub didn't fail.
+keys[2].extentflag_hi = ones: online scrub didn't fail.
+keys[2].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[2].extentflag_hi = firstbit: online scrub didn't fail.
+keys[2].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[2].extentflag_hi = middlebit: online scrub didn't fail.
+keys[2].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[2].extentflag_hi = lastbit: online scrub didn't fail.
+keys[2].extentflag_hi = add: offline scrub didn't fail.
+keys[2].extentflag_hi = add: online scrub didn't fail.
+keys[2].extentflag_hi = sub: offline scrub didn't fail.
+keys[2].extentflag_hi = sub: online scrub didn't fail.
+keys[2].attrfork_hi = ones: offline scrub didn't fail.
+keys[2].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[2].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[2].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[2].attrfork_hi = add: offline scrub didn't fail.
+keys[2].attrfork_hi = sub: offline scrub didn't fail.
+keys[2].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[2].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[2].bmbtblock_hi = add: offline scrub didn't fail.
+keys[2].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[3].owner = zeroes: offline scrub didn't fail.
+keys[3].offset = zeroes: offline scrub didn't fail.
+keys[3].offset = lastbit: offline scrub didn't fail.
+keys[3].extentflag = ones: offline scrub didn't fail.
+keys[3].extentflag = ones: online scrub didn't fail.
+keys[3].extentflag = firstbit: offline scrub didn't fail.
+keys[3].extentflag = firstbit: online scrub didn't fail.
+keys[3].extentflag = middlebit: offline scrub didn't fail.
+keys[3].extentflag = middlebit: online scrub didn't fail.
+keys[3].extentflag = lastbit: offline scrub didn't fail.
+keys[3].extentflag = lastbit: online scrub didn't fail.
+keys[3].extentflag = add: offline scrub didn't fail.
+keys[3].extentflag = add: online scrub didn't fail.
+keys[3].extentflag = sub: offline scrub didn't fail.
+keys[3].extentflag = sub: online scrub didn't fail.
+keys[3].startblock_hi = ones: offline scrub didn't fail.
+keys[3].startblock_hi = firstbit: offline scrub didn't fail.
+keys[3].startblock_hi = middlebit: offline scrub didn't fail.
+keys[3].startblock_hi = lastbit: offline scrub didn't fail.
+keys[3].startblock_hi = add: offline scrub didn't fail.
+keys[3].startblock_hi = sub: offline scrub didn't fail.
+keys[3].owner_hi = ones: offline scrub didn't fail.
+keys[3].owner_hi = firstbit: offline scrub didn't fail.
+keys[3].owner_hi = middlebit: offline scrub didn't fail.
+keys[3].owner_hi = lastbit: offline scrub didn't fail.
+keys[3].owner_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = ones: offline scrub didn't fail.
+keys[3].offset_hi = firstbit: offline scrub didn't fail.
+keys[3].offset_hi = middlebit: offline scrub didn't fail.
+keys[3].offset_hi = add: offline scrub didn't fail.
+keys[3].offset_hi = sub: offline scrub didn't fail.
+keys[3].extentflag_hi = ones: offline scrub didn't fail.
+keys[3].extentflag_hi = ones: online scrub didn't fail.
+keys[3].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[3].extentflag_hi = firstbit: online scrub didn't fail.
+keys[3].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[3].extentflag_hi = middlebit: online scrub didn't fail.
+keys[3].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[3].extentflag_hi = lastbit: online scrub didn't fail.
+keys[3].extentflag_hi = add: offline scrub didn't fail.
+keys[3].extentflag_hi = add: online scrub didn't fail.
+keys[3].extentflag_hi = sub: offline scrub didn't fail.
+keys[3].extentflag_hi = sub: online scrub didn't fail.
+keys[3].attrfork_hi = ones: offline scrub didn't fail.
+keys[3].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[3].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[3].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[3].attrfork_hi = add: offline scrub didn't fail.
+keys[3].attrfork_hi = sub: offline scrub didn't fail.
+keys[3].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[3].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[3].bmbtblock_hi = add: offline scrub didn't fail.
+keys[3].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[4].owner = zeroes: offline scrub didn't fail.
+keys[4].owner = sub: offline scrub didn't fail.
+keys[4].offset = zeroes: offline scrub didn't fail.
+keys[4].offset = lastbit: offline scrub didn't fail.
+keys[4].extentflag = ones: offline scrub didn't fail.
+keys[4].extentflag = ones: online scrub didn't fail.
+keys[4].extentflag = firstbit: offline scrub didn't fail.
+keys[4].extentflag = firstbit: online scrub didn't fail.
+keys[4].extentflag = middlebit: offline scrub didn't fail.
+keys[4].extentflag = middlebit: online scrub didn't fail.
+keys[4].extentflag = lastbit: offline scrub didn't fail.
+keys[4].extentflag = lastbit: online scrub didn't fail.
+keys[4].extentflag = add: offline scrub didn't fail.
+keys[4].extentflag = add: online scrub didn't fail.
+keys[4].extentflag = sub: offline scrub didn't fail.
+keys[4].extentflag = sub: online scrub didn't fail.
+keys[4].startblock_hi = ones: offline scrub didn't fail.
+keys[4].startblock_hi = firstbit: offline scrub didn't fail.
+keys[4].startblock_hi = middlebit: offline scrub didn't fail.
+keys[4].startblock_hi = lastbit: offline scrub didn't fail.
+keys[4].startblock_hi = add: offline scrub didn't fail.
+keys[4].startblock_hi = sub: offline scrub didn't fail.
+keys[4].owner_hi = ones: offline scrub didn't fail.
+keys[4].owner_hi = firstbit: offline scrub didn't fail.
+keys[4].owner_hi = middlebit: offline scrub didn't fail.
+keys[4].owner_hi = lastbit: offline scrub didn't fail.
+keys[4].owner_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = ones: offline scrub didn't fail.
+keys[4].offset_hi = firstbit: offline scrub didn't fail.
+keys[4].offset_hi = middlebit: offline scrub didn't fail.
+keys[4].offset_hi = add: offline scrub didn't fail.
+keys[4].offset_hi = sub: offline scrub didn't fail.
+keys[4].extentflag_hi = ones: offline scrub didn't fail.
+keys[4].extentflag_hi = ones: online scrub didn't fail.
+keys[4].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[4].extentflag_hi = firstbit: online scrub didn't fail.
+keys[4].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[4].extentflag_hi = middlebit: online scrub didn't fail.
+keys[4].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[4].extentflag_hi = lastbit: online scrub didn't fail.
+keys[4].extentflag_hi = add: offline scrub didn't fail.
+keys[4].extentflag_hi = add: online scrub didn't fail.
+keys[4].extentflag_hi = sub: offline scrub didn't fail.
+keys[4].extentflag_hi = sub: online scrub didn't fail.
+keys[4].attrfork_hi = ones: offline scrub didn't fail.
+keys[4].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[4].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[4].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[4].attrfork_hi = add: offline scrub didn't fail.
+keys[4].attrfork_hi = sub: offline scrub didn't fail.
+keys[4].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[4].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[4].bmbtblock_hi = add: offline scrub didn't fail.
+keys[4].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[5].owner = zeroes: offline scrub didn't fail.
+keys[5].owner = sub: offline scrub didn't fail.
+keys[5].offset = zeroes: offline scrub didn't fail.
+keys[5].offset = lastbit: offline scrub didn't fail.
+keys[5].extentflag = ones: offline scrub didn't fail.
+keys[5].extentflag = ones: online scrub didn't fail.
+keys[5].extentflag = firstbit: offline scrub didn't fail.
+keys[5].extentflag = firstbit: online scrub didn't fail.
+keys[5].extentflag = middlebit: offline scrub didn't fail.
+keys[5].extentflag = middlebit: online scrub didn't fail.
+keys[5].extentflag = lastbit: offline scrub didn't fail.
+keys[5].extentflag = lastbit: online scrub didn't fail.
+keys[5].extentflag = add: offline scrub didn't fail.
+keys[5].extentflag = add: online scrub didn't fail.
+keys[5].extentflag = sub: offline scrub didn't fail.
+keys[5].extentflag = sub: online scrub didn't fail.
+keys[5].startblock_hi = ones: offline scrub didn't fail.
+keys[5].startblock_hi = firstbit: offline scrub didn't fail.
+keys[5].startblock_hi = middlebit: offline scrub didn't fail.
+keys[5].startblock_hi = lastbit: offline scrub didn't fail.
+keys[5].startblock_hi = add: offline scrub didn't fail.
+keys[5].startblock_hi = sub: offline scrub didn't fail.
+keys[5].owner_hi = ones: offline scrub didn't fail.
+keys[5].owner_hi = firstbit: offline scrub didn't fail.
+keys[5].owner_hi = middlebit: offline scrub didn't fail.
+keys[5].owner_hi = lastbit: offline scrub didn't fail.
+keys[5].owner_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = ones: offline scrub didn't fail.
+keys[5].offset_hi = firstbit: offline scrub didn't fail.
+keys[5].offset_hi = middlebit: offline scrub didn't fail.
+keys[5].offset_hi = add: offline scrub didn't fail.
+keys[5].offset_hi = sub: offline scrub didn't fail.
+keys[5].extentflag_hi = ones: offline scrub didn't fail.
+keys[5].extentflag_hi = ones: online scrub didn't fail.
+keys[5].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[5].extentflag_hi = firstbit: online scrub didn't fail.
+keys[5].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[5].extentflag_hi = middlebit: online scrub didn't fail.
+keys[5].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[5].extentflag_hi = lastbit: online scrub didn't fail.
+keys[5].extentflag_hi = add: offline scrub didn't fail.
+keys[5].extentflag_hi = add: online scrub didn't fail.
+keys[5].extentflag_hi = sub: offline scrub didn't fail.
+keys[5].extentflag_hi = sub: online scrub didn't fail.
+keys[5].attrfork_hi = ones: offline scrub didn't fail.
+keys[5].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[5].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[5].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[5].attrfork_hi = add: offline scrub didn't fail.
+keys[5].attrfork_hi = sub: offline scrub didn't fail.
+keys[5].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[5].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[5].bmbtblock_hi = add: offline scrub didn't fail.
+keys[5].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[6].owner = zeroes: offline scrub didn't fail.
+keys[6].owner = sub: offline scrub didn't fail.
+keys[6].offset = zeroes: offline scrub didn't fail.
+keys[6].offset = lastbit: offline scrub didn't fail.
+keys[6].extentflag = ones: offline scrub didn't fail.
+keys[6].extentflag = ones: online scrub didn't fail.
+keys[6].extentflag = firstbit: offline scrub didn't fail.
+keys[6].extentflag = firstbit: online scrub didn't fail.
+keys[6].extentflag = middlebit: offline scrub didn't fail.
+keys[6].extentflag = middlebit: online scrub didn't fail.
+keys[6].extentflag = lastbit: offline scrub didn't fail.
+keys[6].extentflag = lastbit: online scrub didn't fail.
+keys[6].extentflag = add: offline scrub didn't fail.
+keys[6].extentflag = add: online scrub didn't fail.
+keys[6].extentflag = sub: offline scrub didn't fail.
+keys[6].extentflag = sub: online scrub didn't fail.
+keys[6].startblock_hi = ones: offline scrub didn't fail.
+keys[6].startblock_hi = firstbit: offline scrub didn't fail.
+keys[6].startblock_hi = middlebit: offline scrub didn't fail.
+keys[6].startblock_hi = lastbit: offline scrub didn't fail.
+keys[6].startblock_hi = add: offline scrub didn't fail.
+keys[6].owner_hi = ones: offline scrub didn't fail.
+keys[6].owner_hi = firstbit: offline scrub didn't fail.
+keys[6].owner_hi = middlebit: offline scrub didn't fail.
+keys[6].owner_hi = lastbit: offline scrub didn't fail.
+keys[6].owner_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = ones: offline scrub didn't fail.
+keys[6].offset_hi = firstbit: offline scrub didn't fail.
+keys[6].offset_hi = middlebit: offline scrub didn't fail.
+keys[6].offset_hi = add: offline scrub didn't fail.
+keys[6].offset_hi = sub: offline scrub didn't fail.
+keys[6].extentflag_hi = ones: offline scrub didn't fail.
+keys[6].extentflag_hi = ones: online scrub didn't fail.
+keys[6].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[6].extentflag_hi = firstbit: online scrub didn't fail.
+keys[6].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[6].extentflag_hi = middlebit: online scrub didn't fail.
+keys[6].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[6].extentflag_hi = lastbit: online scrub didn't fail.
+keys[6].extentflag_hi = add: offline scrub didn't fail.
+keys[6].extentflag_hi = add: online scrub didn't fail.
+keys[6].extentflag_hi = sub: offline scrub didn't fail.
+keys[6].extentflag_hi = sub: online scrub didn't fail.
+keys[6].attrfork_hi = ones: offline scrub didn't fail.
+keys[6].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[6].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[6].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[6].attrfork_hi = add: offline scrub didn't fail.
+keys[6].attrfork_hi = sub: offline scrub didn't fail.
+keys[6].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[6].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[6].bmbtblock_hi = add: offline scrub didn't fail.
+keys[6].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[7].owner = zeroes: offline scrub didn't fail.
+keys[7].owner = lastbit: offline scrub didn't fail.
+keys[7].owner = sub: offline scrub didn't fail.
+keys[7].offset = zeroes: offline scrub didn't fail.
+keys[7].offset = lastbit: offline scrub didn't fail.
+keys[7].extentflag = ones: offline scrub didn't fail.
+keys[7].extentflag = ones: online scrub didn't fail.
+keys[7].extentflag = firstbit: offline scrub didn't fail.
+keys[7].extentflag = firstbit: online scrub didn't fail.
+keys[7].extentflag = middlebit: offline scrub didn't fail.
+keys[7].extentflag = middlebit: online scrub didn't fail.
+keys[7].extentflag = lastbit: offline scrub didn't fail.
+keys[7].extentflag = lastbit: online scrub didn't fail.
+keys[7].extentflag = add: offline scrub didn't fail.
+keys[7].extentflag = add: online scrub didn't fail.
+keys[7].extentflag = sub: offline scrub didn't fail.
+keys[7].extentflag = sub: online scrub didn't fail.
+keys[7].startblock_hi = ones: offline scrub didn't fail.
+keys[7].startblock_hi = firstbit: offline scrub didn't fail.
+keys[7].startblock_hi = middlebit: offline scrub didn't fail.
+keys[7].startblock_hi = lastbit: offline scrub didn't fail.
+keys[7].startblock_hi = add: offline scrub didn't fail.
+keys[7].owner_hi = ones: offline scrub didn't fail.
+keys[7].owner_hi = firstbit: offline scrub didn't fail.
+keys[7].owner_hi = middlebit: offline scrub didn't fail.
+keys[7].owner_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = ones: offline scrub didn't fail.
+keys[7].offset_hi = firstbit: offline scrub didn't fail.
+keys[7].offset_hi = middlebit: offline scrub didn't fail.
+keys[7].offset_hi = add: offline scrub didn't fail.
+keys[7].offset_hi = sub: offline scrub didn't fail.
+keys[7].extentflag_hi = ones: offline scrub didn't fail.
+keys[7].extentflag_hi = ones: online scrub didn't fail.
+keys[7].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[7].extentflag_hi = firstbit: online scrub didn't fail.
+keys[7].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[7].extentflag_hi = middlebit: online scrub didn't fail.
+keys[7].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[7].extentflag_hi = lastbit: online scrub didn't fail.
+keys[7].extentflag_hi = add: offline scrub didn't fail.
+keys[7].extentflag_hi = add: online scrub didn't fail.
+keys[7].extentflag_hi = sub: offline scrub didn't fail.
+keys[7].extentflag_hi = sub: online scrub didn't fail.
+keys[7].attrfork_hi = ones: offline scrub didn't fail.
+keys[7].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[7].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[7].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[7].attrfork_hi = add: offline scrub didn't fail.
+keys[7].attrfork_hi = sub: offline scrub didn't fail.
+keys[7].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[7].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[7].bmbtblock_hi = add: offline scrub didn't fail.
+keys[7].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[8].owner = zeroes: offline scrub didn't fail.
+keys[8].owner = lastbit: offline scrub didn't fail.
+keys[8].owner = sub: offline scrub didn't fail.
+keys[8].offset = zeroes: offline scrub didn't fail.
+keys[8].offset = lastbit: offline scrub didn't fail.
+keys[8].extentflag = ones: offline scrub didn't fail.
+keys[8].extentflag = ones: online scrub didn't fail.
+keys[8].extentflag = firstbit: offline scrub didn't fail.
+keys[8].extentflag = firstbit: online scrub didn't fail.
+keys[8].extentflag = middlebit: offline scrub didn't fail.
+keys[8].extentflag = middlebit: online scrub didn't fail.
+keys[8].extentflag = lastbit: offline scrub didn't fail.
+keys[8].extentflag = lastbit: online scrub didn't fail.
+keys[8].extentflag = add: offline scrub didn't fail.
+keys[8].extentflag = add: online scrub didn't fail.
+keys[8].extentflag = sub: offline scrub didn't fail.
+keys[8].extentflag = sub: online scrub didn't fail.
+keys[8].startblock_hi = ones: offline scrub didn't fail.
+keys[8].startblock_hi = firstbit: offline scrub didn't fail.
+keys[8].startblock_hi = middlebit: offline scrub didn't fail.
+keys[8].startblock_hi = lastbit: offline scrub didn't fail.
+keys[8].startblock_hi = add: offline scrub didn't fail.
+keys[8].owner_hi = ones: offline scrub didn't fail.
+keys[8].owner_hi = firstbit: offline scrub didn't fail.
+keys[8].owner_hi = middlebit: offline scrub didn't fail.
+keys[8].owner_hi = lastbit: offline scrub didn't fail.
+keys[8].owner_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = ones: offline scrub didn't fail.
+keys[8].offset_hi = firstbit: offline scrub didn't fail.
+keys[8].offset_hi = middlebit: offline scrub didn't fail.
+keys[8].offset_hi = add: offline scrub didn't fail.
+keys[8].offset_hi = sub: offline scrub didn't fail.
+keys[8].extentflag_hi = ones: offline scrub didn't fail.
+keys[8].extentflag_hi = ones: online scrub didn't fail.
+keys[8].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[8].extentflag_hi = firstbit: online scrub didn't fail.
+keys[8].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[8].extentflag_hi = middlebit: online scrub didn't fail.
+keys[8].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[8].extentflag_hi = lastbit: online scrub didn't fail.
+keys[8].extentflag_hi = add: offline scrub didn't fail.
+keys[8].extentflag_hi = add: online scrub didn't fail.
+keys[8].extentflag_hi = sub: offline scrub didn't fail.
+keys[8].extentflag_hi = sub: online scrub didn't fail.
+keys[8].attrfork_hi = ones: offline scrub didn't fail.
+keys[8].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[8].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[8].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[8].attrfork_hi = add: offline scrub didn't fail.
+keys[8].attrfork_hi = sub: offline scrub didn't fail.
+keys[8].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[8].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[8].bmbtblock_hi = add: offline scrub didn't fail.
+keys[8].bmbtblock_hi = sub: offline scrub didn't fail.
+keys[9].owner = zeroes: offline scrub didn't fail.
+keys[9].owner = sub: offline scrub didn't fail.
+keys[9].offset = zeroes: offline scrub didn't fail.
+keys[9].offset = lastbit: offline scrub didn't fail.
+keys[9].extentflag = ones: offline scrub didn't fail.
+keys[9].extentflag = ones: online scrub didn't fail.
+keys[9].extentflag = firstbit: offline scrub didn't fail.
+keys[9].extentflag = firstbit: online scrub didn't fail.
+keys[9].extentflag = middlebit: offline scrub didn't fail.
+keys[9].extentflag = middlebit: online scrub didn't fail.
+keys[9].extentflag = lastbit: offline scrub didn't fail.
+keys[9].extentflag = lastbit: online scrub didn't fail.
+keys[9].extentflag = add: offline scrub didn't fail.
+keys[9].extentflag = add: online scrub didn't fail.
+keys[9].extentflag = sub: offline scrub didn't fail.
+keys[9].extentflag = sub: online scrub didn't fail.
+keys[9].startblock_hi = ones: offline scrub didn't fail.
+keys[9].startblock_hi = firstbit: offline scrub didn't fail.
+keys[9].startblock_hi = middlebit: offline scrub didn't fail.
+keys[9].startblock_hi = lastbit: offline scrub didn't fail.
+keys[9].startblock_hi = add: offline scrub didn't fail.
+keys[9].owner_hi = ones: offline scrub didn't fail.
+keys[9].owner_hi = firstbit: offline scrub didn't fail.
+keys[9].owner_hi = middlebit: offline scrub didn't fail.
+keys[9].owner_hi = lastbit: offline scrub didn't fail.
+keys[9].owner_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = ones: offline scrub didn't fail.
+keys[9].offset_hi = firstbit: offline scrub didn't fail.
+keys[9].offset_hi = middlebit: offline scrub didn't fail.
+keys[9].offset_hi = add: offline scrub didn't fail.
+keys[9].offset_hi = sub: offline scrub didn't fail.
+keys[9].extentflag_hi = ones: offline scrub didn't fail.
+keys[9].extentflag_hi = ones: online scrub didn't fail.
+keys[9].extentflag_hi = firstbit: offline scrub didn't fail.
+keys[9].extentflag_hi = firstbit: online scrub didn't fail.
+keys[9].extentflag_hi = middlebit: offline scrub didn't fail.
+keys[9].extentflag_hi = middlebit: online scrub didn't fail.
+keys[9].extentflag_hi = lastbit: offline scrub didn't fail.
+keys[9].extentflag_hi = lastbit: online scrub didn't fail.
+keys[9].extentflag_hi = add: offline scrub didn't fail.
+keys[9].extentflag_hi = add: online scrub didn't fail.
+keys[9].extentflag_hi = sub: offline scrub didn't fail.
+keys[9].extentflag_hi = sub: online scrub didn't fail.
+keys[9].attrfork_hi = ones: offline scrub didn't fail.
+keys[9].attrfork_hi = firstbit: offline scrub didn't fail.
+keys[9].attrfork_hi = middlebit: offline scrub didn't fail.
+keys[9].attrfork_hi = lastbit: offline scrub didn't fail.
+keys[9].attrfork_hi = add: offline scrub didn't fail.
+keys[9].attrfork_hi = sub: offline scrub didn't fail.
+keys[9].bmbtblock_hi = ones: offline scrub didn't fail.
+keys[9].bmbtblock_hi = firstbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = middlebit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = lastbit: offline scrub didn't fail.
+keys[9].bmbtblock_hi = add: offline scrub didn't fail.
+keys[9].bmbtblock_hi = sub: offline scrub didn't fail.
 Done fuzzing rmapbt keyptr
diff --git a/tests/xfs/758.out b/tests/xfs/758.out
index e969d7ba02..8a911c9735 100644
--- a/tests/xfs/758.out
+++ b/tests/xfs/758.out
@@ -1,4 +1,9 @@
 QA output created by 758
 Format and populate
 Fuzz refcountbt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startblock = zeroes: offline scrub didn't fail.
+keys[1].startblock = lastbit: offline scrub didn't fail.
+keys[1].startblock = sub: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/759.out b/tests/xfs/759.out
index 3eaa678c0a..220883bd84 100644
--- a/tests/xfs/759.out
+++ b/tests/xfs/759.out
@@ -2,4 +2,98 @@ QA output created by 759
 Format and populate
 Find btree-format dir inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = firstbit: online repair failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.size = zeroes: online repair failed (1).
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online health check failed (0).
+core.size = middlebit: online repair failed (4).
+core.size = middlebit: online re-scrub failed (4).
+core.size = middlebit: online post-mod scrub failed (4).
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.naextents = lastbit: online repair failed (1).
+core.forkoff = ones: online repair failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = add: online repair failed (1).
+core.forkoff = sub: online repair failed (1).
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+u3.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
+u3.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/760.out b/tests/xfs/760.out
index 9b66d13f2c..c08d5c5672 100644
--- a/tests/xfs/760.out
+++ b/tests/xfs/760.out
@@ -2,4 +2,68 @@ QA output created by 760
 Format and populate
 Find extents-format file inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.size = zeroes: offline scrub didn't fail.
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.forkoff = firstbit: online repair failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+u3.bmx[0].blockcount = middlebit: online repair failed (4).
+u3.bmx[0].blockcount = add: online repair failed (4).
 Done fuzzing inode
diff --git a/tests/xfs/761.out b/tests/xfs/761.out
index 43cbe4d000..28db068aa4 100644
--- a/tests/xfs/761.out
+++ b/tests/xfs/761.out
@@ -2,4 +2,70 @@ QA output created by 761
 Format and populate
 Find btree-format file inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.size = zeroes: offline scrub didn't fail.
+core.size = zeroes: online scrub didn't fail.
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+core.size = sub: offline scrub didn't fail.
+core.size = sub: online scrub didn't fail.
+core.naextents = lastbit: online repair failed (1).
+core.forkoff = ones: online repair failed (1).
+core.forkoff = firstbit: online repair failed (1).
+core.forkoff = add: online repair failed (1).
+core.forkoff = sub: online repair failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/762.out b/tests/xfs/762.out
index 1ff528e296..0dcc55f7ba 100644
--- a/tests/xfs/762.out
+++ b/tests/xfs/762.out
@@ -2,4 +2,5 @@ QA output created by 762
 Format and populate
 Find bmbt block
 Fuzz bmbt
+rightsib = lastbit: online re-scrub failed (5).
 Done fuzzing bmbt
diff --git a/tests/xfs/763.out b/tests/xfs/763.out
index 00fe93dbd5..017ebae31e 100644
--- a/tests/xfs/763.out
+++ b/tests/xfs/763.out
@@ -2,4 +2,12 @@ QA output created by 763
 Format and populate
 Find symlink remote block
 Fuzz symlink remote block
+data = ones: offline scrub didn't fail.
+data = ones: online scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing symlink remote block
diff --git a/tests/xfs/764.out b/tests/xfs/764.out
index 727f797f77..9515240556 100644
--- a/tests/xfs/764.out
+++ b/tests/xfs/764.out
@@ -2,4 +2,96 @@ QA output created by 764
 Format and populate
 Find inline-format dir inode
 Fuzz inline-format dir inode
+core.mode = firstbit: online repair failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.forkoff = firstbit: online repair failed (1).
+core.rtinherit = ones: offline scrub didn't fail.
+core.rtinherit = ones: online scrub didn't fail.
+core.rtinherit = firstbit: offline scrub didn't fail.
+core.rtinherit = firstbit: online scrub didn't fail.
+core.rtinherit = middlebit: offline scrub didn't fail.
+core.rtinherit = middlebit: online scrub didn't fail.
+core.rtinherit = lastbit: offline scrub didn't fail.
+core.rtinherit = lastbit: online scrub didn't fail.
+core.rtinherit = add: offline scrub didn't fail.
+core.rtinherit = add: online scrub didn't fail.
+core.rtinherit = sub: offline scrub didn't fail.
+core.rtinherit = sub: online scrub didn't fail.
+core.projinherit = ones: offline scrub didn't fail.
+core.projinherit = ones: online scrub didn't fail.
+core.projinherit = firstbit: offline scrub didn't fail.
+core.projinherit = firstbit: online scrub didn't fail.
+core.projinherit = middlebit: offline scrub didn't fail.
+core.projinherit = middlebit: online scrub didn't fail.
+core.projinherit = lastbit: offline scrub didn't fail.
+core.projinherit = lastbit: online scrub didn't fail.
+core.projinherit = add: offline scrub didn't fail.
+core.projinherit = add: online scrub didn't fail.
+core.projinherit = sub: offline scrub didn't fail.
+core.projinherit = sub: online scrub didn't fail.
+core.nosymlinks = ones: offline scrub didn't fail.
+core.nosymlinks = ones: online scrub didn't fail.
+core.nosymlinks = firstbit: offline scrub didn't fail.
+core.nosymlinks = firstbit: online scrub didn't fail.
+core.nosymlinks = middlebit: offline scrub didn't fail.
+core.nosymlinks = middlebit: online scrub didn't fail.
+core.nosymlinks = lastbit: offline scrub didn't fail.
+core.nosymlinks = lastbit: online scrub didn't fail.
+core.nosymlinks = add: offline scrub didn't fail.
+core.nosymlinks = add: online scrub didn't fail.
+core.nosymlinks = sub: offline scrub didn't fail.
+core.nosymlinks = sub: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = middlebit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = lastbit: online scrub didn't fail.
+u3.sfdir3.list[1].offset = add: offline scrub didn't fail.
+u3.sfdir3.list[1].offset = add: online scrub didn't fail.
 Done fuzzing inline-format dir inode
diff --git a/tests/xfs/765.out b/tests/xfs/765.out
index 008c22e4c6..e147cdd7e9 100644
--- a/tests/xfs/765.out
+++ b/tests/xfs/765.out
@@ -2,4 +2,11 @@ QA output created by 765
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+bhdr.hdr.crc = zeroes: offline scrub didn't fail.
+bhdr.hdr.crc = ones: offline scrub didn't fail.
+bhdr.hdr.crc = firstbit: offline scrub didn't fail.
+bhdr.hdr.crc = middlebit: offline scrub didn't fail.
+bhdr.hdr.crc = lastbit: offline scrub didn't fail.
+bhdr.hdr.crc = add: offline scrub didn't fail.
+bhdr.hdr.crc = sub: offline scrub didn't fail.
 Done fuzzing data-format dir block
diff --git a/tests/xfs/766.out b/tests/xfs/766.out
index 29b8e227a3..15bce8f504 100644
--- a/tests/xfs/766.out
+++ b/tests/xfs/766.out
@@ -2,4 +2,15 @@ QA output created by 766
 Format and populate
 Find data-format dir block
 Fuzz data-format dir block
+dhdr.hdr.crc = zeroes: offline scrub didn't fail.
+dhdr.hdr.crc = ones: offline scrub didn't fail.
+dhdr.hdr.crc = firstbit: offline scrub didn't fail.
+dhdr.hdr.crc = middlebit: offline scrub didn't fail.
+dhdr.hdr.crc = lastbit: offline scrub didn't fail.
+dhdr.hdr.crc = add: offline scrub didn't fail.
+dhdr.hdr.crc = sub: offline scrub didn't fail.
+du[4].name = lastbit: offline re-scrub failed (1).
+du[4].name = lastbit: online re-scrub failed (5).
+du[4].name = lastbit: online post-mod scrub failed (1).
+du[4].name = lastbit: offline post-mod scrub failed (1).
 Done fuzzing data-format dir block
diff --git a/tests/xfs/768.out b/tests/xfs/768.out
index b45ce63b40..e7e87f724a 100644
--- a/tests/xfs/768.out
+++ b/tests/xfs/768.out
@@ -2,4 +2,11 @@ QA output created by 768
 Format and populate
 Find leafn-format dir block
 Fuzz leafn-format dir block
+lhdr.info.crc = zeroes: offline scrub didn't fail.
+lhdr.info.crc = ones: offline scrub didn't fail.
+lhdr.info.crc = firstbit: offline scrub didn't fail.
+lhdr.info.crc = middlebit: offline scrub didn't fail.
+lhdr.info.crc = lastbit: offline scrub didn't fail.
+lhdr.info.crc = add: offline scrub didn't fail.
+lhdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing leafn-format dir block
diff --git a/tests/xfs/769.out b/tests/xfs/769.out
index dc42f6f1db..fb338c0e59 100644
--- a/tests/xfs/769.out
+++ b/tests/xfs/769.out
@@ -2,4 +2,10 @@ QA output created by 769
 Format and populate
 Find node-format dir block
 Fuzz node-format dir block
+nhdr.info.hdr.back = ones: offline scrub didn't fail.
+nhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+nhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+nhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+nhdr.info.hdr.back = add: offline scrub didn't fail.
+nhdr.info.hdr.back = sub: offline scrub didn't fail.
 Done fuzzing node-format dir block
diff --git a/tests/xfs/771.out b/tests/xfs/771.out
index 526bb00ed6..c92ae0a42c 100644
--- a/tests/xfs/771.out
+++ b/tests/xfs/771.out
@@ -2,4 +2,95 @@ QA output created by 771
 Format and populate
 Find inline-format attr inode
 Fuzz inline-format attr inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+a.sfattr.list[1].name = ones: offline scrub didn't fail.
+a.sfattr.list[1].name = ones: online scrub didn't fail.
+a.sfattr.list[1].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[1].name = firstbit: online scrub didn't fail.
+a.sfattr.list[1].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[1].name = middlebit: online scrub didn't fail.
+a.sfattr.list[1].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[1].name = lastbit: online scrub didn't fail.
+a.sfattr.list[1].name = add: offline scrub didn't fail.
+a.sfattr.list[1].name = add: online scrub didn't fail.
+a.sfattr.list[1].name = sub: offline scrub didn't fail.
+a.sfattr.list[1].name = sub: online scrub didn't fail.
+a.sfattr.list[2].name = ones: offline scrub didn't fail.
+a.sfattr.list[2].name = ones: online scrub didn't fail.
+a.sfattr.list[2].name = firstbit: offline scrub didn't fail.
+a.sfattr.list[2].name = firstbit: online scrub didn't fail.
+a.sfattr.list[2].name = middlebit: offline scrub didn't fail.
+a.sfattr.list[2].name = middlebit: online scrub didn't fail.
+a.sfattr.list[2].name = lastbit: offline scrub didn't fail.
+a.sfattr.list[2].name = lastbit: online scrub didn't fail.
+a.sfattr.list[2].name = add: offline scrub didn't fail.
+a.sfattr.list[2].name = add: online scrub didn't fail.
+a.sfattr.list[2].name = sub: offline scrub didn't fail.
+a.sfattr.list[2].name = sub: online scrub didn't fail.
 Done fuzzing inline-format attr inode
diff --git a/tests/xfs/772.out b/tests/xfs/772.out
index c774116ea3..ffa4023ae6 100644
--- a/tests/xfs/772.out
+++ b/tests/xfs/772.out
@@ -2,4 +2,97 @@ QA output created by 772
 Format and populate
 Find leaf-format attr block
 Fuzz leaf-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
+hdr.firstused = middlebit: online scrub didn't fail.
+hdr.firstused = middlebit: offline re-scrub failed (1).
+hdr.firstused = middlebit: offline post-mod scrub failed (1).
+hdr.holes = ones: offline scrub didn't fail.
+hdr.holes = ones: online scrub didn't fail.
+hdr.holes = firstbit: offline scrub didn't fail.
+hdr.holes = firstbit: online scrub didn't fail.
+hdr.holes = middlebit: offline scrub didn't fail.
+hdr.holes = middlebit: online scrub didn't fail.
+hdr.holes = lastbit: offline scrub didn't fail.
+hdr.holes = lastbit: online scrub didn't fail.
+hdr.holes = add: offline scrub didn't fail.
+hdr.holes = add: online scrub didn't fail.
+hdr.holes = sub: offline scrub didn't fail.
+hdr.holes = sub: online scrub didn't fail.
+hdr.freemap[0].base = zeroes: offline scrub didn't fail.
+hdr.freemap[0].base = middlebit: offline scrub didn't fail.
+hdr.freemap[0].size = zeroes: offline scrub didn't fail.
+hdr.freemap[0].size = zeroes: online scrub didn't fail.
+hdr.freemap[0].size = middlebit: offline scrub didn't fail.
+hdr.freemap[1].base = middlebit: offline scrub didn't fail.
+hdr.freemap[1].base = middlebit: online scrub didn't fail.
+hdr.freemap[1].size = middlebit: offline scrub didn't fail.
+hdr.freemap[2].base = middlebit: offline scrub didn't fail.
+hdr.freemap[2].base = middlebit: online scrub didn't fail.
+hdr.freemap[2].size = middlebit: offline scrub didn't fail.
+entries[0].incomplete = ones: online scrub didn't fail.
+entries[0].incomplete = firstbit: online scrub didn't fail.
+entries[0].incomplete = middlebit: online scrub didn't fail.
+entries[0].incomplete = lastbit: online scrub didn't fail.
+entries[0].incomplete = add: online scrub didn't fail.
+entries[0].incomplete = sub: online scrub didn't fail.
+entries[1].incomplete = ones: online scrub didn't fail.
+entries[1].incomplete = firstbit: online scrub didn't fail.
+entries[1].incomplete = middlebit: online scrub didn't fail.
+entries[1].incomplete = lastbit: online scrub didn't fail.
+entries[1].incomplete = add: online scrub didn't fail.
+entries[1].incomplete = sub: online scrub didn't fail.
+entries[2].incomplete = ones: online scrub didn't fail.
+entries[2].incomplete = firstbit: online scrub didn't fail.
+entries[2].incomplete = middlebit: online scrub didn't fail.
+entries[2].incomplete = lastbit: online scrub didn't fail.
+entries[2].incomplete = add: online scrub didn't fail.
+entries[2].incomplete = sub: online scrub didn't fail.
+entries[3].incomplete = ones: online scrub didn't fail.
+entries[3].incomplete = firstbit: online scrub didn't fail.
+entries[3].incomplete = middlebit: online scrub didn't fail.
+entries[3].incomplete = lastbit: online scrub didn't fail.
+entries[3].incomplete = add: online scrub didn't fail.
+entries[3].incomplete = sub: online scrub didn't fail.
+entries[4].incomplete = ones: online scrub didn't fail.
+entries[4].incomplete = firstbit: online scrub didn't fail.
+entries[4].incomplete = middlebit: online scrub didn't fail.
+entries[4].incomplete = lastbit: online scrub didn't fail.
+entries[4].incomplete = add: online scrub didn't fail.
+entries[4].incomplete = sub: online scrub didn't fail.
+entries[5].incomplete = ones: online scrub didn't fail.
+entries[5].incomplete = firstbit: online scrub didn't fail.
+entries[5].incomplete = middlebit: online scrub didn't fail.
+entries[5].incomplete = lastbit: online scrub didn't fail.
+entries[5].incomplete = add: online scrub didn't fail.
+entries[5].incomplete = sub: online scrub didn't fail.
+entries[6].incomplete = ones: online scrub didn't fail.
+entries[6].incomplete = firstbit: online scrub didn't fail.
+entries[6].incomplete = middlebit: online scrub didn't fail.
+entries[6].incomplete = lastbit: online scrub didn't fail.
+entries[6].incomplete = add: online scrub didn't fail.
+entries[6].incomplete = sub: online scrub didn't fail.
+entries[7].incomplete = ones: online scrub didn't fail.
+entries[7].incomplete = firstbit: online scrub didn't fail.
+entries[7].incomplete = middlebit: online scrub didn't fail.
+entries[7].incomplete = lastbit: online scrub didn't fail.
+entries[7].incomplete = add: online scrub didn't fail.
+entries[7].incomplete = sub: online scrub didn't fail.
+entries[8].incomplete = ones: online scrub didn't fail.
+entries[8].incomplete = firstbit: online scrub didn't fail.
+entries[8].incomplete = middlebit: online scrub didn't fail.
+entries[8].incomplete = lastbit: online scrub didn't fail.
+entries[8].incomplete = add: online scrub didn't fail.
+entries[8].incomplete = sub: online scrub didn't fail.
+entries[9].incomplete = ones: online scrub didn't fail.
+entries[9].incomplete = firstbit: online scrub didn't fail.
+entries[9].incomplete = middlebit: online scrub didn't fail.
+entries[9].incomplete = lastbit: online scrub didn't fail.
+entries[9].incomplete = add: online scrub didn't fail.
+entries[9].incomplete = sub: online scrub didn't fail.
 Done fuzzing leaf-format attr block
diff --git a/tests/xfs/773.out b/tests/xfs/773.out
index d301cda524..2439706f7d 100644
--- a/tests/xfs/773.out
+++ b/tests/xfs/773.out
@@ -2,4 +2,11 @@ QA output created by 773
 Format and populate
 Find node-format attr block
 Fuzz node-format attr block
+hdr.info.crc = zeroes: offline scrub didn't fail.
+hdr.info.crc = ones: offline scrub didn't fail.
+hdr.info.crc = firstbit: offline scrub didn't fail.
+hdr.info.crc = middlebit: offline scrub didn't fail.
+hdr.info.crc = lastbit: offline scrub didn't fail.
+hdr.info.crc = add: offline scrub didn't fail.
+hdr.info.crc = sub: offline scrub didn't fail.
 Done fuzzing node-format attr block
diff --git a/tests/xfs/774.out b/tests/xfs/774.out
index 58b3ea004c..8d99820951 100644
--- a/tests/xfs/774.out
+++ b/tests/xfs/774.out
@@ -2,4 +2,28 @@ QA output created by 774
 Format and populate
 Find external attr block
 Fuzz external attr block
+hdr.offset = ones: offline scrub didn't fail.
+hdr.offset = middlebit: offline scrub didn't fail.
+hdr.offset = lastbit: offline scrub didn't fail.
+hdr.offset = add: offline scrub didn't fail.
+hdr.offset = sub: offline scrub didn't fail.
+hdr.bytes = zeroes: offline scrub didn't fail.
+hdr.bytes = lastbit: offline scrub didn't fail.
+hdr.bytes = sub: offline scrub didn't fail.
+hdr.owner = ones: offline scrub didn't fail.
+hdr.owner = firstbit: offline scrub didn't fail.
+hdr.owner = middlebit: offline scrub didn't fail.
+hdr.owner = lastbit: offline scrub didn't fail.
+hdr.owner = add: offline scrub didn't fail.
+hdr.owner = sub: offline scrub didn't fail.
+data = zeroes: offline scrub didn't fail.
+data = zeroes: online scrub didn't fail.
+data = ones: offline scrub didn't fail.
+data = ones: online scrub didn't fail.
+data = firstbit: offline scrub didn't fail.
+data = firstbit: online scrub didn't fail.
+data = middlebit: offline scrub didn't fail.
+data = middlebit: online scrub didn't fail.
+data = lastbit: offline scrub didn't fail.
+data = lastbit: online scrub didn't fail.
 Done fuzzing external attr block
diff --git a/tests/xfs/775.out b/tests/xfs/775.out
index 71eaf9c0ed..b842b6853d 100644
--- a/tests/xfs/775.out
+++ b/tests/xfs/775.out
@@ -1,4 +1,10 @@
 QA output created by 775
 Format and populate
 Fuzz refcountbt
+numrecs = lastbit: offline scrub didn't fail.
+leftsib = add: offline scrub didn't fail.
+rightsib = ones: offline scrub didn't fail.
+rightsib = middlebit: offline scrub didn't fail.
+rightsib = lastbit: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
 Done fuzzing refcountbt
diff --git a/tests/xfs/776.out b/tests/xfs/776.out
index 226fc02005..5d83a310a4 100644
--- a/tests/xfs/776.out
+++ b/tests/xfs/776.out
@@ -2,4 +2,63 @@ QA output created by 776
 Format and populate
 Find btree-format attr inode
 Fuzz inode
+core.mode = zeroes: offline re-scrub failed (1).
+core.mode = zeroes: offline post-mod scrub failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.size = middlebit: offline scrub didn't fail.
+core.size = middlebit: online scrub didn't fail.
+core.size = lastbit: offline scrub didn't fail.
+core.size = lastbit: online scrub didn't fail.
+core.size = add: offline scrub didn't fail.
+core.size = add: online scrub didn't fail.
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = lastbit: offline scrub didn't fail.
+v3.flags2 = lastbit: online scrub didn't fail.
+v3.flags2 = add: online scrub didn't fail.
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.reflink = ones: offline scrub didn't fail.
+v3.reflink = ones: online scrub didn't fail.
+v3.reflink = firstbit: offline scrub didn't fail.
+v3.reflink = firstbit: online scrub didn't fail.
+v3.reflink = middlebit: offline scrub didn't fail.
+v3.reflink = middlebit: online scrub didn't fail.
+v3.reflink = lastbit: offline scrub didn't fail.
+v3.reflink = lastbit: online scrub didn't fail.
+v3.reflink = add: offline scrub didn't fail.
+v3.reflink = add: online scrub didn't fail.
+v3.reflink = sub: offline scrub didn't fail.
+v3.reflink = sub: online scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: offline scrub didn't fail.
+a.bmbt.ptrs[1] = firstbit: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/777.out b/tests/xfs/777.out
index daca70d863..f16d70ee45 100644
--- a/tests/xfs/777.out
+++ b/tests/xfs/777.out
@@ -2,4 +2,73 @@ QA output created by 777
 Format and populate
 Find blockdev inode
 Fuzz inode
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.size = middlebit: online scrub didn't fail.
+core.size = middlebit: offline re-scrub failed (1).
+core.size = middlebit: offline post-mod scrub failed (1).
+core.size = lastbit: online scrub didn't fail.
+core.size = lastbit: offline re-scrub failed (1).
+core.size = lastbit: offline post-mod scrub failed (1).
+core.size = add: online scrub didn't fail.
+core.size = add: offline re-scrub failed (1).
+core.size = add: offline post-mod scrub failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.dev = zeroes: offline scrub didn't fail.
+u3.dev = zeroes: online scrub didn't fail.
+u3.dev = ones: offline scrub didn't fail.
+u3.dev = ones: online scrub didn't fail.
+u3.dev = firstbit: offline scrub didn't fail.
+u3.dev = firstbit: online scrub didn't fail.
+u3.dev = middlebit: offline scrub didn't fail.
+u3.dev = middlebit: online scrub didn't fail.
+u3.dev = lastbit: offline scrub didn't fail.
+u3.dev = lastbit: online scrub didn't fail.
+u3.dev = add: offline scrub didn't fail.
+u3.dev = add: online scrub didn't fail.
+u3.dev = sub: offline scrub didn't fail.
+u3.dev = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/778.out b/tests/xfs/778.out
index a729f111d1..2f490d642d 100644
--- a/tests/xfs/778.out
+++ b/tests/xfs/778.out
@@ -2,4 +2,64 @@ QA output created by 778
 Format and populate
 Find local-format symlink inode
 Fuzz inode
+core.mode = firstbit: online repair failed (1).
+core.mode = middlebit: offline scrub didn't fail.
+core.mode = middlebit: online scrub didn't fail.
+core.mode = lastbit: offline scrub didn't fail.
+core.mode = lastbit: online scrub didn't fail.
+core.mode = add: offline scrub didn't fail.
+core.mode = add: online scrub didn't fail.
+core.nlinkv2 = zeroes: online repair failed (4).
+core.nlinkv2 = lastbit: online repair failed (4).
+core.forkoff = firstbit: online repair failed (1).
+next_unlinked = add: online scrub didn't fail.
+next_unlinked = add: offline re-scrub failed (1).
+next_unlinked = add: offline post-mod scrub failed (1).
+v3.change_count = zeroes: offline scrub didn't fail.
+v3.change_count = zeroes: online scrub didn't fail.
+v3.change_count = ones: offline scrub didn't fail.
+v3.change_count = ones: online scrub didn't fail.
+v3.change_count = firstbit: offline scrub didn't fail.
+v3.change_count = firstbit: online scrub didn't fail.
+v3.change_count = middlebit: offline scrub didn't fail.
+v3.change_count = middlebit: online scrub didn't fail.
+v3.change_count = lastbit: offline scrub didn't fail.
+v3.change_count = lastbit: online scrub didn't fail.
+v3.change_count = add: offline scrub didn't fail.
+v3.change_count = add: online scrub didn't fail.
+v3.change_count = sub: offline scrub didn't fail.
+v3.change_count = sub: online scrub didn't fail.
+v3.flags2 = ones: offline re-scrub failed (1).
+v3.flags2 = ones: offline post-mod scrub failed (1).
+v3.flags2 = middlebit: online scrub didn't fail.
+v3.flags2 = middlebit: offline re-scrub failed (1).
+v3.flags2 = middlebit: offline post-mod scrub failed (1).
+v3.flags2 = add: offline re-scrub failed (1).
+v3.flags2 = add: offline post-mod scrub failed (1).
+v3.flags2 = sub: offline re-scrub failed (1).
+v3.flags2 = sub: offline post-mod scrub failed (1).
+v3.nrext64 = zeroes: offline scrub didn't fail.
+v3.nrext64 = zeroes: online scrub didn't fail.
+v3.nrext64 = firstbit: offline scrub didn't fail.
+v3.nrext64 = firstbit: online scrub didn't fail.
+v3.nrext64 = middlebit: offline scrub didn't fail.
+v3.nrext64 = middlebit: online scrub didn't fail.
+v3.nrext64 = lastbit: offline scrub didn't fail.
+v3.nrext64 = lastbit: online scrub didn't fail.
+v3.nrext64 = add: offline scrub didn't fail.
+v3.nrext64 = add: online scrub didn't fail.
+v3.nrext64 = sub: offline scrub didn't fail.
+v3.nrext64 = sub: online scrub didn't fail.
+u3.symlink = ones: offline scrub didn't fail.
+u3.symlink = ones: online scrub didn't fail.
+u3.symlink = firstbit: offline scrub didn't fail.
+u3.symlink = firstbit: online scrub didn't fail.
+u3.symlink = middlebit: offline scrub didn't fail.
+u3.symlink = middlebit: online scrub didn't fail.
+u3.symlink = lastbit: offline scrub didn't fail.
+u3.symlink = lastbit: online scrub didn't fail.
+u3.symlink = add: offline scrub didn't fail.
+u3.symlink = add: online scrub didn't fail.
+u3.symlink = sub: offline scrub didn't fail.
+u3.symlink = sub: online scrub didn't fail.
 Done fuzzing inode
diff --git a/tests/xfs/779.out b/tests/xfs/779.out
index a8c19a9a05..7d98ff2cc9 100644
--- a/tests/xfs/779.out
+++ b/tests/xfs/779.out
@@ -1,4 +1,300 @@
 QA output created by 779
 Format and populate
 Fuzz user 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz user 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/780.out b/tests/xfs/780.out
index df5784d5a8..f3823cc932 100644
--- a/tests/xfs/780.out
+++ b/tests/xfs/780.out
@@ -1,4 +1,300 @@
 QA output created by 780
 Format and populate
 Fuzz group 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz group 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/781.out b/tests/xfs/781.out
index 68c42e6fce..a7b6651b77 100644
--- a/tests/xfs/781.out
+++ b/tests/xfs/781.out
@@ -1,4 +1,300 @@
 QA output created by 781
 Format and populate
 Fuzz project 0 dquot
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = ones: online repair failed (1).
+diskdq.blk_softlimit = ones: online re-scrub failed (5).
+diskdq.blk_softlimit = ones: online post-mod scrub failed (1).
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: online repair failed (1).
+diskdq.blk_softlimit = firstbit: online re-scrub failed (5).
+diskdq.blk_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: online repair failed (1).
+diskdq.blk_softlimit = middlebit: online re-scrub failed (5).
+diskdq.blk_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: online repair failed (1).
+diskdq.blk_softlimit = lastbit: online re-scrub failed (5).
+diskdq.blk_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = add: online repair failed (1).
+diskdq.blk_softlimit = add: online re-scrub failed (5).
+diskdq.blk_softlimit = add: online post-mod scrub failed (1).
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: online repair failed (1).
+diskdq.blk_softlimit = sub: online re-scrub failed (5).
+diskdq.blk_softlimit = sub: online post-mod scrub failed (1).
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = ones: online repair failed (1).
+diskdq.ino_softlimit = ones: online re-scrub failed (5).
+diskdq.ino_softlimit = ones: online post-mod scrub failed (1).
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: online repair failed (1).
+diskdq.ino_softlimit = firstbit: online re-scrub failed (5).
+diskdq.ino_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: online repair failed (1).
+diskdq.ino_softlimit = middlebit: online re-scrub failed (5).
+diskdq.ino_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: online repair failed (1).
+diskdq.ino_softlimit = lastbit: online re-scrub failed (5).
+diskdq.ino_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = add: online repair failed (1).
+diskdq.ino_softlimit = add: online re-scrub failed (5).
+diskdq.ino_softlimit = add: online post-mod scrub failed (1).
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: online repair failed (1).
+diskdq.ino_softlimit = sub: online re-scrub failed (5).
+diskdq.ino_softlimit = sub: online post-mod scrub failed (1).
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = ones: online scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = firstbit: online scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = middlebit: online scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = lastbit: online scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = add: online scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.itimer = sub: online scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = ones: online scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = firstbit: online scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = middlebit: online scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = lastbit: online scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = add: online scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.btimer = sub: online scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = ones: online repair failed (1).
+diskdq.rtb_softlimit = ones: online re-scrub failed (5).
+diskdq.rtb_softlimit = ones: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: online repair failed (1).
+diskdq.rtb_softlimit = firstbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = firstbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: online repair failed (1).
+diskdq.rtb_softlimit = middlebit: online re-scrub failed (5).
+diskdq.rtb_softlimit = middlebit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: online repair failed (1).
+diskdq.rtb_softlimit = lastbit: online re-scrub failed (5).
+diskdq.rtb_softlimit = lastbit: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: online repair failed (1).
+diskdq.rtb_softlimit = add: online re-scrub failed (5).
+diskdq.rtb_softlimit = add: online post-mod scrub failed (1).
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: online repair failed (1).
+diskdq.rtb_softlimit = sub: online re-scrub failed (5).
+diskdq.rtb_softlimit = sub: online post-mod scrub failed (1).
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = ones: online scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: online scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: online scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: online scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = add: online scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+diskdq.rtbtimer = sub: online scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 4242 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
+Done fuzzing dquot
+Fuzz project 8484 dquot
+diskdq.type = firstbit: offline scrub didn't fail.
+diskdq.type = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = ones: offline scrub didn't fail.
+diskdq.blk_hardlimit = ones: online scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = firstbit: online scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_hardlimit = middlebit: online scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_hardlimit = lastbit: online scrub didn't fail.
+diskdq.blk_hardlimit = add: offline scrub didn't fail.
+diskdq.blk_hardlimit = add: online scrub didn't fail.
+diskdq.blk_hardlimit = sub: offline scrub didn't fail.
+diskdq.blk_hardlimit = sub: online scrub didn't fail.
+diskdq.blk_softlimit = ones: offline scrub didn't fail.
+diskdq.blk_softlimit = firstbit: offline scrub didn't fail.
+diskdq.blk_softlimit = middlebit: offline scrub didn't fail.
+diskdq.blk_softlimit = lastbit: offline scrub didn't fail.
+diskdq.blk_softlimit = add: offline scrub didn't fail.
+diskdq.blk_softlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: offline scrub didn't fail.
+diskdq.ino_hardlimit = ones: online scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = firstbit: online scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_hardlimit = middlebit: online scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_hardlimit = lastbit: online scrub didn't fail.
+diskdq.ino_hardlimit = add: offline scrub didn't fail.
+diskdq.ino_hardlimit = add: online scrub didn't fail.
+diskdq.ino_hardlimit = sub: offline scrub didn't fail.
+diskdq.ino_hardlimit = sub: online scrub didn't fail.
+diskdq.ino_softlimit = ones: offline scrub didn't fail.
+diskdq.ino_softlimit = firstbit: offline scrub didn't fail.
+diskdq.ino_softlimit = middlebit: offline scrub didn't fail.
+diskdq.ino_softlimit = lastbit: offline scrub didn't fail.
+diskdq.ino_softlimit = add: offline scrub didn't fail.
+diskdq.ino_softlimit = sub: offline scrub didn't fail.
+diskdq.itimer = ones: offline scrub didn't fail.
+diskdq.itimer = firstbit: offline scrub didn't fail.
+diskdq.itimer = middlebit: offline scrub didn't fail.
+diskdq.itimer = lastbit: offline scrub didn't fail.
+diskdq.itimer = add: offline scrub didn't fail.
+diskdq.itimer = sub: offline scrub didn't fail.
+diskdq.btimer = ones: offline scrub didn't fail.
+diskdq.btimer = firstbit: offline scrub didn't fail.
+diskdq.btimer = middlebit: offline scrub didn't fail.
+diskdq.btimer = lastbit: offline scrub didn't fail.
+diskdq.btimer = add: offline scrub didn't fail.
+diskdq.btimer = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: offline scrub didn't fail.
+diskdq.rtb_hardlimit = ones: online scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = firstbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = middlebit: online scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_hardlimit = lastbit: online scrub didn't fail.
+diskdq.rtb_hardlimit = add: offline scrub didn't fail.
+diskdq.rtb_hardlimit = add: online scrub didn't fail.
+diskdq.rtb_hardlimit = sub: offline scrub didn't fail.
+diskdq.rtb_hardlimit = sub: online scrub didn't fail.
+diskdq.rtb_softlimit = ones: offline scrub didn't fail.
+diskdq.rtb_softlimit = firstbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = middlebit: offline scrub didn't fail.
+diskdq.rtb_softlimit = lastbit: offline scrub didn't fail.
+diskdq.rtb_softlimit = add: offline scrub didn't fail.
+diskdq.rtb_softlimit = sub: offline scrub didn't fail.
+diskdq.rtbtimer = ones: offline scrub didn't fail.
+diskdq.rtbtimer = firstbit: offline scrub didn't fail.
+diskdq.rtbtimer = middlebit: offline scrub didn't fail.
+diskdq.rtbtimer = lastbit: offline scrub didn't fail.
+diskdq.rtbtimer = add: offline scrub didn't fail.
+diskdq.rtbtimer = sub: offline scrub didn't fail.
 Done fuzzing dquot
diff --git a/tests/xfs/782.out b/tests/xfs/782.out
index ec750a670b..9c98cf1cf6 100644
--- a/tests/xfs/782.out
+++ b/tests/xfs/782.out
@@ -2,4 +2,16 @@ QA output created by 782
 Format and populate
 Find single-leafn-format dir block
 Fuzz single-leafn-format dir block
+lhdr.info.hdr.forw = ones: offline scrub didn't fail.
+lhdr.info.hdr.forw = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.forw = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.forw = add: offline scrub didn't fail.
+lhdr.info.hdr.forw = sub: offline scrub didn't fail.
+lhdr.info.hdr.back = ones: offline scrub didn't fail.
+lhdr.info.hdr.back = firstbit: offline scrub didn't fail.
+lhdr.info.hdr.back = middlebit: offline scrub didn't fail.
+lhdr.info.hdr.back = lastbit: offline scrub didn't fail.
+lhdr.info.hdr.back = add: offline scrub didn't fail.
+lhdr.info.hdr.back = sub: offline scrub didn't fail.
 Done fuzzing single-leafn-format dir block
diff --git a/tests/xfs/783.out b/tests/xfs/783.out
index 11e6d93b88..41892794b4 100644
--- a/tests/xfs/783.out
+++ b/tests/xfs/783.out
@@ -1,10 +1,220 @@
 QA output created by 783
 Format and populate
 Fuzz block map for BLOCK
+u3.bmx[0].blockcount = middlebit: online repair failed (1).
+u3.bmx[0].blockcount = middlebit: offline re-scrub failed (1).
+u3.bmx[0].blockcount = middlebit: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = add: online repair failed (1).
+u3.bmx[0].blockcount = add: offline re-scrub failed (1).
+u3.bmx[0].blockcount = add: offline post-mod scrub failed (1).
 Done fuzzing dir map BLOCK
 Fuzz block map for LEAF
+u3.bmx[0].startblock = zeroes: offline re-scrub failed (1).
+u3.bmx[0].startblock = zeroes: offline post-mod scrub failed (1).
+u3.bmx[0].startblock = ones: offline re-scrub failed (1).
+u3.bmx[0].startblock = ones: offline post-mod scrub failed (1).
+u3.bmx[0].startblock = firstbit: offline re-scrub failed (1).
+u3.bmx[0].startblock = firstbit: offline post-mod scrub failed (1).
+u3.bmx[0].startblock = middlebit: offline re-scrub failed (1).
+u3.bmx[0].startblock = middlebit: offline post-mod scrub failed (1).
+u3.bmx[0].startblock = sub: offline re-scrub failed (1).
+u3.bmx[0].startblock = sub: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[0].blockcount = zeroes: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = ones: offline re-scrub failed (1).
+u3.bmx[0].blockcount = ones: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = firstbit: offline re-scrub failed (1).
+u3.bmx[0].blockcount = firstbit: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[0].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[0].blockcount = sub: offline re-scrub failed (1).
+u3.bmx[0].blockcount = sub: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[1].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = ones: offline re-scrub failed (1).
+u3.bmx[1].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[1].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[1].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[1].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = add: offline re-scrub failed (1).
+u3.bmx[1].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = sub: offline re-scrub failed (1).
+u3.bmx[1].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[1].startblock = zeroes: offline re-scrub failed (1).
+u3.bmx[1].startblock = zeroes: offline post-mod scrub failed (1).
+u3.bmx[1].startblock = ones: offline re-scrub failed (1).
+u3.bmx[1].startblock = ones: offline post-mod scrub failed (1).
+u3.bmx[1].startblock = firstbit: offline re-scrub failed (1).
+u3.bmx[1].startblock = firstbit: offline post-mod scrub failed (1).
+u3.bmx[1].startblock = middlebit: offline re-scrub failed (1).
+u3.bmx[1].startblock = middlebit: offline post-mod scrub failed (1).
+u3.bmx[1].startblock = sub: offline re-scrub failed (1).
+u3.bmx[1].startblock = sub: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[1].blockcount = zeroes: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = ones: offline re-scrub failed (1).
+u3.bmx[1].blockcount = ones: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = firstbit: offline re-scrub failed (1).
+u3.bmx[1].blockcount = firstbit: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[1].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = sub: offline re-scrub failed (1).
+u3.bmx[1].blockcount = sub: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[2].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = ones: offline re-scrub failed (1).
+u3.bmx[2].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[2].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[2].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = sub: offline re-scrub failed (1).
+u3.bmx[2].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[2].startblock = zeroes: offline re-scrub failed (1).
+u3.bmx[2].startblock = zeroes: offline post-mod scrub failed (1).
+u3.bmx[2].startblock = ones: offline re-scrub failed (1).
+u3.bmx[2].startblock = ones: offline post-mod scrub failed (1).
+u3.bmx[2].startblock = firstbit: offline re-scrub failed (1).
+u3.bmx[2].startblock = firstbit: offline post-mod scrub failed (1).
+u3.bmx[2].startblock = middlebit: offline re-scrub failed (1).
+u3.bmx[2].startblock = middlebit: offline post-mod scrub failed (1).
+u3.bmx[2].startblock = sub: offline re-scrub failed (1).
+u3.bmx[2].startblock = sub: offline post-mod scrub failed (1).
+u3.bmx[2].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[2].blockcount = zeroes: offline post-mod scrub failed (1).
+u3.bmx[2].blockcount = ones: offline re-scrub failed (1).
+u3.bmx[2].blockcount = ones: offline post-mod scrub failed (1).
+u3.bmx[2].blockcount = firstbit: offline re-scrub failed (1).
+u3.bmx[2].blockcount = firstbit: offline post-mod scrub failed (1).
+u3.bmx[2].blockcount = middlebit: online repair failed (1).
+u3.bmx[2].blockcount = middlebit: online re-scrub failed (5).
+u3.bmx[2].blockcount = middlebit: online post-mod scrub failed (1).
+u3.bmx[2].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[2].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[2].blockcount = add: online repair failed (1).
+u3.bmx[2].blockcount = add: online re-scrub failed (5).
+u3.bmx[2].blockcount = add: online post-mod scrub failed (1).
+u3.bmx[2].blockcount = sub: offline re-scrub failed (1).
+u3.bmx[2].blockcount = sub: offline post-mod scrub failed (1).
+u3.bmx[3].startblock = zeroes: offline re-scrub failed (1).
+u3.bmx[3].startblock = zeroes: offline post-mod scrub failed (1).
+u3.bmx[3].startblock = ones: offline re-scrub failed (1).
+u3.bmx[3].startblock = ones: offline post-mod scrub failed (1).
+u3.bmx[3].startblock = firstbit: offline re-scrub failed (1).
+u3.bmx[3].startblock = firstbit: offline post-mod scrub failed (1).
+u3.bmx[3].startblock = middlebit: offline re-scrub failed (1).
+u3.bmx[3].startblock = middlebit: offline post-mod scrub failed (1).
+u3.bmx[3].startblock = sub: offline re-scrub failed (1).
+u3.bmx[3].startblock = sub: offline post-mod scrub failed (1).
+u3.bmx[3].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[3].blockcount = zeroes: offline post-mod scrub failed (1).
+u3.bmx[3].blockcount = ones: offline re-scrub failed (1).
+u3.bmx[3].blockcount = ones: offline post-mod scrub failed (1).
+u3.bmx[3].blockcount = firstbit: offline re-scrub failed (1).
+u3.bmx[3].blockcount = firstbit: offline post-mod scrub failed (1).
+u3.bmx[3].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[3].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[3].blockcount = sub: offline re-scrub failed (1).
+u3.bmx[3].blockcount = sub: offline post-mod scrub failed (1).
 Done fuzzing dir map LEAF
 Fuzz block map for LEAFN
+u3.bmx[1].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[1].startoff = lastbit: offline post-mod scrub failed (1).
 Done fuzzing dir map LEAFN
 Fuzz block map for NODE
+u3.bmx[1].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[1].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = ones: offline re-scrub failed (1).
+u3.bmx[1].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[1].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[1].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[1].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = add: offline re-scrub failed (1).
+u3.bmx[1].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[1].startoff = sub: offline re-scrub failed (1).
+u3.bmx[1].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[1].blockcount = ones: offline re-scrub failed (1).
+u3.bmx[1].blockcount = ones: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[2].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = ones: offline re-scrub failed (1).
+u3.bmx[2].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[2].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[2].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[2].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = add: offline re-scrub failed (1).
+u3.bmx[2].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[2].startoff = sub: offline re-scrub failed (1).
+u3.bmx[2].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[3].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = ones: offline re-scrub failed (1).
+u3.bmx[3].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[3].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[3].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[3].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = add: offline re-scrub failed (1).
+u3.bmx[3].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[3].startoff = sub: offline re-scrub failed (1).
+u3.bmx[3].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[4].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = ones: offline re-scrub failed (1).
+u3.bmx[4].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[4].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[4].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[4].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = add: offline re-scrub failed (1).
+u3.bmx[4].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[4].startoff = sub: offline re-scrub failed (1).
+u3.bmx[4].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[5].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = ones: offline re-scrub failed (1).
+u3.bmx[5].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[5].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[5].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = lastbit: offline re-scrub failed (1).
+u3.bmx[5].startoff = lastbit: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = add: offline re-scrub failed (1).
+u3.bmx[5].startoff = add: offline post-mod scrub failed (1).
+u3.bmx[5].startoff = sub: offline re-scrub failed (1).
+u3.bmx[5].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[5].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[5].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[6].startoff = zeroes: offline re-scrub failed (1).
+u3.bmx[6].startoff = zeroes: offline post-mod scrub failed (1).
+u3.bmx[6].startoff = ones: offline re-scrub failed (1).
+u3.bmx[6].startoff = ones: offline post-mod scrub failed (1).
+u3.bmx[6].startoff = firstbit: offline re-scrub failed (1).
+u3.bmx[6].startoff = firstbit: offline post-mod scrub failed (1).
+u3.bmx[6].startoff = middlebit: offline re-scrub failed (1).
+u3.bmx[6].startoff = middlebit: offline post-mod scrub failed (1).
+u3.bmx[6].startoff = sub: offline re-scrub failed (1).
+u3.bmx[6].startoff = sub: offline post-mod scrub failed (1).
+u3.bmx[6].startblock = middlebit: offline re-scrub failed (1).
+u3.bmx[6].startblock = middlebit: offline post-mod scrub failed (1).
+u3.bmx[7].blockcount = lastbit: offline re-scrub failed (1).
+u3.bmx[7].blockcount = lastbit: offline post-mod scrub failed (1).
+u3.bmx[8].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[8].blockcount = zeroes: offline post-mod scrub failed (1).
+u3.bmx[9].blockcount = zeroes: offline re-scrub failed (1).
+u3.bmx[9].blockcount = zeroes: offline post-mod scrub failed (1).
 Done fuzzing dir map NODE
diff --git a/tests/xfs/784.out b/tests/xfs/784.out
index b5c3fddabd..0b345dbc72 100644
--- a/tests/xfs/784.out
+++ b/tests/xfs/784.out
@@ -1,10 +1,20 @@
 QA output created by 784
 Format and populate
 Fuzz block map for EXTENTS_REMOTE3K
+a.bmx[0].startblock = firstbit: offline scrub didn't fail.
+a.bmx[0].startblock = firstbit: online scrub didn't fail.
+a.bmx[1].startblock = firstbit: offline scrub didn't fail.
+a.bmx[1].startblock = firstbit: online scrub didn't fail.
 Done fuzzing attr map EXTENTS_REMOTE3K
 Fuzz block map for EXTENTS_REMOTE4K
+a.bmx[0].startblock = firstbit: offline scrub didn't fail.
+a.bmx[0].startblock = firstbit: online scrub didn't fail.
+a.bmx[1].startblock = firstbit: offline scrub didn't fail.
+a.bmx[1].startblock = firstbit: online scrub didn't fail.
 Done fuzzing attr map EXTENTS_REMOTE4K
 Fuzz block map for LEAF
+a.bmx[0].startblock = firstbit: offline scrub didn't fail.
+a.bmx[0].startblock = firstbit: online scrub didn't fail.
 Done fuzzing attr map LEAF
 Fuzz block map for NODE
 Done fuzzing attr map NODE
diff --git a/tests/xfs/787.out b/tests/xfs/787.out
index 39bd7c2469..80a334f4ca 100755
--- a/tests/xfs/787.out
+++ b/tests/xfs/787.out
@@ -1,4 +1,27 @@
 QA output created by 787
 Format and populate
 Fuzz inobt
+leftsib = add: offline scrub didn't fail.
+rightsib = add: offline scrub didn't fail.
+keys[1].startino = zeroes: offline scrub didn't fail.
+keys[1].startino = ones: offline scrub didn't fail.
+keys[1].startino = firstbit: offline scrub didn't fail.
+keys[1].startino = middlebit: offline scrub didn't fail.
+keys[1].startino = lastbit: offline scrub didn't fail.
+keys[1].startino = add: offline scrub didn't fail.
+keys[1].startino = sub: offline scrub didn't fail.
+keys[2].startino = zeroes: offline scrub didn't fail.
+keys[2].startino = ones: offline scrub didn't fail.
+keys[2].startino = firstbit: offline scrub didn't fail.
+keys[2].startino = middlebit: offline scrub didn't fail.
+keys[2].startino = lastbit: offline scrub didn't fail.
+keys[2].startino = add: offline scrub didn't fail.
+keys[2].startino = sub: offline scrub didn't fail.
+keys[3].startino = zeroes: offline scrub didn't fail.
+keys[3].startino = ones: offline scrub didn't fail.
+keys[3].startino = firstbit: offline scrub didn't fail.
+keys[3].startino = middlebit: offline scrub didn't fail.
+keys[3].startino = lastbit: offline scrub didn't fail.
+keys[3].startino = add: offline scrub didn't fail.
+keys[3].startino = sub: offline scrub didn't fail.
 Done fuzzing inobt


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/1] swapext: make sure that we don't swap unwritten extents unless they're part of a rt extent(??)
  2023-12-31 19:57 ` [PATCHSET v29.0 4/8] fstests: atomic file updates Darrick J. Wong
@ 2023-12-27 13:44   ` Darrick J. Wong
  0 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:44 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/1213     |   73 ++++++++++++++++
 tests/xfs/1213.out |    2 
 tests/xfs/1214     |  232 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1214.out |    2 
 4 files changed, 309 insertions(+)
 create mode 100755 tests/xfs/1213
 create mode 100644 tests/xfs/1213.out
 create mode 100755 tests/xfs/1214
 create mode 100644 tests/xfs/1214.out


diff --git a/tests/xfs/1213 b/tests/xfs/1213
new file mode 100755
index 0000000000..40bf3838af
--- /dev/null
+++ b/tests/xfs/1213
@@ -0,0 +1,73 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2023-2024 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1213
+#
+# Make sure that the XFS_EXCH_RANGE_FILE1_WRITTEN actually skips holes and
+# unwritten extents on the data device and the rt device when the rextsize
+# is 1 fsblock.
+#
+. ./common/preamble
+_begin_fstest auto fiexchange swapext
+
+. ./common/filter
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_require_xfs_io_command "falloc"
+_require_xfs_io_command swapext '-v exchrange -a'
+_require_scratch
+
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+
+# This test doesn't deal with the unwritten extents that must be created when
+# the realtime file allocation unit is larger than the fs blocksize.
+file_blksz=$(_get_file_block_size $SCRATCH_MNT)
+fs_blksz=$(_get_block_size $SCRATCH_MNT)
+test "$file_blksz" -eq "$fs_blksz" || \
+	_notrun "test requires file alloc unit ($file_blksz) == fs block size ($fs_blksz)"
+
+swap_and_check_contents() {
+	local a="$1"
+	local b="$2"
+	local tag="$3"
+
+	local a_md5_before=$(md5sum $a | awk '{print $1}')
+	local b_md5_before=$(md5sum $b | awk '{print $1}')
+
+	# Test swapext.  -h means skip holes in /b, and -e means operate to EOF
+	echo "swap $tag" >> $seqres.full
+	$XFS_IO_PROG -c fsync -c 'bmap -elpvvvv' $a $b >> $seqres.full
+	$XFS_IO_PROG -c "swapext -v exchrange -f -u -h -e -a $b" $a >> $seqres.full
+	$XFS_IO_PROG -c 'bmap -elpvvvv' $a $b >> $seqres.full
+	_scratch_cycle_mount
+
+	local a_md5_after=$(md5sum $a | awk '{print $1}')
+	local b_md5_after=$(md5sum $b | awk '{print $1}')
+
+	test "$a_md5_before" != "$a_md5_after" && \
+		echo "$a: md5 $a_md5_before -> $a_md5_after in $tag"
+
+	test "$b_md5_before" != "$b_md5_after" && \
+		echo "$b: md5 $b_md5_before -> $b_md5_after in $tag"
+}
+
+# plain preallocations on the data device
+$XFS_IO_PROG -c 'extsize 0' $SCRATCH_MNT
+_pwrite_byte 0x58 0 1m $SCRATCH_MNT/dar >> $seqres.full
+$XFS_IO_PROG -f -c 'truncate 1m' -c "falloc 640k 64k" $SCRATCH_MNT/dbr
+swap_and_check_contents $SCRATCH_MNT/dar $SCRATCH_MNT/dbr "plain prealloc"
+
+# extent size hints on the data device
+$XFS_IO_PROG -c 'extsize 1m' $SCRATCH_MNT
+_pwrite_byte 0x58 0 1m $SCRATCH_MNT/dae >> $seqres.full
+$XFS_IO_PROG -f -c 'truncate 1m' -c "falloc 640k 64k" $SCRATCH_MNT/dbe
+swap_and_check_contents $SCRATCH_MNT/dae $SCRATCH_MNT/dbe "data dev extsize prealloc"
+
+echo Silence is golden
+status=0
+exit
diff --git a/tests/xfs/1213.out b/tests/xfs/1213.out
new file mode 100644
index 0000000000..5a28b8b45f
--- /dev/null
+++ b/tests/xfs/1213.out
@@ -0,0 +1,2 @@
+QA output created by 1213
+Silence is golden
diff --git a/tests/xfs/1214 b/tests/xfs/1214
new file mode 100755
index 0000000000..5b78b5e348
--- /dev/null
+++ b/tests/xfs/1214
@@ -0,0 +1,232 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2023-2024 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1214
+#
+# Make sure that the XFS_EXCH_RANGE_FILE1_WRITTEN actually skips holes and
+# unwritten extents on the realtime device when the rextsize is larger than 1
+# fs block.
+#
+. ./common/preamble
+_begin_fstest auto fiexchange swapext
+
+. ./common/filter
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_require_xfs_io_command "falloc"
+_require_xfs_io_command swapext '-v exchrange -a'
+_require_realtime
+_require_scratch
+
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+
+# This test only deals with the unwritten extents that must be created when
+# the realtime file allocation unit is larger than the fs blocksize.
+file_blksz=$(_get_file_block_size $SCRATCH_MNT)
+fs_blksz=$(_get_block_size $SCRATCH_MNT)
+test "$file_blksz" -ge "$((3 * fs_blksz))" || \
+	_notrun "test requires file alloc unit ($file_blksz) >= 3 * fs block size ($fs_blksz)"
+
+swap_and_check_contents() {
+	local a="$1"
+	local b="$2"
+	local tag="$3"
+
+	sync
+
+	# Test swapext.  -h means skip holes in /b, and -e means operate to EOF
+	echo "swap $tag" >> $seqres.full
+	$XFS_IO_PROG -c 'bmap -elpvvvv' $a $b >> $seqres.full
+	$XFS_IO_PROG -c "swapext -v exchrange -f -u -h -e -a $b" $a >> $seqres.full
+	$XFS_IO_PROG -c 'bmap -elpvvvv' $a $b >> $seqres.full
+
+	local a_md5_before=$(md5sum $a | awk '{print $1}')
+	local b_md5_before=$(md5sum $b | awk '{print $1}')
+
+	_scratch_cycle_mount
+
+	local a_md5_check=$(md5sum $a.chk | awk '{print $1}')
+	local b_md5_check=$(md5sum $b.chk | awk '{print $1}')
+
+	local a_md5_after=$(md5sum $a | awk '{print $1}')
+	local b_md5_after=$(md5sum $b | awk '{print $1}')
+
+	test "$a_md5_before" != "$a_md5_after" && \
+		echo "$a: md5 $a_md5_before -> $a_md5_after in $tag"
+
+	test "$b_md5_before" != "$b_md5_after" && \
+		echo "$b: md5 $b_md5_before -> $b_md5_after in $tag"
+
+	if [ "$a_md5_check" != "$a_md5_after" ]; then
+		echo "$a: md5 $a_md5_after, expected $a_md5_check in $tag" | tee -a $seqres.full
+		echo "$a contents" >> $seqres.full
+		od -tx1 -Ad -c $a >> $seqres.full
+		echo "$a.chk contents" >> $seqres.full
+		od -tx1 -Ad -c $a.chk >> $seqres.full
+	fi
+
+	if [ "$b_md5_check" != "$b_md5_after" ]; then
+		echo "$b: md5 $b_md5_after, expected $b_md5_check in $tag" | tee -a $seqres.full
+		echo "$b contents" >> $seqres.full
+		od -tx1 -Ad -c $b >> $seqres.full
+		echo "$b.chk contents" >> $seqres.full
+		od -tx1 -Ad -c $b.chk >> $seqres.full
+	fi
+}
+
+filesz=$((5 * file_blksz))
+
+# first rtblock of the second rtextent is unwritten
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x59 $((file_blksz + fs_blksz)) $((file_blksz - fs_blksz))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x00 $file_blksz $fs_blksz" \
+	-c "pwrite -S 0x59 $((file_blksz + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x58 $((file_blksz * 2)) $((filesz - (file_blksz * 2) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"first rtb of second rtx"
+
+# second rtblock of the second rtextent is unwritten
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x59 $file_blksz $fs_blksz" \
+	-c "pwrite -S 0x59 $((file_blksz + (2 * fs_blksz) )) $((file_blksz - (2 * fs_blksz) ))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x59 $file_blksz $fs_blksz" \
+	-c "pwrite -S 0x00 $((file_blksz + fs_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x59 $((file_blksz + (2 * fs_blksz) )) $((file_blksz - (2 * fs_blksz) ))" \
+	-c "pwrite -S 0x58 $((file_blksz * 2)) $((filesz - (file_blksz * 2) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"second rtb of second rtx"
+
+# last rtblock of the second rtextent is unwritten
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x00 $(( (2 * file_blksz) - fs_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x58 $((file_blksz * 2)) $((filesz - (file_blksz * 2) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"last rtb of second rtx"
+
+# last rtb of the 2nd rtx and first rtb of the 3rd rtx is unwritten
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "falloc $file_blksz $((2 * file_blksz))" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x59 $(( (2 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x00 $(( (2 * file_blksz) - fs_blksz)) $((2 * fs_blksz))" \
+	-c "pwrite -S 0x59 $(( (2 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x58 $((file_blksz * 3)) $((filesz - (file_blksz * 3) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $((2 * file_blksz))" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"last rtb of 2nd rtx and first rtb of 3rd rtx"
+
+# last rtb of the 2nd rtx and first rtb of the 4th rtx is unwritten; 3rd rtx
+# is a hole
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x59 $(( (3 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "fpunch $((2 * file_blksz)) $file_blksz" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x00 $(( (2 * file_blksz) - fs_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x58 $((file_blksz * 2)) $file_blksz" \
+	-c "pwrite -S 0x00 $((3 * file_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x59 $(( (3 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x58 $((file_blksz * 4)) $((filesz - (file_blksz * 4) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $file_blksz" \
+	-c "pwrite -S 0x58 $((file_blksz * 3)) $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"last rtb of 2nd rtx and first rtb of 4th rtx; 3rd rtx is hole"
+
+# last rtb of the 2nd rtx and first rtb of the 4th rtx is unwritten; 3rd rtx
+# is preallocated
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "falloc $file_blksz $((file_blksz * 3))" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x59 $(( (3 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $file_blksz" \
+	-c "pwrite -S 0x59 $file_blksz $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x00 $(( (2 * file_blksz) - fs_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x58 $((file_blksz * 2)) $file_blksz" \
+	-c "pwrite -S 0x00 $((3 * file_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x59 $(( (3 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x58 $((file_blksz * 4)) $((filesz - (file_blksz * 4) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $file_blksz $file_blksz" \
+	-c "pwrite -S 0x58 $((file_blksz * 3)) $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"last rtb of 2nd rtx and first rtb of 4th rtx; 3rd rtx is prealloc"
+
+# 2nd rtx is preallocated and first rtb of 3rd rtx is unwritten
+rm -f $SCRATCH_MNT/da $SCRATCH_MNT/db $SCRATCH_MNT/*.chk
+_pwrite_byte 0x58 0 $filesz $SCRATCH_MNT/da >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "falloc $file_blksz $((file_blksz * 2))" \
+	-c "pwrite -S 0x59 $(( (2 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	$SCRATCH_MNT/db >> $seqres.full
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 0 $((2 * file_blksz))" \
+	-c "pwrite -S 0x00 $((2 * file_blksz)) $fs_blksz" \
+	-c "pwrite -S 0x59 $(( (2 * file_blksz) + fs_blksz)) $((file_blksz - fs_blksz))" \
+	-c "pwrite -S 0x58 $((file_blksz * 3)) $((filesz - (file_blksz * 3) ))" \
+	$SCRATCH_MNT/da.chk >> /dev/null
+$XFS_IO_PROG -f -c "truncate $filesz" \
+	-c "pwrite -S 0x58 $((2 * file_blksz)) $file_blksz" \
+	$SCRATCH_MNT/db.chk >> /dev/null
+swap_and_check_contents $SCRATCH_MNT/da $SCRATCH_MNT/db \
+	"2nd rtx is prealloc and first rtb of 3rd rtx is unwritten"
+
+echo Silence is golden
+status=0
+exit
diff --git a/tests/xfs/1214.out b/tests/xfs/1214.out
new file mode 100644
index 0000000000..a529e42333
--- /dev/null
+++ b/tests/xfs/1214.out
@@ -0,0 +1,2 @@
+QA output created by 1214
+Silence is golden


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/2] generic/453: test confusable name detection with 32-bit unicode codepoints
  2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
@ 2023-12-27 13:45   ` Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 2/2] generic/453: check xfs_scrub detection of confusing job offers Darrick J. Wong
  1 sibling, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:45 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Test the confusable name detection when there are 32-bit unicode
sequences in use.  In other words, emoji.  Change the xfs_scrub test to
dump the output to a file instead of passing huge echo commands around.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/generic/453 |   32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)


diff --git a/tests/generic/453 b/tests/generic/453
index a0fb802e9b..930e6408ff 100755
--- a/tests/generic/453
+++ b/tests/generic/453
@@ -148,6 +148,10 @@ setf "combmark_\xe1\x80\x9c\xe1\x80\xaf\xe1\x80\xad.txt" "combining marks"
 setd ".\xe2\x80\x8d" "zero width joiners in dot entry"
 setd "..\xe2\x80\x8d" "zero width joiners in dotdot entry"
 
+# utf8 sequence mapping to a u32 unicode codepoint that can be confused
+setf "toilet_bowl.\xf0\x9f\x9a\xbd" "toilet emoji"
+setf "toilet_bow\xe2\x80\x8dl.\xf0\x9f\x9a\xbd" "toilet emoji with zero width joiner"
+
 ls -la $testdir >> $seqres.full
 
 echo "Test files"
@@ -198,6 +202,9 @@ testf "combmark_\xe1\x80\x9c\xe1\x80\xaf\xe1\x80\xad.txt" "combining marks"
 testd ".\xe2\x80\x8d" "zero width joiners in dot entry"
 testd "..\xe2\x80\x8d" "zero width joiners in dotdot entry"
 
+testf "toilet_bowl.\xf0\x9f\x9a\xbd" "toilet emoji"
+testf "toilet_bow\xe2\x80\x8dl.\xf0\x9f\x9a\xbd" "toilet emoji with zero width joiner"
+
 echo "Uniqueness of inodes?"
 stat -c '%i' "${testdir}/"* | sort | uniq -c | while read nr inum; do
 	if [ "${nr}" -gt 1 ]; then
@@ -208,18 +215,21 @@ done
 echo "Test XFS online scrub, if applicable"
 
 if _check_xfs_scrub_does_unicode "$SCRATCH_MNT" "$SCRATCH_DEV"; then
-	output="$(LC_ALL="C.UTF-8" ${XFS_SCRUB_PROG} -v -n "${SCRATCH_MNT}" 2>&1 | filter_scrub)"
-	echo "${output}" | grep -q "french_" || echo "No complaints about french e accent?"
-	echo "${output}" | grep -q "greek_" || echo "No complaints about greek letter mess?"
-	echo "${output}" | grep -q "arabic_" || echo "No complaints about arabic expanded string?"
-	echo "${output}" | grep -q "mixed_" || echo "No complaints about mixed script confusables?"
-	echo "${output}" | grep -q "hyphens_" || echo "No complaints about hyphenation confusables?"
-	echo "${output}" | grep -q "dz_digraph_" || echo "No complaints about single script confusables?"
-	echo "${output}" | grep -q "inadequate_" || echo "No complaints about inadequate rendering confusables?"
-	echo "${output}" | grep -q "prohibition_" || echo "No complaints about prohibited sequence confusables?"
-	echo "${output}" | grep -q "zerojoin_" || echo "No complaints about zero-width join confusables?"
+	LC_ALL="C.UTF-8" ${XFS_SCRUB_PROG} -v -n "${SCRATCH_MNT}" 2>&1 | filter_scrub > $tmp.scrub
+
+	grep -q "french_" $tmp.scrub || echo "No complaints about french e accent?"
+	grep -q "greek_" $tmp.scrub || echo "No complaints about greek letter mess?"
+	grep -q "arabic_" $tmp.scrub || echo "No complaints about arabic expanded string?"
+	grep -q "mixed_" $tmp.scrub || echo "No complaints about mixed script confusables?"
+	grep -q "hyphens_" $tmp.scrub || echo "No complaints about hyphenation confusables?"
+	grep -q "dz_digraph_" $tmp.scrub || echo "No complaints about single script confusables?"
+	grep -q "inadequate_" $tmp.scrub || echo "No complaints about inadequate rendering confusables?"
+	grep -q "prohibition_" $tmp.scrub || echo "No complaints about prohibited sequence confusables?"
+	grep -q "zerojoin_" $tmp.scrub || echo "No complaints about zero-width join confusables?"
+	grep -q "toilet_" $tmp.scrub || echo "No complaints about zero-width join confusables with emoji?"
+
 	echo "Actual xfs_scrub output:" >> $seqres.full
-	echo "${output}" >> $seqres.full
+	cat $tmp.scrub >> $seqres.full
 fi
 
 # success, all done


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 2/2] generic/453: check xfs_scrub detection of confusing job offers
  2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 1/2] generic/453: test confusable name detection with 32-bit unicode codepoints Darrick J. Wong
@ 2023-12-27 13:45   ` Darrick J. Wong
  1 sibling, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:45 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Earlier this year, ESET revealed that Linux users had been tricked into
opening executables containing malware payloads.  The trickery came in
the form of a malicious zip file containing a filename with the string
"job offer․pdf".  Note that the filename does *not* denote a real pdf
file, since the last four codepoints in the file name are "ONE DOT
LEADER", p, d, and f.  Not period (ok, FULL STOP), p, d, f like you'd
normally expect.

Now that xfs_scrub can look for codepoints that could be confused with a
period followed by alphanumerics, let's make sure it actually works.

Link: https://www.welivesecurity.com/2023/04/20/linux-malware-strengthens-links-lazarus-3cx-supply-chain-attack/
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/generic/453 |   79 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 78 insertions(+), 1 deletion(-)


diff --git a/tests/generic/453 b/tests/generic/453
index 930e6408ff..855243a860 100755
--- a/tests/generic/453
+++ b/tests/generic/453
@@ -36,6 +36,15 @@ setf() {
 	echo "Storing ${key} ($(hexbytes "${key}")) -> ${value}" >> $seqres.full
 }
 
+setchild() {
+	subdir="$1"
+	key="$(echo -e "$2")"
+
+	mkdir -p "${testdir}/${subdir}"
+	echo "$subdir" > "${testdir}/${subdir}/${key}"
+	echo "Storing ${subdir}/${key} ($(hexbytes "${key}")) -> ${subdir}" >> $seqres.full
+}
+
 setd() {
 	key="$(echo -e "$1")"
 	value="$2"
@@ -63,6 +72,24 @@ testf() {
 	fi
 }
 
+testchild() {
+	subdir="$1"
+	key="$(echo -e "$2")"
+	fname="${testdir}/${subdir}/${key}"
+
+	echo "Testing ${subdir}/${key} ($(hexbytes "${key}")) -> ${subdir}" >> $seqres.full
+
+	if [ ! -e "${fname}" ]; then
+		echo "Key ${key} does not exist for ${subdir} test??"
+		return
+	fi
+
+	actual_value="$(cat "${fname}")"
+	if [ "${actual_value}" != "${subdir}" ]; then
+		echo "Key ${key} has value ${subdir}, expected ${actual_value}."
+	fi
+}
+
 testd() {
 	key="$(echo -e "$1")"
 	value="$2"
@@ -152,7 +179,27 @@ setd "..\xe2\x80\x8d" "zero width joiners in dotdot entry"
 setf "toilet_bowl.\xf0\x9f\x9a\xbd" "toilet emoji"
 setf "toilet_bow\xe2\x80\x8dl.\xf0\x9f\x9a\xbd" "toilet emoji with zero width joiner"
 
-ls -la $testdir >> $seqres.full
+# decoy file extensions used in 3cx malware attack, and similar ones
+setchild "one_dot_leader" "job offer\xe2\x80\xa4pdf"
+setchild "small_full_stop" "job offer\xef\xb9\x92pdf"
+setchild "fullwidth_full_stop" "job offer\xef\xbc\x8epdf"
+setchild "syriac_supralinear" "job offer\xdc\x81pdf"
+setchild "syriac_sublinear" "job offer\xdc\x82pdf"
+setchild "lisu_letter_tone" "job offer\xea\x93\xb8pdf"
+setchild "actual_period" "job offer.pdf"
+setchild "one_dot_leader_zero_width_space" "job offer\xe2\x80\xa4\xe2\x80\x8dpdf"
+
+# again, but this time all in the same directory to trip the confusable
+# detector
+setf "job offer\xe2\x80\xa4pdf" "one dot leader"
+setf "job offer\xef\xb9\x92pdf" "small full stop"
+setf "job offer\xef\xbc\x8epdf" "fullwidth full stop"
+setf "job offer\xdc\x81pdf" "syriac supralinear full stop"
+setf "job offer\xdc\x82pdf" "syriac sublinear full stop"
+setf "job offer\xea\x93\xb8pdf" "lisu letter tone mya ti"
+setf "job offer.pdf" "actual period"
+
+ls -laR $testdir >> $seqres.full
 
 echo "Test files"
 testf "french_caf\xc3\xa9.txt" "NFC"
@@ -205,6 +252,23 @@ testd "..\xe2\x80\x8d" "zero width joiners in dotdot entry"
 testf "toilet_bowl.\xf0\x9f\x9a\xbd" "toilet emoji"
 testf "toilet_bow\xe2\x80\x8dl.\xf0\x9f\x9a\xbd" "toilet emoji with zero width joiner"
 
+testchild "one_dot_leader" "job offer\xe2\x80\xa4pdf"
+testchild "small_full_stop" "job offer\xef\xb9\x92pdf"
+testchild "fullwidth_full_stop" "job offer\xef\xbc\x8epdf"
+testchild "syriac_supralinear" "job offer\xdc\x81pdf"
+testchild "syriac_sublinear" "job offer\xdc\x82pdf"
+testchild "lisu_letter_tone" "job offer\xea\x93\xb8pdf"
+testchild "actual_period" "job offer.pdf"
+testchild "one_dot_leader_zero_width_space" "job offer\xe2\x80\xa4\xe2\x80\x8dpdf"
+
+testf "job offer\xe2\x80\xa4pdf" "one dot leader"
+testf "job offer\xef\xb9\x92pdf" "small full stop"
+testf "job offer\xef\xbc\x8epdf" "fullwidth full stop"
+testf "job offer\xdc\x81pdf" "syriac supralinear full stop"
+testf "job offer\xdc\x82pdf" "syriac sublinear full stop"
+testf "job offer\xea\x93\xb8pdf" "lisu letter tone mya ti"
+testf "job offer.pdf" "actual period"
+
 echo "Uniqueness of inodes?"
 stat -c '%i' "${testdir}/"* | sort | uniq -c | while read nr inum; do
 	if [ "${nr}" -gt 1 ]; then
@@ -228,6 +292,19 @@ if _check_xfs_scrub_does_unicode "$SCRATCH_MNT" "$SCRATCH_DEV"; then
 	grep -q "zerojoin_" $tmp.scrub || echo "No complaints about zero-width join confusables?"
 	grep -q "toilet_" $tmp.scrub || echo "No complaints about zero-width join confusables with emoji?"
 
+	# Does xfs_scrub complain at all about the job offer files?  Pre-2023
+	# versions did not know to screen for that.
+	if grep -q "job offer" $tmp.scrub; then
+		grep -q 'job offer.xe2.x80.xa4pdf' $tmp.scrub || echo "No complaints about one dot leader?"
+		grep -q "job offer.xef.xb9.x92pdf" $tmp.scrub || echo "No complaints about small full stop?"
+		grep -q "job offer.xef.xbc.x8epdf" $tmp.scrub || echo "No complaints about fullwidth full stop?"
+		grep -q "job offer.xdc.x81pdf" $tmp.scrub || echo "No complaints about syriac supralinear full stop?"
+		grep -q "job offer.xdc.x82pdf" $tmp.scrub || echo "No complaints about syriac sublinear full stop?"
+		grep -q "job offer.xea.x93.xb8pdf" $tmp.scrub || echo "No complaints about lisu letter tone mya ti?"
+		grep -q "job offer.*could be confused with" $tmp.scrub || echo "No complaints about confusing job offers?"
+		grep -q "job offer.xe2.x80.xa4.xe2.x80.x8dpdf" $tmp.scrub || echo "No complaints about one dot leader with invisible space?"
+	fi
+
 	echo "Actual xfs_scrub output:" >> $seqres.full
 	cat $tmp.scrub >> $seqres.full
 fi


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/1] xfs: test xfs_scrub services
  2023-12-31 19:58 ` [PATCHSET v29.0 6/8] fstests: test systemd background services Darrick J. Wong
@ 2023-12-27 13:45   ` Darrick J. Wong
  0 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:45 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Create a pair of new tests that check that xfs_scrub and xfs_scrub_all
will find and test mounted filesystems.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 common/rc          |   22 ++++++++
 tests/xfs/1863     |  136 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1863.out |    6 ++
 3 files changed, 164 insertions(+)
 create mode 100755 tests/xfs/1863
 create mode 100644 tests/xfs/1863.out


diff --git a/common/rc b/common/rc
index a9e0ba7e22..969ff93de7 100644
--- a/common/rc
+++ b/common/rc
@@ -5333,6 +5333,7 @@ _soak_loop_running() {
 	return 0
 }
 
+
 _require_unshare() {
 	unshare -f -r -m -p -U $@ true &>/dev/null || \
 		_notrun "unshare $*: command not found, should be in util-linux"
@@ -5345,6 +5346,27 @@ _random_file() {
 	echo "$basedir/$(ls -U $basedir | shuf -n 1)"
 }
 
+_require_program() {
+	local cmd="$1"
+	local tag="$2"
+
+	test -z "$tag" && tag="$(basename "$cmd")"
+	command -v "$1" &>/dev/null || _notrun "$tag required"
+}
+
+_require_systemd_service() {
+	_require_program systemctl systemd
+
+	systemctl cat "$1" >/dev/null || \
+		_notrun "systemd service \"$1\" not found"
+}
+
+_require_systemd_running() {
+	_require_systemd_service "$1"
+	test "$(systemctl is-active "$1")" = "active" || \
+		_notrun "systemd service \"$1\" not running"
+}
+
 init_rc
 
 ################################################################################
diff --git a/tests/xfs/1863 b/tests/xfs/1863
new file mode 100755
index 0000000000..36f10a0826
--- /dev/null
+++ b/tests/xfs/1863
@@ -0,0 +1,136 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2023-2024 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1863
+#
+# Check that the online fsck systemd services find and check the test and
+# scratch filesystems, and that we can read the health reports after the fact.
+# IOWs, basic testing for the systemd background services.
+#
+. ./common/preamble
+_begin_fstest auto scrub
+
+_cleanup()
+{
+	cd /
+	if [ -n "$new_svcfile" ]; then
+		rm -f "$new_svcfile"
+		systemctl daemon-reload
+	fi
+	rm -r -f $tmp.*
+}
+
+# Import common functions.
+. ./common/filter
+. ./common/populate
+. ./common/fuzzy
+
+# real QA test starts here
+
+_supported_fs xfs
+_require_systemd_service xfs_scrub@.service
+_require_systemd_service xfs_scrub_all.service
+_require_scratch
+_require_scrub
+_require_xfs_io_command "scrub"
+_require_xfs_spaceman_command "health"
+_require_populate_commands
+
+_xfs_skip_online_rebuild
+_xfs_skip_offline_rebuild
+
+# Back when xfs_scrub was really experimental, the systemd service definitions
+# contained various bugs that resulted in weird problems such as logging
+# messages sometimes dropping slashes from paths, and the xfs_scrub@ service
+# being logged as completing long after the process actually stopped.  These
+# problems were all fixed by the time the --auto-media-scan-stamp option was
+# added to xfs_scrub_all, so turn off this test for such old codebases.
+scruball_exe="$(systemctl cat xfs_scrub_all | grep '^ExecStart=' | sed -e 's/ExecStart=//g' -e 's/ .*$//g')"
+grep -q -- '--auto-media-scan-stamp' "$scruball_exe" || \
+	_notrun "xfs_scrub service too old, skipping test"
+
+orig_svcfile="/lib/systemd/system/xfs_scrub_all.service"
+test -f "$orig_svcfile" || \
+	_notrun "cannot find xfs_scrub_all service file"
+
+new_svcdir="/run/systemd/system/"
+test -d "$new_svcdir" || \
+	_notrun "cannot find runtime systemd service dir"
+
+# We need to make some local mods to the xfs_scrub_all service definition
+# so we fork it and create a new service just for this test.
+new_scruball_svc="xfs_scrub_all_fstest.service"
+systemctl status "$new_scruball_svc" 2>&1 | grep -E -q '(could not be found|Loaded: not-found)' || \
+	_notrun "systemd service \"$new_scruball_svc\" found, will not mess with this"
+
+find_scrub_trace() {
+	local path="$1"
+
+	$XFS_SPACEMAN_PROG -c "health" "$path" | grep -q ": ok$" || \
+		echo "cannot find evidence that $path was scrubbed"
+}
+
+echo "Format and populate"
+_scratch_populate_cached nofill > $seqres.full 2>&1
+_scratch_mount
+
+run_service() {
+	systemctl start --wait "$1"
+
+	# Sometimes systemctl start --wait returns early due to some external
+	# event, such as somebody else reloading the daemon, which closes the
+	# socket.  The CLI has no way to resume waiting for the service once
+	# the connection breaks, so we'll pgrep for up to 30 seconds until
+	# there are no xfs_scrub processes running on the system.
+	for ((i = 0; i < 30; i++)); do
+		pgrep -f 'xfs_scrub*' > /dev/null 2>&1 || break
+		sleep 1
+	done
+}
+
+echo "Scrub Test FS"
+test_path=$(systemd-escape --path "$TEST_DIR")
+run_service xfs_scrub@$test_path
+find_scrub_trace "$TEST_DIR"
+
+echo "Scrub Scratch FS"
+scratch_path=$(systemd-escape --path "$SCRATCH_MNT")
+run_service xfs_scrub@$scratch_path
+find_scrub_trace "$SCRATCH_MNT"
+
+# Remove the xfs_scrub_all media scan stamp directory (if specified) because we
+# want to leave the regular system's stamp file alone.
+mkdir -p $tmp/stamp
+
+new_svcfile="$new_svcdir/$new_scruball_svc"
+cp "$orig_svcfile" "$new_svcfile"
+
+execstart="$(grep '^ExecStart=' $new_svcfile | sed -e 's/--auto-media-scan-interval[[:space:]]*[0-9]*[a-z]*//g')"
+sed -e '/ExecStart=/d' -e '/BindPaths=/d' -i $new_svcfile
+cat >> "$new_svcfile" << ENDL
+[Service]
+$execstart
+ENDL
+systemctl daemon-reload
+
+# Emit the results of our editing to the full log.
+systemctl cat "$new_scruball_svc" >> $seqres.full
+
+# Cycle both mounts to clear all the incore CHECKED bits.
+_test_cycle_mount
+_scratch_cycle_mount
+
+echo "Scrub Everything"
+run_service "$new_scruball_svc"
+
+sleep 2 # give systemd a chance to tear down the service container mount tree
+
+find_scrub_trace "$TEST_DIR"
+find_scrub_trace "$SCRATCH_MNT"
+
+echo "Scrub Done" | tee -a $seqres.full
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/1863.out b/tests/xfs/1863.out
new file mode 100644
index 0000000000..a1dd7d4bf4
--- /dev/null
+++ b/tests/xfs/1863.out
@@ -0,0 +1,6 @@
+QA output created by 1863
+Format and populate
+Scrub Test FS
+Scrub Scratch FS
+Scrub Everything
+Scrub Done


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/1] xfs/004: fix column extraction code
  2023-12-31 19:58 ` [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime Darrick J. Wong
@ 2023-12-27 13:45   ` Darrick J. Wong
  0 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:45 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Now that the xfs_db freesp command prints a CDF of the free space
histograms, fix the pct column extraction code to handle the two
new columns by <cough> using awk.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/004 |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)


diff --git a/tests/xfs/004 b/tests/xfs/004
index f18316b333..2d55d18801 100755
--- a/tests/xfs/004
+++ b/tests/xfs/004
@@ -84,14 +84,17 @@ then
 fi
 
 # check the 'pct' field from freesp command is good
-perl -ne '
-	    BEGIN	{ $percent = 0; }
-	    /free/	&& next;	# skip over free extent size number
-	    if (/\s+(\d+\.\d+)$/) {
-		$percent += $1;
-	    }
-	    END	{ $percent += 0.5; print int($percent), "\n" }	# round up
-' <$tmp.xfs_db >$tmp.ans
+awk '
+{
+	if ($0 ~ /free/) {
+		next;
+	}
+
+	percent += $5;
+}
+END {
+	printf("%d\n", int(percent + 0.5));
+}' < $tmp.xfs_db > $tmp.ans
 ans="`cat $tmp.ans`"
 echo "Checking percent column yields 100: $ans"
 if [ "$ans" != 100 ]


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 1/1] xfs: test upgrading old features
  2023-12-31 19:58 ` [PATCHSET 8/8] fstests: test upgrading older features Darrick J. Wong
@ 2023-12-27 13:46   ` Darrick J. Wong
  0 siblings, 0 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-27 13:46 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

From: Darrick J. Wong <djwong@kernel.org>

Test the ability to add older v5 features.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 tests/xfs/1856     |  247 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1856.out |    2 
 2 files changed, 249 insertions(+)
 create mode 100755 tests/xfs/1856
 create mode 100644 tests/xfs/1856.out


diff --git a/tests/xfs/1856 b/tests/xfs/1856
new file mode 100755
index 0000000000..84e72d7c81
--- /dev/null
+++ b/tests/xfs/1856
@@ -0,0 +1,247 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2022-2024 Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 1856
+#
+# Test upgrading filesystems with new features.
+#
+. ./common/preamble
+_begin_fstest auto mkfs repair
+
+# Import common functions.
+. ./common/filter
+. ./common/populate
+
+# real QA test starts here
+_supported_fs xfs
+
+_require_check_dmesg
+_require_scratch_nocheck
+_require_scratch_xfs_crc
+
+# Does repair know how to add a particular feature to a filesystem?
+check_repair_upgrade()
+{
+	$XFS_REPAIR_PROG -c "$1=narf" 2>&1 | \
+		grep -q 'unknown option' && return 1
+	return 0
+}
+
+# Are we configured for realtime?
+rt_configured()
+{
+	test "$USE_EXTERNAL" = "yes" && test -n "$SCRATCH_RTDEV"
+}
+
+# Compute the MKFS_OPTIONS string for a particular feature upgrade test
+compute_mkfs_options()
+{
+	local m_opts=""
+	local caller_options="$MKFS_OPTIONS"
+
+	for feat in "${FEATURES[@]}"; do
+		local feat_state="${FEATURE_STATE["${feat}"]}"
+
+		if echo "$caller_options" | grep -E -w -q "${feat}=[0-9]*"; then
+			# Change the caller's options
+			caller_options="$(echo "$caller_options" | \
+				sed -e "s/\([^[:alnum:]]\)${feat}=[0-9]*/\1${feat}=${feat_state}/g")"
+		else
+			# Add it to our list of new mkfs flags
+			m_opts="${feat}=${feat_state},${m_opts}"
+		fi
+	done
+
+	test -n "$m_opts" && m_opts=" -m $m_opts"
+
+	echo "$caller_options$m_opts"
+}
+
+# Log the start of an upgrade.
+upgrade_start_message()
+{
+	local feat="$1"
+
+	echo "Add $feat to filesystem"
+}
+
+# Find dmesg log messages since we started a particular upgrade test
+dmesg_since_feature_upgrade_start()
+{
+	local feat_logmsg="$(upgrade_start_message "$1")"
+
+	# search the dmesg log of last run of $seqnum for possible failures
+	# use sed \cregexpc address type, since $seqnum contains "/"
+	dmesg | \
+		tac | \
+		sed -ne "0,\#run fstests $seqnum at $date_time#p" | \
+		sed -ne "0,\#${feat_logmsg}#p" | \
+		tac
+}
+
+# Did the mount fail because this feature is not supported?
+feature_unsupported()
+{
+	local feat="$1"
+
+	dmesg_since_feature_upgrade_start "$feat" | \
+		grep -q 'has unknown.*features'
+}
+
+# Exercise the scratch fs
+scratch_fsstress()
+{
+	echo moo > $SCRATCH_MNT/sample.txt
+	$FSSTRESS_PROG -n $((TIME_FACTOR * 1000)) -p $((LOAD_FACTOR * 4)) \
+		-d $SCRATCH_MNT/data >> $seqres.full
+}
+
+# Exercise the filesystem a little bit and emit a manifest.
+pre_exercise()
+{
+	local feat="$1"
+
+	_try_scratch_mount &> $tmp.mount
+	res=$?
+	# If the kernel doesn't support the filesystem even after a
+	# fresh format, skip the rest of the upgrade test quietly.
+	if [ $res -eq 32 ] && feature_unsupported "$feat"; then
+		echo "mount failed due to unsupported feature $feat" >> $seqres.full
+		return 1
+	fi
+	if [ $res -ne 0 ]; then
+		cat $tmp.mount
+		echo "mount failed with $res before upgrading to $feat" | \
+			tee -a $seqres.full
+		return 1
+	fi
+
+	scratch_fsstress
+	find $SCRATCH_MNT -type f -print0 | xargs -r -0 md5sum > $tmp.manifest
+	_scratch_unmount
+	return 0
+}
+
+# Check the manifest and exercise the filesystem more
+post_exercise()
+{
+	local feat="$1"
+
+	_try_scratch_mount &> $tmp.mount
+	res=$?
+	# If the kernel doesn't support the filesystem even after a
+	# fresh format, skip the rest of the upgrade test quietly.
+	if [ $res -eq 32 ] && feature_unsupported "$feat"; then
+		echo "mount failed due to unsupported feature $feat" >> $seqres.full
+		return 1
+	fi
+	if [ $res -ne 0 ]; then
+		cat $tmp.mount
+		echo "mount failed with $res after upgrading to $feat" | \
+			tee -a $seqres.full
+		return 1
+	fi
+
+	md5sum --quiet -c $tmp.manifest || \
+		echo "fs contents ^^^ changed after adding $feat"
+
+	iam="check" _check_scratch_fs || \
+		echo "scratch fs check failed after adding $feat"
+
+	# Try to mount the fs in case the check unmounted it
+	_try_scratch_mount &>> $seqres.full
+
+	scratch_fsstress
+
+	iam="check" _check_scratch_fs || \
+		echo "scratch fs check failed after exercising $feat"
+
+	# Try to unmount the fs in case the check didn't
+	_scratch_unmount &>> $seqres.full
+	return 0
+}
+
+# Create a list of fs features in the order that support for them was added
+# to the kernel driver.  For each feature upgrade test, we enable all the
+# features that came before it and none of the ones after, which means we're
+# testing incremental migrations.  We start each run with a clean fs so that
+# errors and unsatisfied requirements (log size, root ino position, etc) in one
+# upgrade don't spread failure to the rest of the tests.
+FEATURES=()
+if rt_configured; then
+	check_repair_upgrade finobt && FEATURES+=("finobt")
+	check_repair_upgrade inobtcount && FEATURES+=("inobtcount")
+	check_repair_upgrade bigtime && FEATURES+=("bigtime")
+else
+	check_repair_upgrade finobt && FEATURES+=("finobt")
+	check_repair_upgrade rmapbt && FEATURES+=("rmapbt")
+	check_repair_upgrade reflink && FEATURES+=("reflink")
+	check_repair_upgrade inobtcount && FEATURES+=("inobtcount")
+	check_repair_upgrade bigtime && FEATURES+=("bigtime")
+fi
+
+test "${#FEATURES[@]}" -eq 0 && \
+	_notrun "xfs_repair does not know how to add V5 features"
+
+declare -A FEATURE_STATE
+for f in "${FEATURES[@]}"; do
+	FEATURE_STATE["$f"]=0
+done
+
+for feat in "${FEATURES[@]}"; do
+	echo "-----------------------" >> $seqres.full
+
+	upgrade_start_message "$feat" | _tee_kernlog $seqres.full > /dev/null
+
+	opts="$(compute_mkfs_options)"
+	echo "mkfs.xfs $opts" >> $seqres.full
+
+	# Format filesystem
+	MKFS_OPTIONS="$opts" _scratch_mkfs &>> $seqres.full
+	res=$?
+	outcome="mkfs returns $res for $feat upgrade test"
+	echo "$outcome" >> $seqres.full
+	if [ $res -ne 0 ]; then
+		echo "$outcome"
+		continue
+	fi
+
+	# Create some files to make things interesting.
+	pre_exercise "$feat" || break
+
+	# Upgrade the fs
+	_scratch_xfs_repair -c "${feat}=1" &> $tmp.upgrade
+	res=$?
+	cat $tmp.upgrade >> $seqres.full
+	grep -q "^Adding" $tmp.upgrade || \
+		echo "xfs_repair ignored command to add $feat"
+
+	outcome="xfs_repair returns $res while adding $feat"
+	echo "$outcome" >> $seqres.full
+	if [ $res -ne 0 ]; then
+		# Couldn't upgrade filesystem, move on to the next feature.
+		FEATURE_STATE["$feat"]=1
+		continue
+	fi
+
+	# Make sure repair runs cleanly afterwards
+	_scratch_xfs_repair -n &>> $seqres.full
+	res=$?
+	outcome="xfs_repair -n returns $res after adding $feat"
+	echo "$outcome" >> $seqres.full
+	if [ $res -ne 0 ]; then
+		echo "$outcome"
+	fi
+
+	# Make sure we can still exercise the filesystem.
+	post_exercise "$feat" || break
+
+	# Update feature state for next run
+	FEATURE_STATE["$feat"]=1
+done
+
+# success, all done
+echo Silence is golden.
+status=0
+exit
diff --git a/tests/xfs/1856.out b/tests/xfs/1856.out
new file mode 100644
index 0000000000..3c569451b3
--- /dev/null
+++ b/tests/xfs/1856.out
@@ -0,0 +1,2 @@
+QA output created by 1856
+Silence is golden.


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1
@ 2023-12-31 18:12 Darrick J. Wong
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
                   ` (7 more replies)
  0 siblings, 8 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 18:12 UTC (permalink / raw)
  To: Chandan Babu R, Christoph Hellwig
  Cc: xfs, greg.marsden, shirley.ma, konrad.wilk, Matthew Wilcox,
	Dave Chinner, Catherine Hoang, fstests, Zorro Lang,
	Carlos Maiolino, Kent Overstreet

Hi everyone,

In last year's NYE deluges, I mentioned that I wanted to get online
repair merged for the 2023 LTS kernel.  That goal was not attained, so
now I want to get this merged in time for the 2024 LTS kernel.

(Big thanks to Dave earlier for helping to get all 120 scrub fixes
merged; and Christoph more recently for doing the same for the first 30
patches of repair and a bunch of rt refactorings from the modernization
series.)

But seriously, folks, this is dragging on unnecessarily.  Either you all
need to step up and actually review the 55 patchsets and 458 patches
needed to get online repair done, or decide to let me merge it and deal
with the consequences, which I will.  The only part of this deluge that
changes the ondisk format are the swapext patches that add a new log
intent item type.  Everything else is guarded by Kconfig options and
won't destabilize the rest of the filesystem.  I haven't changed the
swapext log intent item format since 2021.  2+ years to get feedback is
dysfunctional.

In the meantime, lack of upstream merging means that I cannot start
wider testing of this code with the people who run (b)leading edge XFS
code; I cannot solicit user and customer feedback because they don't
have the code; and there's no way I can meaningfully prioritize
improvements to the code because **I cannot get feedback**.

Fuzz and stress testing of online repairs have been running well for two
years now.  As of this writing, online repair can fix more things than
offline repair, and the fsstress+repair long soak test has passed 300
million repairs with zero problems observed.

(For comparison, the long soak fsx test recently passed 110 billion file
operations, so online fsck has a ways to go...)

--D

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
@ 2023-12-31 19:57 ` Darrick J. Wong
  2023-12-27 13:42   ` [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests Darrick J. Wong
                     ` (2 more replies)
  2023-12-31 19:57 ` [PATCHSET 2/8] xfsprogs: scale shards on ssds Darrick J. Wong
                   ` (6 subsequent siblings)
  7 siblings, 3 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:57 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

During testing of online fsck part 2, I noticed that the dquot iteration
code in online fsck had some math bugs that resulted in it only ever
checking the root dquot.  Loooking into why I never noticed that, I
discovered that fstests also never checked them.  Strengthen our testing
by adding that.

While we're at it, hide a few more inode fields from the fuzzer, since
their contents are completely user-controlled and have no other
validation.  Hence they just generate noise in the test system and
increase runtimes unnecessarily.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=fuzz-dquots
---
 check           |   12 ++++++++++++
 common/fuzzy    |   27 ++++++++++++++++++++++++---
 common/populate |   14 ++++++++++++++
 tests/xfs/425   |   10 +++++++---
 tests/xfs/426   |   10 +++++++---
 tests/xfs/427   |   10 +++++++---
 tests/xfs/428   |   10 +++++++---
 tests/xfs/429   |   10 +++++++---
 tests/xfs/430   |   10 +++++++---
 tests/xfs/487   |   10 +++++++---
 tests/xfs/488   |   10 +++++++---
 tests/xfs/489   |   10 +++++++---
 tests/xfs/779   |   10 +++++++---
 tests/xfs/780   |   10 +++++++---
 tests/xfs/781   |   10 +++++++---
 15 files changed, 134 insertions(+), 39 deletions(-)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET 2/8] xfsprogs: scale shards on ssds
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
@ 2023-12-31 19:57 ` Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 1/1] xfs: test scaling of the mkfs concurrency options Darrick J. Wong
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:57 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

For a long time, the maintainers have had a gut feeling that we could
optimize performance of XFS filesystems on non-mechanical storage by
scaling the number of allocation groups to be a multiple of the CPU
count.

With modern ~2022 hardware, it is common for systems to have more than
four CPU cores and non-striped SSDs ranging in size from 256GB to 4TB.
The default mkfs geometry still defaults to 4 AGs regardless of core
count, which was settled on in the age of spinning rust.

This patchset adds a different computation for AG count and log size
that is based entirely on a desired level of concurrency.  If we detect
storage that is non-rotational (or the sysadmin provides a CLI option),
then we will try to match the AG count to the CPU count to minimize AGF
contention and make the log large enough to minimize grant head
contention.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=mkfs-scale-geo-on-ssds

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=mkfs-scale-geo-on-ssds
---
 tests/xfs/1842     |   51 +++++++++++++++
 tests/xfs/1842.out |  177 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 228 insertions(+)
 create mode 100755 tests/xfs/1842
 create mode 100644 tests/xfs/1842.out


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
  2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
  2023-12-31 19:57 ` [PATCHSET 2/8] xfsprogs: scale shards on ssds Darrick J. Wong
@ 2023-12-31 19:57 ` Darrick J. Wong
  2023-12-27 13:43   ` [PATCH 1/4] xfs: online fuzz test known output Darrick J. Wong
                     ` (3 more replies)
  2023-12-31 19:57 ` [PATCHSET v29.0 4/8] fstests: atomic file updates Darrick J. Wong
                   ` (4 subsequent siblings)
  7 siblings, 4 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:57 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

Establish a baseline golden output for all current fuzz tests.  This
shouldn't be merged upstream because the output is very dependent on the
geometry of the filesystem that is created.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=fuzz-baseline
---
 tests/xfs/350.out |   91 +++++++++
 tests/xfs/351.out |   75 +++++++
 tests/xfs/353.out |   96 ++++++++++
 tests/xfs/354.out |   87 +++++++++
 tests/xfs/355.out |   47 +++++
 tests/xfs/356.out |   13 +
 tests/xfs/357.out |  109 +++++++++++
 tests/xfs/358.out |    5 
 tests/xfs/360.out |   30 +++
 tests/xfs/361.out |   14 +
 tests/xfs/362.out |    5 
 tests/xfs/364.out |    6 +
 tests/xfs/366.out |    6 +
 tests/xfs/368.out |    8 +
 tests/xfs/369.out |   57 ++++++
 tests/xfs/370.out |  417 +++++++++++++++++++++++++++++++++++++++++
 tests/xfs/371.out |  108 +++++++++++
 tests/xfs/372.out |    5 
 tests/xfs/374.out |   35 +++
 tests/xfs/375.out |   94 +++++++++
 tests/xfs/376.out |   22 ++
 tests/xfs/377.out |   62 ++++++
 tests/xfs/378.out |   22 ++
 tests/xfs/379.out |   74 +++++++
 tests/xfs/381.out |    1 
 tests/xfs/382.out |    4 
 tests/xfs/383.out |    4 
 tests/xfs/384.out |   38 ++++
 tests/xfs/385.out |   68 +++++++
 tests/xfs/386.out |   28 +++
 tests/xfs/388.out |  535 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/392.out |    7 +
 tests/xfs/394.out |   12 +
 tests/xfs/398.out |   38 ++++
 tests/xfs/399.out |   63 ++++++
 tests/xfs/400.out |   26 +++
 tests/xfs/401.out |   72 +++++++
 tests/xfs/402.out |    7 +
 tests/xfs/404.out |   33 +++
 tests/xfs/405.out |    5 
 tests/xfs/410.out |    6 +
 tests/xfs/412.out |   21 ++
 tests/xfs/413.out |   48 +++++
 tests/xfs/414.out |   23 ++
 tests/xfs/415.out |   56 ++++++
 tests/xfs/416.out |   22 ++
 tests/xfs/417.out |   56 ++++++
 tests/xfs/418.out |   90 +++++++++
 tests/xfs/425.out |  258 ++++++++++++++++++++++++++
 tests/xfs/426.out |  132 +++++++++++++
 tests/xfs/427.out |  258 ++++++++++++++++++++++++++
 tests/xfs/428.out |  132 +++++++++++++
 tests/xfs/429.out |  258 ++++++++++++++++++++++++++
 tests/xfs/430.out |  132 +++++++++++++
 tests/xfs/453.out |  152 +++++++++++++++
 tests/xfs/454.out |   96 ++++++++++
 tests/xfs/455.out |  134 +++++++++++++
 tests/xfs/456.out |  129 +++++++++++++
 tests/xfs/457.out |    5 
 tests/xfs/458.out |   44 ++++
 tests/xfs/459.out |    5 
 tests/xfs/460.out |    6 +
 tests/xfs/461.out |    6 +
 tests/xfs/462.out |    8 +
 tests/xfs/463.out |  525 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/464.out |    5 
 tests/xfs/465.out |   71 +++++++
 tests/xfs/466.out |   51 +++++
 tests/xfs/467.out |   47 +++++
 tests/xfs/469.out |    8 +
 tests/xfs/470.out |   79 ++++++++
 tests/xfs/471.out |    7 +
 tests/xfs/472.out |    7 +
 tests/xfs/474.out |    7 +
 tests/xfs/475.out |    6 +
 tests/xfs/477.out |   79 ++++++++
 tests/xfs/478.out |   91 +++++++++
 tests/xfs/479.out |    7 +
 tests/xfs/480.out |   24 ++
 tests/xfs/483.out |    6 +
 tests/xfs/484.out |   45 ++++
 tests/xfs/485.out |   51 +++++
 tests/xfs/486.out |   46 +++++
 tests/xfs/487.out |  242 ++++++++++++++++++++++++
 tests/xfs/488.out |  242 ++++++++++++++++++++++++
 tests/xfs/489.out |  242 ++++++++++++++++++++++++
 tests/xfs/496.out |   24 ++
 tests/xfs/498.out |   12 +
 tests/xfs/730.out |   10 +
 tests/xfs/734.out |    9 +
 tests/xfs/737.out |   14 +
 tests/xfs/747.out |  152 +++++++++++++++
 tests/xfs/748.out |   96 ++++++++++
 tests/xfs/749.out |  134 +++++++++++++
 tests/xfs/750.out |  129 +++++++++++++
 tests/xfs/751.out |    5 
 tests/xfs/752.out |   44 ++++
 tests/xfs/753.out |    5 
 tests/xfs/754.out |    6 +
 tests/xfs/755.out |    6 +
 tests/xfs/756.out |   61 ++++++
 tests/xfs/757.out |  525 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/758.out |    5 
 tests/xfs/759.out |   94 +++++++++
 tests/xfs/760.out |   64 ++++++
 tests/xfs/761.out |   66 +++++++
 tests/xfs/762.out |    1 
 tests/xfs/763.out |    8 +
 tests/xfs/764.out |   92 +++++++++
 tests/xfs/765.out |    7 +
 tests/xfs/766.out |   11 +
 tests/xfs/768.out |    7 +
 tests/xfs/769.out |    6 +
 tests/xfs/771.out |   91 +++++++++
 tests/xfs/772.out |   93 +++++++++
 tests/xfs/773.out |    7 +
 tests/xfs/774.out |   24 ++
 tests/xfs/775.out |    6 +
 tests/xfs/776.out |   59 ++++++
 tests/xfs/777.out |   69 +++++++
 tests/xfs/778.out |   60 ++++++
 tests/xfs/779.out |  296 +++++++++++++++++++++++++++++
 tests/xfs/780.out |  296 +++++++++++++++++++++++++++++
 tests/xfs/781.out |  296 +++++++++++++++++++++++++++++
 tests/xfs/782.out |   12 +
 tests/xfs/783.out |  210 +++++++++++++++++++++
 tests/xfs/784.out |   10 +
 tests/xfs/785.out |   23 ++
 tests/xfs/787.out |   23 ++
 tests/xfs/788.out |   23 ++
 130 files changed, 9585 insertions(+)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET v29.0 4/8] fstests: atomic file updates
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
                   ` (2 preceding siblings ...)
  2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
@ 2023-12-31 19:57 ` Darrick J. Wong
  2023-12-27 13:44   ` [PATCH 1/1] swapext: make sure that we don't swap unwritten extents unless they're part of a rt extent(??) Darrick J. Wong
  2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:57 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

This series creates a new FIEXCHANGE_RANGE system call to exchange
ranges of bytes between two files atomically.  This new functionality
enables data storage programs to stage and commit file updates such that
reader programs will see either the old contents or the new contents in
their entirety, with no chance of torn writes.  A successful call
completion guarantees that the new contents will be seen even if the
system fails.

The ability to swap extent mappings between files in this manner is
critical to supporting online filesystem repair, which is built upon the
strategy of constructing a clean copy of a damaged structure and
committing the new structure into the metadata file atomically.

User programs will be able to update files atomically by opening an
O_TMPFILE, reflinking the source file to it, making whatever updates
they want to make, and exchange the relevant ranges of the temp file
with the original file.  If the updates are aligned with the file block
size, a new (since v2) flag provides for exchanging only the written
areas.  Callers can arrange for the update to be rejected if the
original file has been changed.

The intent behind this new userspace functionality is to enable atomic
rewrites of arbitrary parts of individual files.  For years, application
programmers wanting to ensure the atomicity of a file update had to
write the changes to a new file in the same directory, fsync the new
file, rename the new file on top of the old filename, and then fsync the
directory.  People get it wrong all the time, and $fs hacks abound.

The reference implementation in XFS creates a new log incompat feature
and log intent items to track high level progress of swapping ranges of
two files and finish interrupted work if the system goes down.  Sample
code can be found in the corresponding changes to xfs_io to exercise the
use case mentioned above.

Note that this function is /not/ the O_DIRECT atomic file writes concept
that has also been floating around for years.  It is also not the
RWF_ATOMIC patchset that has been shared.  This RFC is constructed
entirely in software, which means that there are no limitations other
than the general filesystem limits.

As a side note, the original motivation behind the kernel functionality
is online repair of file-based metadata.  The atomic file swap is
implemented as an atomic inode fork swap, which means that we can
implement online reconstruction of extended attributes and directories
by building a new one in another inode and atomically swap the contents.

Subsequent patchsets adapt the online filesystem repair code to use
atomic extent swapping.  This enables repair functions to construct a
clean copy of a directory, xattr information, symbolic links, realtime
bitmaps, and realtime summary information in a temporary inode.  If this
completes successfully, the new contents can be swapped atomically into
the inode being repaired.  This is essential to avoid making corruption
problems worse if the system goes down in the middle of running repair.

This patchset also ports the old XFS extent swap ioctl interface to use
the new extent swap code.

For userspace, this series also includes the userspace pieces needed to
test the new functionality, and a sample implementation of atomic file
updates.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=atomic-file-updates

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=atomic-file-updates

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=atomic-file-updates

xfsdocs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-documentation.git/log/?h=atomic-file-updates
---
 tests/xfs/1213     |   73 ++++++++++++++++
 tests/xfs/1213.out |    2 
 tests/xfs/1214     |  232 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1214.out |    2 
 4 files changed, 309 insertions(+)
 create mode 100755 tests/xfs/1213
 create mode 100644 tests/xfs/1213.out
 create mode 100755 tests/xfs/1214
 create mode 100644 tests/xfs/1214.out


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
                   ` (3 preceding siblings ...)
  2023-12-31 19:57 ` [PATCHSET v29.0 4/8] fstests: atomic file updates Darrick J. Wong
@ 2023-12-31 19:58 ` Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 1/2] generic/453: test confusable name detection with 32-bit unicode codepoints Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 2/2] generic/453: check xfs_scrub detection of confusing job offers Darrick J. Wong
  2023-12-31 19:58 ` [PATCHSET v29.0 6/8] fstests: test systemd background services Darrick J. Wong
                   ` (2 subsequent siblings)
  7 siblings, 2 replies; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:58 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

In early 2023, malware researchers disclosed a phishing attack that was
targeted at people running Linux workstations.  The attack vector
involved the use of filenames containing what looked like a file
extension but instead contained a lookalike for the full stop (".")
and a common extension ("pdf").  Enhance xfs_scrub phase 5 to detect
these types of attacks and warn the system administrator.  Add
functional testing for this code.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-detect-deceptive-extensions

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=scrub-detect-deceptive-extensions
---
 tests/generic/453 |  111 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 99 insertions(+), 12 deletions(-)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET v29.0 6/8] fstests: test systemd background services
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
                   ` (4 preceding siblings ...)
  2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
@ 2023-12-31 19:58 ` Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 1/1] xfs: test xfs_scrub services Darrick J. Wong
  2023-12-31 19:58 ` [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime Darrick J. Wong
  2023-12-31 19:58 ` [PATCHSET 8/8] fstests: test upgrading older features Darrick J. Wong
  7 siblings, 1 reply; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:58 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

Add a couple of new tests to check that the systemd services for
xfs_scrub are at least minimally functional.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=scrub-improvements
---
 common/rc          |   22 ++++++++
 tests/xfs/1863     |  136 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1863.out |    6 ++
 3 files changed, 164 insertions(+)
 create mode 100755 tests/xfs/1863
 create mode 100644 tests/xfs/1863.out


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
                   ` (5 preceding siblings ...)
  2023-12-31 19:58 ` [PATCHSET v29.0 6/8] fstests: test systemd background services Darrick J. Wong
@ 2023-12-31 19:58 ` Darrick J. Wong
  2023-12-27 13:45   ` [PATCH 1/1] xfs/004: fix column extraction code Darrick J. Wong
  2023-12-31 19:58 ` [PATCHSET 8/8] fstests: test upgrading older features Darrick J. Wong
  7 siblings, 1 reply; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:58 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

This patchset dramatically reduces the runtime of the FITRIM calls made
during phase 8 of xfs_scrub.  It turns out that phase 8 can really get
bogged down if the free space contains a large number of very small
extents.  In these cases, the runtime can increase by an order of
magnitude to free less than 1% of the free space.  This is not worth the
time, since we're spending a lot of time to do very little work.  The
FITRIM ioctl allows us to specify a minimum extent length, so we can use
statistical methods to compute a minlen parameter.

It turns out xfs_db/spaceman already have the code needed to create
histograms of free space extent lengths.  We add the ability to compute
a CDF of the extent lengths, which make it easy to pick a minimum length
corresponding to 99% of the free space.  In most cases, this results in
dramatic reductions in phase 8 runtime.  Hence, move the histogram code
to libfrog, and wire up xfs_scrub, since phase 7 already walks the
fsmap.

We also add a new -o suboption to xfs_scrub so that people who /do/ want
to examine every free extent can do so.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-fstrim-minlen-freesp-histogram

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=scrub-fstrim-minlen-freesp-histogram
---
 tests/xfs/004 |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCHSET 8/8] fstests: test upgrading older features
  2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
                   ` (6 preceding siblings ...)
  2023-12-31 19:58 ` [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime Darrick J. Wong
@ 2023-12-31 19:58 ` Darrick J. Wong
  2023-12-27 13:46   ` [PATCH 1/1] xfs: test upgrading old features Darrick J. Wong
  7 siblings, 1 reply; 23+ messages in thread
From: Darrick J. Wong @ 2023-12-31 19:58 UTC (permalink / raw)
  To: djwong, zlang; +Cc: fstests, linux-xfs, guan

Hi all,

Here is a general regression test to make sure that we can invoke the
xfs_repair feature to add new features to V5 filesystems without errors.
There are already targeted functionality tests for inobtcount and
bigtime; this new one exists as a general upgrade exerciser.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=upgrade-older-features

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=upgrade-older-features
---
 tests/xfs/1856     |  247 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/1856.out |    2 
 2 files changed, 249 insertions(+)
 create mode 100755 tests/xfs/1856
 create mode 100644 tests/xfs/1856.out


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2024-01-01  0:46 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-31 18:12 [NYE PATCHRIVER 1/4] xfs: the rest of online repair part 1 Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET 1/8] fstests: fuzz non-root dquots on xfs Darrick J. Wong
2023-12-27 13:42   ` [PATCH 1/3] fuzzy: mask off a few more inode fields from the fuzz tests Darrick J. Wong
2023-12-27 13:43   ` [PATCH 2/3] fuzzy: allow FUZZ_REWRITE_DURATION to control fsstress runtime when fuzzing Darrick J. Wong
2023-12-27 13:43   ` [PATCH 3/3] fuzzy: test other dquot ids Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET 2/8] xfsprogs: scale shards on ssds Darrick J. Wong
2023-12-27 13:43   ` [PATCH 1/1] xfs: test scaling of the mkfs concurrency options Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET v29.0 3/8] fstests: establish baseline for fuzz tests Darrick J. Wong
2023-12-27 13:43   ` [PATCH 1/4] xfs: online fuzz test known output Darrick J. Wong
2023-12-27 13:44   ` [PATCH 2/4] xfs: offline " Darrick J. Wong
2023-12-27 13:44   ` [PATCH 3/4] xfs: norepair " Darrick J. Wong
2023-12-27 13:44   ` [PATCH 4/4] xfs: bothrepair " Darrick J. Wong
2023-12-31 19:57 ` [PATCHSET v29.0 4/8] fstests: atomic file updates Darrick J. Wong
2023-12-27 13:44   ` [PATCH 1/1] swapext: make sure that we don't swap unwritten extents unless they're part of a rt extent(??) Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 5/8] fstests: detect deceptive filename extensions Darrick J. Wong
2023-12-27 13:45   ` [PATCH 1/2] generic/453: test confusable name detection with 32-bit unicode codepoints Darrick J. Wong
2023-12-27 13:45   ` [PATCH 2/2] generic/453: check xfs_scrub detection of confusing job offers Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 6/8] fstests: test systemd background services Darrick J. Wong
2023-12-27 13:45   ` [PATCH 1/1] xfs: test xfs_scrub services Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET v29.0 7/8] fstests: use free space histograms to reduce fstrim runtime Darrick J. Wong
2023-12-27 13:45   ` [PATCH 1/1] xfs/004: fix column extraction code Darrick J. Wong
2023-12-31 19:58 ` [PATCHSET 8/8] fstests: test upgrading older features Darrick J. Wong
2023-12-27 13:46   ` [PATCH 1/1] xfs: test upgrading old features Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox