From: Kent Overstreet Date: Wed, 21 Nov 2018 07:59:07 +0000 (-0500) Subject: bcachefs: fix btree iterator bug when using depth > 0 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=8812600c2953bf7e394ad11d44c7d71fbdd719cc;p=linux.git bcachefs: fix btree iterator bug when using depth > 0 Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index ea37fa21ed6ed..a50a6a51a3a54 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;