Re: [PATCH v2] 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 24/04/2026 13:48, 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]> > Signed-off-by: Johannes Thumshirn <[email protected]> > --- > tests/generic/793 | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/tests/generic/793 b/tests/generic/793 > index a59e84694309..fcfbc4983d7c 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)) > > @@ -21,7 +22,6 @@ else > fi > > _require_zoned_device "$zoned_dev" > -_require_command "$BLKZONE_PROG" blkzone _zone_capacity uses BLKZONE_PROG, so this needs to stay. With that fixed, this looks good. Reviewed-by: Hans Holmberg <[email protected]> > > # This test requires specific data space usage, skip if we have compression > # enabled. > @@ -34,12 +34,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