summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bcachefs_revision2
-rw-r--r--libbcachefs/btree_iter.h5
2 files changed, 4 insertions, 3 deletions
diff --git a/.bcachefs_revision b/.bcachefs_revision
index 0718a7c7..faa5b410 100644
--- a/.bcachefs_revision
+++ b/.bcachefs_revision
@@ -1 +1 @@
-cdf89ca564aa1916f16a58a06a395bfb3a86d302
+4c58f10d4897ff15849e6c028a9f665e03b8d4c0
diff --git a/libbcachefs/btree_iter.h b/libbcachefs/btree_iter.h
index 876bf42c..61bbb7bc 100644
--- a/libbcachefs/btree_iter.h
+++ b/libbcachefs/btree_iter.h
@@ -303,8 +303,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;