* [PATCH] xfs: add a test for number of open zones on conventional devices
@ 2026-03-30 13:00 Christoph Hellwig
2026-03-31 10:00 ` Damien Le Moal
0 siblings, 1 reply; 3+ messages in thread
From: Christoph Hellwig @ 2026-03-30 13:00 UTC (permalink / raw)
To: zlang; +Cc: djwong, dlemoal, hans.holmberg, fstests, linux-xfs
Test that mounts of zoned file systems on conventional devices don't
create more open zones than allowed when the last blocks in one or more
zones have been invalidated.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
tests/xfs/4201 | 65 ++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/4201.out | 1 +
2 files changed, 66 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..a1f30cb7e739
--- /dev/null
+++ b/tests/xfs/4201
@@ -0,0 +1,65 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2026 Christoph Hellwig.
+#
+# FS QA Test No. 4201
+#
+# Test that mounts of zoned file systems on conventional devices don't create
+# more open zones than allowed when the last blocks in one or more zones have
+# been invalidated.
+#
+
+. ./common/preamble
+_begin_fstest auto quick zone
+
+_require_scratch
+_require_odirect
+_require_non_zoned_device $SCRATCH_DEV
+_require_non_zoned_device $SCRATCH_RTDEV
+
+open_zones=5
+blocks=65536
+bsize=4096
+
+zone_size_mib=$((blocks * bsize / 1024 / 1024))
+file_size_mib=$((zone_size_mib / 2))
+nr_files=$((open_zones * 3 - 1))
+
+echo "zone size: $zone_size_mib" >>$seqres.full
+echo "file size: $file_size_mib" >>$seqres.full
+echo "nr files: $nr_files" >>$seqres.full
+
+_scratch_mkfs -b size=${bsize} -r zoned=1,rgsize=${blocks}b \
+ > "$seqres.full" 2>&1
+_scratch_mount -o max_open_zones=${open_zones}
+
+_require_fs_sysfs zoned/nr_open_zones
+
+for i in $(seq 1 $nr_files); do
+ dd if=/dev/zero of=$SCRATCH_MNT/$i bs=1M count=$file_size_mib \
+ oflag=direct > /dev/null 2>&1
+done
+
+rm $SCRATCH_MNT/4
+rm $SCRATCH_MNT/5
+rm $SCRATCH_MNT/6
+rm $SCRATCH_MNT/7
+
+_scratch_unmount
+_scratch_mount -o max_open_zones=${open_zones}
+
+max_open=$(_get_fs_sysfs_attr $SCRATCH_DEV zoned/max_open_zones)
+nr_open=$(_get_fs_sysfs_attr $SCRATCH_DEV zoned/nr_open_zones)
+
+if [ ${max_open} -ne $((open_zones - 1)) ]; then
+ _fail "Test needs adjustments for multiple open GC zones"
+fi
+
+if [ ${nr_open} -gt ${max_open} ]; then
+ _fail "Too many open zones: $nr_open/$max_open"
+fi
+
+_scratch_unmount
+
+status=0
+exit
diff --git a/tests/xfs/4201.out b/tests/xfs/4201.out
new file mode 100644
index 000000000000..32e395dd4d6d
--- /dev/null
+++ b/tests/xfs/4201.out
@@ -0,0 +1 @@
+QA output created by 4201
--
2.47.3
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] xfs: add a test for number of open zones on conventional devices
2026-03-30 13:00 [PATCH] xfs: add a test for number of open zones on conventional devices Christoph Hellwig
@ 2026-03-31 10:00 ` Damien Le Moal
2026-03-31 15:15 ` Christoph Hellwig
0 siblings, 1 reply; 3+ messages in thread
From: Damien Le Moal @ 2026-03-31 10:00 UTC (permalink / raw)
To: Christoph Hellwig, zlang; +Cc: djwong, hans.holmberg, fstests, linux-xfs
On 3/30/26 22:00, Christoph Hellwig wrote:
> Test that mounts of zoned file systems on conventional devices don't
> create more open zones than allowed when the last blocks in one or more
> zones have been invalidated.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> tests/xfs/4201 | 65 ++++++++++++++++++++++++++++++++++++++++++++++
> tests/xfs/4201.out | 1 +
> 2 files changed, 66 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..a1f30cb7e739
> --- /dev/null
> +++ b/tests/xfs/4201
> @@ -0,0 +1,65 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2026 Christoph Hellwig.
> +#
> +# FS QA Test No. 4201
> +#
> +# Test that mounts of zoned file systems on conventional devices don't create
> +# more open zones than allowed when the last blocks in one or more zones have
> +# been invalidated.
> +#
> +
> +. ./common/preamble
> +_begin_fstest auto quick zone
> +
> +_require_scratch
> +_require_odirect
> +_require_non_zoned_device $SCRATCH_DEV
> +_require_non_zoned_device $SCRATCH_RTDEV
> +
> +open_zones=5
> +blocks=65536
> +bsize=4096
> +
> +zone_size_mib=$((blocks * bsize / 1024 / 1024))
> +file_size_mib=$((zone_size_mib / 2))
> +nr_files=$((open_zones * 3 - 1))
> +
> +echo "zone size: $zone_size_mib" >>$seqres.full
> +echo "file size: $file_size_mib" >>$seqres.full
> +echo "nr files: $nr_files" >>$seqres.full
> +
> +_scratch_mkfs -b size=${bsize} -r zoned=1,rgsize=${blocks}b \
> + > "$seqres.full" 2>&1
> +_scratch_mount -o max_open_zones=${open_zones}
> +
> +_require_fs_sysfs zoned/nr_open_zones
> +
> +for i in $(seq 1 $nr_files); do
> + dd if=/dev/zero of=$SCRATCH_MNT/$i bs=1M count=$file_size_mib \
> + oflag=direct > /dev/null 2>&1
> +done
> +
> +rm $SCRATCH_MNT/4
> +rm $SCRATCH_MNT/5
> +rm $SCRATCH_MNT/6
> +rm $SCRATCH_MNT/7
Hmmm. I think you should delete odd numbered files only since they are going to
be written at the end of a zone. Otherwise, you make the zone empty, and it will
thus not be considered as open.
Something like:
for (( i=0; i<$nr_files; i=$(( i + 2 )) )); do
rm $SCRATCH_MNT/$(( i + 1))
done
should generate enough open zones.
> +
> +_scratch_unmount
> +_scratch_mount -o max_open_zones=${open_zones}
> +
> +max_open=$(_get_fs_sysfs_attr $SCRATCH_DEV zoned/max_open_zones)
> +nr_open=$(_get_fs_sysfs_attr $SCRATCH_DEV zoned/nr_open_zones)
> +
> +if [ ${max_open} -ne $((open_zones - 1)) ]; then
> + _fail "Test needs adjustments for multiple open GC zones"
> +fi
> +
> +if [ ${nr_open} -gt ${max_open} ]; then
> + _fail "Too many open zones: $nr_open/$max_open"
> +fi
> +
> +_scratch_unmount
> +
> +status=0
> +exit
> diff --git a/tests/xfs/4201.out b/tests/xfs/4201.out
> new file mode 100644
> index 000000000000..32e395dd4d6d
> --- /dev/null
> +++ b/tests/xfs/4201.out
> @@ -0,0 +1 @@
> +QA output created by 4201
--
Damien Le Moal
Western Digital Research
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] xfs: add a test for number of open zones on conventional devices
2026-03-31 10:00 ` Damien Le Moal
@ 2026-03-31 15:15 ` Christoph Hellwig
0 siblings, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2026-03-31 15:15 UTC (permalink / raw)
To: Damien Le Moal
Cc: Christoph Hellwig, zlang, djwong, hans.holmberg, fstests,
linux-xfs
On Tue, Mar 31, 2026 at 07:00:39PM +0900, Damien Le Moal wrote:
> Hmmm. I think you should delete odd numbered files only since they are going to
> be written at the end of a zone. Otherwise, you make the zone empty, and it will
> thus not be considered as open.
Yes, but due to the unevent number I did reproduce the bug even
with this version. I tried your loop and this overshoots the open
zone limit even more without the fix, so I'll switch to that.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-31 15:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-30 13:00 [PATCH] xfs: add a test for number of open zones on conventional devices Christoph Hellwig
2026-03-31 10:00 ` Damien Le Moal
2026-03-31 15:15 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox