add new btree statistics
PATCH 8/26 add new btree statistics
From: Dave Chinner <[email protected]>
Introduce statistics coverage of all the btrees and cover all the btree operations, not just some.
Invaluable for determining test code coverage of all the btree operations....
Signed-off-by Dave Chinner <[email protected]>
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/linux-2.6/xfs_stats.c +4 -0
@@ -53,6 +53,10 @@ xfs_read_xfsstats( { "icluster", XFSSTAT_END_INODE_CLUSTER }, { "vnodes", XFSSTAT_END_VNODE_OPS }, { "buf", XFSSTAT_END_BUF }, + { "abtb2", XFSSTAT_END_ABTB_V2 }, + { "abtc2", XFSSTAT_END_ABTC_V2 }, + { "bmbt2", XFSSTAT_END_BMBT_V2 }, + { "ibt2", XFSSTAT_END_IBT_V2 }, };/* Loop over all stats groups */
fs/xfs/linux-2.6/xfs_stats.h +65 -0
71 lines not on this page · raw message
fs/xfs/xfs_btree.h +28 -0
@@ -126,6 +126,34 @@ union xfs_btree_rec {extern const __uint32_t xfs_magics[];/* +* Generic stats interface +*/ +#define __XFS_BTREE_STATS_INC (type, stat) \ + XFS_STATS_INC(xs_ ## type ## _2_ ## stat) +#define XFS_BTREE_STATS_INC (cur, stat) \ +do { \ + switch (cur->bc_btnum) { \ + case XFS_BTNUM_BNO: __XFS_BTREE_STATS_INC(abtb, stat); break; \ + case XFS_BTNUM_CNT: __XFS_BTREE_STATS_INC(abtc, stat); break; \ + case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_INC(bmbt, stat); break; \ + case XFS_BTNUM_INO: __XFS_BTREE_STATS_INC(ibt, stat); break; \ + case XFS_BTNUM_MAX: ASSERT(0);/* fucking gcc */ ;break ; \ + } \ +} while (0) + +#define __XFS_BTREE_STATS_ADD (type, stat, val) \ + XFS_STATS_ADD(xs_ ## type ## _2_ ## stat, val) +#define XFS_BTREE_STATS_ADD (cur, stat, val) \ +do { \ + switch (cur->bc_btnum) { \ + case XFS_BTNUM_BNO: __XFS_BTREE_STATS_ADD(abtb, stat, val); break; \ + case XFS_BTNUM_CNT: __XFS_BTREE_STATS_ADD(abtc, stat, val); break; \ + case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_ADD(bmbt, stat, val); break; \ + case XFS_BTNUM_INO: __XFS_BTREE_STATS_ADD(ibt, stat, val); break; \ + case XFS_BTNUM_MAX: ASSERT(0);/* fucking gcc */ ;break ; \ + } \ +} while (0) +/* * Maximum and minimum records in a btree block. * Given block size, type prefix, and leaf flag (0 or 1). * The divisor below is equivalent to lf ? (e1) : (e2) but that produces