summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-04-27 11:12:17 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-04-27 11:12:17 -0400
commitb0f77a0faa85f7649224d42bc711a6deca32b011 (patch)
treeb47b5d3d461a9191c171399b515e32a64246f004
parent8d3093bd9b9254957badce4a4ff178baeb3632ed (diff)
bcachefs: Fix __bch2_trans_get_iter()
We need to also set iter->uptodate to indicate it needs to be traversed. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_iter.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 93194e62ab2a..4e9bd839d844 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2078,15 +2078,16 @@ struct btree_iter *__bch2_trans_get_iter(struct btree_trans *trans,
btree_iter_get_locks(iter, true, false);
}
- while (iter->level < depth) {
+ while (iter->level != depth) {
btree_node_unlock(iter, iter->level);
iter->l[iter->level].b = BTREE_ITER_NO_NODE_INIT;
- iter->level++;
+ iter->uptodate = BTREE_ITER_NEED_TRAVERSE;
+ if (iter->level < depth)
+ iter->level++;
+ else
+ iter->level--;
}
- while (iter->level > depth)
- iter->l[--iter->level].b = BTREE_ITER_NO_NODE_INIT;
-
iter->min_depth = depth;
bch2_btree_iter_set_pos(iter, pos);