Re: [PATCH 2/2] xfs: test that a grown RT section can be filled

Hans Holmberg <[email protected]>
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-xfs
Message-ID <[email protected]>
On 09/06/2026 10:12, Christoph Hellwig wrote:
> This reproduces issues with zoned growfs.
> 
> Signed-off-by: Christoph Hellwig <[email protected]>

Great!

Reviewed-by: Hans Holmberg <[email protected]>

> ---
>  tests/xfs/4201     | 58 ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/4201.out |  3 +++
>  2 files changed, 61 insertions(+)
>  create mode 100755 tests/xfs/4201
>  create mode 100644 tests/xfs/4201.out
> 
> diff --git a/tests/xfs/4201 b/tests/xfs/4201
> new file mode 100755
> index 000000000000..1f1c8e7eb140
> --- /dev/null
> +++ b/tests/xfs/4201
> @@ -0,0 +1,58 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (c) 2026 Christoph Hellwig.
> +#
> +# FS QA Test No. 4201
> +#
> +# Test that the entire device capacity can be used after resizing a realtime
> +# device.
> +#
> +. ./common/preamble
> +_begin_fstest auto quick realtime growfs zone
> +
> +. ./common/filter
> +. ./common/zoned
> +
> +_require_scratch
> +_require_external_realtime_device
> +
> +minrtdevsize=$((5 * 1024 * 1024)) #kB
> +rtdevsize=`_get_device_size $SCRATCH_RTDEV`
> +if [ $rtdevsize -lt $minrtdevsize ]; then
> +	_notrun "SCRATCH_RTDEV device too small, $rtdevsize < $minrtdevsize"
> +fi
> +
> +_scratch_mkfs -r size=1g  >> $seqres.full 2>&1
> +rblocks=`_scratch_xfs_get_sb_field rblocks`
> +
> +_scratch_mount
> +_xfs_force_bdev realtime $SCRATCH_MNT
> +free_zones_pre=$(_xfs_get_mountstat $SCRATCH_MNT "free zones:")
> +
> +echo "Growing file system"
> +$XFS_GROWFS_PROG $SCRATCH_MNT -R $((2 * rblocks)) >> $seqres.full 2>&1 || \
> +	_fail "growfs failed"
> +
> +# For zoned file systems, check that the growfs did increase the available free
> +# zones.  This avoids a hang on unfixed kernels when filling later.
> +free_zones_post=$(_xfs_get_mountstat $SCRATCH_MNT "free zones:")
> +if _has_fs_sysfs_attr $SCRATCH_DEV "zoned/max_open_zones"; then
> +	if [ "$free_zones_pre" == "$free_zones_post" ]; then
> +		_fail "growfs did not increase free zones"
> +	fi
> +fi
> +
> +echo "Filling grown file system"
> +writesize_mb=32
> +dd if=/dev/zero of=$SCRATCH_MNT/fill bs=${writesize_mb}M oflag=direct \
> +	>> $seqres.full 2>&1
> +
> +blocksize=$(_get_block_size $SCRATCH_MNT)
> +free_blocks=$(stat -f $SCRATCH_MNT -c '%f')
> +
> +# check that we really mostly filled the file system
> +_within_tolerance "free space after fill" \
> +	$free_blocks $((writesize_mb * 1024 * 1024 / blocksize)) 100%
> +
> +status=0
> +exit
> diff --git a/tests/xfs/4201.out b/tests/xfs/4201.out
> new file mode 100644
> index 000000000000..2e7ac4019f3f
> --- /dev/null
> +++ b/tests/xfs/4201.out
> @@ -0,0 +1,3 @@
> +QA output created by 4201
> +Growing file system
> +Filling grown file system
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.