summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_iter.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-10-25 18:32:51 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-10-25 18:32:51 -0400
commit72a9f1015d65bc04a6099f1869fd691ccf3ca878 (patch)
tree4576715d89ae57be41d8e14bba0dec6180468c15 /libbcachefs/btree_iter.h
parent1ce6454cfe16c15bf9a36b1b58af3a7ced55d6b8 (diff)
Update bcachefs sources to 4c58f10d48 bcachefs: More general fix for transaction paths overflow
Diffstat (limited to 'libbcachefs/btree_iter.h')
-rw-r--r--libbcachefs/btree_iter.h5
1 files changed, 3 insertions, 2 deletions
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;