aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2018-05-01 08:40:03 -0700
committerEryu Guan <guaneryu@gmail.com>2018-05-02 16:45:38 +0800
commite2fd1a080ecee8009ca749640ce0881665a89300 (patch)
treeddad4e46ba2695825dba42e26b5178b122cad202
parentd2603933ebc572c8106cea0fa723b1743d685544 (diff)
downloadxfstests-dev-e2fd1a080ecee8009ca749640ce0881665a89300.tar.gz
xfs/422: add fsstress to the freeze-and-rmap-repair race test
Add fsstress to the pile of things that we race with rmap repair to ensure that the rmap repair isolates the filesystem correctly while it is doing its repairs. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Eryu Guan <guaneryu@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
-rwxr-xr-xtests/xfs/42218
1 files changed, 17 insertions, 1 deletions
diff --git a/tests/xfs/422 b/tests/xfs/422
index a8fa5d5a59..abb842ff78 100755
--- a/tests/xfs/422
+++ b/tests/xfs/422
@@ -51,6 +51,7 @@ _supported_fs xfs
_require_xfs_scratch_rmapbt
_require_xfs_io_command "scrub"
_require_xfs_io_error_injection "force_repair"
+_require_command "$KILLALL_PROG" killall
echo "Format and populate"
_scratch_mkfs > "$seqres.full" 2>&1
@@ -89,18 +90,33 @@ repair_loop() {
$XFS_IO_PROG -x -c 'repair rmapbt 0' -c 'repair rmapbt 1' $SCRATCH_MNT 2>&1 | filter_output
done
}
+stress_loop() {
+ end="$1"
+
+ FSSTRESS_ARGS=$(_scale_fsstress_args -p 4 -d $SCRATCH_MNT -n 2000 $FSSTRESS_AVOID)
+ while [ "$(date +%s)" -lt $end ]; do
+ $FSSTRESS_PROG $FSSTRESS_ARGS >> $seqres.full
+ done
+}
$XFS_IO_PROG -x -c 'inject force_repair' $SCRATCH_MNT
start=$(date +%s)
end=$((start + (30 * TIME_FACTOR) ))
echo "Loop started at $(date --date="@${start}"), ending at $(date --date="@${end}")" >> $seqres.full
+stress_loop $end &
freeze_loop $end &
repair_loop $end &
-while [ "$(date +%s)" -lt $end ]; do
+# Wait until 2 seconds after the loops should have finished...
+while [ "$(date +%s)" -lt $((end + 2)) ]; do
sleep 1
done
+
+# ...and clean up after the loops in case they didn't do it themselves.
+$KILLALL_PROG -TERM xfs_io fsstress >> $seqres.full 2>&1
+$XFS_IO_PROG -x -c 'thaw' $SCRATCH_MNT >> $seqres.full 2>&1
+
echo "Loop finished at $(date)" >> $seqres.full
echo "Test done"