Skip to content

Commit 169d89f

Browse files
author
Chandan Babu R
committed
Merge tag 'btree-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA
xfs: cleanups for inode rooted btree code [v4.2 8/8] This series prepares the btree code to support realtime reverse mapping btrees by refactoring xfs_ifork_realloc to be fed a per-btree ops structure so that it can handle multiple types of inode-rooted btrees. It moves on to refactoring the btree code to use the new realloc routines. With a bit of luck, this should all go splendidly. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org> * tag 'btree-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux: xfs: standardize the btree maxrecs function parameters xfs: replace shouty XFS_BM{BT,DR} macros
2 parents 5384639 + 411a712 commit 169d89f

19 files changed

Lines changed: 237 additions & 154 deletions

fs/xfs/libxfs/xfs_alloc_btree.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -569,11 +569,11 @@ xfs_allocbt_block_maxrecs(
569569
/*
570570
* Calculate number of records in an alloc btree block.
571571
*/
572-
int
572+
unsigned int
573573
xfs_allocbt_maxrecs(
574574
struct xfs_mount *mp,
575-
int blocklen,
576-
int leaf)
575+
unsigned int blocklen,
576+
bool leaf)
577577
{
578578
blocklen -= XFS_ALLOC_BLOCK_LEN(mp);
579579
return xfs_allocbt_block_maxrecs(blocklen, leaf);

fs/xfs/libxfs/xfs_alloc_btree.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ struct xfs_btree_cur *xfs_bnobt_init_cursor(struct xfs_mount *mp,
5353
struct xfs_btree_cur *xfs_cntbt_init_cursor(struct xfs_mount *mp,
5454
struct xfs_trans *tp, struct xfs_buf *bp,
5555
struct xfs_perag *pag);
56-
extern int xfs_allocbt_maxrecs(struct xfs_mount *, int, int);
56+
unsigned int xfs_allocbt_maxrecs(struct xfs_mount *mp, unsigned int blocklen,
57+
bool leaf);
5758
extern xfs_extlen_t xfs_allocbt_calc_size(struct xfs_mount *mp,
5859
unsigned long long len);
5960

fs/xfs/libxfs/xfs_attr_leaf.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ xfs_attr_shortform_bytesfit(
686686
*/
687687
if (!dp->i_forkoff && dp->i_df.if_bytes >
688688
xfs_default_attroffset(dp))
689-
dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS);
689+
dsize = xfs_bmdr_space_calc(MINDBTPTRS);
690690
break;
691691
case XFS_DINODE_FMT_BTREE:
692692
/*
@@ -700,19 +700,19 @@ xfs_attr_shortform_bytesfit(
700700
return 0;
701701
return dp->i_forkoff;
702702
}
703-
dsize = XFS_BMAP_BROOT_SPACE(mp, dp->i_df.if_broot);
703+
dsize = xfs_bmap_bmdr_space(dp->i_df.if_broot);
704704
break;
705705
}
706706

707707
/*
708708
* A data fork btree root must have space for at least
709709
* MINDBTPTRS key/ptr pairs if the data fork is small or empty.
710710
*/
711-
minforkoff = max_t(int64_t, dsize, XFS_BMDR_SPACE_CALC(MINDBTPTRS));
711+
minforkoff = max_t(int64_t, dsize, xfs_bmdr_space_calc(MINDBTPTRS));
712712
minforkoff = roundup(minforkoff, 8) >> 3;
713713

714714
/* attr fork btree root can have at least this many key/ptr pairs */
715-
maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS);
715+
maxforkoff = XFS_LITINO(mp) - xfs_bmdr_space_calc(MINABTPTRS);
716716
maxforkoff = maxforkoff >> 3; /* rounded down */
717717

718718
if (offset >= maxforkoff)

fs/xfs/libxfs/xfs_bmap.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ xfs_bmap_compute_maxlevels(
7979
maxleafents = xfs_iext_max_nextents(xfs_has_large_extent_counts(mp),
8080
whichfork);
8181
if (whichfork == XFS_DATA_FORK)
82-
sz = XFS_BMDR_SPACE_CALC(MINDBTPTRS);
82+
sz = xfs_bmdr_space_calc(MINDBTPTRS);
8383
else
84-
sz = XFS_BMDR_SPACE_CALC(MINABTPTRS);
84+
sz = xfs_bmdr_space_calc(MINABTPTRS);
8585

8686
maxrootrecs = xfs_bmdr_maxrecs(sz, 0);
8787
minleafrecs = mp->m_bmap_dmnr[0];
@@ -102,8 +102,8 @@ xfs_bmap_compute_attr_offset(
102102
struct xfs_mount *mp)
103103
{
104104
if (mp->m_sb.sb_inodesize == 256)
105-
return XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS);
106-
return XFS_BMDR_SPACE_CALC(6 * MINABTPTRS);
105+
return XFS_LITINO(mp) - xfs_bmdr_space_calc(MINABTPTRS);
106+
return xfs_bmdr_space_calc(6 * MINABTPTRS);
107107
}
108108

109109
STATIC int /* error */
@@ -298,7 +298,7 @@ xfs_check_block(
298298
prevp = NULL;
299299
for( i = 1; i <= xfs_btree_get_numrecs(block); i++) {
300300
dmxr = mp->m_bmap_dmxr[0];
301-
keyp = XFS_BMBT_KEY_ADDR(mp, block, i);
301+
keyp = xfs_bmbt_key_addr(mp, block, i);
302302

303303
if (prevp) {
304304
ASSERT(be64_to_cpu(prevp->br_startoff) <
@@ -310,15 +310,15 @@ xfs_check_block(
310310
* Compare the block numbers to see if there are dups.
311311
*/
312312
if (root)
313-
pp = XFS_BMAP_BROOT_PTR_ADDR(mp, block, i, sz);
313+
pp = xfs_bmap_broot_ptr_addr(mp, block, i, sz);
314314
else
315-
pp = XFS_BMBT_PTR_ADDR(mp, block, i, dmxr);
315+
pp = xfs_bmbt_ptr_addr(mp, block, i, dmxr);
316316

317317
for (j = i+1; j <= be16_to_cpu(block->bb_numrecs); j++) {
318318
if (root)
319-
thispa = XFS_BMAP_BROOT_PTR_ADDR(mp, block, j, sz);
319+
thispa = xfs_bmap_broot_ptr_addr(mp, block, j, sz);
320320
else
321-
thispa = XFS_BMBT_PTR_ADDR(mp, block, j, dmxr);
321+
thispa = xfs_bmbt_ptr_addr(mp, block, j, dmxr);
322322
if (*thispa == *pp) {
323323
xfs_warn(mp, "%s: thispa(%d) == pp(%d) %lld",
324324
__func__, j, i,
@@ -373,7 +373,7 @@ xfs_bmap_check_leaf_extents(
373373
level = be16_to_cpu(block->bb_level);
374374
ASSERT(level > 0);
375375
xfs_check_block(block, mp, 1, ifp->if_broot_bytes);
376-
pp = XFS_BMAP_BROOT_PTR_ADDR(mp, block, 1, ifp->if_broot_bytes);
376+
pp = xfs_bmap_broot_ptr_addr(mp, block, 1, ifp->if_broot_bytes);
377377
bno = be64_to_cpu(*pp);
378378

379379
ASSERT(bno != NULLFSBLOCK);
@@ -406,7 +406,7 @@ xfs_bmap_check_leaf_extents(
406406
*/
407407

408408
xfs_check_block(block, mp, 0, 0);
409-
pp = XFS_BMBT_PTR_ADDR(mp, block, 1, mp->m_bmap_dmxr[1]);
409+
pp = xfs_bmbt_ptr_addr(mp, block, 1, mp->m_bmap_dmxr[1]);
410410
bno = be64_to_cpu(*pp);
411411
if (XFS_IS_CORRUPT(mp, !xfs_verify_fsbno(mp, bno))) {
412412
xfs_btree_mark_sick(cur);
@@ -446,14 +446,14 @@ xfs_bmap_check_leaf_extents(
446446
* conform with the first entry in this one.
447447
*/
448448

449-
ep = XFS_BMBT_REC_ADDR(mp, block, 1);
449+
ep = xfs_bmbt_rec_addr(mp, block, 1);
450450
if (i) {
451451
ASSERT(xfs_bmbt_disk_get_startoff(&last) +
452452
xfs_bmbt_disk_get_blockcount(&last) <=
453453
xfs_bmbt_disk_get_startoff(ep));
454454
}
455455
for (j = 1; j < num_recs; j++) {
456-
nextp = XFS_BMBT_REC_ADDR(mp, block, j + 1);
456+
nextp = xfs_bmbt_rec_addr(mp, block, j + 1);
457457
ASSERT(xfs_bmbt_disk_get_startoff(ep) +
458458
xfs_bmbt_disk_get_blockcount(ep) <=
459459
xfs_bmbt_disk_get_startoff(nextp));
@@ -584,9 +584,9 @@ xfs_bmap_btree_to_extents(
584584
ASSERT(ifp->if_format == XFS_DINODE_FMT_BTREE);
585585
ASSERT(be16_to_cpu(rblock->bb_level) == 1);
586586
ASSERT(be16_to_cpu(rblock->bb_numrecs) == 1);
587-
ASSERT(xfs_bmbt_maxrecs(mp, ifp->if_broot_bytes, 0) == 1);
587+
ASSERT(xfs_bmbt_maxrecs(mp, ifp->if_broot_bytes, false) == 1);
588588

589-
pp = XFS_BMAP_BROOT_PTR_ADDR(mp, rblock, 1, ifp->if_broot_bytes);
589+
pp = xfs_bmap_broot_ptr_addr(mp, rblock, 1, ifp->if_broot_bytes);
590590
cbno = be64_to_cpu(*pp);
591591
#ifdef DEBUG
592592
if (XFS_IS_CORRUPT(cur->bc_mp, !xfs_verify_fsbno(mp, cbno))) {
@@ -714,7 +714,7 @@ xfs_bmap_extents_to_btree(
714714
for_each_xfs_iext(ifp, &icur, &rec) {
715715
if (isnullstartblock(rec.br_startblock))
716716
continue;
717-
arp = XFS_BMBT_REC_ADDR(mp, ablock, 1 + cnt);
717+
arp = xfs_bmbt_rec_addr(mp, ablock, 1 + cnt);
718718
xfs_bmbt_disk_set_all(arp, &rec);
719719
cnt++;
720720
}
@@ -724,10 +724,10 @@ xfs_bmap_extents_to_btree(
724724
/*
725725
* Fill in the root key and pointer.
726726
*/
727-
kp = XFS_BMBT_KEY_ADDR(mp, block, 1);
728-
arp = XFS_BMBT_REC_ADDR(mp, ablock, 1);
727+
kp = xfs_bmbt_key_addr(mp, block, 1);
728+
arp = xfs_bmbt_rec_addr(mp, ablock, 1);
729729
kp->br_startoff = cpu_to_be64(xfs_bmbt_disk_get_startoff(arp));
730-
pp = XFS_BMBT_PTR_ADDR(mp, block, 1, xfs_bmbt_get_maxrecs(cur,
730+
pp = xfs_bmbt_ptr_addr(mp, block, 1, xfs_bmbt_get_maxrecs(cur,
731731
be16_to_cpu(block->bb_level)));
732732
*pp = cpu_to_be64(args.fsbno);
733733

@@ -896,7 +896,7 @@ xfs_bmap_add_attrfork_btree(
896896

897897
mp = ip->i_mount;
898898

899-
if (XFS_BMAP_BMDR_SPACE(block) <= xfs_inode_data_fork_size(ip))
899+
if (xfs_bmap_bmdr_space(block) <= xfs_inode_data_fork_size(ip))
900900
*flags |= XFS_ILOG_DBROOT;
901901
else {
902902
cur = xfs_bmbt_init_cursor(mp, tp, ip, XFS_DATA_FORK);
@@ -1160,7 +1160,7 @@ xfs_iread_bmbt_block(
11601160
}
11611161

11621162
/* Copy records into the incore cache. */
1163-
frp = XFS_BMBT_REC_ADDR(mp, block, 1);
1163+
frp = xfs_bmbt_rec_addr(mp, block, 1);
11641164
for (j = 0; j < num_recs; j++, frp++, ir->loaded++) {
11651165
struct xfs_bmbt_irec new;
11661166
xfs_failaddr_t fa;

fs/xfs/libxfs/xfs_bmap_btree.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ xfs_bmdr_to_bmbt(
6565
ASSERT(be16_to_cpu(rblock->bb_level) > 0);
6666
rblock->bb_numrecs = dblock->bb_numrecs;
6767
dmxr = xfs_bmdr_maxrecs(dblocklen, 0);
68-
fkp = XFS_BMDR_KEY_ADDR(dblock, 1);
69-
tkp = XFS_BMBT_KEY_ADDR(mp, rblock, 1);
70-
fpp = XFS_BMDR_PTR_ADDR(dblock, 1, dmxr);
71-
tpp = XFS_BMAP_BROOT_PTR_ADDR(mp, rblock, 1, rblocklen);
68+
fkp = xfs_bmdr_key_addr(dblock, 1);
69+
tkp = xfs_bmbt_key_addr(mp, rblock, 1);
70+
fpp = xfs_bmdr_ptr_addr(dblock, 1, dmxr);
71+
tpp = xfs_bmap_broot_ptr_addr(mp, rblock, 1, rblocklen);
7272
dmxr = be16_to_cpu(dblock->bb_numrecs);
7373
memcpy(tkp, fkp, sizeof(*fkp) * dmxr);
7474
memcpy(tpp, fpp, sizeof(*fpp) * dmxr);
@@ -168,10 +168,10 @@ xfs_bmbt_to_bmdr(
168168
dblock->bb_level = rblock->bb_level;
169169
dblock->bb_numrecs = rblock->bb_numrecs;
170170
dmxr = xfs_bmdr_maxrecs(dblocklen, 0);
171-
fkp = XFS_BMBT_KEY_ADDR(mp, rblock, 1);
172-
tkp = XFS_BMDR_KEY_ADDR(dblock, 1);
173-
fpp = XFS_BMAP_BROOT_PTR_ADDR(mp, rblock, 1, rblocklen);
174-
tpp = XFS_BMDR_PTR_ADDR(dblock, 1, dmxr);
171+
fkp = xfs_bmbt_key_addr(mp, rblock, 1);
172+
tkp = xfs_bmdr_key_addr(dblock, 1);
173+
fpp = xfs_bmap_broot_ptr_addr(mp, rblock, 1, rblocklen);
174+
tpp = xfs_bmdr_ptr_addr(dblock, 1, dmxr);
175175
dmxr = be16_to_cpu(dblock->bb_numrecs);
176176
memcpy(tkp, fkp, sizeof(*fkp) * dmxr);
177177
memcpy(tpp, fpp, sizeof(*fpp) * dmxr);
@@ -645,13 +645,13 @@ xfs_bmbt_commit_staged_btree(
645645
/*
646646
* Calculate number of records in a bmap btree block.
647647
*/
648-
int
648+
unsigned int
649649
xfs_bmbt_maxrecs(
650650
struct xfs_mount *mp,
651-
int blocklen,
652-
int leaf)
651+
unsigned int blocklen,
652+
bool leaf)
653653
{
654-
blocklen -= XFS_BMBT_BLOCK_LEN(mp);
654+
blocklen -= xfs_bmbt_block_len(mp);
655655
return xfs_bmbt_block_maxrecs(blocklen, leaf);
656656
}
657657

0 commit comments

Comments
 (0)