bcachefs: Fix ec_stripe_update_ptrs()
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 30 Mar 2020 18:05:05 +0000 (14:05 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:38 +0000 (17:08 -0400)
bch2_btree_iter_set_pos() invalidates the key returned by peek().

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/ec.c

index bc11f7e056ebdabbd55d0ae1407e10f144dde387..909a4a5036ab24ab477a6be8935417eb55c5820b 100644 (file)
@@ -804,8 +804,6 @@ static int ec_stripe_update_ptrs(struct bch_fs *c,
                        continue;
                }
 
-               bch2_btree_iter_set_pos(iter, bkey_start_pos(k.k));
-
                dev = s->key.v.ptrs[idx].dev;
 
                bkey_on_stack_reassemble(&sk, c, k);
@@ -820,6 +818,7 @@ static int ec_stripe_update_ptrs(struct bch_fs *c,
 
                extent_stripe_ptr_add(e, s, ec_ptr, idx);
 
+               bch2_btree_iter_set_pos(iter, bkey_start_pos(&sk.k->k));
                bch2_trans_update(&trans, iter, sk.k, 0);
 
                ret = bch2_trans_commit(&trans, NULL, NULL,