summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-03-11 18:38:24 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2022-03-12 20:14:14 -0500
commit4db721e7a12f7ae30fe7d119bfb515ecb857e908 (patch)
treeb335fe0d201092099f0ea1e0949ade81397a8aa5
parent223ab8114d7eb1b1678f7c402d85d4b9cfad37a9 (diff)
bcachefs: bch2_trans_updates_to_text()
This turns bch2_dump_trans_updates() into a to_text() method - this way it can be used by debug tracing. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_iter.c33
-rw-r--r--fs/bcachefs/btree_iter.h1
2 files changed, 20 insertions, 14 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 6d61d7cacfdc..7fd0379689d9 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -1812,30 +1812,35 @@ free:
__bch2_path_free(trans, path);
}
-noinline __cold
-void bch2_dump_trans_updates(struct btree_trans *trans)
+void bch2_trans_updates_to_text(struct printbuf *buf, struct btree_trans *trans)
{
struct btree_insert_entry *i;
- struct printbuf buf1 = PRINTBUF, buf2 = PRINTBUF;
- bch_err(trans->c, "transaction updates:");
+ pr_buf(buf, "transaction updates for %s journal seq %llu\n",
+ trans->fn, trans->journal_res.seq);
trans_for_each_update(trans, i) {
struct bkey_s_c old = { &i->old_k, i->old_v };
- printbuf_reset(&buf1);
- printbuf_reset(&buf2);
- bch2_bkey_val_to_text(&buf1, trans->c, old);
- bch2_bkey_val_to_text(&buf2, trans->c, bkey_i_to_s_c(i->k));
-
- printk(KERN_ERR "update: btree %s %pS\n old %s\n new %s",
+ pr_buf(buf, "update: btree %s %pS\n old ",
bch2_btree_ids[i->btree_id],
- (void *) i->ip_allocated,
- buf1.buf, buf2.buf);
+ (void *) i->ip_allocated);
+
+ bch2_bkey_val_to_text(buf, trans->c, old);
+ pr_buf(buf, "\n new ");
+ bch2_bkey_val_to_text(buf, trans->c, bkey_i_to_s_c(i->k));
+ pr_buf(buf, "\n");
}
+}
- printbuf_exit(&buf2);
- printbuf_exit(&buf1);
+noinline __cold
+void bch2_dump_trans_updates(struct btree_trans *trans)
+{
+ struct printbuf buf = PRINTBUF;
+
+ bch2_trans_updates_to_text(&buf, trans);
+ bch_err(trans->c, "%s", buf.buf);
+ printbuf_exit(&buf);
}
noinline __cold
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index f039cbe4ee51..f6700295e1a7 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -389,6 +389,7 @@ __bch2_btree_iter_peek_and_restart(struct btree_trans *trans,
/* new multiple iterator interface: */
+void bch2_trans_updates_to_text(struct printbuf *, struct btree_trans *);
void bch2_dump_trans_updates(struct btree_trans *);
void bch2_dump_trans_paths_updates(struct btree_trans *);
void __bch2_trans_init(struct btree_trans *, struct bch_fs *,