Re: [PATCH v3] generic/793: limit number of overwrites
Hans Holmberg <[email protected]>
| Newsgroups | org.kernel.vger.fstests,org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <[email protected]> |
On 29/04/2026 22:46, Johannes Thumshirn wrote: > Testcase generic/793 overwrites a 1GB file "number of sequential zones" > times in order to trigger a bug in zoned BTRFS' garbage collection. But on > scratch devices with a huge number of sequential zones (like SMR drives) > this can cause very long runtimes. > > As the testcase also limits the filesystem size to 16GB, constraint the > number of overwrite loops to the number of sequential zones in the > filesystem. This still guarantees that the file will be overwritten often > enough to trigger the bug while not exploding the overall test runtime. > > Reported-by: Shin'ichiro Kawasaki <[email protected]> > Reviewed-by: Christoph Hellwig <[email protected]> > Reviewed-by: Christoph Hellwig <[email protected]> > Signed-off-by: Johannes Thumshirn <[email protected]> > --- > > Changes to v2: > - Re-add $BLKZONE_PROG > > tests/generic/793 | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/tests/generic/793 b/tests/generic/793 > index a59e84694309..0d3b0bfcac5e 100755 > --- a/tests/generic/793 > +++ b/tests/generic/793 > @@ -11,6 +11,7 @@ > _begin_fstest auto quick zone > > . ./common/filter > +. ./common/zoned > > _require_scratch_size $((16 * 1024 * 1024)) > > @@ -34,12 +35,14 @@ _fixed_by_fs_commit btrfs 258e46a6385c \ > _fixed_by_fs_commit btrfs e2a7fd22378f \ > "btrfs: zoned: add zone reclaim flush state for DATA space_info" > > -_scratch_mkfs_sized $((16 * 1024 * 1024 * 1024)) &>>$seqres.full > +fssize=$((16 * 1024 * 1024 * 1024)) > +_scratch_mkfs_sized ${fssize} &>>$seqres.full > _scratch_mount > > -# Overwrite the data "number of seq zones" times, this is arbitrarily chosen > +# Overwrite the data "number of zones in fs" times, this is arbitrarily chosen > # but triggers the original bug reliably > -loops=$($BLKZONE_PROG report $zoned_dev | grep -c "SEQ_WRITE_REQUIRED") > +zsize=$(_zone_capacity 0 $zoned_dev) > +loops=$(( fssize/zsize)) > > for (( i = 0; i < $loops; i++ )); do > dd if=/dev/zero of=$SCRATCH_MNT/test bs=1M count=1024 status=none Looks good, Reviewed-by: Hans Holmberg <[email protected]>