On Thu, Feb 06, 2025 at 07:44:54AM +0100, Christoph Hellwig wrote: > Allow limiting the number of open zones used below that exported by the > device. This is required to tune the number of write streams when zoned > RT devices are used on conventional devices, and can be useful on zoned > devices that support a very large number of open zones. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- Seems pretty straightforward to me... Reviewed-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --D > fs/xfs/xfs_super.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index ceb1a855453e..b59d7349dbd2 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -110,7 +110,7 @@ enum { > Opt_filestreams, Opt_quota, Opt_noquota, Opt_usrquota, Opt_grpquota, > Opt_prjquota, Opt_uquota, Opt_gquota, Opt_pquota, > Opt_uqnoenforce, Opt_gqnoenforce, Opt_pqnoenforce, Opt_qnoenforce, > - Opt_discard, Opt_nodiscard, Opt_dax, Opt_dax_enum, > + Opt_discard, Opt_nodiscard, Opt_dax, Opt_dax_enum, Opt_max_open_zones, > }; > > static const struct fs_parameter_spec xfs_fs_parameters[] = { > @@ -155,6 +155,7 @@ static const struct fs_parameter_spec xfs_fs_parameters[] = { > fsparam_flag("nodiscard", Opt_nodiscard), > fsparam_flag("dax", Opt_dax), > fsparam_enum("dax", Opt_dax_enum, dax_param_enums), > + fsparam_u32("max_open_zones", Opt_max_open_zones), > {} > }; > > @@ -234,6 +235,9 @@ xfs_fs_show_options( > if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT)) > seq_puts(m, ",noquota"); > > + if (mp->m_max_open_zones) > + seq_printf(m, ",max_open_zones=%u", mp->m_max_open_zones); > + > return 0; > } > > @@ -1081,6 +1085,14 @@ xfs_finish_flags( > return -EINVAL; > } > > + if (!xfs_has_zoned(mp)) { > + if (mp->m_max_open_zones) { > + xfs_warn(mp, > +"max_open_zones mount option only supported on zoned file systems."); > + return -EINVAL; > + } > + } > + > return 0; > } > > @@ -1462,6 +1474,9 @@ xfs_fs_parse_param( > xfs_fs_warn_deprecated(fc, param, XFS_FEAT_NOATTR2, true); > parsing_mp->m_features |= XFS_FEAT_NOATTR2; > return 0; > + case Opt_max_open_zones: > + parsing_mp->m_max_open_zones = result.uint_32; > + return 0; > default: > xfs_warn(parsing_mp, "unknown mount option [%s].", param->key); > return -EINVAL; > -- > 2.45.2 > >