diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-12 16:38:10 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-12 16:38:10 -0400 |
commit | c25cc1b53165fc9234d28025f6eb79e65c561198 (patch) | |
tree | 478a1de4d87d0c0eebce5ec065e608ed34633f42 /cmd_debug.c | |
parent | ca4bb4155a22143be692c78e454968c41f3ee69c (diff) |
list_journal: Add -n for number of entries to print
The entire journal can be too big to fit in memory in textual form,
making grep difficult: this adds an option to print a specific number of
journal entries.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'cmd_debug.c')
-rw-r--r-- | cmd_debug.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cmd_debug.c b/cmd_debug.c index 37232481..e29ceff6 100644 --- a/cmd_debug.c +++ b/cmd_debug.c @@ -578,6 +578,7 @@ static void list_journal_usage(void) "\n" "Options:\n" " -a Read entire journal, not just dirty entries\n" + " -n Number of journal entries to print, starting from the most recent\n" " -h Display this help and exit\n" "Report bugs to <linux-bcache@vger.kernel.org>"); } @@ -596,6 +597,7 @@ static void star_start_of_lines(char *buf) int cmd_list_journal(int argc, char *argv[]) { struct bch_opts opts = bch2_opts_empty(); + u32 nr_entries = U32_MAX; int opt; opt_set(opts, nochanges, true); @@ -606,11 +608,15 @@ int cmd_list_journal(int argc, char *argv[]) opt_set(opts, keep_journal, true); opt_set(opts, read_journal_only,true); - while ((opt = getopt(argc, argv, "ah")) != -1) + while ((opt = getopt(argc, argv, "an:h")) != -1) switch (opt) { case 'a': opt_set(opts, read_entire_journal, true); break; + case 'n': + nr_entries = kstrtouint(optarg, 10, &nr_entries); + opt_set(opts, read_entire_journal, true); + break; case 'h': list_journal_usage(); exit(EXIT_SUCCESS); @@ -634,6 +640,9 @@ int cmd_list_journal(int argc, char *argv[]) if (!p) continue; + if (le64_to_cpu(p->j.seq) + nr_entries < atomic64_read(&c->journal.seq)) + continue; + bool blacklisted = bch2_journal_seq_is_blacklisted(c, le64_to_cpu(p->j.seq), false); |