|
@@ -222,22 +222,21 @@ xfs_bmap_eof(
|
|
* Count leaf blocks given a range of extent records. Delayed allocation
|
|
* Count leaf blocks given a range of extent records. Delayed allocation
|
|
* extents are not counted towards the totals.
|
|
* extents are not counted towards the totals.
|
|
*/
|
|
*/
|
|
-STATIC void
|
|
|
|
|
|
+xfs_extnum_t
|
|
xfs_bmap_count_leaves(
|
|
xfs_bmap_count_leaves(
|
|
struct xfs_ifork *ifp,
|
|
struct xfs_ifork *ifp,
|
|
- xfs_extnum_t *numrecs,
|
|
|
|
xfs_filblks_t *count)
|
|
xfs_filblks_t *count)
|
|
{
|
|
{
|
|
- xfs_extnum_t i;
|
|
|
|
- xfs_extnum_t nr_exts = xfs_iext_count(ifp);
|
|
|
|
-
|
|
|
|
- for (i = 0; i < nr_exts; i++) {
|
|
|
|
- xfs_bmbt_rec_host_t *frp = xfs_iext_get_ext(ifp, i);
|
|
|
|
- if (!isnullstartblock(xfs_bmbt_get_startblock(frp))) {
|
|
|
|
- (*numrecs)++;
|
|
|
|
- *count += xfs_bmbt_get_blockcount(frp);
|
|
|
|
|
|
+ struct xfs_bmbt_irec got;
|
|
|
|
+ xfs_extnum_t numrecs = 0, i = 0;
|
|
|
|
+
|
|
|
|
+ while (xfs_iext_get_extent(ifp, i++, &got)) {
|
|
|
|
+ if (!isnullstartblock(got.br_startblock)) {
|
|
|
|
+ *count += got.br_blockcount;
|
|
|
|
+ numrecs++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ return numrecs;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -370,7 +369,7 @@ xfs_bmap_count_blocks(
|
|
|
|
|
|
switch (XFS_IFORK_FORMAT(ip, whichfork)) {
|
|
switch (XFS_IFORK_FORMAT(ip, whichfork)) {
|
|
case XFS_DINODE_FMT_EXTENTS:
|
|
case XFS_DINODE_FMT_EXTENTS:
|
|
- xfs_bmap_count_leaves(ifp, nextents, count);
|
|
|
|
|
|
+ *nextents = xfs_bmap_count_leaves(ifp, count);
|
|
return 0;
|
|
return 0;
|
|
case XFS_DINODE_FMT_BTREE:
|
|
case XFS_DINODE_FMT_BTREE:
|
|
if (!(ifp->if_flags & XFS_IFEXTENTS)) {
|
|
if (!(ifp->if_flags & XFS_IFEXTENTS)) {
|