Linux XFS filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Carlos Maiolino <cem@kernel.org>,
	Hans Holmberg <hans.holmberg@wdc.com>,
	linux-xfs@vger.kernel.org
Subject: Re: [PATCH 4/7] xfs: stop passing an inode to the zone space reservation helpers
Date: Wed, 16 Jul 2025 08:59:27 -0700	[thread overview]
Message-ID: <20250716155927.GK2672049@frogsfrogsfrogs> (raw)
In-Reply-To: <20250716125413.2148420-5-hch@lst.de>

On Wed, Jul 16, 2025 at 02:54:04PM +0200, Christoph Hellwig wrote:
> None of them actually needs the inode, the mount is enough.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Yep.
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

--D

> ---
>  fs/xfs/xfs_file.c            | 24 ++++++++++++------------
>  fs/xfs/xfs_iops.c            |  4 ++--
>  fs/xfs/xfs_zone_alloc.h      |  4 ++--
>  fs/xfs/xfs_zone_space_resv.c | 17 ++++++-----------
>  4 files changed, 22 insertions(+), 27 deletions(-)
> 
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 38e365b16348..ed69a65f56d7 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -497,7 +497,7 @@ xfs_file_write_checks(
>  
>  static ssize_t
>  xfs_zoned_write_space_reserve(
> -	struct xfs_inode		*ip,
> +	struct xfs_mount		*mp,
>  	struct kiocb			*iocb,
>  	struct iov_iter			*from,
>  	unsigned int			flags,
> @@ -533,8 +533,8 @@ xfs_zoned_write_space_reserve(
>  	 *
>  	 * Any remaining block will be returned after the write.
>  	 */
> -	return xfs_zoned_space_reserve(ip,
> -			XFS_B_TO_FSB(ip->i_mount, count) + 1 + 2, flags, ac);
> +	return xfs_zoned_space_reserve(mp, XFS_B_TO_FSB(mp, count) + 1 + 2,
> +			flags, ac);
>  }
>  
>  static int
> @@ -718,13 +718,13 @@ xfs_file_dio_write_zoned(
>  	struct xfs_zone_alloc_ctx ac = { };
>  	ssize_t			ret;
>  
> -	ret = xfs_zoned_write_space_reserve(ip, iocb, from, 0, &ac);
> +	ret = xfs_zoned_write_space_reserve(ip->i_mount, iocb, from, 0, &ac);
>  	if (ret < 0)
>  		return ret;
>  	ret = xfs_file_dio_write_aligned(ip, iocb, from,
>  			&xfs_zoned_direct_write_iomap_ops,
>  			&xfs_dio_zoned_write_ops, &ac);
> -	xfs_zoned_space_unreserve(ip, &ac);
> +	xfs_zoned_space_unreserve(ip->i_mount, &ac);
>  	return ret;
>  }
>  
> @@ -1032,7 +1032,7 @@ xfs_file_buffered_write_zoned(
>  	struct xfs_zone_alloc_ctx ac = { };
>  	ssize_t			ret;
>  
> -	ret = xfs_zoned_write_space_reserve(ip, iocb, from, XFS_ZR_GREEDY, &ac);
> +	ret = xfs_zoned_write_space_reserve(mp, iocb, from, XFS_ZR_GREEDY, &ac);
>  	if (ret < 0)
>  		return ret;
>  
> @@ -1073,7 +1073,7 @@ xfs_file_buffered_write_zoned(
>  out_unlock:
>  	xfs_iunlock(ip, iolock);
>  out_unreserve:
> -	xfs_zoned_space_unreserve(ip, &ac);
> +	xfs_zoned_space_unreserve(ip->i_mount, &ac);
>  	if (ret > 0) {
>  		XFS_STATS_ADD(mp, xs_write_bytes, ret);
>  		ret = generic_write_sync(iocb, ret);
> @@ -1414,11 +1414,11 @@ xfs_file_zoned_fallocate(
>  	struct xfs_inode	*ip = XFS_I(file_inode(file));
>  	int			error;
>  
> -	error = xfs_zoned_space_reserve(ip, 2, XFS_ZR_RESERVED, &ac);
> +	error = xfs_zoned_space_reserve(ip->i_mount, 2, XFS_ZR_RESERVED, &ac);
>  	if (error)
>  		return error;
>  	error = __xfs_file_fallocate(file, mode, offset, len, &ac);
> -	xfs_zoned_space_unreserve(ip, &ac);
> +	xfs_zoned_space_unreserve(ip->i_mount, &ac);
>  	return error;
>  }
>  
> @@ -1828,12 +1828,12 @@ xfs_write_fault_zoned(
>  	 * But as the overallocation is limited to less than a folio and will be
>  	 * release instantly that's just fine.
>  	 */
> -	error = xfs_zoned_space_reserve(ip, XFS_B_TO_FSB(ip->i_mount, len), 0,
> -			&ac);
> +	error = xfs_zoned_space_reserve(ip->i_mount,
> +			XFS_B_TO_FSB(ip->i_mount, len), 0, &ac);
>  	if (error < 0)
>  		return vmf_fs_error(error);
>  	ret = __xfs_write_fault(vmf, order, &ac);
> -	xfs_zoned_space_unreserve(ip, &ac);
> +	xfs_zoned_space_unreserve(ip->i_mount, &ac);
>  	return ret;
>  }
>  
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index 01e597290eb5..149b5460fbfd 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -970,7 +970,7 @@ xfs_setattr_size(
>  	 * change.
>  	 */
>  	if (xfs_is_zoned_inode(ip)) {
> -		error = xfs_zoned_space_reserve(ip, 1,
> +		error = xfs_zoned_space_reserve(mp, 1,
>  				XFS_ZR_NOWAIT | XFS_ZR_RESERVED, &ac);
>  		if (error) {
>  			if (error == -EAGAIN)
> @@ -998,7 +998,7 @@ xfs_setattr_size(
>  	}
>  
>  	if (xfs_is_zoned_inode(ip))
> -		xfs_zoned_space_unreserve(ip, &ac);
> +		xfs_zoned_space_unreserve(mp, &ac);
>  
>  	if (error)
>  		return error;
> diff --git a/fs/xfs/xfs_zone_alloc.h b/fs/xfs/xfs_zone_alloc.h
> index ecf39106704c..4db02816d0fd 100644
> --- a/fs/xfs/xfs_zone_alloc.h
> +++ b/fs/xfs/xfs_zone_alloc.h
> @@ -23,9 +23,9 @@ struct xfs_zone_alloc_ctx {
>   */
>  #define XFS_ZR_RESERVED		(1U << 2)
>  
> -int xfs_zoned_space_reserve(struct xfs_inode *ip, xfs_filblks_t count_fsb,
> +int xfs_zoned_space_reserve(struct xfs_mount *mp, xfs_filblks_t count_fsb,
>  		unsigned int flags, struct xfs_zone_alloc_ctx *ac);
> -void xfs_zoned_space_unreserve(struct xfs_inode *ip,
> +void xfs_zoned_space_unreserve(struct xfs_mount *mp,
>  		struct xfs_zone_alloc_ctx *ac);
>  void xfs_zoned_add_available(struct xfs_mount *mp, xfs_filblks_t count_fsb);
>  
> diff --git a/fs/xfs/xfs_zone_space_resv.c b/fs/xfs/xfs_zone_space_resv.c
> index 93c9a7721139..1313c55b8cbe 100644
> --- a/fs/xfs/xfs_zone_space_resv.c
> +++ b/fs/xfs/xfs_zone_space_resv.c
> @@ -117,11 +117,10 @@ xfs_zoned_space_wait_error(
>  
>  static int
>  xfs_zoned_reserve_available(
> -	struct xfs_inode		*ip,
> +	struct xfs_mount		*mp,
>  	xfs_filblks_t			count_fsb,
>  	unsigned int			flags)
>  {
> -	struct xfs_mount		*mp = ip->i_mount;
>  	struct xfs_zone_info		*zi = mp->m_zone_info;
>  	struct xfs_zone_reservation	reservation = {
>  		.task		= current,
> @@ -198,11 +197,10 @@ xfs_zoned_reserve_available(
>   */
>  static int
>  xfs_zoned_reserve_extents_greedy(
> -	struct xfs_inode		*ip,
> +	struct xfs_mount		*mp,
>  	xfs_filblks_t			*count_fsb,
>  	unsigned int			flags)
>  {
> -	struct xfs_mount		*mp = ip->i_mount;
>  	struct xfs_zone_info		*zi = mp->m_zone_info;
>  	s64				len = *count_fsb;
>  	int				error = -ENOSPC;
> @@ -220,12 +218,11 @@ xfs_zoned_reserve_extents_greedy(
>  
>  int
>  xfs_zoned_space_reserve(
> -	struct xfs_inode		*ip,
> +	struct xfs_mount		*mp,
>  	xfs_filblks_t			count_fsb,
>  	unsigned int			flags,
>  	struct xfs_zone_alloc_ctx	*ac)
>  {
> -	struct xfs_mount		*mp = ip->i_mount;
>  	int				error;
>  
>  	ASSERT(ac->reserved_blocks == 0);
> @@ -234,11 +231,11 @@ xfs_zoned_space_reserve(
>  	error = xfs_dec_freecounter(mp, XC_FREE_RTEXTENTS, count_fsb,
>  			flags & XFS_ZR_RESERVED);
>  	if (error == -ENOSPC && (flags & XFS_ZR_GREEDY) && count_fsb > 1)
> -		error = xfs_zoned_reserve_extents_greedy(ip, &count_fsb, flags);
> +		error = xfs_zoned_reserve_extents_greedy(mp, &count_fsb, flags);
>  	if (error)
>  		return error;
>  
> -	error = xfs_zoned_reserve_available(ip, count_fsb, flags);
> +	error = xfs_zoned_reserve_available(mp, count_fsb, flags);
>  	if (error) {
>  		xfs_add_freecounter(mp, XC_FREE_RTEXTENTS, count_fsb);
>  		return error;
> @@ -249,12 +246,10 @@ xfs_zoned_space_reserve(
>  
>  void
>  xfs_zoned_space_unreserve(
> -	struct xfs_inode		*ip,
> +	struct xfs_mount		*mp,
>  	struct xfs_zone_alloc_ctx	*ac)
>  {
>  	if (ac->reserved_blocks > 0) {
> -		struct xfs_mount	*mp = ip->i_mount;
> -
>  		xfs_zoned_add_available(mp, ac->reserved_blocks);
>  		xfs_add_freecounter(mp, XC_FREE_RTEXTENTS, ac->reserved_blocks);
>  	}
> -- 
> 2.47.2
> 
> 

  reply	other threads:[~2025-07-16 15:59 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-16 12:54 misc zoned allocators fixes and cleanups Christoph Hellwig
2025-07-16 12:54 ` [PATCH 1/7] xfs: don't allocate the xfs_extent_busy structure for zoned RTGs Christoph Hellwig
2025-07-16 15:50   ` Darrick J. Wong
2025-07-17  8:11   ` Carlos Maiolino
2025-07-16 12:54 ` [PATCH 2/7] xfs: use a uint32_t to cache i_used_blocks in xfs_init_zone Christoph Hellwig
2025-07-16 15:51   ` Darrick J. Wong
2025-07-16 12:54 ` [PATCH 3/7] xfs: rename oz_write_pointer to oz_allocated Christoph Hellwig
2025-07-16 15:58   ` Darrick J. Wong
2025-07-16 12:54 ` [PATCH 4/7] xfs: stop passing an inode to the zone space reservation helpers Christoph Hellwig
2025-07-16 15:59   ` Darrick J. Wong [this message]
2025-07-16 12:54 ` [PATCH 5/7] xfs: replace min & max with clamp() in xfs_max_open_zones() Christoph Hellwig
2025-07-16 16:02   ` Darrick J. Wong
2025-07-16 16:52     ` Alan Huang
2025-07-17  5:16       ` Christoph Hellwig
2025-07-17  6:42         ` Alan Huang
2025-07-16 12:54 ` [PATCH 6/7] xfs: improve the comments in xfs_max_open_zones Christoph Hellwig
2025-07-16 16:03   ` Darrick J. Wong
2025-07-16 12:54 ` [PATCH 7/7] xfs: improve the comments in xfs_select_zone_nowait Christoph Hellwig
2025-07-16 16:03   ` Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250716155927.GK2672049@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=cem@kernel.org \
    --cc=hans.holmberg@wdc.com \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox