diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-03-11 18:38:24 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-03-12 20:14:14 -0500 |
commit | 4db721e7a12f7ae30fe7d119bfb515ecb857e908 (patch) | |
tree | b335fe0d201092099f0ea1e0949ade81397a8aa5 | |
parent | 223ab8114d7eb1b1678f7c402d85d4b9cfad37a9 (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.c | 33 | ||||
-rw-r--r-- | fs/bcachefs/btree_iter.h | 1 |
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 *, |