summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_iter.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-12-19 18:05:09 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2020-12-19 18:05:09 -0500
commit80846e9c28e76774daf7d2d46115d73f108b98db (patch)
tree625f8757948c81571e6678279ddedc3c392862a2 /libbcachefs/btree_iter.h
parentdb931a4571817d7d61be6bce306f1d42f7cd3398 (diff)
Update bcachefs sources to 5241335413 bcachefs: Fix for spinning in journal reclaim on startup
Diffstat (limited to 'libbcachefs/btree_iter.h')
-rw-r--r--libbcachefs/btree_iter.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/libbcachefs/btree_iter.h b/libbcachefs/btree_iter.h
index ee8c4346..9a7f8d01 100644
--- a/libbcachefs/btree_iter.h
+++ b/libbcachefs/btree_iter.h
@@ -51,11 +51,17 @@ static inline int btree_iter_err(const struct btree_iter *iter)
static inline struct btree_iter *
__trans_next_iter(struct btree_trans *trans, unsigned idx)
{
- u64 l = trans->iters_linked >> idx;
+ u64 l;
+
+ if (idx == BTREE_ITER_MAX)
+ return NULL;
+
+ l = trans->iters_linked >> idx;
if (!l)
return NULL;
idx += __ffs64(l);
+ EBUG_ON(idx >= BTREE_ITER_MAX);
EBUG_ON(trans->iters[idx].idx != idx);
return &trans->iters[idx];
}