| From stable+bounces-232959-greg=kroah.com@vger.kernel.org Thu Apr 2 11:44:28 2026 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 2 Apr 2026 05:44:11 -0400 |
| Subject: xfs: factor out xfs_attr3_leaf_init |
| To: stable@vger.kernel.org |
| Cc: Long Li <leo.lilong@huawei.com>, "Darrick J. Wong" <djwong@kernel.org>, Carlos Maiolino <cem@kernel.org>, Sasha Levin <sashal@kernel.org> |
| Message-ID: <20260402094412.717776-2-sashal@kernel.org> |
| |
| From: Long Li <leo.lilong@huawei.com> |
| |
| [ Upstream commit e65bb55d7f8c2041c8fdb73cd29b0b4cad4ed847 ] |
| |
| Factor out wrapper xfs_attr3_leaf_init function, which exported for |
| external use. |
| |
| Reviewed-by: Darrick J. Wong <djwong@kernel.org> |
| Signed-off-by: Long Li <leo.lilong@huawei.com> |
| Signed-off-by: Carlos Maiolino <cem@kernel.org> |
| Stable-dep-of: b854e1c4eff3 ("xfs: close crash window in attr dabtree inactivation") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/xfs/libxfs/xfs_attr_leaf.c | 22 ++++++++++++++++++++++ |
| fs/xfs/libxfs/xfs_attr_leaf.h | 3 +++ |
| 2 files changed, 25 insertions(+) |
| |
| --- a/fs/xfs/libxfs/xfs_attr_leaf.c |
| +++ b/fs/xfs/libxfs/xfs_attr_leaf.c |
| @@ -1317,6 +1317,28 @@ xfs_attr3_leaf_create( |
| } |
| |
| /* |
| + * Reinitialize an existing attr fork block as an empty leaf, and attach |
| + * the buffer to tp. |
| + */ |
| +int |
| +xfs_attr3_leaf_init( |
| + struct xfs_trans *tp, |
| + struct xfs_inode *dp, |
| + xfs_dablk_t blkno) |
| +{ |
| + struct xfs_buf *bp = NULL; |
| + struct xfs_da_args args = { |
| + .trans = tp, |
| + .dp = dp, |
| + .owner = dp->i_ino, |
| + .geo = dp->i_mount->m_attr_geo, |
| + }; |
| + |
| + ASSERT(tp != NULL); |
| + |
| + return xfs_attr3_leaf_create(&args, blkno, &bp); |
| +} |
| +/* |
| * Split the leaf node, rebalance, then add the new entry. |
| * |
| * Returns 0 if the entry was added, 1 if a further split is needed or a |
| --- a/fs/xfs/libxfs/xfs_attr_leaf.h |
| +++ b/fs/xfs/libxfs/xfs_attr_leaf.h |
| @@ -86,6 +86,9 @@ int xfs_attr3_leaf_list_int(struct xfs_b |
| /* |
| * Routines used for shrinking the Btree. |
| */ |
| + |
| +int xfs_attr3_leaf_init(struct xfs_trans *tp, struct xfs_inode *dp, |
| + xfs_dablk_t blkno); |
| int xfs_attr3_leaf_toosmall(struct xfs_da_state *state, int *retval); |
| void xfs_attr3_leaf_unbalance(struct xfs_da_state *state, |
| struct xfs_da_state_blk *drop_blk, |