summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/bkey_methods.c10
-rw-r--r--drivers/md/bcache/bkey_methods.h2
-rw-r--r--drivers/md/bcache/btree_cache.c5
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/md/bcache/bkey_methods.c b/drivers/md/bcache/bkey_methods.c
index 3bcd0e041b03..90f7e5f74657 100644
--- a/drivers/md/bcache/bkey_methods.c
+++ b/drivers/md/bcache/bkey_methods.c
@@ -89,6 +89,16 @@ void bkey_debugcheck(struct cache_set *c, struct btree *b, struct bkey_s_c k)
ops->key_debugcheck(c, b, k);
}
+void bch_val_to_text(struct cache_set *c, enum bkey_type type,
+ char *buf, size_t size, struct bkey_s_c k)
+{
+ const struct bkey_ops *ops = bch_bkey_ops[type];
+
+ if (k.k->type >= KEY_TYPE_GENERIC_NR &&
+ ops->val_to_text)
+ ops->val_to_text(c, buf, size, k);
+}
+
void bch_bkey_val_to_text(struct cache_set *c, enum bkey_type type,
char *buf, size_t size, struct bkey_s_c k)
{
diff --git a/drivers/md/bcache/bkey_methods.h b/drivers/md/bcache/bkey_methods.h
index 0e305ebc02cb..c1f0dc539078 100644
--- a/drivers/md/bcache/bkey_methods.h
+++ b/drivers/md/bcache/bkey_methods.h
@@ -67,6 +67,8 @@ const char *btree_bkey_invalid(struct cache_set *, struct btree *,
struct bkey_s_c);
void bkey_debugcheck(struct cache_set *, struct btree *, struct bkey_s_c);
+void bch_val_to_text(struct cache_set *, enum bkey_type,
+ char *, size_t, struct bkey_s_c);
void bch_bkey_val_to_text(struct cache_set *, enum bkey_type,
char *, size_t, struct bkey_s_c);
diff --git a/drivers/md/bcache/btree_cache.c b/drivers/md/bcache/btree_cache.c
index 7b75c1db6388..ca6064af2786 100644
--- a/drivers/md/bcache/btree_cache.c
+++ b/drivers/md/bcache/btree_cache.c
@@ -706,13 +706,17 @@ int bch_print_btree_node(struct cache_set *c, struct btree *b,
{
const struct bkey_format *f = &b->format;
struct bset_stats stats;
+ char ptrs[100];
memset(&stats, 0, sizeof(stats));
+ bch_val_to_text(c, BKEY_TYPE_BTREE, ptrs, sizeof(ptrs),
+ bkey_i_to_s_c(&b->key));
bch_btree_keys_stats(b, &stats);
return scnprintf(buf, len,
"l %u %llu:%llu - %llu:%llu:\n"
+ " ptrs: %s\n"
" format: u64s %u fields %u %u %u %u %u\n"
" unpack fn len: %u\n"
" bytes used %zu/%zu (%zu%% full)\n"
@@ -728,6 +732,7 @@ int bch_print_btree_node(struct cache_set *c, struct btree *b,
b->data->min_key.offset,
b->data->max_key.inode,
b->data->max_key.offset,
+ ptrs,
f->key_u64s,
f->bits_per_field[0],
f->bits_per_field[1],