]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: bch2_trans_log_msg()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 30 Mar 2022 19:44:12 +0000 (15:44 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:28 +0000 (17:09 -0400)
Add a new helper for logging messages to the journal - a new debugging
tool, an alternative to trace_printk().

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_update.h
fs/bcachefs/btree_update_leaf.c

index d9a406a28f4728b920b74a353f606f56c57e0dc7..3cf4cc4f235018038fe17a98b67b7810e88c5f59 100644 (file)
@@ -83,6 +83,8 @@ void bch2_trans_commit_hook(struct btree_trans *,
                            struct btree_trans_commit_hook *);
 int __bch2_trans_commit(struct btree_trans *);
 
+int bch2_trans_log_msg(struct btree_trans *, const char *);
+
 /**
  * bch2_trans_commit - insert keys at given iterator positions
  *
index d6ec3f6c9be8baa905b8166919677679fdce9f94..2640d3e38a7603e43de6fcc1dfd4bae183783e57 100644 (file)
@@ -1795,3 +1795,30 @@ int bch2_btree_delete_range(struct bch_fs *c, enum btree_id id,
                             bch2_btree_delete_range_trans(&trans, id, start, end,
                                                           update_flags, journal_seq));
 }
+
+int bch2_trans_log_msg(struct btree_trans *trans, const char *msg)
+{
+       unsigned len = strlen(msg);
+       unsigned u64s = DIV_ROUND_UP(len, sizeof(u64));
+       struct jset_entry_log *l;
+       int ret;
+
+       ret = darray_make_room(&trans->extra_journal_entries, jset_u64s(u64s));
+       if (ret)
+               return ret;
+
+       l = (void *) &darray_top(trans->extra_journal_entries);
+       l->entry.u64s           = cpu_to_le16(u64s);
+       l->entry.btree_id       = 0;
+       l->entry.level          = 1;
+       l->entry.type           = BCH_JSET_ENTRY_log;
+       l->entry.pad[0]         = 0;
+       l->entry.pad[1]         = 0;
+       l->entry.pad[2]         = 0;
+       memcpy(l->d, msg, len);
+       while (len & 7)
+               l->d[len++] = '\0';
+
+       trans->extra_journal_entries.nr += jset_u64s(u64s);
+       return 0;
+}