Message ID | 165176667420.247073.10421518802460549832.stgit@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfs_db: tweaks to btheight command | expand |
On 05 May 2022 at 21:34, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > 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. > Looks good. Reviewed-by: Chandan Babu R <chandan.babu@oracle.com> > Signed-off-by: Darrick J. Wong <djwong@kernel.org> > --- > 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
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
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