From: Kent Overstreet Date: Fri, 20 Jan 2023 22:02:56 +0000 (-0500) Subject: bcachefs: Fix repair path in bch2_mark_reflink_p() X-Git-Tag: io_uring-6.7-2023-11-10~119^2~592 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=7c909f654bae57083a0965f105e52ac8737a0785;p=linux-block.git bcachefs: Fix repair path in bch2_mark_reflink_p() Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 4fd396cb1dad..6c9dcfd54be6 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -1213,17 +1213,23 @@ not_found: " missing range %llu-%llu", (bch2_bkey_val_to_text(&buf, c, p.s_c), buf.buf), *idx, next_idx)) { - struct bkey_i_error new; - - bkey_init(&new.k); - new.k.type = KEY_TYPE_error; - new.k.p = bkey_start_pos(p.k); - new.k.p.offset += *idx - start; - bch2_key_resize(&new.k, next_idx - *idx); - ret = __bch2_btree_insert(trans, BTREE_ID_extents, &new.k_i); + struct bkey_i_error *new; + + new = bch2_trans_kmalloc(trans, sizeof(*new)); + ret = PTR_ERR_OR_ZERO(new); + if (ret) + goto err; + + bkey_init(&new->k); + new->k.type = KEY_TYPE_error; + new->k.p = bkey_start_pos(p.k); + new->k.p.offset += *idx - start; + bch2_key_resize(&new->k, next_idx - *idx); + ret = __bch2_btree_insert(trans, BTREE_ID_extents, &new->k_i); } *idx = next_idx; +err: fsck_err: printbuf_exit(&buf); return ret;