xfs: add an entries pointer to struct xfs_dir3_icleaf_hdr
All callers of the ->node_tree_p dir operation already have a struct xfs_dir3_icleaf_hdr from a previous call to xfs_da_leaf_hdr_from_disk at hand, or just need slight changes to the calling conventions to do so. Add a pointer to the entries to struct xfs_dir3_icleaf_hdr to clean up this pattern. To make this possible the xfs_dir3_leaf_log_ents function grow a new argument to pass the xfs_dir3_icleaf_hdr that call callers already have, and xfs_dir2_leaf_lookup_int returns the xfs_dir3_icleaf_hdr to the callers so that they can later use it. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:

committed by
Darrick J. Wong

parent
163fbbb356
commit
787b0893ad
@@ -914,7 +914,6 @@ xfs_dir2_leaf_to_block(
|
||||
__be16 *tagp; /* end of entry (tag) */
|
||||
int to; /* block/leaf to index */
|
||||
xfs_trans_t *tp; /* transaction pointer */
|
||||
struct xfs_dir2_leaf_entry *ents;
|
||||
struct xfs_dir3_icleaf_hdr leafhdr;
|
||||
|
||||
trace_xfs_dir2_leaf_to_block(args);
|
||||
@@ -924,7 +923,6 @@ xfs_dir2_leaf_to_block(
|
||||
mp = dp->i_mount;
|
||||
leaf = lbp->b_addr;
|
||||
xfs_dir2_leaf_hdr_from_disk(mp, &leafhdr, leaf);
|
||||
ents = dp->d_ops->leaf_ents_p(leaf);
|
||||
ltp = xfs_dir2_leaf_tail_p(args->geo, leaf);
|
||||
|
||||
ASSERT(leafhdr.magic == XFS_DIR2_LEAF1_MAGIC ||
|
||||
@@ -1004,9 +1002,10 @@ xfs_dir2_leaf_to_block(
|
||||
*/
|
||||
lep = xfs_dir2_block_leaf_p(btp);
|
||||
for (from = to = 0; from < leafhdr.count; from++) {
|
||||
if (ents[from].address == cpu_to_be32(XFS_DIR2_NULL_DATAPTR))
|
||||
if (leafhdr.ents[from].address ==
|
||||
cpu_to_be32(XFS_DIR2_NULL_DATAPTR))
|
||||
continue;
|
||||
lep[to++] = ents[from];
|
||||
lep[to++] = leafhdr.ents[from];
|
||||
}
|
||||
ASSERT(to == be32_to_cpu(btp->count));
|
||||
xfs_dir2_block_log_leaf(tp, dbp, 0, be32_to_cpu(btp->count) - 1);
|
||||
|
Reference in New Issue
Block a user