diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-11-21 02:59:07 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:12 -0400 |
commit | 8812600c2953bf7e394ad11d44c7d71fbdd719cc (patch) | |
tree | 7eee37cc714746411f5f42676e4629cb1263d600 /fs | |
parent | 61274e9d45547e741cfafc80fb78a81275c8394a (diff) |
bcachefs: fix btree iterator bug when using depth > 0
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/bcachefs/btree_iter.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index ea37fa21ed6e..a50a6a51a3a5 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -818,7 +818,7 @@ static inline int btree_iter_lock_root(struct btree_iter *iter, */ iter->level = depth_want; iter->l[iter->level].b = NULL; - return 0; + return 1; } lock_type = __btree_lock_want(iter, iter->level); @@ -1045,6 +1045,9 @@ int __must_check __bch2_btree_iter_traverse(struct btree_iter *iter) ? btree_iter_down(iter) : btree_iter_lock_root(iter, depth_want); if (unlikely(ret)) { + if (ret == 1) + return 0; + iter->level = depth_want; iter->l[iter->level].b = BTREE_ITER_NOT_END; return ret; |