Factor out a version of bch2_btree_pos_to_text() that doesn't take a
pointer to a in-memory btree node, to be used for btree node scrub.

Signed-off-by: Kent Overstreet <[email protected]>
---
 fs/bcachefs/btree_cache.c | 16 +++++++++++-----
 fs/bcachefs/btree_cache.h |  2 ++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/fs/bcachefs/btree_cache.c b/fs/bcachefs/btree_cache.c
index b00c6a20be27..672ca2c1d37d 100644
--- a/fs/bcachefs/btree_cache.c
+++ b/fs/bcachefs/btree_cache.c
@@ -1402,18 +1402,24 @@ void bch2_btree_id_level_to_text(struct printbuf *out, 
enum btree_id btree, unsi
        prt_printf(out, " level=%u", level);
 }
 
-void bch2_btree_pos_to_text(struct printbuf *out, struct bch_fs *c, const 
struct btree *b)
+void __bch2_btree_pos_to_text(struct printbuf *out, struct bch_fs *c,
+                             enum btree_id btree, unsigned level, struct 
bkey_s_c k)
 {
-       bch2_btree_id_to_text(out, b->c.btree_id);
-       prt_printf(out, " level %u/", b->c.level);
-       struct btree_root *r = bch2_btree_id_root(c, b->c.btree_id);
+       bch2_btree_id_to_text(out, btree);
+       prt_printf(out, " level %u/", level);
+       struct btree_root *r = bch2_btree_id_root(c, btree);
        if (r)
                prt_printf(out, "%u", r->level);
        else
                prt_printf(out, "(unknown)");
        prt_printf(out, "\n  ");
 
-       bch2_bkey_val_to_text(out, c, bkey_i_to_s_c(&b->key));
+       bch2_bkey_val_to_text(out, c, k);
+}
+
+void bch2_btree_pos_to_text(struct printbuf *out, struct bch_fs *c, const 
struct btree *b)
+{
+       __bch2_btree_pos_to_text(out, c, b->c.btree_id, b->c.level, 
bkey_i_to_s_c(&b->key));
 }
 
 void bch2_btree_node_to_text(struct printbuf *out, struct bch_fs *c, const 
struct btree *b)
diff --git a/fs/bcachefs/btree_cache.h b/fs/bcachefs/btree_cache.h
index dcc34fe4996d..ca3c1b145330 100644
--- a/fs/bcachefs/btree_cache.h
+++ b/fs/bcachefs/btree_cache.h
@@ -147,6 +147,8 @@ const char *bch2_btree_id_str(enum btree_id);       /* 
avoid */
 void bch2_btree_id_to_text(struct printbuf *, enum btree_id);
 void bch2_btree_id_level_to_text(struct printbuf *, enum btree_id, unsigned);
 
+void __bch2_btree_pos_to_text(struct printbuf *, struct bch_fs *,
+                             enum btree_id, unsigned, struct bkey_s_c);
 void bch2_btree_pos_to_text(struct printbuf *, struct bch_fs *, const struct 
btree *);
 void bch2_btree_node_to_text(struct printbuf *, struct bch_fs *, const struct 
btree *);
 void bch2_btree_cache_to_text(struct printbuf *, const struct btree_cache *);
-- 
2.45.2


Reply via email to