@@ -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);
@@ -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