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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.