From patchwork Sun Dec 31 22:20:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507850 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E890DBE4D for ; Sun, 31 Dec 2023 22:20:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oY8mtJln" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4DA7C433C8; Sun, 31 Dec 2023 22:20:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061201; bh=8JaXqFH4CWB3CWFBFCl839hTYiCbyQw46tXqU/T66GA=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=oY8mtJlnqT+JD8zSLc7S2nWwheo9H2peqdZNQkWRlj/aWNSga/Y/vKNeIiP03KYXY siW6K/aNjoAQm0VsTk/gB/rGmXHy4Vk36WrsxRjkbceG3CJxPMSOI2l/lvQk5twsY5 vHxs42k0dqxXHvR/AdV9THep/ou6fn+l/W8e+dMPCU/swKju/WbzpFa+6QiXlQf6Gp zKjhYe90j4n91IqIIcGfQFIShhWy0NJwqGWcBGfLJbwM3O05bc3855feMMNIXIfbMU KtRSZFag9G/KlLKFy7skmiICxuoKiVs9BHKuCV9ESsJRyLRDgk0H6OWt1gd0aLQmeR Tf9k4ANt9uxXA== Date: Sun, 31 Dec 2023 14:20:01 -0800 Subject: [PATCH 1/9] xfs: set the btree cursor bc_ops in xfs_btree_alloc_cursor From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994002.1795132.9058705193337251957.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong This is a precursor to putting more static data in the btree ops structure. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 3 +-- libxfs/xfs_alloc_btree.c | 11 +++++------ libxfs/xfs_bmap_btree.c | 3 +-- libxfs/xfs_btree.h | 2 ++ libxfs/xfs_ialloc_btree.c | 10 ++++++---- libxfs/xfs_refcount_btree.c | 4 ++-- libxfs/xfs_rmap_btree.c | 7 +++---- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index 7521566fd15..69539635046 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -245,11 +245,10 @@ xfbtree_dup_cursor( ASSERT(cur->bc_flags & XFS_BTREE_IN_XFILE); ncur = xfs_btree_alloc_cursor(cur->bc_mp, cur->bc_tp, cur->bc_btnum, - cur->bc_maxlevels, cur->bc_cache); + cur->bc_ops, cur->bc_maxlevels, cur->bc_cache); ncur->bc_flags = cur->bc_flags; ncur->bc_nlevels = cur->bc_nlevels; ncur->bc_statoff = cur->bc_statoff; - ncur->bc_ops = cur->bc_ops; memcpy(&ncur->bc_mem, &cur->bc_mem, sizeof(cur->bc_mem)); if (cur->bc_mem.pag) diff --git a/libxfs/xfs_alloc_btree.c b/libxfs/xfs_alloc_btree.c index a472ec6d21a..16f683e1dc8 100644 --- a/libxfs/xfs_alloc_btree.c +++ b/libxfs/xfs_alloc_btree.c @@ -510,18 +510,17 @@ xfs_allocbt_init_common( ASSERT(btnum == XFS_BTNUM_BNO || btnum == XFS_BTNUM_CNT); - cur = xfs_btree_alloc_cursor(mp, tp, btnum, mp->m_alloc_maxlevels, - xfs_allocbt_cur_cache); - cur->bc_ag.abt.active = false; - if (btnum == XFS_BTNUM_CNT) { - cur->bc_ops = &xfs_cntbt_ops; + cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_cntbt_ops, + mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_abtc_2); cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; } else { - cur->bc_ops = &xfs_bnobt_ops; + cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_bnobt_ops, + mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_abtb_2); } + cur->bc_ag.abt.active = false; cur->bc_ag.pag = xfs_perag_hold(pag); diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index 73ba067df06..cfb0684f7b2 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -547,11 +547,10 @@ xfs_bmbt_init_common( ASSERT(whichfork != XFS_COW_FORK); - cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_BMAP, + cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_BMAP, &xfs_bmbt_ops, mp->m_bm_maxlevels[whichfork], xfs_bmbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_bmbt_2); - cur->bc_ops = &xfs_bmbt_ops; cur->bc_flags = XFS_BTREE_LONG_PTRS | XFS_BTREE_ROOT_IN_INODE; if (xfs_has_crc(mp)) cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; diff --git a/libxfs/xfs_btree.h b/libxfs/xfs_btree.h index 3e6bdbc5070..ed138889031 100644 --- a/libxfs/xfs_btree.h +++ b/libxfs/xfs_btree.h @@ -737,12 +737,14 @@ xfs_btree_alloc_cursor( struct xfs_mount *mp, struct xfs_trans *tp, xfs_btnum_t btnum, + const struct xfs_btree_ops *ops, uint8_t maxlevels, struct kmem_cache *cache) { struct xfs_btree_cur *cur; cur = kmem_cache_zalloc(cache, GFP_NOFS | __GFP_NOFAIL); + cur->bc_ops = ops; cur->bc_tp = tp; cur->bc_mp = mp; cur->bc_btnum = btnum; diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 593cb1fcc1d..5ea08cca25b 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -453,14 +453,16 @@ xfs_inobt_init_common( struct xfs_mount *mp = pag->pag_mount; struct xfs_btree_cur *cur; - cur = xfs_btree_alloc_cursor(mp, tp, btnum, - M_IGEO(mp)->inobt_maxlevels, xfs_inobt_cur_cache); if (btnum == XFS_BTNUM_INO) { + cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_inobt_ops, + M_IGEO(mp)->inobt_maxlevels, + xfs_inobt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_ibt_2); - cur->bc_ops = &xfs_inobt_ops; } else { + cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_finobt_ops, + M_IGEO(mp)->inobt_maxlevels, + xfs_inobt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_fibt_2); - cur->bc_ops = &xfs_finobt_ops; } if (xfs_has_crc(mp)) diff --git a/libxfs/xfs_refcount_btree.c b/libxfs/xfs_refcount_btree.c index 9a3c2270c25..561b732b474 100644 --- a/libxfs/xfs_refcount_btree.c +++ b/libxfs/xfs_refcount_btree.c @@ -352,7 +352,8 @@ xfs_refcountbt_init_common( ASSERT(pag->pag_agno < mp->m_sb.sb_agcount); cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_REFC, - mp->m_refc_maxlevels, xfs_refcountbt_cur_cache); + &xfs_refcountbt_ops, mp->m_refc_maxlevels, + xfs_refcountbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_refcbt_2); cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; @@ -360,7 +361,6 @@ xfs_refcountbt_init_common( cur->bc_ag.pag = xfs_perag_hold(pag); cur->bc_ag.refc.nr_ops = 0; cur->bc_ag.refc.shape_changes = 0; - cur->bc_ops = &xfs_refcountbt_ops; return cur; } diff --git a/libxfs/xfs_rmap_btree.c b/libxfs/xfs_rmap_btree.c index f1bcb0b9bd2..c4085a1befb 100644 --- a/libxfs/xfs_rmap_btree.c +++ b/libxfs/xfs_rmap_btree.c @@ -515,11 +515,10 @@ xfs_rmapbt_init_common( struct xfs_btree_cur *cur; /* Overlapping btree; 2 keys per pointer. */ - cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_RMAP, + cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_RMAP, &xfs_rmapbt_ops, mp->m_rmap_maxlevels, xfs_rmapbt_cur_cache); cur->bc_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING; cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_rmap_2); - cur->bc_ops = &xfs_rmapbt_ops; cur->bc_ag.pag = xfs_perag_hold(pag); return cur; @@ -644,11 +643,11 @@ xfs_rmapbt_mem_cursor( /* Overlapping btree; 2 keys per pointer. */ cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_RMAP, - mp->m_rmap_maxlevels, xfs_rmapbt_cur_cache); + &xfs_rmapbt_mem_ops, mp->m_rmap_maxlevels, + xfs_rmapbt_cur_cache); cur->bc_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING | XFS_BTREE_IN_XFILE; cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_rmap_2); - cur->bc_ops = &xfs_rmapbt_mem_ops; cur->bc_mem.xfbtree = xfbtree; cur->bc_mem.head_bp = head_bp; cur->bc_nlevels = xfs_btree_mem_head_nlevels(head_bp); From patchwork Sun Dec 31 22:20:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507851 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8A77C129 for ; Sun, 31 Dec 2023 22:20:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gO9mHrLu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 483DDC433C8; Sun, 31 Dec 2023 22:20:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061217; bh=V4Brrj7DTC7ADNdHZ5wi+7XiJSDRA2Z/o7pZa+6/vN0=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=gO9mHrLuc4r8MpkH0LRJlRMUPpizdiUzeqvxNxC1r62mr0+jKF8v3bC0hdLVFudNd fzHYeq7yvHobRG6aNEiUItHcfFEUnwW3CvjNR243Kq5JD9Z3hlXXGDTaIuwsIykqve Of/4ALW9viFZ6t3TCTqvlizTi3U4fnFrsKsYXb7ocxTS9RtaiaJhr0ovczdV1ER9Rw BF1fVy3jT4S87orwvxdKmOoS9jt2x5ZDiOHgSUZJ/wxzyzq+MZ/aE3KO63+wLyUb5B KL6C4HEao88Ke2+CuYFDKyXIUakyMpMIoc0DlOkW9QZRAS9aDq/D0unn0OwahhvE7l nZw/FzHqPTRBg== Date: Sun, 31 Dec 2023 14:20:16 -0800 Subject: [PATCH 2/9] xfs: encode the default bc_flags in the btree ops structure From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994015.1795132.7396849220541714922.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Certain btree flags never change for the life of a btree cursor because they describe the geometry of the btree itself. Encode these in the btree ops structure and reduce the amount of code required in each btree type's init_cursor functions. Signed-off-by: Darrick J. Wong --- libxfs/xfs_alloc_btree.c | 8 ++------ libxfs/xfs_bmap_btree.c | 5 +---- libxfs/xfs_btree.h | 6 ++++++ libxfs/xfs_ialloc_btree.c | 3 --- libxfs/xfs_refcount_btree.c | 2 -- libxfs/xfs_rmap_btree.c | 6 +++--- 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/libxfs/xfs_alloc_btree.c b/libxfs/xfs_alloc_btree.c index 16f683e1dc8..2d33e0e66d5 100644 --- a/libxfs/xfs_alloc_btree.c +++ b/libxfs/xfs_alloc_btree.c @@ -478,6 +478,7 @@ static const struct xfs_btree_ops xfs_bnobt_ops = { static const struct xfs_btree_ops xfs_cntbt_ops = { .rec_len = sizeof(xfs_alloc_rec_t), .key_len = sizeof(xfs_alloc_key_t), + .geom_flags = XFS_BTREE_LASTREC_UPDATE, .dup_cursor = xfs_allocbt_dup_cursor, .set_root = xfs_allocbt_set_root, @@ -514,19 +515,14 @@ xfs_allocbt_init_common( cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_cntbt_ops, mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_abtc_2); - cur->bc_flags = XFS_BTREE_LASTREC_UPDATE; } else { cur = xfs_btree_alloc_cursor(mp, tp, btnum, &xfs_bnobt_ops, mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_abtb_2); } - cur->bc_ag.abt.active = false; cur->bc_ag.pag = xfs_perag_hold(pag); - - if (xfs_has_crc(mp)) - cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; - + cur->bc_ag.abt.active = false; return cur; } diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index cfb0684f7b2..020b8274c47 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -516,6 +516,7 @@ xfs_bmbt_keys_contiguous( static const struct xfs_btree_ops xfs_bmbt_ops = { .rec_len = sizeof(xfs_bmbt_rec_t), .key_len = sizeof(xfs_bmbt_key_t), + .geom_flags = XFS_BTREE_LONG_PTRS | XFS_BTREE_ROOT_IN_INODE, .dup_cursor = xfs_bmbt_dup_cursor, .update_cursor = xfs_bmbt_update_cursor, @@ -551,10 +552,6 @@ xfs_bmbt_init_common( mp->m_bm_maxlevels[whichfork], xfs_bmbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_bmbt_2); - cur->bc_flags = XFS_BTREE_LONG_PTRS | XFS_BTREE_ROOT_IN_INODE; - if (xfs_has_crc(mp)) - cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; - cur->bc_ino.ip = ip; cur->bc_ino.allocated = 0; cur->bc_ino.flags = 0; diff --git a/libxfs/xfs_btree.h b/libxfs/xfs_btree.h index ed138889031..2c2d5db94b1 100644 --- a/libxfs/xfs_btree.h +++ b/libxfs/xfs_btree.h @@ -116,6 +116,9 @@ struct xfs_btree_ops { size_t key_len; size_t rec_len; + /* XFS_BTREE_* flags that determine the geometry of the btree */ + unsigned int geom_flags; + /* cursor operations */ struct xfs_btree_cur *(*dup_cursor)(struct xfs_btree_cur *); void (*update_cursor)(struct xfs_btree_cur *src, @@ -750,6 +753,9 @@ xfs_btree_alloc_cursor( cur->bc_btnum = btnum; cur->bc_maxlevels = maxlevels; cur->bc_cache = cache; + cur->bc_flags = ops->geom_flags; + if (xfs_has_crc(mp)) + cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; return cur; } diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 5ea08cca25b..dea661afc4d 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -465,9 +465,6 @@ xfs_inobt_init_common( cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_fibt_2); } - if (xfs_has_crc(mp)) - cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; - cur->bc_ag.pag = xfs_perag_hold(pag); return cur; } diff --git a/libxfs/xfs_refcount_btree.c b/libxfs/xfs_refcount_btree.c index 561b732b474..1ecd670a9eb 100644 --- a/libxfs/xfs_refcount_btree.c +++ b/libxfs/xfs_refcount_btree.c @@ -356,8 +356,6 @@ xfs_refcountbt_init_common( xfs_refcountbt_cur_cache); cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_refcbt_2); - cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; - cur->bc_ag.pag = xfs_perag_hold(pag); cur->bc_ag.refc.nr_ops = 0; cur->bc_ag.refc.shape_changes = 0; diff --git a/libxfs/xfs_rmap_btree.c b/libxfs/xfs_rmap_btree.c index c4085a1befb..bedadb8b5bc 100644 --- a/libxfs/xfs_rmap_btree.c +++ b/libxfs/xfs_rmap_btree.c @@ -487,6 +487,7 @@ xfs_rmapbt_keys_contiguous( static const struct xfs_btree_ops xfs_rmapbt_ops = { .rec_len = sizeof(struct xfs_rmap_rec), .key_len = 2 * sizeof(struct xfs_rmap_key), + .geom_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING, .dup_cursor = xfs_rmapbt_dup_cursor, .set_root = xfs_rmapbt_set_root, @@ -517,7 +518,6 @@ xfs_rmapbt_init_common( /* Overlapping btree; 2 keys per pointer. */ cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_RMAP, &xfs_rmapbt_ops, mp->m_rmap_maxlevels, xfs_rmapbt_cur_cache); - cur->bc_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING; cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_rmap_2); cur->bc_ag.pag = xfs_perag_hold(pag); @@ -611,6 +611,8 @@ static const struct xfs_buf_ops xfs_rmapbt_mem_buf_ops = { static const struct xfs_btree_ops xfs_rmapbt_mem_ops = { .rec_len = sizeof(struct xfs_rmap_rec), .key_len = 2 * sizeof(struct xfs_rmap_key), + .geom_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING | + XFS_BTREE_IN_XFILE, .dup_cursor = xfbtree_dup_cursor, .set_root = xfbtree_set_root, @@ -645,8 +647,6 @@ xfs_rmapbt_mem_cursor( cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_RMAP, &xfs_rmapbt_mem_ops, mp->m_rmap_maxlevels, xfs_rmapbt_cur_cache); - cur->bc_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING | - XFS_BTREE_IN_XFILE; cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_rmap_2); cur->bc_mem.xfbtree = xfbtree; cur->bc_mem.head_bp = head_bp; From patchwork Sun Dec 31 22:20:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507852 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EB73BE4A for ; Sun, 31 Dec 2023 22:20:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mEaYflIg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5A93C433C7; Sun, 31 Dec 2023 22:20:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061232; bh=dqtHDQd9kwxMyoya8x1ZCT0ob67YWh0Uy9lvJplFLHA=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=mEaYflIgS6U6YAbMYGzMQWiuT/JKaeaygdjH2g+h+7qBuKUw7upVnholCFCY16v7O V91WbucpRmUFSHZgnWRF72kiTur3v73qDPBXh9UcYqmmU9qtGru1OFPnC8n+bemp5L 55eq14p92JjonMmy+ZllrhL6jDz4R/dimQkGTsX1YMVjuOwyW+RjiVO4N3PLuTtWEu VR4ZTqAOnUC2A16C9oGd+Cc7svalP8E2Xnn0JesC+N/Ed95B7lKAKeld6pvqWgNXB7 R/Mha+L7clICqhewGvnQuMD0O0sv98aGf6jeG2nw1n0oFTzLva4B4mC3mvIi6PyitR ztPOsmWllxk8Q== Date: Sun, 31 Dec 2023 14:20:32 -0800 Subject: [PATCH 3/9] xfs: export some of the btree ops structures From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994029.1795132.587464916356781779.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Export these btree ops structures so that we can reference them in the AG initialization code in the next patch. Signed-off-by: Darrick J. Wong --- libxfs/xfs_alloc_btree.c | 4 ++-- libxfs/xfs_bmap_btree.c | 2 +- libxfs/xfs_ialloc_btree.c | 4 ++-- libxfs/xfs_refcount_btree.c | 2 +- libxfs/xfs_rmap_btree.c | 2 +- libxfs/xfs_shared.h | 9 +++++++++ 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/libxfs/xfs_alloc_btree.c b/libxfs/xfs_alloc_btree.c index 2d33e0e66d5..97d19203550 100644 --- a/libxfs/xfs_alloc_btree.c +++ b/libxfs/xfs_alloc_btree.c @@ -452,7 +452,7 @@ xfs_allocbt_keys_contiguous( be32_to_cpu(key2->alloc.ar_startblock)); } -static const struct xfs_btree_ops xfs_bnobt_ops = { +const struct xfs_btree_ops xfs_bnobt_ops = { .rec_len = sizeof(xfs_alloc_rec_t), .key_len = sizeof(xfs_alloc_key_t), @@ -475,7 +475,7 @@ static const struct xfs_btree_ops xfs_bnobt_ops = { .keys_contiguous = xfs_allocbt_keys_contiguous, }; -static const struct xfs_btree_ops xfs_cntbt_ops = { +const struct xfs_btree_ops xfs_cntbt_ops = { .rec_len = sizeof(xfs_alloc_rec_t), .key_len = sizeof(xfs_alloc_key_t), .geom_flags = XFS_BTREE_LASTREC_UPDATE, diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index 020b8274c47..aa19b214ad6 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -513,7 +513,7 @@ xfs_bmbt_keys_contiguous( be64_to_cpu(key2->bmbt.br_startoff)); } -static const struct xfs_btree_ops xfs_bmbt_ops = { +const struct xfs_btree_ops xfs_bmbt_ops = { .rec_len = sizeof(xfs_bmbt_rec_t), .key_len = sizeof(xfs_bmbt_key_t), .geom_flags = XFS_BTREE_LONG_PTRS | XFS_BTREE_ROOT_IN_INODE, diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index dea661afc4d..52cc00e4ff1 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -397,7 +397,7 @@ xfs_inobt_keys_contiguous( be32_to_cpu(key2->inobt.ir_startino)); } -static const struct xfs_btree_ops xfs_inobt_ops = { +const struct xfs_btree_ops xfs_inobt_ops = { .rec_len = sizeof(xfs_inobt_rec_t), .key_len = sizeof(xfs_inobt_key_t), @@ -419,7 +419,7 @@ static const struct xfs_btree_ops xfs_inobt_ops = { .keys_contiguous = xfs_inobt_keys_contiguous, }; -static const struct xfs_btree_ops xfs_finobt_ops = { +const struct xfs_btree_ops xfs_finobt_ops = { .rec_len = sizeof(xfs_inobt_rec_t), .key_len = sizeof(xfs_inobt_key_t), diff --git a/libxfs/xfs_refcount_btree.c b/libxfs/xfs_refcount_btree.c index 1ecd670a9eb..2f91c7b62ef 100644 --- a/libxfs/xfs_refcount_btree.c +++ b/libxfs/xfs_refcount_btree.c @@ -316,7 +316,7 @@ xfs_refcountbt_keys_contiguous( be32_to_cpu(key2->refc.rc_startblock)); } -static const struct xfs_btree_ops xfs_refcountbt_ops = { +const struct xfs_btree_ops xfs_refcountbt_ops = { .rec_len = sizeof(struct xfs_refcount_rec), .key_len = sizeof(struct xfs_refcount_key), diff --git a/libxfs/xfs_rmap_btree.c b/libxfs/xfs_rmap_btree.c index bedadb8b5bc..f1325586433 100644 --- a/libxfs/xfs_rmap_btree.c +++ b/libxfs/xfs_rmap_btree.c @@ -484,7 +484,7 @@ xfs_rmapbt_keys_contiguous( be32_to_cpu(key2->rmap.rm_startblock)); } -static const struct xfs_btree_ops xfs_rmapbt_ops = { +const struct xfs_btree_ops xfs_rmapbt_ops = { .rec_len = sizeof(struct xfs_rmap_rec), .key_len = 2 * sizeof(struct xfs_rmap_key), .geom_flags = XFS_BTREE_CRC_BLOCKS | XFS_BTREE_OVERLAPPING, diff --git a/libxfs/xfs_shared.h b/libxfs/xfs_shared.h index 4220d3584c1..518ea9456eb 100644 --- a/libxfs/xfs_shared.h +++ b/libxfs/xfs_shared.h @@ -43,6 +43,15 @@ extern const struct xfs_buf_ops xfs_sb_buf_ops; extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; extern const struct xfs_buf_ops xfs_symlink_buf_ops; +/* btree ops */ +extern const struct xfs_btree_ops xfs_bnobt_ops; +extern const struct xfs_btree_ops xfs_cntbt_ops; +extern const struct xfs_btree_ops xfs_inobt_ops; +extern const struct xfs_btree_ops xfs_finobt_ops; +extern const struct xfs_btree_ops xfs_bmbt_ops; +extern const struct xfs_btree_ops xfs_refcountbt_ops; +extern const struct xfs_btree_ops xfs_rmapbt_ops; + /* log size calculation functions */ int xfs_log_calc_unit_res(struct xfs_mount *mp, int unit_bytes); int xfs_log_calc_minimum_size(struct xfs_mount *); From patchwork Sun Dec 31 22:20:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507853 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4349C12B for ; Sun, 31 Dec 2023 22:20:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NrSr82st" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F9B4C433C7; Sun, 31 Dec 2023 22:20:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061248; bh=HadWOQsog5KZb29i99N4UdN4JrYQj+I19wBFfNd/o/w=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=NrSr82stRPcWnuUBoCt//QlcTfFQuuFhkIpRHESuaMlRGkWoHgzwfKbnWi/s2VmUR /6QVv47zlzHWqjL53SwwGrLEqmYUMg0tkR/O7Vz9r4gw5XfSzJJVuGGt0UWrI5wGId EjQCQm53nFzvh5ioWythYnUYZXbxC8GwRBhrNieGnf3HRDJP2/FSB+fGIU4XAAONMe fyjYOxQUHjG0sCsQWJNUeFEYKVdREEwb0GhhliyDqaj+ZdQhQOwHC96xsCponQcBYj pLNvyE1J9GeBrK6nIyygzerxhCtxOLSOPzMUs42ves/2FRzffGMA8M/MEk3KPwkIap p3wrSF044oBEA== Date: Sun, 31 Dec 2023 14:20:48 -0800 Subject: [PATCH 4/9] xfs: initialize btree blocks using btree_ops structure From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994041.1795132.333388847185186312.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Notice now that the btree ops structure encodes btree geometry flags and the magic number through the buffer ops. Refactor the btree block initialization functions to use the btree ops so that we no longer have to open code all that. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 8 ++----- libxfs/xfs_ag.c | 33 +++++++++++---------------- libxfs/xfs_ag.h | 2 +- libxfs/xfs_bmap.c | 10 +++----- libxfs/xfs_bmap_btree.c | 5 ++-- libxfs/xfs_btree.c | 53 +++++++++++++++++--------------------------- libxfs/xfs_btree.h | 28 +++++++---------------- libxfs/xfs_btree_staging.c | 5 ++-- 8 files changed, 53 insertions(+), 91 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index 69539635046..97edb4a2b2b 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -393,10 +393,6 @@ xfbtree_init_leaf_block( struct xfs_buf *bp; xfs_daddr_t daddr; int error; - unsigned int bc_flags = 0; - - if (cfg->flags & XFBTREE_CREATE_LONG_PTRS) - bc_flags |= XFS_BTREE_LONG_PTRS; daddr = xfo_to_daddr(XFBTREE_INIT_LEAF_BLOCK); error = xfs_buf_get(xfbt->target, daddr, xfbtree_bbsize(), &bp); @@ -406,8 +402,8 @@ xfbtree_init_leaf_block( trace_xfbtree_create_root_buf(xfbt, bp); bp->b_ops = cfg->btree_ops->buf_ops; - xfs_btree_init_block_int(mp, bp->b_addr, daddr, cfg->btnum, 0, 0, - cfg->owner, bc_flags); + xfs_btree_init_block_int(mp, bp->b_addr, cfg->btree_ops, daddr, 0, 0, + cfg->owner); error = xfs_bwrite(bp); xfs_buf_relse(bp); if (error) diff --git a/libxfs/xfs_ag.c b/libxfs/xfs_ag.c index 1ba23ab533b..9ac49e0a66b 100644 --- a/libxfs/xfs_ag.c +++ b/libxfs/xfs_ag.c @@ -471,7 +471,7 @@ xfs_btroot_init( struct xfs_buf *bp, struct aghdr_init_data *id) { - xfs_btree_init_block(mp, bp, id->type, 0, 0, id->agno); + xfs_btree_init_block(mp, bp, id->bc_ops, 0, 0, id->agno); } /* Finish initializing a free space btree. */ @@ -529,7 +529,7 @@ xfs_freesp_init_recs( } /* - * Alloc btree root block init functions + * bnobt/cntbt btree root block init functions */ static void xfs_bnoroot_init( @@ -537,17 +537,7 @@ xfs_bnoroot_init( struct xfs_buf *bp, struct aghdr_init_data *id) { - xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 0, id->agno); - xfs_freesp_init_recs(mp, bp, id); -} - -static void -xfs_cntroot_init( - struct xfs_mount *mp, - struct xfs_buf *bp, - struct aghdr_init_data *id) -{ - xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 0, id->agno); + xfs_btree_init_block(mp, bp, id->bc_ops, 0, 0, id->agno); xfs_freesp_init_recs(mp, bp, id); } @@ -563,7 +553,7 @@ xfs_rmaproot_init( struct xfs_btree_block *block = XFS_BUF_TO_BLOCK(bp); struct xfs_rmap_rec *rrec; - xfs_btree_init_block(mp, bp, XFS_BTNUM_RMAP, 0, 4, id->agno); + xfs_btree_init_block(mp, bp, id->bc_ops, 0, 4, id->agno); /* * mark the AG header regions as static metadata The BNO @@ -776,7 +766,7 @@ struct xfs_aghdr_grow_data { size_t numblks; const struct xfs_buf_ops *ops; aghdr_init_work_f work; - xfs_btnum_t type; + const struct xfs_btree_ops *bc_ops; bool need_init; }; @@ -830,13 +820,15 @@ xfs_ag_init_headers( .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_bnobt_buf_ops, .work = &xfs_bnoroot_init, + .bc_ops = &xfs_bnobt_ops, .need_init = true }, { /* CNT root block */ .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_CNT_BLOCK(mp)), .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_cntbt_buf_ops, - .work = &xfs_cntroot_init, + .work = &xfs_bnoroot_init, + .bc_ops = &xfs_cntbt_ops, .need_init = true }, { /* INO root block */ @@ -844,7 +836,7 @@ xfs_ag_init_headers( .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_inobt_buf_ops, .work = &xfs_btroot_init, - .type = XFS_BTNUM_INO, + .bc_ops = &xfs_inobt_ops, .need_init = true }, { /* FINO root block */ @@ -852,7 +844,7 @@ xfs_ag_init_headers( .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_finobt_buf_ops, .work = &xfs_btroot_init, - .type = XFS_BTNUM_FINO, + .bc_ops = &xfs_finobt_ops, .need_init = xfs_has_finobt(mp) }, { /* RMAP root block */ @@ -860,6 +852,7 @@ xfs_ag_init_headers( .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_rmapbt_buf_ops, .work = &xfs_rmaproot_init, + .bc_ops = &xfs_rmapbt_ops, .need_init = xfs_has_rmapbt(mp) }, { /* REFC root block */ @@ -867,7 +860,7 @@ xfs_ag_init_headers( .numblks = BTOBB(mp->m_sb.sb_blocksize), .ops = &xfs_refcountbt_buf_ops, .work = &xfs_btroot_init, - .type = XFS_BTNUM_REFC, + .bc_ops = &xfs_refcountbt_ops, .need_init = xfs_has_reflink(mp) }, { /* NULL terminating block */ @@ -885,7 +878,7 @@ xfs_ag_init_headers( id->daddr = dp->daddr; id->numblks = dp->numblks; - id->type = dp->type; + id->bc_ops = dp->bc_ops; error = xfs_ag_init_hdr(mp, id, dp->work, dp->ops); if (error) break; diff --git a/libxfs/xfs_ag.h b/libxfs/xfs_ag.h index 06506e09a82..79017fcd3df 100644 --- a/libxfs/xfs_ag.h +++ b/libxfs/xfs_ag.h @@ -330,7 +330,7 @@ struct aghdr_init_data { /* per header data */ xfs_daddr_t daddr; /* header location */ size_t numblks; /* size of header */ - xfs_btnum_t type; /* type of btree root block */ + const struct xfs_btree_ops *bc_ops; /* btree ops */ }; int xfs_ag_init_headers(struct xfs_mount *mp, struct aghdr_init_data *id); diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index cfc4350d18e..e7c39ec72f0 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -638,9 +638,8 @@ xfs_bmap_extents_to_btree( * Fill in the root. */ block = ifp->if_broot; - xfs_btree_init_block_int(mp, block, XFS_BUF_DADDR_NULL, - XFS_BTNUM_BMAP, 1, 1, ip->i_ino, - XFS_BTREE_LONG_PTRS); + xfs_btree_init_block_int(mp, block, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, + 1, 1, ip->i_ino); /* * Need a cursor. Can't allocate until bb_level is filled in. */ @@ -685,9 +684,8 @@ xfs_bmap_extents_to_btree( */ abp->b_ops = &xfs_bmbt_buf_ops; ablock = XFS_BUF_TO_BLOCK(abp); - xfs_btree_init_block_int(mp, ablock, xfs_buf_daddr(abp), - XFS_BTNUM_BMAP, 0, 0, ip->i_ino, - XFS_BTREE_LONG_PTRS); + xfs_btree_init_block_int(mp, ablock, &xfs_bmbt_ops, xfs_buf_daddr(abp), + 0, 0, ip->i_ino); for_each_xfs_iext(ifp, &icur, &rec) { if (isnullstartblock(rec.br_startblock)) diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index aa19b214ad6..b599201d97a 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -42,9 +42,8 @@ xfs_bmdr_to_bmbt( xfs_bmbt_key_t *tkp; __be64 *tpp; - xfs_btree_init_block_int(mp, rblock, XFS_BUF_DADDR_NULL, - XFS_BTNUM_BMAP, 0, 0, ip->i_ino, - XFS_BTREE_LONG_PTRS); + xfs_btree_init_block_int(mp, rblock, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, + 0, 0, ip->i_ino); rblock->bb_level = dblock->bb_level; ASSERT(be16_to_cpu(rblock->bb_level) > 0); rblock->bb_numrecs = dblock->bb_numrecs; diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c index 14f0f017759..d3b2b903def 100644 --- a/libxfs/xfs_btree.c +++ b/libxfs/xfs_btree.c @@ -32,24 +32,17 @@ /* * Btree magic numbers. */ -static const uint32_t xfs_magics[2][XFS_BTNUM_MAX] = { - { XFS_ABTB_MAGIC, XFS_ABTC_MAGIC, 0, XFS_BMAP_MAGIC, XFS_IBT_MAGIC, - XFS_FIBT_MAGIC, 0 }, - { XFS_ABTB_CRC_MAGIC, XFS_ABTC_CRC_MAGIC, XFS_RMAP_CRC_MAGIC, - XFS_BMAP_CRC_MAGIC, XFS_IBT_CRC_MAGIC, XFS_FIBT_CRC_MAGIC, - XFS_REFC_CRC_MAGIC } -}; - uint32_t xfs_btree_magic( - int crc, - xfs_btnum_t btnum) + struct xfs_mount *mp, + const struct xfs_btree_ops *ops) { - uint32_t magic = xfs_magics[crc][btnum]; + int idx = xfs_has_crc(mp) ? 1 : 0; + __be32 magic = ops->buf_ops->magic[idx]; /* Ensure we asked for crc for crc-only magics. */ ASSERT(magic != 0); - return magic; + return be32_to_cpu(magic); } /* @@ -134,7 +127,6 @@ __xfs_btree_check_lblock( struct xfs_buf *bp) { struct xfs_mount *mp = cur->bc_mp; - xfs_btnum_t btnum = cur->bc_btnum; int crc = xfs_has_crc(mp); xfs_failaddr_t fa; xfs_fsblock_t fsb = NULLFSBLOCK; @@ -149,7 +141,7 @@ __xfs_btree_check_lblock( return __this_address; } - if (be32_to_cpu(block->bb_magic) != xfs_btree_magic(crc, btnum)) + if (be32_to_cpu(block->bb_magic) != xfs_btree_magic(mp, cur->bc_ops)) return __this_address; if (be16_to_cpu(block->bb_level) != level) return __this_address; @@ -205,7 +197,6 @@ __xfs_btree_check_sblock( { struct xfs_mount *mp = cur->bc_mp; struct xfs_perag *pag = cur->bc_ag.pag; - xfs_btnum_t btnum = cur->bc_btnum; int crc = xfs_has_crc(mp); xfs_failaddr_t fa; xfs_agblock_t agbno = NULLAGBLOCK; @@ -218,7 +209,7 @@ __xfs_btree_check_sblock( return __this_address; } - if (be32_to_cpu(block->bb_magic) != xfs_btree_magic(crc, btnum)) + if (be32_to_cpu(block->bb_magic) != xfs_btree_magic(mp, cur->bc_ops)) return __this_address; if (be16_to_cpu(block->bb_level) != level) return __this_address; @@ -1222,21 +1213,20 @@ void xfs_btree_init_block_int( struct xfs_mount *mp, struct xfs_btree_block *buf, + const struct xfs_btree_ops *ops, xfs_daddr_t blkno, - xfs_btnum_t btnum, __u16 level, __u16 numrecs, - __u64 owner, - unsigned int flags) + __u64 owner) { int crc = xfs_has_crc(mp); - __u32 magic = xfs_btree_magic(crc, btnum); + __u32 magic = xfs_btree_magic(mp, ops); buf->bb_magic = cpu_to_be32(magic); buf->bb_level = cpu_to_be16(level); buf->bb_numrecs = cpu_to_be16(numrecs); - if (flags & XFS_BTREE_LONG_PTRS) { + if (ops->geom_flags & XFS_BTREE_LONG_PTRS) { buf->bb_u.l.bb_leftsib = cpu_to_be64(NULLFSBLOCK); buf->bb_u.l.bb_rightsib = cpu_to_be64(NULLFSBLOCK); if (crc) { @@ -1263,15 +1253,15 @@ xfs_btree_init_block_int( void xfs_btree_init_block( - struct xfs_mount *mp, - struct xfs_buf *bp, - xfs_btnum_t btnum, - __u16 level, - __u16 numrecs, - __u64 owner) + struct xfs_mount *mp, + struct xfs_buf *bp, + const struct xfs_btree_ops *ops, + __u16 level, + __u16 numrecs, + __u64 owner) { - xfs_btree_init_block_int(mp, XFS_BUF_TO_BLOCK(bp), xfs_buf_daddr(bp), - btnum, level, numrecs, owner, 0); + xfs_btree_init_block_int(mp, XFS_BUF_TO_BLOCK(bp), ops, + xfs_buf_daddr(bp), level, numrecs, owner); } void @@ -1296,9 +1286,8 @@ xfs_btree_init_block_cur( else owner = cur->bc_ag.pag->pag_agno; - xfs_btree_init_block_int(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), - xfs_buf_daddr(bp), cur->bc_btnum, level, - numrecs, owner, cur->bc_flags); + xfs_btree_init_block_int(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), cur->bc_ops, + xfs_buf_daddr(bp), level, numrecs, owner); } /* diff --git a/libxfs/xfs_btree.h b/libxfs/xfs_btree.h index 2c2d5db94b1..4ee3f13625e 100644 --- a/libxfs/xfs_btree.h +++ b/libxfs/xfs_btree.h @@ -63,7 +63,8 @@ union xfs_btree_rec { #define XFS_BTNUM_RMAP ((xfs_btnum_t)XFS_BTNUM_RMAPi) #define XFS_BTNUM_REFC ((xfs_btnum_t)XFS_BTNUM_REFCi) -uint32_t xfs_btree_magic(int crc, xfs_btnum_t btnum); +struct xfs_btree_ops; +uint32_t xfs_btree_magic(struct xfs_mount *mp, const struct xfs_btree_ops *ops); /* * For logging record fields. @@ -450,25 +451,12 @@ xfs_btree_reada_bufs( /* * Initialise a new btree block header */ -void -xfs_btree_init_block( - struct xfs_mount *mp, - struct xfs_buf *bp, - xfs_btnum_t btnum, - __u16 level, - __u16 numrecs, - __u64 owner); - -void -xfs_btree_init_block_int( - struct xfs_mount *mp, - struct xfs_btree_block *buf, - xfs_daddr_t blkno, - xfs_btnum_t btnum, - __u16 level, - __u16 numrecs, - __u64 owner, - unsigned int flags); +void xfs_btree_init_block(struct xfs_mount *mp, struct xfs_buf *bp, + const struct xfs_btree_ops *ops, __u16 level, __u16 numrecs, + __u64 owner); +void xfs_btree_init_block_int(struct xfs_mount *mp, + struct xfs_btree_block *buf, const struct xfs_btree_ops *ops, + xfs_daddr_t blkno, __u16 level, __u16 numrecs, __u64 owner); /* * Common btree core entry points. diff --git a/libxfs/xfs_btree_staging.c b/libxfs/xfs_btree_staging.c index 0ea44dcf14f..e535d10e13f 100644 --- a/libxfs/xfs_btree_staging.c +++ b/libxfs/xfs_btree_staging.c @@ -411,9 +411,8 @@ xfs_btree_bload_prep_block( /* Initialize it and send it out. */ xfs_btree_init_block_int(cur->bc_mp, ifp->if_broot, - XFS_BUF_DADDR_NULL, cur->bc_btnum, level, - nr_this_block, cur->bc_ino.ip->i_ino, - cur->bc_flags); + cur->bc_ops, XFS_BUF_DADDR_NULL, level, + nr_this_block, cur->bc_ino.ip->i_ino); *bpp = NULL; *blockp = ifp->if_broot; From patchwork Sun Dec 31 22:21:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507854 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BE22BC127 for ; Sun, 31 Dec 2023 22:21:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TklNEGJP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45AA1C433C7; Sun, 31 Dec 2023 22:21:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061264; bh=AdItQf2FW4KknGl18FRbhRR8h9T5f2//uFWbqGH4T7Q=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=TklNEGJP7yC1L1OupVCRbIE4z5/vg6HRdZS9jjJqLGt48wjJ2rpTL2mn5s6G5Fig0 VvAROxUNm7ljVwLskHCAluGuPVrq+/5hDPXzozxbrrSvfmxFME7uWoAkGKsfJd+AsW E25DbqW1J/RInRXYKUy7aA2XOnLPEAE2KZAhpwH2Kzb8q/F774WMMT9a594Nr3vyWu 9v11S6R9cL+6Xsd3u5eT/shljAUDgXkzqOGGfsTgkwVWUWv+aOJrbv6a0ml+1wjO9s E4wPFZO6uF9STPuHa4uBpe/9Ihd6AvkBsxSTAaemH0g+bVSAdl5yBFBV1isqqWEiOh 58ncWz6pIw8qw== Date: Sun, 31 Dec 2023 14:21:03 -0800 Subject: [PATCH 5/9] xfs: rename btree block/buffer init functions From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994055.1795132.3112115897922046848.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Rename xfs_btree_init_block_int to xfs_btree_init_block, and xfs_btree_init_block to xfs_btree_init_buf so that the name suggests the type that caller are supposed to pass in. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 2 +- libxfs/xfs_ag.c | 6 +++--- libxfs/xfs_bmap.c | 6 +++--- libxfs/xfs_bmap_btree.c | 2 +- libxfs/xfs_btree.c | 8 ++++---- libxfs/xfs_btree.h | 4 ++-- libxfs/xfs_btree_staging.c | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index 97edb4a2b2b..ad4e42d6b2a 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -402,7 +402,7 @@ xfbtree_init_leaf_block( trace_xfbtree_create_root_buf(xfbt, bp); bp->b_ops = cfg->btree_ops->buf_ops; - xfs_btree_init_block_int(mp, bp->b_addr, cfg->btree_ops, daddr, 0, 0, + xfs_btree_init_block(mp, bp->b_addr, cfg->btree_ops, daddr, 0, 0, cfg->owner); error = xfs_bwrite(bp); xfs_buf_relse(bp); diff --git a/libxfs/xfs_ag.c b/libxfs/xfs_ag.c index 9ac49e0a66b..ddd5584f23e 100644 --- a/libxfs/xfs_ag.c +++ b/libxfs/xfs_ag.c @@ -471,7 +471,7 @@ xfs_btroot_init( struct xfs_buf *bp, struct aghdr_init_data *id) { - xfs_btree_init_block(mp, bp, id->bc_ops, 0, 0, id->agno); + xfs_btree_init_buf(mp, bp, id->bc_ops, 0, 0, id->agno); } /* Finish initializing a free space btree. */ @@ -537,7 +537,7 @@ xfs_bnoroot_init( struct xfs_buf *bp, struct aghdr_init_data *id) { - xfs_btree_init_block(mp, bp, id->bc_ops, 0, 0, id->agno); + xfs_btree_init_buf(mp, bp, id->bc_ops, 0, 0, id->agno); xfs_freesp_init_recs(mp, bp, id); } @@ -553,7 +553,7 @@ xfs_rmaproot_init( struct xfs_btree_block *block = XFS_BUF_TO_BLOCK(bp); struct xfs_rmap_rec *rrec; - xfs_btree_init_block(mp, bp, id->bc_ops, 0, 4, id->agno); + xfs_btree_init_buf(mp, bp, id->bc_ops, 0, 4, id->agno); /* * mark the AG header regions as static metadata The BNO diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index e7c39ec72f0..5e3a973e490 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -638,8 +638,8 @@ xfs_bmap_extents_to_btree( * Fill in the root. */ block = ifp->if_broot; - xfs_btree_init_block_int(mp, block, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, - 1, 1, ip->i_ino); + xfs_btree_init_block(mp, block, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, 1, + 1, ip->i_ino); /* * Need a cursor. Can't allocate until bb_level is filled in. */ @@ -684,7 +684,7 @@ xfs_bmap_extents_to_btree( */ abp->b_ops = &xfs_bmbt_buf_ops; ablock = XFS_BUF_TO_BLOCK(abp); - xfs_btree_init_block_int(mp, ablock, &xfs_bmbt_ops, xfs_buf_daddr(abp), + xfs_btree_init_block(mp, ablock, &xfs_bmbt_ops, xfs_buf_daddr(abp), 0, 0, ip->i_ino); for_each_xfs_iext(ifp, &icur, &rec) { diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index b599201d97a..ea6bd791eff 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -42,7 +42,7 @@ xfs_bmdr_to_bmbt( xfs_bmbt_key_t *tkp; __be64 *tpp; - xfs_btree_init_block_int(mp, rblock, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, + xfs_btree_init_block(mp, rblock, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, 0, 0, ip->i_ino); rblock->bb_level = dblock->bb_level; ASSERT(be16_to_cpu(rblock->bb_level) > 0); diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c index d3b2b903def..452ebd7095d 100644 --- a/libxfs/xfs_btree.c +++ b/libxfs/xfs_btree.c @@ -1210,7 +1210,7 @@ xfs_btree_set_sibling( } void -xfs_btree_init_block_int( +xfs_btree_init_block( struct xfs_mount *mp, struct xfs_btree_block *buf, const struct xfs_btree_ops *ops, @@ -1252,7 +1252,7 @@ xfs_btree_init_block_int( } void -xfs_btree_init_block( +xfs_btree_init_buf( struct xfs_mount *mp, struct xfs_buf *bp, const struct xfs_btree_ops *ops, @@ -1260,7 +1260,7 @@ xfs_btree_init_block( __u16 numrecs, __u64 owner) { - xfs_btree_init_block_int(mp, XFS_BUF_TO_BLOCK(bp), ops, + xfs_btree_init_block(mp, XFS_BUF_TO_BLOCK(bp), ops, xfs_buf_daddr(bp), level, numrecs, owner); } @@ -1286,7 +1286,7 @@ xfs_btree_init_block_cur( else owner = cur->bc_ag.pag->pag_agno; - xfs_btree_init_block_int(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), cur->bc_ops, + xfs_btree_init_block(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), cur->bc_ops, xfs_buf_daddr(bp), level, numrecs, owner); } diff --git a/libxfs/xfs_btree.h b/libxfs/xfs_btree.h index 4ee3f13625e..6a27c34e68c 100644 --- a/libxfs/xfs_btree.h +++ b/libxfs/xfs_btree.h @@ -451,10 +451,10 @@ xfs_btree_reada_bufs( /* * Initialise a new btree block header */ -void xfs_btree_init_block(struct xfs_mount *mp, struct xfs_buf *bp, +void xfs_btree_init_buf(struct xfs_mount *mp, struct xfs_buf *bp, const struct xfs_btree_ops *ops, __u16 level, __u16 numrecs, __u64 owner); -void xfs_btree_init_block_int(struct xfs_mount *mp, +void xfs_btree_init_block(struct xfs_mount *mp, struct xfs_btree_block *buf, const struct xfs_btree_ops *ops, xfs_daddr_t blkno, __u16 level, __u16 numrecs, __u64 owner); diff --git a/libxfs/xfs_btree_staging.c b/libxfs/xfs_btree_staging.c index e535d10e13f..c2f39702b7b 100644 --- a/libxfs/xfs_btree_staging.c +++ b/libxfs/xfs_btree_staging.c @@ -410,7 +410,7 @@ xfs_btree_bload_prep_block( ifp->if_broot_bytes = (int)new_size; /* Initialize it and send it out. */ - xfs_btree_init_block_int(cur->bc_mp, ifp->if_broot, + xfs_btree_init_block(cur->bc_mp, ifp->if_broot, cur->bc_ops, XFS_BUF_DADDR_NULL, level, nr_this_block, cur->bc_ino.ip->i_ino); From patchwork Sun Dec 31 22:21:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507855 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DC65C12D for ; Sun, 31 Dec 2023 22:21:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nF5ABrIL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAB05C433C7; Sun, 31 Dec 2023 22:21:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061279; bh=5KgCB5lgpmCYEZ9pmGfzy5uOPpCtc6/T+SCu6xk2xQc=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=nF5ABrILlGULIEZruG+eM3VLpN85J9cI0g/Ih8lItTgKI+sl/57lga9bj0UwUQZBY HLBFXlG/fMeruSubhnsrAGypXsql7eInIIGXfGk9dTLR2L+XpvfFF2umtkg5i/JuDn 1hVFkexgj5z/ICdiqLOQvGWfKz8GgkZmxPJS/xH+5Uw7RMOBg+c0GLUikcYxXQbyLK IduAktyiU9PpcS4Ds9FHbU76S1/5S+lmwIfS3VGVDuxOLuTavZEC6SPcErQzms8jPP kt0NeqwUJbRPPLegZ45Z79U4r8ySAbhtv5E0Pl95piO/y3J3UeWySbVbETgZ4qVRh0 iyXoVwKskRyWw== Date: Sun, 31 Dec 2023 14:21:19 -0800 Subject: [PATCH 6/9] xfs: btree convert xfs_btree_init_block to xfs_btree_init_buf calls From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994069.1795132.2055529925177763976.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Convert any place we call xfs_btree_init_block with a buffer to use the _init_buf function. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 3 +-- libxfs/xfs_bmap.c | 3 +-- libxfs/xfs_btree.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index ad4e42d6b2a..7310f29a8c2 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -402,8 +402,7 @@ xfbtree_init_leaf_block( trace_xfbtree_create_root_buf(xfbt, bp); bp->b_ops = cfg->btree_ops->buf_ops; - xfs_btree_init_block(mp, bp->b_addr, cfg->btree_ops, daddr, 0, 0, - cfg->owner); + xfs_btree_init_buf(mp, bp, cfg->btree_ops, 0, 0, cfg->owner); error = xfs_bwrite(bp); xfs_buf_relse(bp); if (error) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 5e3a973e490..1c53204e1d5 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -684,8 +684,7 @@ xfs_bmap_extents_to_btree( */ abp->b_ops = &xfs_bmbt_buf_ops; ablock = XFS_BUF_TO_BLOCK(abp); - xfs_btree_init_block(mp, ablock, &xfs_bmbt_ops, xfs_buf_daddr(abp), - 0, 0, ip->i_ino); + xfs_btree_init_buf(mp, abp, &xfs_bmbt_ops, 0, 0, ip->i_ino); for_each_xfs_iext(ifp, &icur, &rec) { if (isnullstartblock(rec.br_startblock)) diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c index 452ebd7095d..c8bbda80b40 100644 --- a/libxfs/xfs_btree.c +++ b/libxfs/xfs_btree.c @@ -1286,8 +1286,7 @@ xfs_btree_init_block_cur( else owner = cur->bc_ag.pag->pag_agno; - xfs_btree_init_block(cur->bc_mp, XFS_BUF_TO_BLOCK(bp), cur->bc_ops, - xfs_buf_daddr(bp), level, numrecs, owner); + xfs_btree_init_buf(cur->bc_mp, bp, cur->bc_ops, level, numrecs, owner); } /* From patchwork Sun Dec 31 22:21:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507856 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA5BBC127 for ; Sun, 31 Dec 2023 22:21:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QteMpV7R" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A9D4C433C7; Sun, 31 Dec 2023 22:21:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061295; bh=8mD7v80Zh3zTC0Gv801scn614GUH0/LBmt159Tv49HA=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=QteMpV7RVCWXoCJz2fG6OP1Q88Khhsw6PSNUUbHIuw5Invfk/jnkw5EdCAUIPuUUn ecYVUlYm6bS60K4ZpuM4LfJDyhQZ2rpYrIThkNXGSArWpQ7Je32XbTx1bSLV1Lukgf NE1lLeySDAVVbvuvJmC3diYXoAXrnph7Y6dxdSqCZPkMGERGGZKtpwl/9cWK38hAsi P2/ukZ3/qlU9dXi9VBa55Se5ZGumopSIrHSWkeT8wIHO+TB9CsTR1U5uJIRUi7B9Tz z6EUjrCllg3Pu62u9TDFSHCdxYJ/Ems/5ysrG/8dS2IGQ1yBZ2Z7RT1Jt99JYxn3ip +15lVw2i15nwQ== Date: Sun, 31 Dec 2023 14:21:35 -0800 Subject: [PATCH 7/9] xfs: remove the unnecessary daddr paramter to _init_block From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994083.1795132.2433498207897795023.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Now that all of the callers pass XFS_BUF_DADDR_NULL as the daddr parameter, we can elide that too. Signed-off-by: Darrick J. Wong --- libxfs/xfs_bmap.c | 3 +-- libxfs/xfs_bmap_btree.c | 3 +-- libxfs/xfs_btree.c | 19 ++++++++++++++++--- libxfs/xfs_btree.h | 2 +- libxfs/xfs_btree_staging.c | 5 ++--- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 1c53204e1d5..46551021755 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -638,8 +638,7 @@ xfs_bmap_extents_to_btree( * Fill in the root. */ block = ifp->if_broot; - xfs_btree_init_block(mp, block, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, 1, - 1, ip->i_ino); + xfs_btree_init_block(mp, block, &xfs_bmbt_ops, 1, 1, ip->i_ino); /* * Need a cursor. Can't allocate until bb_level is filled in. */ diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index ea6bd791eff..1dd85d4d41c 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -42,8 +42,7 @@ xfs_bmdr_to_bmbt( xfs_bmbt_key_t *tkp; __be64 *tpp; - xfs_btree_init_block(mp, rblock, &xfs_bmbt_ops, XFS_BUF_DADDR_NULL, - 0, 0, ip->i_ino); + xfs_btree_init_block(mp, rblock, &xfs_bmbt_ops, 0, 0, ip->i_ino); rblock->bb_level = dblock->bb_level; ASSERT(be16_to_cpu(rblock->bb_level) > 0); rblock->bb_numrecs = dblock->bb_numrecs; diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c index c8bbda80b40..218e96d7976 100644 --- a/libxfs/xfs_btree.c +++ b/libxfs/xfs_btree.c @@ -1209,8 +1209,8 @@ xfs_btree_set_sibling( } } -void -xfs_btree_init_block( +static void +__xfs_btree_init_block( struct xfs_mount *mp, struct xfs_btree_block *buf, const struct xfs_btree_ops *ops, @@ -1251,6 +1251,19 @@ xfs_btree_init_block( } } +void +xfs_btree_init_block( + struct xfs_mount *mp, + struct xfs_btree_block *block, + const struct xfs_btree_ops *ops, + __u16 level, + __u16 numrecs, + __u64 owner) +{ + __xfs_btree_init_block(mp, block, ops, XFS_BUF_DADDR_NULL, level, + numrecs, owner); +} + void xfs_btree_init_buf( struct xfs_mount *mp, @@ -1260,7 +1273,7 @@ xfs_btree_init_buf( __u16 numrecs, __u64 owner) { - xfs_btree_init_block(mp, XFS_BUF_TO_BLOCK(bp), ops, + __xfs_btree_init_block(mp, XFS_BUF_TO_BLOCK(bp), ops, xfs_buf_daddr(bp), level, numrecs, owner); } diff --git a/libxfs/xfs_btree.h b/libxfs/xfs_btree.h index 6a27c34e68c..41000bd6ccc 100644 --- a/libxfs/xfs_btree.h +++ b/libxfs/xfs_btree.h @@ -456,7 +456,7 @@ void xfs_btree_init_buf(struct xfs_mount *mp, struct xfs_buf *bp, __u64 owner); void xfs_btree_init_block(struct xfs_mount *mp, struct xfs_btree_block *buf, const struct xfs_btree_ops *ops, - xfs_daddr_t blkno, __u16 level, __u16 numrecs, __u64 owner); + __u16 level, __u16 numrecs, __u64 owner); /* * Common btree core entry points. diff --git a/libxfs/xfs_btree_staging.c b/libxfs/xfs_btree_staging.c index c2f39702b7b..ec496915433 100644 --- a/libxfs/xfs_btree_staging.c +++ b/libxfs/xfs_btree_staging.c @@ -410,9 +410,8 @@ xfs_btree_bload_prep_block( ifp->if_broot_bytes = (int)new_size; /* Initialize it and send it out. */ - xfs_btree_init_block(cur->bc_mp, ifp->if_broot, - cur->bc_ops, XFS_BUF_DADDR_NULL, level, - nr_this_block, cur->bc_ino.ip->i_ino); + xfs_btree_init_block(cur->bc_mp, ifp->if_broot, cur->bc_ops, + level, nr_this_block, cur->bc_ino.ip->i_ino); *bpp = NULL; *blockp = ifp->if_broot; From patchwork Sun Dec 31 22:21:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507857 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B7D2C129 for ; Sun, 31 Dec 2023 22:21:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EUvxHU0C" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F713C433C8; Sun, 31 Dec 2023 22:21:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061311; bh=i8ECzpPFhAb8UC4y3YDK9WexTyPKmY4l8fqCbjdMuTM=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=EUvxHU0C66bvCviwpVqlNdHBMV2Xb8cAQHrQQAPtTQtsUvlrRmFpilJsv5lzuNPs0 TWdksoK+zcahHq4wkY1sPQAxaXBrb0Amd/sn1whtBXc/2JzHTmglUzTDeNqHWZwwl/ hoTqF62SJ/N0QlwIXW7WlnaMfAUzfspl610IaTfm3NAz4+7lYGxY143izSElWfO651 VGYf/Se8+BX0SZOWRp4Qqc1Zvm4kObyESveDu+16OdqwZl3sN6gyGknempjxHff9CJ KHOeCCDtu93ZHBJdCkEhZaBg0eHfXhlDgNyg1ktrKAKHq8v1/OiIMvr18KeLGKSx50 31M1onb49X5qw== Date: Sun, 31 Dec 2023 14:21:50 -0800 Subject: [PATCH 8/9] xfs: set btree block buffer ops in _init_buf From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994097.1795132.7145169827970828780.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Set the btree block buffer ops in xfs_btree_init_buf since we already have access to that information through the btree ops. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 1 - libxfs/xfs_bmap.c | 1 - libxfs/xfs_btree.c | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index 7310f29a8c2..d76b3d5ea70 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -401,7 +401,6 @@ xfbtree_init_leaf_block( trace_xfbtree_create_root_buf(xfbt, bp); - bp->b_ops = cfg->btree_ops->buf_ops; xfs_btree_init_buf(mp, bp, cfg->btree_ops, 0, 0, cfg->owner); error = xfs_bwrite(bp); xfs_buf_relse(bp); diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 46551021755..9a2cb5662d1 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -681,7 +681,6 @@ xfs_bmap_extents_to_btree( /* * Fill in the child block. */ - abp->b_ops = &xfs_bmbt_buf_ops; ablock = XFS_BUF_TO_BLOCK(abp); xfs_btree_init_buf(mp, abp, &xfs_bmbt_ops, 0, 0, ip->i_ino); diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c index 218e96d7976..6705a6d83f3 100644 --- a/libxfs/xfs_btree.c +++ b/libxfs/xfs_btree.c @@ -1275,6 +1275,7 @@ xfs_btree_init_buf( { __xfs_btree_init_block(mp, XFS_BUF_TO_BLOCK(bp), ops, xfs_buf_daddr(bp), level, numrecs, owner); + bp->b_ops = ops->buf_ops; } void From patchwork Sun Dec 31 22:22:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13507858 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24BE0C127 for ; Sun, 31 Dec 2023 22:22:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ks7FEYZ3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF2DAC433C8; Sun, 31 Dec 2023 22:22:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704061326; bh=GarnTWWkz/IFGJEcYxfjluoQeepfydy66BkeKKk0/Rk=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=ks7FEYZ3ZpCdGZb1AKS+TaCWO8558OZEkLhQqscRxGoKBz6XMY58ooffHWU/O2Iu3 sZyzCOXEDN5ASWmNz8YCLXhQ60UCt/KbnkWV6u7wOsYHX+Lff4CevstkgqiRzw5b9j NMbv0UlEQS86UnBttBAT0wSKgbFdVfzZ/Gxzfi9/ear5cAn8U5BK4Z2x0bD+UMiGoM kyFknSzH8Z1EZ7QxFFdzGskwd3pwHmzJ24e+3YuSz20rB9EwLkTgtBC3YPgMfLdWxw fDcTuBJjI8iGynK/o5BoLjLpxNf6NREkRmN3YRpw1SszUXHOWQ3dRYRzw/AoNIQRHV /eTm8QlLU7Txg== Date: Sun, 31 Dec 2023 14:22:06 -0800 Subject: [PATCH 9/9] xfs: remove unnecessary fields in xfbtree_config From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org Message-ID: <170404994110.1795132.12835250791258551159.stgit@frogsfrogsfrogs> In-Reply-To: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> References: <170404993983.1795132.17312636757680803212.stgit@frogsfrogsfrogs> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-xfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Remove these fields now that we get all the info we need from the btree ops. Signed-off-by: Darrick J. Wong --- libxfs/xfbtree.c | 4 ++-- libxfs/xfs_btree_mem.h | 9 --------- libxfs/xfs_rmap_btree.c | 1 - 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/libxfs/xfbtree.c b/libxfs/xfbtree.c index d76b3d5ea70..b4762393b3a 100644 --- a/libxfs/xfbtree.c +++ b/libxfs/xfbtree.c @@ -370,7 +370,7 @@ xfbtree_rec_bytes( { unsigned int blocklen = xfo_to_b(1); - if (cfg->flags & XFBTREE_CREATE_LONG_PTRS) { + if (cfg->btree_ops->geom_flags & XFS_BTREE_LONG_PTRS) { if (xfs_has_crc(mp)) return blocklen - XFS_BTREE_LBLOCK_CRC_LEN; @@ -464,7 +464,7 @@ xfbtree_create( goto err_buftarg; /* Set up min/maxrecs for this btree. */ - if (cfg->flags & XFBTREE_CREATE_LONG_PTRS) + if (cfg->btree_ops->geom_flags & XFS_BTREE_LONG_PTRS) keyptr_len += sizeof(__be64); else keyptr_len += sizeof(__be32); diff --git a/libxfs/xfs_btree_mem.h b/libxfs/xfs_btree_mem.h index 29f97c50304..1f961f3f554 100644 --- a/libxfs/xfs_btree_mem.h +++ b/libxfs/xfs_btree_mem.h @@ -17,17 +17,8 @@ struct xfbtree_config { /* Owner of this btree. */ unsigned long long owner; - - /* Btree type number */ - xfs_btnum_t btnum; - - /* XFBTREE_CREATE_* flags */ - unsigned int flags; }; -/* btree has long pointers */ -#define XFBTREE_CREATE_LONG_PTRS (1U << 0) - #ifdef CONFIG_XFS_BTREE_IN_XFILE unsigned int xfs_btree_mem_head_nlevels(struct xfs_buf *head_bp); diff --git a/libxfs/xfs_rmap_btree.c b/libxfs/xfs_rmap_btree.c index f1325586433..e36237bf750 100644 --- a/libxfs/xfs_rmap_btree.c +++ b/libxfs/xfs_rmap_btree.c @@ -667,7 +667,6 @@ xfs_rmapbt_mem_create( struct xfbtree_config cfg = { .btree_ops = &xfs_rmapbt_mem_ops, .target = target, - .btnum = XFS_BTNUM_RMAP, .owner = agno, };