From: Kent Overstreet Date: Wed, 16 Oct 2019 17:48:12 +0000 (-0400) Subject: bcachefs: Fix an iterator counting bug X-Git-Tag: io_uring-6.7-2023-11-10~119^2~2290 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=71603f1ffe03d2409d591e4647377a415376a6b9;p=linux-block.git bcachefs: Fix an iterator counting bug The iterator counting assumed we're doing an obvious optimization when only updating the refcount on indirect extents - but we're not doing it yet. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index 8b7d2b8759b0..16a328a20fb5 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -971,20 +971,7 @@ static int count_iters_for_insert(struct btree_trans *trans, POS(0, idx + sectors)) >= 0) break; - *nr_iters += 1; - - if (overwrite && - r_k.k->type == KEY_TYPE_reflink_v) { - struct bkey_s_c_reflink_v r = bkey_s_c_to_reflink_v(r_k); - - if (le64_to_cpu(r.v->refcount) == 1) - *nr_iters += bch2_bkey_nr_alloc_ptrs(r_k); - } - - /* - * if we're going to be deleting an entry from - * the reflink btree, need more iters... - */ + *nr_iters += 1 + bch2_bkey_nr_alloc_ptrs(r_k); if (*nr_iters >= max_iters) { struct bpos pos = bkey_start_pos(k.k);