summaryrefslogtreecommitdiff
path: root/libbcachefs/bkey_methods.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/bkey_methods.c')
-rw-r--r--libbcachefs/bkey_methods.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/libbcachefs/bkey_methods.c b/libbcachefs/bkey_methods.c
index e4f62f90..bbe9af67 100644
--- a/libbcachefs/bkey_methods.c
+++ b/libbcachefs/bkey_methods.c
@@ -122,16 +122,27 @@ void bch2_bkey_debugcheck(struct bch_fs *c, struct btree *b, struct bkey_s_c k)
#define p(...) (out += scnprintf(out, end - out, __VA_ARGS__))
+int bch2_bpos_to_text(char *buf, size_t size, struct bpos pos)
+{
+ char *out = buf, *end = buf + size;
+
+ if (!bkey_cmp(pos, POS_MIN))
+ p("POS_MIN");
+ else if (!bkey_cmp(pos, POS_MAX))
+ p("POS_MAX");
+ else
+ p("%llu:%llu", pos.inode, pos.offset);
+
+ return out - buf;
+}
+
int bch2_bkey_to_text(char *buf, size_t size, const struct bkey *k)
{
char *out = buf, *end = buf + size;
p("u64s %u type %u ", k->u64s, k->type);
- if (bkey_cmp(k->p, POS_MAX))
- p("%llu:%llu", k->p.inode, k->p.offset);
- else
- p("POS_MAX");
+ out += bch2_bpos_to_text(out, end - out, k->p);
p(" snap %u len %u ver %llu", k->p.snapshot, k->size, k->version.lo);
@@ -159,7 +170,7 @@ int bch2_val_to_text(struct bch_fs *c, enum bkey_type type,
break;
default:
if (k.k->type >= KEY_TYPE_GENERIC_NR && ops->val_to_text)
- ops->val_to_text(c, buf, size, k);
+ out += ops->val_to_text(c, out, end - out, k);
break;
}