]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: count the blocks in a btree
authorDarrick J. Wong <darrick.wong@oracle.com>
Tue, 25 Oct 2016 00:26:53 +0000 (11:26 +1100)
committerDave Chinner <david@fromorbit.com>
Tue, 25 Oct 2016 00:26:53 +0000 (11:26 +1100)
Source kernel commit: c611cc0360cd924448c23ccd70ce8be703fcb4a6

Provide a helper method to count the number of blocks in a short form
btree.  The refcount and rmap btrees need to know the number of blocks
already in use to set up their per-AG block reservations during mount.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
libxfs/xfs_btree.c
libxfs/xfs_btree.h

index 732652b4309d7bccfca139f1e9b27b9ff16b4b53..855d6a6253265299609439e11e0da1a0d57069a5 100644 (file)
@@ -4821,3 +4821,26 @@ xfs_btree_calc_size(
        }
        return rval;
 }
+
+int
+xfs_btree_count_blocks_helper(
+       struct xfs_btree_cur    *cur,
+       int                     level,
+       void                    *data)
+{
+       xfs_extlen_t            *blocks = data;
+       (*blocks)++;
+
+       return 0;
+}
+
+/* Count the blocks in a btree and return the result in *blocks. */
+int
+xfs_btree_count_blocks(
+       struct xfs_btree_cur    *cur,
+       xfs_extlen_t            *blocks)
+{
+       *blocks = 0;
+       return xfs_btree_visit_blocks(cur, xfs_btree_count_blocks_helper,
+                       blocks);
+}
index 607463a0cfb6ef6ca5a745cd52033f2628168630..be4a0c13b37aa514b41124502101fdcee2e63db7 100644 (file)
@@ -519,4 +519,6 @@ typedef int (*xfs_btree_visit_blocks_fn)(struct xfs_btree_cur *cur, int level,
 int xfs_btree_visit_blocks(struct xfs_btree_cur *cur,
                xfs_btree_visit_blocks_fn fn, void *data);
 
+int xfs_btree_count_blocks(struct xfs_btree_cur *cur, xfs_extlen_t *blocks);
+
 #endif /* __XFS_BTREE_H__ */