diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-02-16 02:50:39 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:24 -0400 |
commit | e7bc7cdff813719479d555d9a3ebb62bef3050ce (patch) | |
tree | accd056183f5fb35231659d3f80d89149aa4c3d4 /fs | |
parent | 33aa419db96077993af90eddb49adac1270a96e0 (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>
Diffstat (limited to 'fs')
-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 75b805732c21..03bc94b586f2 100644 --- a/fs/bcachefs/journal_io.c +++ b/fs/bcachefs/journal_io.c @@ -298,11 +298,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 fbe5b710e9c5..e047e7860584 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 *); |