Linux XFS filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Andrey Albershteyn <aalbersh@kernel.org>,
	Eric Sandeen <sandeen@redhat.com>,
	Carlos Maiolino <cem@kernel.org>,
	linux-xfs@vger.kernel.org
Subject: Re: [PATCH 08/13] libxfs: remove libxfs_trans_alloc_rollable
Date: Mon, 5 Oct 2026 14:47:51 -0700	[thread overview]
Message-ID: <20261005214751.GN2705364@frogsfrogsfrogs> (raw)
In-Reply-To: <20261005125637.1340355-9-hch@lst.de>

On Mon, Oct 05, 2026 at 02:56:18PM +0200, Christoph Hellwig wrote:
> There is no real value in this userland-only wrapper.  Remove it and
> open code the calls, and switch to clearly better fitting transaction
> reservations where applicable.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

I think that's fine.  Log reservations don't mean much of anything right
now in userspace, but in general it's a better idea to use the correct
reservation for the operation that's about to happen.

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

--D

> ---
>  libxfs/stubs/xfs_trans.h |  2 --
>  libxfs/trans.c           | 15 ---------------
>  mkfs/proto.c             |  8 +++++---
>  mkfs/xfs_mkfs.c          |  3 ++-
>  repair/phase5.c          |  3 ++-
>  repair/phase6.c          |  3 ++-
>  repair/rmap.c            |  5 +++--
>  7 files changed, 14 insertions(+), 25 deletions(-)
> 
> diff --git a/libxfs/stubs/xfs_trans.h b/libxfs/stubs/xfs_trans.h
> index 1117aad80c2f..9e8737f09d8e 100644
> --- a/libxfs/stubs/xfs_trans.h
> +++ b/libxfs/stubs/xfs_trans.h
> @@ -88,8 +88,6 @@ int	libxfs_trans_alloc_inode(struct xfs_inode *ip, struct xfs_trans_res *resv,
>  int	libxfs_trans_alloc_dir(struct xfs_inode *dp, struct xfs_trans_res *resv,
>  			struct xfs_inode *ip, unsigned int *dblocks,
>  			struct xfs_trans **tpp, int *nospace_error);
> -int	libxfs_trans_alloc_rollable(struct xfs_mount *mp, uint blocks,
> -				    struct xfs_trans **tpp);
>  struct xfs_trans *libxfs_trans_alloc_empty(struct xfs_mount *mp);
>  int	libxfs_trans_commit(struct xfs_trans *);
>  void	libxfs_trans_cancel(struct xfs_trans *);
> diff --git a/libxfs/trans.c b/libxfs/trans.c
> index aa303288a81c..f36c54b9c806 100644
> --- a/libxfs/trans.c
> +++ b/libxfs/trans.c
> @@ -306,21 +306,6 @@ libxfs_trans_alloc_empty(
>  	return __libxfs_trans_alloc(mp, XFS_TRANS_NO_WRITECOUNT);
>  }
>  
> -/*
> - * Allocate a transaction that can be rolled.  Since userspace doesn't have
> - * a need for log reservations, we really only tr_itruncate to get the
> - * permanent log reservation flag to avoid blowing asserts.
> - */
> -int
> -libxfs_trans_alloc_rollable(
> -	struct xfs_mount	*mp,
> -	unsigned int		blocks,
> -	struct xfs_trans	**tpp)
> -{
> -	return libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, blocks,
> -			0, 0, tpp);
> -}
> -
>  void
>  libxfs_trans_cancel(
>  	struct xfs_trans	*tp)
> diff --git a/mkfs/proto.c b/mkfs/proto.c
> index bdd0fadda517..f17ed3b88112 100644
> --- a/mkfs/proto.c
> +++ b/mkfs/proto.c
> @@ -161,7 +161,8 @@ getres(
>  	uint		r;
>  
>  	for (i = 0, r = MKFS_BLOCKRES(blocks); r >= blocks; r--) {
> -		i = -libxfs_trans_alloc_rollable(mp, r, &tp);
> +		i = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, r, 0, 0,
> +			&tp);
>  		if (i == 0)
>  			return tp;
>  	}
> @@ -251,7 +252,7 @@ rsvfile(
>  	/*
>  	 * update the inode timestamp, mode, and prealloc flag bits
>  	 */
> -	error = -libxfs_trans_alloc_rollable(mp, 0, &tp);
> +	error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0, &tp);
>  	if (error)
>  		fail(_("allocating transaction for a file"), error);
>  	libxfs_trans_ijoin(tp, ip, 0);
> @@ -1037,7 +1038,8 @@ create_sb_metadata_file(
>  	xfs_ino_t		ino;
>  	int			error;
>  
> -	error = -libxfs_trans_alloc_rollable(mp, MKFS_BLOCKRES_INODE, &tp);
> +	error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_create,
> +			MKFS_BLOCKRES_INODE, 0, 0, &tp);
>  	if (error)
>  		res_failed(error);
>  
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index aa87951db0d0..eb863827d19c 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -5706,7 +5706,8 @@ initialise_ag_freespace(
>  	struct xfs_trans	*tp;
>  	int			c;
>  
> -	c = -libxfs_trans_alloc_rollable(mp, worst_freelist, &tp);
> +	c = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, worst_freelist,
> +			0, 0, &tp);
>  	if (c)
>  		res_failed(c);
>  
> diff --git a/repair/phase5.c b/repair/phase5.c
> index e44c26885717..4c67d049702b 100644
> --- a/repair/phase5.c
> +++ b/repair/phase5.c
> @@ -610,7 +610,8 @@ inject_lost_extent(
>  	xfs_agblock_t		agbno;
>  	int			error;
>  
> -	error = -libxfs_trans_alloc_rollable(mp, 16, &tp);
> +	error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 16, 0, 0,
> +			&tp);
>  	if (error)
>  		return error;
>  
> diff --git a/repair/phase6.c b/repair/phase6.c
> index f3951a3d0709..f6f985a92541 100644
> --- a/repair/phase6.c
> +++ b/repair/phase6.c
> @@ -507,7 +507,8 @@ mk_rtino(
>  		libxfs_rtginode_metafile_type(type);
>  	int			error;
>  
> -	error = -libxfs_trans_alloc_rollable(mp, 10, &tp);
> +	error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 10, 0, 0,
> +			&tp);
>  	if (error)
>  		res_failed(error);
>  
> diff --git a/repair/rmap.c b/repair/rmap.c
> index 55c2b0928c52..9f824f848edc 100644
> --- a/repair/rmap.c
> +++ b/repair/rmap.c
> @@ -714,7 +714,8 @@ rmap_commit_agbtree_mappings(
>  		struct xfs_owner_info	oinfo = {};
>  		struct xfs_perag	*pag;
>  
> -		error = -libxfs_trans_alloc_rollable(mp, 16, &tp);
> +		error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 16, 0,
> +				0, &tp);
>  		if (error)
>  			goto err_slab;
>  
> @@ -1952,7 +1953,7 @@ fix_freelist(
>  	args.agno = agno;
>  	args.alignment = 1;
>  	args.pag = libxfs_perag_get(mp, agno);
> -	error = -libxfs_trans_alloc_rollable(mp, 0, &tp);
> +	error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
>  	if (error)
>  		do_error(_("failed to fix AGFL on AG %d, error %d\n"),
>  				agno, error);
> -- 
> 2.53.0
> 
> 

  reply	other threads:[~2026-10-05 21:47 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-05 12:56 reduce libxfs to kernel differences v2 Christoph Hellwig
2026-10-05 12:56 ` [PATCH 01/13] libxfs: use libxfs.h in xfs_platform.h Christoph Hellwig
2026-10-05 21:44   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 02/13] libxfs: provide memalloc_nofs_{save,restore} stubs Christoph Hellwig
2026-10-05 21:45   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 03/13] libxfs: remove a spurious xfs_rtbitmap.h include in xfs_sb.c Christoph Hellwig
2026-10-05 21:45   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 04/13] libxfs: move the xfs_rtbitmap.h include in xfs_bmap.c Christoph Hellwig
2026-10-06 11:27   ` Andrey Albershteyn
2026-10-05 12:56 ` [PATCH 05/13] libxfs: remove the unused xfs_log_item.li_mountp field Christoph Hellwig
2026-10-05 21:46   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 06/13] libxfs: remove the unused xfs_inode_log_item.ili_fsync_fields field Christoph Hellwig
2026-10-05 21:46   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 07/13] libxfs: remove the xfs_log_item_t and xfs_buf_log_item_t typedefs Christoph Hellwig
2026-10-05 21:46   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 08/13] libxfs: remove libxfs_trans_alloc_rollable Christoph Hellwig
2026-10-05 21:47   ` Darrick J. Wong [this message]
2026-10-05 12:56 ` [PATCH 09/13] libxfs: return int from xfs_buf_item_init Christoph Hellwig
2026-10-05 21:48   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 10/13] libxfs: use xfs_buf_item.h and xfs_inode_item.h from the kernel source Christoph Hellwig
2026-10-05 21:48   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 11/13] libxfs: cleanup xfs_trans.h Christoph Hellwig
2026-10-05 21:48   ` Darrick J. Wong
2026-10-05 12:56 ` [PATCH 12/13] libxfs: use xfs_trans.h from the kernel source Christoph Hellwig
2026-10-05 21:49   ` Darrick J. Wong
2026-10-07 13:41     ` Christoph Hellwig
2026-10-07 15:18       ` Darrick J. Wong
2026-10-08 10:59       ` Carlos Maiolino
2026-10-05 12:56 ` [PATCH 13/13] libxfs: use all log item headers from the kernel Christoph Hellwig
2026-10-05 21:50   ` Darrick J. Wong
  -- strict thread matches above, loose matches on Subject: below --
2026-09-25 15:20 reduce libxfs to kernel differences Christoph Hellwig
2026-09-25 15:20 ` [PATCH 08/13] libxfs: remove libxfs_trans_alloc_rollable Christoph Hellwig

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=20261005214751.GN2705364@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=aalbersh@kernel.org \
    --cc=cem@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    --cc=sandeen@redhat.com \
    /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