Re: [PATCH v2] fstests: test premature ENOSPC in zoned garbage collection
Johannes Thumshirn <[email protected]>
| Newsgroups | org.kernel.vger.fstests,org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <[email protected]> |
On 4/14/26 4:23 PM, Filipe Manana wrote: > On Tue, Apr 14, 2026 at 2:50 PM Johannes Thumshirn > <[email protected]> wrote: >> This test stresses garbage collection in zoned file systems by >> constantly overwriting the same file. It is inspired by a reproducer for >> a btrfs bugifx. >> >> Signed-off-by: Johannes Thumshirn <[email protected]> >> --- >> Changes to v1: >> - Rebased onto patches-in-queue >> - Use "generic/999" to avoid any conflicts >> - Change the number of loops to number of seq zones >> - Remove bogus "2>&1" >> >> Link to v1: >> https://lore.kernel.org/all/[email protected]/ >> >> >> tests/generic/999 | 48 +++++++++++++++++++++++++++++++++++++++++++ >> tests/generic/999.out | 2 ++ >> 2 files changed, 50 insertions(+) >> create mode 100755 tests/generic/999 >> create mode 100644 tests/generic/999.out >> >> diff --git a/tests/generic/999 b/tests/generic/999 >> new file mode 100755 >> index 000000000000..4ac6c0ff935c >> --- /dev/null >> +++ b/tests/generic/999 >> @@ -0,0 +1,48 @@ >> +#! /bin/bash >> +# SPDX-License-Identifier: GPL-2.0 >> +# Copyright (c) 2026 Western Digital Corporation. All Rights Reserved. >> +# >> +# FS QA Test 999 >> +# >> +# This test stresses garbage collection in zoned file systems by constantly >> +# overwriting the same file. It is inspired by a reproducer for a btrfs bugifx. >> + >> +. ./common/preamble >> +_begin_fstest auto quick zone >> + >> +. ./common/filter >> + >> +_require_scratch_size $((16 * 1024 * 1024)) >> +_require_zoned_device "$SCRATCH_DEV" >> + >> +# This test requires specific data space usage, skip if we have compression >> +# enabled. >> +_require_no_compress >> + >> + >> +_fixed_by_fs_commit XXXXXXXXXXXX \ >> + "btrfs: zoned: cap delayed refs metadata reservation to avoid overcommit" >> +_fixed_by_fs_commit XXXXXXXXXXXX \ >> + "btrfs: zoned: move partially zone_unusable block groups to reclaim list" > Already in Linus' tree, commit hash 258e46a6385c. > >> +_fixed_by_fs_commit XXXXXXXXXXXX \ >> + "btrfs: zoned: add zone reclaim flush state for DATA space_info" > Also in Linus' tree, commit hash e2a7fd22378f. > >> + >> + >> +_scratch_mkfs_sized $((16 * 1024 * 1024 * 1024)) &>>$seqres.full >> +_scratch_mount >> + >> +blocks="$(df -TB 1G $SCRATCH_DEV |\ >> + $AWK_PROG -v fstyp="$FSTYP" 'match($2, fstyp) {print $3}')" >> + >> +loops=$(echo "$blocks * 4 - 2" | bc) > nit: why pipe to bc? Wouldn't a simple bash expression like the following work? > > loops=$(( blocks * 4 - 2 )) > > Otherwise it looks fine to me, thanks. Disregard that, stupid me forgot to git commit --amend...