diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-02-16 02:50:39 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-03-12 20:13:59 -0500 |
commit | 1b3ec714f0979caabc339405522a0cda79dc347d (patch) | |
tree | f9f6a8f2f91879252b0718f41e89beb09284be9c | |
parent | 29a73322b472027d96dee7d85f7c39dcbe885082 (diff) |
bcachefs: Improve journal_entry_btree_keys_to_text()
This improves the formatting of journal_entry_btree_keys_to_text() by
putting each key on its own line.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/journal_io.c | 12 | ||||
-rw-r--r-- | fs/bcachefs/util.h | 22 |
2 files changed, 31 insertions, 3 deletions
diff --git a/fs/bcachefs/journal_io.c b/fs/bcachefs/journal_io.c index 651828b8bc97..b5c204e7c569 100644 --- a/fs/bcachefs/journal_io.c +++ b/fs/bcachefs/journal_io.c @@ -299,11 +299,17 @@ static void journal_entry_btree_keys_to_text(struct printbuf *out, struct bch_fs struct jset_entry *entry) { struct bkey_i *k; + bool first = true; - pr_buf(out, "btree=%s l=%u ", bch2_btree_ids[entry->btree_id], entry->level); - - vstruct_for_each(entry, k) + vstruct_for_each(entry, k) { + if (!first) { + printbuf_newline(out); + pr_buf(out, "%s: ", bch2_jset_entry_types[entry->type]); + } + pr_buf(out, "btree=%s l=%u ", bch2_btree_ids[entry->btree_id], entry->level); bch2_bkey_val_to_text(out, c, bkey_i_to_s_c(k)); + first = false; + } } static int journal_entry_btree_root_validate(struct bch_fs *c, diff --git a/fs/bcachefs/util.h b/fs/bcachefs/util.h index 3196bc303182..e55407dc5324 100644 --- a/fs/bcachefs/util.h +++ b/fs/bcachefs/util.h @@ -238,6 +238,7 @@ do { \ struct printbuf { char *pos; char *end; + unsigned indent; }; static inline size_t printbuf_remaining(struct printbuf *buf) @@ -259,6 +260,27 @@ do { \ __VA_ARGS__); \ } while (0) +static inline void printbuf_indent_push(struct printbuf *buf, unsigned spaces) +{ + buf->indent += spaces; + while (spaces--) + pr_buf(buf, " "); +} + +static inline void printbuf_indent_pop(struct printbuf *buf, unsigned spaces) +{ + buf->indent -= spaces; +} + +static inline void printbuf_newline(struct printbuf *buf) +{ + unsigned i; + + pr_buf(buf, "\n"); + for (i = 0; i < buf->indent; i++) + pr_buf(buf, " "); +} + void bch_scnmemcpy(struct printbuf *, const char *, size_t); int bch2_strtoint_h(const char *, int *); |