From: Kent Overstreet Date: Mon, 25 Oct 2021 22:30:28 +0000 (-0400) Subject: bcachefs: More general fix for transaction paths overflow X-Git-Tag: io_uring-6.7-2023-11-10~119^2~1332 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=d121172561d670c8152559614b3575322d709d8d;p=linux-block.git bcachefs: More general fix for transaction paths overflow for_each_btree_key() now calls bch2_trans_begin() as needed; that means, we can also call it when we're in danger of overflowing transaction paths. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h index e58cad4b8fc6..16fa0fe1c5b7 100644 --- a/fs/bcachefs/btree_iter.h +++ b/fs/bcachefs/btree_iter.h @@ -329,8 +329,9 @@ __bch2_btree_iter_peek_and_restart(struct btree_trans *trans, { struct bkey_s_c k; - while (k = __bch2_btree_iter_peek(iter, flags), - bkey_err(k) == -EINTR) + while ((hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2) || + (k = __bch2_btree_iter_peek(iter, flags), + bkey_err(k) == -EINTR)) bch2_trans_begin(trans); return k;