diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c index d60b6084fdf0..d89cfab4df81 100644 --- a/fs/bcachefs/btree_key_cache.c +++ b/fs/bcachefs/btree_key_cache.c @@ -341,12 +341,10 @@ int bch2_btree_iter_traverse_cached(struct btree_iter *iter) iter->uptodate = BTREE_ITER_NEED_PEEK; - if (!(iter->flags & BTREE_ITER_INTENT)) - bch2_btree_iter_downgrade(iter); - else if (!iter->locks_want) { - if (!__bch2_btree_iter_upgrade(iter, 1)) - ret = -EINTR; - } + if ((iter->flags & BTREE_ITER_INTENT) && + !iter->locks_want && + __bch2_btree_iter_upgrade(iter, 1)) + ret = -EINTR; return ret; err: