diff options
-rw-r--r-- | c_src/cmd_list_journal.c | 23 | ||||
-rw-r--r-- | libbcachefs/journal_io.c | 3 |
2 files changed, 20 insertions, 6 deletions
diff --git a/c_src/cmd_list_journal.c b/c_src/cmd_list_journal.c index fe9e3bbd..7b0008de 100644 --- a/c_src/cmd_list_journal.c +++ b/c_src/cmd_list_journal.c @@ -90,9 +90,13 @@ static bool entry_matches_transaction_filter(struct jset_entry *entry, if (!entry->level && (entry->type == BCH_JSET_ENTRY_btree_keys || entry->type == BCH_JSET_ENTRY_overwrite)) - jset_entry_for_each_key(entry, k) + jset_entry_for_each_key(entry, k) { + if (!k->k.u64s) + break; + if (bkey_matches_filter(filter, entry, k)) return true; + } return false; } @@ -105,10 +109,13 @@ static bool should_print_transaction(struct jset_entry *entry, struct jset_entry bool have_log_messages = false; bool have_non_log_messages = false; - darray_for_each(msg_filter, i) - if (!strncmp(*i, l->d, b)) - return false; - + if (msg_filter.nr) { + darray_for_each(msg_filter, i) + if (!strncmp(*i, l->d, b)) + goto found; + return false; + } +found: if (!key_filter.nr) return true; @@ -140,10 +147,14 @@ static bool should_print_entry(struct jset_entry *entry, d_btree_id filter) entry->type != BCH_JSET_ENTRY_overwrite) return true; - jset_entry_for_each_key(entry, k) + jset_entry_for_each_key(entry, k) { + if (!k->k.u64s) + break; + darray_for_each(filter, id) if (entry->btree_id == *id) return true; + } return false; } diff --git a/libbcachefs/journal_io.c b/libbcachefs/journal_io.c index 06f7b018..82205376 100644 --- a/libbcachefs/journal_io.c +++ b/libbcachefs/journal_io.c @@ -418,6 +418,9 @@ static void journal_entry_btree_keys_to_text(struct printbuf *out, struct bch_fs bool first = true; jset_entry_for_each_key(entry, k) { + if (!k->k.u64s) + break; + if (!first) { prt_newline(out); bch2_prt_jset_entry_type(out, entry->type); |