* [PATCH 0/2] Some minor improvements for zoned mode
@ 2025-09-17 12:48 Damien Le Moal
2025-09-17 12:48 ` [PATCH 1/2] xfs: Improve zone statistics message Damien Le Moal
2025-09-17 12:48 ` [PATCH 2/2] xfs: Improve default maximum number of open zones Damien Le Moal
0 siblings, 2 replies; 7+ messages in thread
From: Damien Le Moal @ 2025-09-17 12:48 UTC (permalink / raw)
To: Carlos Maiolino, linux-xfs; +Cc: Christoph Hellwig
A couple of patches to improve a mount meaasge and to improve (reduce)
the default maximum number of open zones for large capacity regular
devices using the zoned allocatror.
Damien Le Moal (2):
xfs: Improve zone statistics message
xfs: Improve default maximum number of open zones
fs/xfs/libxfs/xfs_zones.h | 7 +++++++
fs/xfs/xfs_zone_alloc.c | 4 ++--
2 files changed, 9 insertions(+), 2 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] xfs: Improve zone statistics message
2025-09-17 12:48 [PATCH 0/2] Some minor improvements for zoned mode Damien Le Moal
@ 2025-09-17 12:48 ` Damien Le Moal
2025-09-17 17:47 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
2025-09-17 12:48 ` [PATCH 2/2] xfs: Improve default maximum number of open zones Damien Le Moal
1 sibling, 2 replies; 7+ messages in thread
From: Damien Le Moal @ 2025-09-17 12:48 UTC (permalink / raw)
To: Carlos Maiolino, linux-xfs; +Cc: Christoph Hellwig
Reword the information message displayed in xfs_mount_zones()
indicating the total zone count and maximum number of open zones.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
---
fs/xfs/xfs_zone_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/xfs/xfs_zone_alloc.c b/fs/xfs/xfs_zone_alloc.c
index 23a027387933..f152b2182004 100644
--- a/fs/xfs/xfs_zone_alloc.c
+++ b/fs/xfs/xfs_zone_alloc.c
@@ -1244,7 +1244,7 @@ xfs_mount_zones(
if (!mp->m_zone_info)
return -ENOMEM;
- xfs_info(mp, "%u zones of %u blocks size (%u max open)",
+ xfs_info(mp, "%u zones of %u blocks (%u max open zones)",
mp->m_sb.sb_rgcount, mp->m_groups[XG_TYPE_RTG].blocks,
mp->m_max_open_zones);
trace_xfs_zones_mount(mp);
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] xfs: Improve default maximum number of open zones
2025-09-17 12:48 [PATCH 0/2] Some minor improvements for zoned mode Damien Le Moal
2025-09-17 12:48 ` [PATCH 1/2] xfs: Improve zone statistics message Damien Le Moal
@ 2025-09-17 12:48 ` Damien Le Moal
2025-09-17 17:48 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
1 sibling, 2 replies; 7+ messages in thread
From: Damien Le Moal @ 2025-09-17 12:48 UTC (permalink / raw)
To: Carlos Maiolino, linux-xfs; +Cc: Christoph Hellwig
For regular block devices using the zoned allocator, the default
maximum number of open zones is set to 1/4 of the number of realtime
groups. For a large capacity device, this leads to a very large limit.
E.g. with a 26 TB HDD:
mount /dev/sdb /mnt
...
XFS (sdb): 95836 zones of 65536 blocks size (23959 max open)
In turn such large limit on the number of open zones can lead, depending
on the workload, on a very large number of concurrent write streams
which devices generally do not handle well, leading to poor performance.
Introduce the default limit XFS_DEFAULT_MAX_OPEN_ZONES, defined as 128
to match the hardware limit of most SMR HDDs available today, and use
this limit to set mp->m_max_open_zones in xfs_calc_open_zones() instead
of calling xfs_max_open_zones(), when the user did not specify a limit
with the max_open_zones mount option.
For the 26 TB HDD example, we now get:
mount /dev/sdb /mnt
...
XFS (sdb): 95836 zones of 65536 blocks (128 max open zones)
This change does not prevent the user from specifying a lareger number
for the open zones limit. E.g.
mount -o max_open_zones=4096 /dev/sdb /mnt
...
XFS (sdb): 95836 zones of 65536 blocks (4096 max open zones)
Finally, since xfs_calc_open_zones() checks and caps the
mp->m_max_open_zones limit against the value calculated by
xfs_max_open_zones() for any type of device, this new default limit does
not increase m_max_open_zones for small capacity devices.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
---
fs/xfs/libxfs/xfs_zones.h | 7 +++++++
fs/xfs/xfs_zone_alloc.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/fs/xfs/libxfs/xfs_zones.h b/fs/xfs/libxfs/xfs_zones.h
index c4f1367b2cca..6005f5412363 100644
--- a/fs/xfs/libxfs/xfs_zones.h
+++ b/fs/xfs/libxfs/xfs_zones.h
@@ -29,6 +29,13 @@ struct xfs_rtgroup;
#define XFS_OPEN_GC_ZONES 1U
#define XFS_MIN_OPEN_ZONES (XFS_OPEN_GC_ZONES + 1U)
+/*
+ * For zoned device that do not have a limit on the number of open zones, and
+ * for reguilar devices using the zoned allocator, use this value as the default
+ * limit on the number of open zones.
+ */
+#define XFS_DEFAULT_MAX_OPEN_ZONES 128
+
bool xfs_zone_validate(struct blk_zone *zone, struct xfs_rtgroup *rtg,
xfs_rgblock_t *write_pointer);
diff --git a/fs/xfs/xfs_zone_alloc.c b/fs/xfs/xfs_zone_alloc.c
index f152b2182004..1147bacb2da8 100644
--- a/fs/xfs/xfs_zone_alloc.c
+++ b/fs/xfs/xfs_zone_alloc.c
@@ -1131,7 +1131,7 @@ xfs_calc_open_zones(
if (bdev_open_zones)
mp->m_max_open_zones = bdev_open_zones;
else
- mp->m_max_open_zones = xfs_max_open_zones(mp);
+ mp->m_max_open_zones = XFS_DEFAULT_MAX_OPEN_ZONES;
}
if (mp->m_max_open_zones < XFS_MIN_OPEN_ZONES) {
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] xfs: Improve zone statistics message
2025-09-17 12:48 ` [PATCH 1/2] xfs: Improve zone statistics message Damien Le Moal
@ 2025-09-17 17:47 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
1 sibling, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2025-09-17 17:47 UTC (permalink / raw)
To: Damien Le Moal; +Cc: Carlos Maiolino, linux-xfs, Christoph Hellwig
Please don't captitalize the start of the commit messages.
Except for that it looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] xfs: Improve default maximum number of open zones
2025-09-17 12:48 ` [PATCH 2/2] xfs: Improve default maximum number of open zones Damien Le Moal
@ 2025-09-17 17:48 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
1 sibling, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2025-09-17 17:48 UTC (permalink / raw)
To: Damien Le Moal; +Cc: Carlos Maiolino, linux-xfs, Christoph Hellwig
Same nitpick as for the last one.
Otherwise this looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] xfs: Improve default maximum number of open zones
2025-09-17 12:48 ` [PATCH 2/2] xfs: Improve default maximum number of open zones Damien Le Moal
2025-09-17 17:48 ` Christoph Hellwig
@ 2025-09-18 11:29 ` Carlos Maiolino
1 sibling, 0 replies; 7+ messages in thread
From: Carlos Maiolino @ 2025-09-18 11:29 UTC (permalink / raw)
To: Damien Le Moal; +Cc: linux-xfs, Christoph Hellwig
On Wed, Sep 17, 2025 at 09:48:02PM +0900, Damien Le Moal wrote:
> For regular block devices using the zoned allocator, the default
> maximum number of open zones is set to 1/4 of the number of realtime
> groups. For a large capacity device, this leads to a very large limit.
> E.g. with a 26 TB HDD:
>
> mount /dev/sdb /mnt
> ...
> XFS (sdb): 95836 zones of 65536 blocks size (23959 max open)
>
> In turn such large limit on the number of open zones can lead, depending
> on the workload, on a very large number of concurrent write streams
> which devices generally do not handle well, leading to poor performance.
>
> Introduce the default limit XFS_DEFAULT_MAX_OPEN_ZONES, defined as 128
> to match the hardware limit of most SMR HDDs available today, and use
> this limit to set mp->m_max_open_zones in xfs_calc_open_zones() instead
> of calling xfs_max_open_zones(), when the user did not specify a limit
> with the max_open_zones mount option.
>
> For the 26 TB HDD example, we now get:
>
> mount /dev/sdb /mnt
> ...
> XFS (sdb): 95836 zones of 65536 blocks (128 max open zones)
>
> This change does not prevent the user from specifying a lareger number
> for the open zones limit. E.g.
>
> mount -o max_open_zones=4096 /dev/sdb /mnt
> ...
> XFS (sdb): 95836 zones of 65536 blocks (4096 max open zones)
>
> Finally, since xfs_calc_open_zones() checks and caps the
> mp->m_max_open_zones limit against the value calculated by
> xfs_max_open_zones() for any type of device, this new default limit does
> not increase m_max_open_zones for small capacity devices.
>
> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
> ---
> fs/xfs/libxfs/xfs_zones.h | 7 +++++++
> fs/xfs/xfs_zone_alloc.c | 2 +-
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/libxfs/xfs_zones.h b/fs/xfs/libxfs/xfs_zones.h
> index c4f1367b2cca..6005f5412363 100644
> --- a/fs/xfs/libxfs/xfs_zones.h
> +++ b/fs/xfs/libxfs/xfs_zones.h
> @@ -29,6 +29,13 @@ struct xfs_rtgroup;
> #define XFS_OPEN_GC_ZONES 1U
> #define XFS_MIN_OPEN_ZONES (XFS_OPEN_GC_ZONES + 1U)
>
> +/*
> + * For zoned device that do not have a limit on the number of open zones, and
'For a zoned device' perhaps?
> + * for reguilar devices using the zoned allocator, use this value as the default
regular
> + * limit on the number of open zones.
Perhaps it's also worth to mention you picked 128 for being the most
common limit on available SMR HDDs today, otherwise it would look as a
randomly chosen magic number (unless somebody bothers to check the git
log).
> + */
> +#define XFS_DEFAULT_MAX_OPEN_ZONES 128
> +
> bool xfs_zone_validate(struct blk_zone *zone, struct xfs_rtgroup *rtg,
> xfs_rgblock_t *write_pointer);
>
> diff --git a/fs/xfs/xfs_zone_alloc.c b/fs/xfs/xfs_zone_alloc.c
> index f152b2182004..1147bacb2da8 100644
> --- a/fs/xfs/xfs_zone_alloc.c
> +++ b/fs/xfs/xfs_zone_alloc.c
> @@ -1131,7 +1131,7 @@ xfs_calc_open_zones(
> if (bdev_open_zones)
> mp->m_max_open_zones = bdev_open_zones;
> else
> - mp->m_max_open_zones = xfs_max_open_zones(mp);
> + mp->m_max_open_zones = XFS_DEFAULT_MAX_OPEN_ZONES;
> }
>
> if (mp->m_max_open_zones < XFS_MIN_OPEN_ZONES) {
Other than the nitpicks above, you can add:
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] xfs: Improve zone statistics message
2025-09-17 12:48 ` [PATCH 1/2] xfs: Improve zone statistics message Damien Le Moal
2025-09-17 17:47 ` Christoph Hellwig
@ 2025-09-18 11:29 ` Carlos Maiolino
1 sibling, 0 replies; 7+ messages in thread
From: Carlos Maiolino @ 2025-09-18 11:29 UTC (permalink / raw)
To: Damien Le Moal; +Cc: linux-xfs, Christoph Hellwig
On Wed, Sep 17, 2025 at 09:48:01PM +0900, Damien Le Moal wrote:
> Reword the information message displayed in xfs_mount_zones()
> indicating the total zone count and maximum number of open zones.
>
> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
> ---
> fs/xfs/xfs_zone_alloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_zone_alloc.c b/fs/xfs/xfs_zone_alloc.c
> index 23a027387933..f152b2182004 100644
> --- a/fs/xfs/xfs_zone_alloc.c
> +++ b/fs/xfs/xfs_zone_alloc.c
> @@ -1244,7 +1244,7 @@ xfs_mount_zones(
> if (!mp->m_zone_info)
> return -ENOMEM;
>
> - xfs_info(mp, "%u zones of %u blocks size (%u max open)",
> + xfs_info(mp, "%u zones of %u blocks (%u max open zones)",
> mp->m_sb.sb_rgcount, mp->m_groups[XG_TYPE_RTG].blocks,
> mp->m_max_open_zones);
> trace_xfs_zones_mount(mp);
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-18 11:29 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-17 12:48 [PATCH 0/2] Some minor improvements for zoned mode Damien Le Moal
2025-09-17 12:48 ` [PATCH 1/2] xfs: Improve zone statistics message Damien Le Moal
2025-09-17 17:47 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
2025-09-17 12:48 ` [PATCH 2/2] xfs: Improve default maximum number of open zones Damien Le Moal
2025-09-17 17:48 ` Christoph Hellwig
2025-09-18 11:29 ` Carlos Maiolino
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).