From 4cac0bf2c25d9056c4cc24c27948774fa2591c5a Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 14 Sep 2019 10:45:46 -0400 Subject: [PATCH] bcachefs: Add missing bch2_btree_node_iter_fix() calls With multiple iterators, if another iterator points to the key being modified, we need to call bch2_btree_node_iter_fix() to re-unpack the key into the iter->k Signed-off-by: Kent Overstreet --- fs/bcachefs/extents.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index 1d400808d8424..2cf97df6b85be 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -1138,6 +1138,8 @@ extent_squash(struct bch_fs *c, struct btree_iter *iter, __bch2_cut_front(insert->k.p, k); BUG_ON(bkey_deleted(k.k)); extent_save(l->b, _k, k.k); + bch2_btree_node_iter_fix(iter, l->b, &l->iter, + _k, _k->u64s, _k->u64s); verify_modified_extent(iter, _k); break; @@ -1207,6 +1209,8 @@ extent_squash(struct bch_fs *c, struct btree_iter *iter, __bch2_cut_front(insert->k.p, k); BUG_ON(bkey_deleted(k.k)); extent_save(l->b, _k, k.k); + bch2_btree_node_iter_fix(iter, l->b, &l->iter, + _k, _k->u64s, _k->u64s); verify_modified_extent(iter, _k); extent_bset_insert(c, iter, &split.k); -- 2.30.2