diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2018-05-01 08:40:03 -0700 |
---|---|---|
committer | Eryu Guan <guaneryu@gmail.com> | 2018-05-02 16:45:38 +0800 |
commit | e2fd1a080ecee8009ca749640ce0881665a89300 (patch) | |
tree | ddad4e46ba2695825dba42e26b5178b122cad202 | |
parent | d2603933ebc572c8106cea0fa723b1743d685544 (diff) | |
download | xfstests-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-x | tests/xfs/422 | 18 |
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" |