diff options
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 101 |
1 files changed, 27 insertions, 74 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 498ad50d1f45..87795188cedf 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -185,16 +185,6 @@ xfs_bmap_btree_to_extents( | |||
185 | int *logflagsp, /* inode logging flags */ | 185 | int *logflagsp, /* inode logging flags */ |
186 | int whichfork); /* data or attr fork */ | 186 | int whichfork); /* data or attr fork */ |
187 | 187 | ||
188 | #ifdef DEBUG | ||
189 | /* | ||
190 | * Check that the extents list for the inode ip is in the right order. | ||
191 | */ | ||
192 | STATIC void | ||
193 | xfs_bmap_check_extents( | ||
194 | xfs_inode_t *ip, /* incore inode pointer */ | ||
195 | int whichfork); /* data or attr fork */ | ||
196 | #endif | ||
197 | |||
198 | /* | 188 | /* |
199 | * Called by xfs_bmapi to update file extent records and the btree | 189 | * Called by xfs_bmapi to update file extent records and the btree |
200 | * after removing space (or undoing a delayed allocation). | 190 | * after removing space (or undoing a delayed allocation). |
@@ -410,7 +400,6 @@ xfs_bmap_count_leaves( | |||
410 | STATIC int | 400 | STATIC int |
411 | xfs_bmap_disk_count_leaves( | 401 | xfs_bmap_disk_count_leaves( |
412 | xfs_ifork_t *ifp, | 402 | xfs_ifork_t *ifp, |
413 | xfs_mount_t *mp, | ||
414 | xfs_extnum_t idx, | 403 | xfs_extnum_t idx, |
415 | xfs_bmbt_block_t *block, | 404 | xfs_bmbt_block_t *block, |
416 | int numrecs, | 405 | int numrecs, |
@@ -684,7 +673,7 @@ xfs_bmap_add_extent( | |||
684 | ASSERT(nblks <= da_old); | 673 | ASSERT(nblks <= da_old); |
685 | if (nblks < da_old) | 674 | if (nblks < da_old) |
686 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, | 675 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, |
687 | (int)(da_old - nblks), rsvd); | 676 | (int64_t)(da_old - nblks), rsvd); |
688 | } | 677 | } |
689 | /* | 678 | /* |
690 | * Clear out the allocated field, done with it now in any case. | 679 | * Clear out the allocated field, done with it now in any case. |
@@ -1209,7 +1198,7 @@ xfs_bmap_add_extent_delay_real( | |||
1209 | diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - | 1198 | diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - |
1210 | (cur ? cur->bc_private.b.allocated : 0)); | 1199 | (cur ? cur->bc_private.b.allocated : 0)); |
1211 | if (diff > 0 && | 1200 | if (diff > 0 && |
1212 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -diff, rsvd)) { | 1201 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) { |
1213 | /* | 1202 | /* |
1214 | * Ick gross gag me with a spoon. | 1203 | * Ick gross gag me with a spoon. |
1215 | */ | 1204 | */ |
@@ -1220,7 +1209,7 @@ xfs_bmap_add_extent_delay_real( | |||
1220 | diff--; | 1209 | diff--; |
1221 | if (!diff || | 1210 | if (!diff || |
1222 | !xfs_mod_incore_sb(ip->i_mount, | 1211 | !xfs_mod_incore_sb(ip->i_mount, |
1223 | XFS_SBS_FDBLOCKS, -diff, rsvd)) | 1212 | XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) |
1224 | break; | 1213 | break; |
1225 | } | 1214 | } |
1226 | if (temp2) { | 1215 | if (temp2) { |
@@ -1228,7 +1217,7 @@ xfs_bmap_add_extent_delay_real( | |||
1228 | diff--; | 1217 | diff--; |
1229 | if (!diff || | 1218 | if (!diff || |
1230 | !xfs_mod_incore_sb(ip->i_mount, | 1219 | !xfs_mod_incore_sb(ip->i_mount, |
1231 | XFS_SBS_FDBLOCKS, -diff, rsvd)) | 1220 | XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) |
1232 | break; | 1221 | break; |
1233 | } | 1222 | } |
1234 | } | 1223 | } |
@@ -2015,7 +2004,7 @@ xfs_bmap_add_extent_hole_delay( | |||
2015 | if (oldlen != newlen) { | 2004 | if (oldlen != newlen) { |
2016 | ASSERT(oldlen > newlen); | 2005 | ASSERT(oldlen > newlen); |
2017 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, | 2006 | xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, |
2018 | (int)(oldlen - newlen), rsvd); | 2007 | (int64_t)(oldlen - newlen), rsvd); |
2019 | /* | 2008 | /* |
2020 | * Nothing to do for disk quota accounting here. | 2009 | * Nothing to do for disk quota accounting here. |
2021 | */ | 2010 | */ |
@@ -3359,7 +3348,7 @@ xfs_bmap_del_extent( | |||
3359 | */ | 3348 | */ |
3360 | ASSERT(da_old >= da_new); | 3349 | ASSERT(da_old >= da_new); |
3361 | if (da_old > da_new) | 3350 | if (da_old > da_new) |
3362 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, (int)(da_old - da_new), | 3351 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, (int64_t)(da_old - da_new), |
3363 | rsvd); | 3352 | rsvd); |
3364 | if (delta) { | 3353 | if (delta) { |
3365 | /* DELTA: report the original extent. */ | 3354 | /* DELTA: report the original extent. */ |
@@ -3543,6 +3532,7 @@ xfs_bmap_forkoff_reset( | |||
3543 | if (whichfork == XFS_ATTR_FORK && | 3532 | if (whichfork == XFS_ATTR_FORK && |
3544 | (ip->i_d.di_format != XFS_DINODE_FMT_DEV) && | 3533 | (ip->i_d.di_format != XFS_DINODE_FMT_DEV) && |
3545 | (ip->i_d.di_format != XFS_DINODE_FMT_UUID) && | 3534 | (ip->i_d.di_format != XFS_DINODE_FMT_UUID) && |
3535 | (ip->i_d.di_format != XFS_DINODE_FMT_BTREE) && | ||
3546 | ((mp->m_attroffset >> 3) > ip->i_d.di_forkoff)) { | 3536 | ((mp->m_attroffset >> 3) > ip->i_d.di_forkoff)) { |
3547 | ip->i_d.di_forkoff = mp->m_attroffset >> 3; | 3537 | ip->i_d.di_forkoff = mp->m_attroffset >> 3; |
3548 | ip->i_df.if_ext_max = XFS_IFORK_DSIZE(ip) / | 3538 | ip->i_df.if_ext_max = XFS_IFORK_DSIZE(ip) / |
@@ -4079,7 +4069,7 @@ xfs_bmap_add_attrfork( | |||
4079 | } else | 4069 | } else |
4080 | XFS_SB_UNLOCK(mp, s); | 4070 | XFS_SB_UNLOCK(mp, s); |
4081 | } | 4071 | } |
4082 | if ((error = xfs_bmap_finish(&tp, &flist, firstblock, &committed))) | 4072 | if ((error = xfs_bmap_finish(&tp, &flist, &committed))) |
4083 | goto error2; | 4073 | goto error2; |
4084 | error = xfs_trans_commit(tp, XFS_TRANS_PERM_LOG_RES, NULL); | 4074 | error = xfs_trans_commit(tp, XFS_TRANS_PERM_LOG_RES, NULL); |
4085 | ASSERT(ip->i_df.if_ext_max == | 4075 | ASSERT(ip->i_df.if_ext_max == |
@@ -4212,7 +4202,6 @@ int /* error */ | |||
4212 | xfs_bmap_finish( | 4202 | xfs_bmap_finish( |
4213 | xfs_trans_t **tp, /* transaction pointer addr */ | 4203 | xfs_trans_t **tp, /* transaction pointer addr */ |
4214 | xfs_bmap_free_t *flist, /* i/o: list extents to free */ | 4204 | xfs_bmap_free_t *flist, /* i/o: list extents to free */ |
4215 | xfs_fsblock_t firstblock, /* controlled ag for allocs */ | ||
4216 | int *committed) /* xact committed or not */ | 4205 | int *committed) /* xact committed or not */ |
4217 | { | 4206 | { |
4218 | xfs_efd_log_item_t *efd; /* extent free data */ | 4207 | xfs_efd_log_item_t *efd; /* extent free data */ |
@@ -4533,8 +4522,7 @@ xfs_bmap_read_extents( | |||
4533 | error0); | 4522 | error0); |
4534 | if (level == 0) | 4523 | if (level == 0) |
4535 | break; | 4524 | break; |
4536 | pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, block, | 4525 | pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]); |
4537 | 1, mp->m_bmap_dmxr[1]); | ||
4538 | bno = be64_to_cpu(*pp); | 4526 | bno = be64_to_cpu(*pp); |
4539 | XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0); | 4527 | XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0); |
4540 | xfs_trans_brelse(tp, bp); | 4528 | xfs_trans_brelse(tp, bp); |
@@ -4577,8 +4565,7 @@ xfs_bmap_read_extents( | |||
4577 | /* | 4565 | /* |
4578 | * Copy records into the extent records. | 4566 | * Copy records into the extent records. |
4579 | */ | 4567 | */ |
4580 | frp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, | 4568 | frp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, 1); |
4581 | block, 1, mp->m_bmap_dmxr[0]); | ||
4582 | start = i; | 4569 | start = i; |
4583 | for (j = 0; j < num_recs; j++, i++, frp++) { | 4570 | for (j = 0; j < num_recs; j++, i++, frp++) { |
4584 | trp = xfs_iext_get_ext(ifp, i); | 4571 | trp = xfs_iext_get_ext(ifp, i); |
@@ -4929,28 +4916,28 @@ xfs_bmapi( | |||
4929 | if (rt) { | 4916 | if (rt) { |
4930 | error = xfs_mod_incore_sb(mp, | 4917 | error = xfs_mod_incore_sb(mp, |
4931 | XFS_SBS_FREXTENTS, | 4918 | XFS_SBS_FREXTENTS, |
4932 | -(extsz), (flags & | 4919 | -((int64_t)extsz), (flags & |
4933 | XFS_BMAPI_RSVBLOCKS)); | 4920 | XFS_BMAPI_RSVBLOCKS)); |
4934 | } else { | 4921 | } else { |
4935 | error = xfs_mod_incore_sb(mp, | 4922 | error = xfs_mod_incore_sb(mp, |
4936 | XFS_SBS_FDBLOCKS, | 4923 | XFS_SBS_FDBLOCKS, |
4937 | -(alen), (flags & | 4924 | -((int64_t)alen), (flags & |
4938 | XFS_BMAPI_RSVBLOCKS)); | 4925 | XFS_BMAPI_RSVBLOCKS)); |
4939 | } | 4926 | } |
4940 | if (!error) { | 4927 | if (!error) { |
4941 | error = xfs_mod_incore_sb(mp, | 4928 | error = xfs_mod_incore_sb(mp, |
4942 | XFS_SBS_FDBLOCKS, | 4929 | XFS_SBS_FDBLOCKS, |
4943 | -(indlen), (flags & | 4930 | -((int64_t)indlen), (flags & |
4944 | XFS_BMAPI_RSVBLOCKS)); | 4931 | XFS_BMAPI_RSVBLOCKS)); |
4945 | if (error && rt) | 4932 | if (error && rt) |
4946 | xfs_mod_incore_sb(mp, | 4933 | xfs_mod_incore_sb(mp, |
4947 | XFS_SBS_FREXTENTS, | 4934 | XFS_SBS_FREXTENTS, |
4948 | extsz, (flags & | 4935 | (int64_t)extsz, (flags & |
4949 | XFS_BMAPI_RSVBLOCKS)); | 4936 | XFS_BMAPI_RSVBLOCKS)); |
4950 | else if (error) | 4937 | else if (error) |
4951 | xfs_mod_incore_sb(mp, | 4938 | xfs_mod_incore_sb(mp, |
4952 | XFS_SBS_FDBLOCKS, | 4939 | XFS_SBS_FDBLOCKS, |
4953 | alen, (flags & | 4940 | (int64_t)alen, (flags & |
4954 | XFS_BMAPI_RSVBLOCKS)); | 4941 | XFS_BMAPI_RSVBLOCKS)); |
4955 | } | 4942 | } |
4956 | 4943 | ||
@@ -5616,13 +5603,13 @@ xfs_bunmapi( | |||
5616 | rtexts = XFS_FSB_TO_B(mp, del.br_blockcount); | 5603 | rtexts = XFS_FSB_TO_B(mp, del.br_blockcount); |
5617 | do_div(rtexts, mp->m_sb.sb_rextsize); | 5604 | do_div(rtexts, mp->m_sb.sb_rextsize); |
5618 | xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, | 5605 | xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, |
5619 | (int)rtexts, rsvd); | 5606 | (int64_t)rtexts, rsvd); |
5620 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, | 5607 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, |
5621 | NULL, ip, -((long)del.br_blockcount), 0, | 5608 | NULL, ip, -((long)del.br_blockcount), 0, |
5622 | XFS_QMOPT_RES_RTBLKS); | 5609 | XFS_QMOPT_RES_RTBLKS); |
5623 | } else { | 5610 | } else { |
5624 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, | 5611 | xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, |
5625 | (int)del.br_blockcount, rsvd); | 5612 | (int64_t)del.br_blockcount, rsvd); |
5626 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, | 5613 | (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, |
5627 | NULL, ip, -((long)del.br_blockcount), 0, | 5614 | NULL, ip, -((long)del.br_blockcount), 0, |
5628 | XFS_QMOPT_RES_REGBLKS); | 5615 | XFS_QMOPT_RES_REGBLKS); |
@@ -6048,32 +6035,6 @@ xfs_bmap_eof( | |||
6048 | } | 6035 | } |
6049 | 6036 | ||
6050 | #ifdef DEBUG | 6037 | #ifdef DEBUG |
6051 | /* | ||
6052 | * Check that the extents list for the inode ip is in the right order. | ||
6053 | */ | ||
6054 | STATIC void | ||
6055 | xfs_bmap_check_extents( | ||
6056 | xfs_inode_t *ip, /* incore inode pointer */ | ||
6057 | int whichfork) /* data or attr fork */ | ||
6058 | { | ||
6059 | xfs_bmbt_rec_t *ep; /* current extent entry */ | ||
6060 | xfs_extnum_t idx; /* extent record index */ | ||
6061 | xfs_ifork_t *ifp; /* inode fork pointer */ | ||
6062 | xfs_extnum_t nextents; /* number of extents in list */ | ||
6063 | xfs_bmbt_rec_t *nextp; /* next extent entry */ | ||
6064 | |||
6065 | ifp = XFS_IFORK_PTR(ip, whichfork); | ||
6066 | ASSERT(ifp->if_flags & XFS_IFEXTENTS); | ||
6067 | nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); | ||
6068 | ep = xfs_iext_get_ext(ifp, 0); | ||
6069 | for (idx = 0; idx < nextents - 1; idx++) { | ||
6070 | nextp = xfs_iext_get_ext(ifp, idx + 1); | ||
6071 | xfs_btree_check_rec(XFS_BTNUM_BMAP, (void *)ep, | ||
6072 | (void *)(nextp)); | ||
6073 | ep = nextp; | ||
6074 | } | ||
6075 | } | ||
6076 | |||
6077 | STATIC | 6038 | STATIC |
6078 | xfs_buf_t * | 6039 | xfs_buf_t * |
6079 | xfs_bmap_get_bp( | 6040 | xfs_bmap_get_bp( |
@@ -6156,8 +6117,7 @@ xfs_check_block( | |||
6156 | if (root) { | 6117 | if (root) { |
6157 | keyp = XFS_BMAP_BROOT_KEY_ADDR(block, i, sz); | 6118 | keyp = XFS_BMAP_BROOT_KEY_ADDR(block, i, sz); |
6158 | } else { | 6119 | } else { |
6159 | keyp = XFS_BTREE_KEY_ADDR(mp->m_sb.sb_blocksize, | 6120 | keyp = XFS_BTREE_KEY_ADDR(xfs_bmbt, block, i); |
6160 | xfs_bmbt, block, i, dmxr); | ||
6161 | } | 6121 | } |
6162 | 6122 | ||
6163 | if (prevp) { | 6123 | if (prevp) { |
@@ -6172,15 +6132,14 @@ xfs_check_block( | |||
6172 | if (root) { | 6132 | if (root) { |
6173 | pp = XFS_BMAP_BROOT_PTR_ADDR(block, i, sz); | 6133 | pp = XFS_BMAP_BROOT_PTR_ADDR(block, i, sz); |
6174 | } else { | 6134 | } else { |
6175 | pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, | 6135 | pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, i, dmxr); |
6176 | xfs_bmbt, block, i, dmxr); | ||
6177 | } | 6136 | } |
6178 | for (j = i+1; j <= be16_to_cpu(block->bb_numrecs); j++) { | 6137 | for (j = i+1; j <= be16_to_cpu(block->bb_numrecs); j++) { |
6179 | if (root) { | 6138 | if (root) { |
6180 | thispa = XFS_BMAP_BROOT_PTR_ADDR(block, j, sz); | 6139 | thispa = XFS_BMAP_BROOT_PTR_ADDR(block, j, sz); |
6181 | } else { | 6140 | } else { |
6182 | thispa = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, | 6141 | thispa = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, j, |
6183 | xfs_bmbt, block, j, dmxr); | 6142 | dmxr); |
6184 | } | 6143 | } |
6185 | if (*thispa == *pp) { | 6144 | if (*thispa == *pp) { |
6186 | cmn_err(CE_WARN, "%s: thispa(%d) == pp(%d) %Ld", | 6145 | cmn_err(CE_WARN, "%s: thispa(%d) == pp(%d) %Ld", |
@@ -6267,8 +6226,7 @@ xfs_bmap_check_leaf_extents( | |||
6267 | */ | 6226 | */ |
6268 | 6227 | ||
6269 | xfs_check_block(block, mp, 0, 0); | 6228 | xfs_check_block(block, mp, 0, 0); |
6270 | pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, block, | 6229 | pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]); |
6271 | 1, mp->m_bmap_dmxr[1]); | ||
6272 | bno = be64_to_cpu(*pp); | 6230 | bno = be64_to_cpu(*pp); |
6273 | XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0); | 6231 | XFS_WANT_CORRUPTED_GOTO(XFS_FSB_SANITY_CHECK(mp, bno), error0); |
6274 | if (bp_release) { | 6232 | if (bp_release) { |
@@ -6305,11 +6263,9 @@ xfs_bmap_check_leaf_extents( | |||
6305 | * conform with the first entry in this one. | 6263 | * conform with the first entry in this one. |
6306 | */ | 6264 | */ |
6307 | 6265 | ||
6308 | ep = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, | 6266 | ep = XFS_BTREE_REC_ADDR(xfs_bmbt, block, 1); |
6309 | block, 1, mp->m_bmap_dmxr[0]); | ||
6310 | for (j = 1; j < num_recs; j++) { | 6267 | for (j = 1; j < num_recs; j++) { |
6311 | nextp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, xfs_bmbt, | 6268 | nextp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, j + 1); |
6312 | block, j + 1, mp->m_bmap_dmxr[0]); | ||
6313 | if (lastp) { | 6269 | if (lastp) { |
6314 | xfs_btree_check_rec(XFS_BTNUM_BMAP, | 6270 | xfs_btree_check_rec(XFS_BTNUM_BMAP, |
6315 | (void *)lastp, (void *)ep); | 6271 | (void *)lastp, (void *)ep); |
@@ -6454,8 +6410,7 @@ xfs_bmap_count_tree( | |||
6454 | } | 6410 | } |
6455 | 6411 | ||
6456 | /* Dive to the next level */ | 6412 | /* Dive to the next level */ |
6457 | pp = XFS_BTREE_PTR_ADDR(mp->m_sb.sb_blocksize, | 6413 | pp = XFS_BTREE_PTR_ADDR(xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]); |
6458 | xfs_bmbt, block, 1, mp->m_bmap_dmxr[1]); | ||
6459 | bno = be64_to_cpu(*pp); | 6414 | bno = be64_to_cpu(*pp); |
6460 | if (unlikely((error = | 6415 | if (unlikely((error = |
6461 | xfs_bmap_count_tree(mp, tp, ifp, bno, level, count)) < 0)) { | 6416 | xfs_bmap_count_tree(mp, tp, ifp, bno, level, count)) < 0)) { |
@@ -6470,7 +6425,7 @@ xfs_bmap_count_tree( | |||
6470 | for (;;) { | 6425 | for (;;) { |
6471 | nextbno = be64_to_cpu(block->bb_rightsib); | 6426 | nextbno = be64_to_cpu(block->bb_rightsib); |
6472 | numrecs = be16_to_cpu(block->bb_numrecs); | 6427 | numrecs = be16_to_cpu(block->bb_numrecs); |
6473 | if (unlikely(xfs_bmap_disk_count_leaves(ifp, mp, | 6428 | if (unlikely(xfs_bmap_disk_count_leaves(ifp, |
6474 | 0, block, numrecs, count) < 0)) { | 6429 | 0, block, numrecs, count) < 0)) { |
6475 | xfs_trans_brelse(tp, bp); | 6430 | xfs_trans_brelse(tp, bp); |
6476 | XFS_ERROR_REPORT("xfs_bmap_count_tree(2)", | 6431 | XFS_ERROR_REPORT("xfs_bmap_count_tree(2)", |
@@ -6518,7 +6473,6 @@ xfs_bmap_count_leaves( | |||
6518 | int | 6473 | int |
6519 | xfs_bmap_disk_count_leaves( | 6474 | xfs_bmap_disk_count_leaves( |
6520 | xfs_ifork_t *ifp, | 6475 | xfs_ifork_t *ifp, |
6521 | xfs_mount_t *mp, | ||
6522 | xfs_extnum_t idx, | 6476 | xfs_extnum_t idx, |
6523 | xfs_bmbt_block_t *block, | 6477 | xfs_bmbt_block_t *block, |
6524 | int numrecs, | 6478 | int numrecs, |
@@ -6528,8 +6482,7 @@ xfs_bmap_disk_count_leaves( | |||
6528 | xfs_bmbt_rec_t *frp; | 6482 | xfs_bmbt_rec_t *frp; |
6529 | 6483 | ||
6530 | for (b = 1; b <= numrecs; b++) { | 6484 | for (b = 1; b <= numrecs; b++) { |
6531 | frp = XFS_BTREE_REC_ADDR(mp->m_sb.sb_blocksize, | 6485 | frp = XFS_BTREE_REC_ADDR(xfs_bmbt, block, idx + b); |
6532 | xfs_bmbt, block, idx + b, mp->m_bmap_dmxr[0]); | ||
6533 | *count += xfs_bmbt_disk_get_blockcount(frp); | 6486 | *count += xfs_bmbt_disk_get_blockcount(frp); |
6534 | } | 6487 | } |
6535 | return 0; | 6488 | return 0; |