From: Darrick J. Wong <djwong@xxxxxxxxxx> Add the special magic btree type value 'all' to the btheight command so that we can display information about all known btree types at once. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- db/btheight.c | 26 +++++++++++++++++++++++--- man/man8/xfs_db.8 | 3 +++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/db/btheight.c b/db/btheight.c index 8aa17c89..e4cd4eda 100644 --- a/db/btheight.c +++ b/db/btheight.c @@ -57,7 +57,7 @@ btheight_help(void) " -w min -- Show only the worst case scenario.\n" "\n" " Supported btree types:\n" -" " +" all " )); for (i = 0, m = maps; i < ARRAY_SIZE(maps); i++, m++) printf("%s ", m->tag); @@ -107,7 +107,7 @@ calc_height( static int construct_records_per_block( - char *tag, + const char *tag, int blocksize, unsigned int *records_per_block) { @@ -235,7 +235,7 @@ _("%s: pointer size must be less than selected block size (%u bytes).\n"), static void report( - char *tag, + const char *tag, unsigned int report_what, unsigned long long nr_records, unsigned int blocksize) @@ -297,6 +297,19 @@ _("%s: worst case per %u-byte block: %u records (leaf) / %u keyptrs (node)\n"), } } +static void +report_all( + unsigned int report_what, + unsigned long long nr_records, + unsigned int blocksize) +{ + struct btmap *m; + int i; + + for (i = 0, m = maps; i < ARRAY_SIZE(maps); i++, m++) + report(m->tag, report_what, nr_records, blocksize); +} + static int btheight_f( int argc, @@ -366,6 +379,13 @@ _("The smallest block size this command will consider is 128 bytes.\n")); return 0; } + for (i = optind; i < argc; i++) { + if (!strcmp(argv[i], "all")) { + report_all(report_what, nr_records, blocksize); + return 0; + } + } + for (i = optind; i < argc; i++) report(argv[i], report_what, nr_records, blocksize); diff --git a/man/man8/xfs_db.8 b/man/man8/xfs_db.8 index 58727495..55ac3487 100644 --- a/man/man8/xfs_db.8 +++ b/man/man8/xfs_db.8 @@ -420,6 +420,9 @@ The supported btree types are: .IR refcountbt , and .IR rmapbt . +The magic value +.I all +can be used to walk through all btree types. Options are as follows: .RS 1.0i