diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-09-14 10:45:46 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:27 -0400 |
commit | 4cac0bf2c25d9056c4cc24c27948774fa2591c5a (patch) | |
tree | fbcd39cc1c79dd49e752125cc5b706d3bfbf40db | |
parent | 9b02d1c49a261d711b8d9587afa55cdf3cad97f9 (diff) |
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 <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/extents.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index 1d400808d842..2cf97df6b85b 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); |