bcachefs: Fix iterator counting for reflink pointers (again)
authorKent Overstreet <kent.overstreet@gmail.com>
Sat, 12 Oct 2019 18:44:09 +0000 (14:44 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:29 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/extents.c

index 50cad6725c1b608c184cc3bede760d5f2325e543..8b7d2b8759b0eb1904ffdc3860bdd230d58748f3 100644 (file)
@@ -959,7 +959,8 @@ static int count_iters_for_insert(struct btree_trans *trans,
        case KEY_TYPE_reflink_p: {
                struct bkey_s_c_reflink_p p = bkey_s_c_to_reflink_p(k);
                u64 idx = le64_to_cpu(p.v->idx);
-               unsigned sectors = end->offset - bkey_start_offset(p.k);
+               unsigned sectors = bpos_min(*end, p.k->p).offset -
+                       bkey_start_offset(p.k);
                struct btree_iter *iter;
                struct bkey_s_c r_k;