]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Improve journal_entry_btree_keys_to_text()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 16 Feb 2022 07:50:39 +0000 (02:50 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:24 +0000 (17:09 -0400)
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>
fs/bcachefs/journal_io.c
fs/bcachefs/util.h

index 75b805732c21b9e34d620f178766498cda7ba618..03bc94b586f2324804e5a5097d34ecb53fb9aa89 100644 (file)
@@ -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,
index fbe5b710e9c5fcf940606217b8d88805fea33844..e047e7860584bf95679bf7380b8a2311f4041d19 100644 (file)
@@ -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 *);