Linux XFS filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Cc: linux-xfs@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	Carlos Maiolino <cem@kernel.org>,
	Damien Le Moal <dlemoal@kernel.org>
Subject: Re: [PATCH v2 3/4] xfs: create rtgroup metadir inodes using xfs_metadir_create_file
Date: Mon, 13 Jul 2026 15:54:50 -0700	[thread overview]
Message-ID: <20260713225450.GK7195@frogsfrogsfrogs> (raw)
In-Reply-To: <20260713124250.3978-4-johannes.thumshirn@wdc.com>

On Mon, Jul 13, 2026 at 02:42:49PM +0200, Johannes Thumshirn wrote:
> Now that we have xfs_metadir_create_file() use it in
> xfs_rtginode_create().
> 
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> ---
>  fs/xfs/libxfs/xfs_rtgroup.c | 58 +++++++++++++++++--------------------
>  1 file changed, 26 insertions(+), 32 deletions(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_rtgroup.c b/fs/xfs/libxfs/xfs_rtgroup.c
> index c85d50953218..fe7222bbe449 100644
> --- a/fs/xfs/libxfs/xfs_rtgroup.c
> +++ b/fs/xfs/libxfs/xfs_rtgroup.c
> @@ -517,6 +517,25 @@ xfs_rtginode_irele(
>  	*ipp = NULL;
>  }
>  
> +struct xfs_rtginode_create {
> +	struct xfs_rtgroup		*rtg;
> +	enum xfs_rtg_inodes		type;
> +	bool				init;
> +};
> +
> +static int
> +xfs_rtginode_init(
> +	struct xfs_metadir_update	*upd,
> +	void				*priv)
> +{
> +	struct xfs_rtginode_create	*rc = priv;
> +	const struct xfs_rtginode_ops	*ops = &xfs_rtginode_ops[rc->type];
> +
> +	xfs_rtginode_lockdep_setup(upd->ip, rtg_rgno(rc->rtg), rc->type);
> +	upd->ip->i_projid = rtg_rgno(rc->rtg);
> +	return ops->create(rc->rtg, upd->ip, upd->tp, rc->init);

Though I guess we already have ->create for rtgroup inodes.  I can't
think of a good (re)naming scheme for both ... but the parameters are at
least different so I guess this is fine.

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

--D

> +}
> +
>  /* Add a metadata inode for a realtime rmap btree. */
>  int
>  xfs_rtginode_create(
> @@ -526,6 +545,11 @@ xfs_rtginode_create(
>  {
>  	const struct xfs_rtginode_ops	*ops = &xfs_rtginode_ops[type];
>  	struct xfs_mount		*mp = rtg_mount(rtg);
> +	struct xfs_rtginode_create	rc = {
> +		.rtg			= rtg,
> +		.type			= type,
> +		.init			= init,
> +	};
>  	struct xfs_metadir_update	upd = {
>  		.dp			= mp->m_rtdirip,
>  		.metafile_type		= ops->metafile_type,
> @@ -544,38 +568,8 @@ xfs_rtginode_create(
>  	if (!upd.path)
>  		return -ENOMEM;
>  
> -	error = xfs_metadir_start_create(&upd);
> -	if (error)
> -		goto out_path;
> -
> -	error = xfs_metadir_create(&upd, S_IFREG);
> -	if (error)
> -		goto out_cancel;
> -
> -	xfs_rtginode_lockdep_setup(upd.ip, rtg_rgno(rtg), type);
> -
> -	upd.ip->i_projid = rtg_rgno(rtg);
> -	error = ops->create(rtg, upd.ip, upd.tp, init);
> -	if (error)
> -		goto out_cancel;
> -
> -	error = xfs_metadir_commit(&upd);
> -	if (error)
> -		goto out_path;
> -
> -	kfree(upd.path);
> -	xfs_finish_inode_setup(upd.ip);
> -	rtg->rtg_inodes[type] = upd.ip;
> -	return 0;
> -
> -out_cancel:
> -	xfs_metadir_cancel(&upd, error);
> -	/* Have to finish setting up the inode to ensure it's deleted. */
> -	if (upd.ip) {
> -		xfs_finish_inode_setup(upd.ip);
> -		xfs_irele(upd.ip);
> -	}
> -out_path:
> +	error = xfs_metadir_create_file(&upd, S_IFREG, xfs_rtginode_init, &rc,
> +			&rtg->rtg_inodes[type]);
>  	kfree(upd.path);
>  	return error;
>  }
> -- 
> 2.54.0
> 
> 

  reply	other threads:[~2026-07-13 22:54 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-13 12:42 [PATCH v2 0/4] xfs: consolidate metadir creation code Johannes Thumshirn
2026-07-13 12:42 ` [PATCH v2 1/4] xfs: add xfs_metadir_create_file helper Johannes Thumshirn
2026-07-13 13:31   ` Christoph Hellwig
2026-07-13 22:51   ` Darrick J. Wong
2026-07-13 12:42 ` [PATCH v2 2/4] xfs: create quota metadir inodes using xfs_metadir_create_file Johannes Thumshirn
2026-07-13 22:52   ` Darrick J. Wong
2026-07-13 12:42 ` [PATCH v2 3/4] xfs: create rtgroup " Johannes Thumshirn
2026-07-13 22:54   ` Darrick J. Wong [this message]
2026-07-13 12:42 ` [PATCH v2 4/4] xfs: mark internal metadir file creation helpers static Johannes Thumshirn
2026-07-13 13:32   ` Christoph Hellwig
2026-07-13 22:55   ` 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=20260713225450.GK7195@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=cem@kernel.org \
    --cc=dlemoal@kernel.org \
    --cc=hch@lst.de \
    --cc=johannes.thumshirn@wdc.com \
    --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