mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
bcachefs: Fix incorrect use of bch2_extent_atomic_end()
bch2_extent_atomic_end counts the number of iterators requried for marking overwrites - but journal replay never marks overwrites, so that part was incorrect. And counting iterators for the key being inserted should be unnecessary because we did that prior to the key being inserted before it was first journalled. This should fix an iterator overflow bug - the iterators for walking overwrites were totally unneeded. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
63fbf458cb
commit
a40d97a771
1 changed files with 3 additions and 1 deletions
|
@ -268,10 +268,12 @@ static int bch2_extent_replay_key(struct bch_fs *c, enum btree_id btree_id,
|
|||
BTREE_ITER_INTENT);
|
||||
|
||||
do {
|
||||
ret = bch2_extent_atomic_end(iter, k, &atomic_end);
|
||||
ret = bch2_btree_iter_traverse(iter);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
atomic_end = bpos_min(k->k.p, iter->l[0].b->key.k.p);
|
||||
|
||||
split_iter = bch2_trans_copy_iter(&trans, iter);
|
||||
ret = PTR_ERR_OR_ZERO(split_iter);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in a new issue