summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_update_leaf.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/btree_update_leaf.c')
-rw-r--r--fs/bcachefs/btree_update_leaf.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 90e6e5130672..fce93ed65ed9 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -862,23 +862,31 @@ static inline int do_bch2_trans_commit(struct btree_trans *trans,
{
struct bch_fs *c = trans->c;
struct btree_insert_entry *i;
+ struct printbuf buf = PRINTBUF;
int ret, u64s_delta = 0;
trans_for_each_update(trans, i) {
- const char *invalid = bch2_bkey_invalid(c,
- bkey_i_to_s_c(i->k), i->bkey_type);
- if (invalid) {
- struct printbuf buf = PRINTBUF;
+ if (bch2_bkey_invalid(c, bkey_i_to_s_c(i->k), i->bkey_type, &buf)) {
+ printbuf_reset(&buf);
+ pr_buf(&buf, "invalid bkey on insert from %s -> %ps",
+ trans->fn, (void *) i->ip_allocated);
+ pr_newline(&buf);
+ pr_indent_push(&buf, 2);
bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(i->k));
- bch2_fs_fatal_error(c, "invalid bkey %s on insert from %s -> %ps: %s\n",
- buf.buf, trans->fn, (void *) i->ip_allocated, invalid);
+ pr_newline(&buf);
+
+ bch2_bkey_invalid(c, bkey_i_to_s_c(i->k), i->bkey_type, &buf);
+
+ bch2_fs_fatal_error(c, "%s", buf.buf);
printbuf_exit(&buf);
return -EINVAL;
}
btree_insert_entry_checks(trans, i);
}
+ printbuf_exit(&buf);
+
trans_for_each_update(trans, i) {
if (i->cached)
continue;