From 0c5229a2f76ec0783e51358fc9719431cc80043d Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Thu, 20 Feb 2025 13:47:11 -0800 Subject: [PATCH] xfs: race fsstress with realtime rmap btree scrub and repair Race checking and rebuilding realtime rmap btrees with fsstress. Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig Signed-off-by: Zorro Lang --- tests/xfs/816 | 2 +- tests/xfs/822 | 39 +++++++++++++++++++++++++++++++++++++++ tests/xfs/822.out | 2 ++ tests/xfs/823 | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/823.out | 2 ++ tests/xfs/824 | 39 +++++++++++++++++++++++++++++++++++++++ tests/xfs/824.out | 2 ++ 7 files changed, 130 insertions(+), 1 deletion(-) create mode 100755 tests/xfs/822 create mode 100644 tests/xfs/822.out create mode 100755 tests/xfs/823 create mode 100644 tests/xfs/823.out create mode 100755 tests/xfs/824 create mode 100644 tests/xfs/824.out diff --git a/tests/xfs/816 b/tests/xfs/816 index 76bc44f54..73faf72e5 100755 --- a/tests/xfs/816 +++ b/tests/xfs/816 @@ -46,7 +46,7 @@ done # Metapath verbs that take a rt group number for ((rgno = 0; rgno < rgcount; rgno++)); do - for v in rtbitmap rtsummary; do + for v in rtbitmap rtsummary rtrmapbt; do testio=$(try_verb "$v" "$rgno") test -z "$testio" && verbs+=("$v $rgno") done diff --git a/tests/xfs/822 b/tests/xfs/822 new file mode 100755 index 000000000..552cccba7 --- /dev/null +++ b/tests/xfs/822 @@ -0,0 +1,39 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022-2025 Oracle. All Rights Reserved. +# +# FS QA Test No. 822 +# +# Race fsstress and rtrmapbt scrub for a while to see if we crash or livelock. +# +. ./common/preamble +_begin_fstest scrub fsstress_scrub + +_cleanup() { + _scratch_xfs_stress_scrub_cleanup &> /dev/null + cd / + rm -r -f $tmp.* +} +_register_cleanup "_cleanup" BUS + +. ./common/filter +. ./common/fuzzy +. ./common/inject +. ./common/xfs + +_require_realtime +_require_scratch +_require_xfs_stress_scrub + +_scratch_mkfs > "$seqres.full" 2>&1 +_scratch_mount +_require_xfs_has_feature "$SCRATCH_MNT" realtime +_require_xfs_has_feature "$SCRATCH_MNT" rmapbt +_xfs_force_bdev realtime $SCRATCH_MNT + +_scratch_xfs_stress_scrub -s "scrub rtrmapbt %rgno%" + +# success, all done +echo Silence is golden +status=0 +exit diff --git a/tests/xfs/822.out b/tests/xfs/822.out new file mode 100644 index 000000000..c0e6e7f3c --- /dev/null +++ b/tests/xfs/822.out @@ -0,0 +1,2 @@ +QA output created by 822 +Silence is golden diff --git a/tests/xfs/823 b/tests/xfs/823 new file mode 100755 index 000000000..892e6d773 --- /dev/null +++ b/tests/xfs/823 @@ -0,0 +1,45 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022-2025 Oracle. All Rights Reserved. +# +# FS QA Test No. 823 +# +# Race fsstress and realtime bitmap repair for a while to see if we crash or +# livelock. +# +. ./common/preamble +_begin_fstest online_repair fsstress_online_repair + +_cleanup() { + _scratch_xfs_stress_scrub_cleanup &> /dev/null + cd / + rm -r -f $tmp.* +} +_register_cleanup "_cleanup" BUS + +. ./common/filter +. ./common/fuzzy +. ./common/inject +. ./common/xfs + +_require_realtime +_require_scratch +_require_xfs_stress_online_repair + +_scratch_mkfs > "$seqres.full" 2>&1 +_scratch_mount +_require_xfs_has_feature "$SCRATCH_MNT" realtime +_xfs_force_bdev realtime $SCRATCH_MNT + +if _xfs_has_feature "$SCRATCH_MNT" rtgroups; then + _scratch_xfs_stress_online_repair -s "repair rtbitmap %rgno%" +elif xfs_io -c 'help scrub' | grep -q rgsuper; then + _scratch_xfs_stress_online_repair -s "repair rtbitmap 0" +else + _scratch_xfs_stress_online_repair -s "repair rtbitmap" +fi + +# success, all done +echo Silence is golden +status=0 +exit diff --git a/tests/xfs/823.out b/tests/xfs/823.out new file mode 100644 index 000000000..44bfc2be6 --- /dev/null +++ b/tests/xfs/823.out @@ -0,0 +1,2 @@ +QA output created by 823 +Silence is golden diff --git a/tests/xfs/824 b/tests/xfs/824 new file mode 100755 index 000000000..430545ef3 --- /dev/null +++ b/tests/xfs/824 @@ -0,0 +1,39 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022-2025 Oracle. All Rights Reserved. +# +# FS QA Test No. 824 +# +# Race fsstress and rtrmapbt repair for a while to see if we crash or livelock. +# +. ./common/preamble +_begin_fstest online_repair fsstress_online_repair + +_cleanup() { + _scratch_xfs_stress_scrub_cleanup &> /dev/null + cd / + rm -r -f $tmp.* +} +_register_cleanup "_cleanup" BUS + +. ./common/filter +. ./common/fuzzy +. ./common/inject +. ./common/xfs + +_require_realtime +_require_scratch +_require_xfs_stress_online_repair + +_scratch_mkfs > "$seqres.full" 2>&1 +_scratch_mount +_require_xfs_has_feature "$SCRATCH_MNT" realtime +_require_xfs_has_feature "$SCRATCH_MNT" rmapbt +_xfs_force_bdev realtime $SCRATCH_MNT + +_scratch_xfs_stress_online_repair -s "repair rtrmapbt %rgno%" + +# success, all done +echo Silence is golden +status=0 +exit diff --git a/tests/xfs/824.out b/tests/xfs/824.out new file mode 100644 index 000000000..6cf432abb --- /dev/null +++ b/tests/xfs/824.out @@ -0,0 +1,2 @@ +QA output created by 824 +Silence is golden -- 2.49.0