when cache miss's IO was done, it needs to continue the left part of IO, not return -EINTR. -EINTR will stop the whole btree recurse. Signed-off-by: Qiang Bai <chiang.bai@xxxxxxxxx> --- drivers/md/bcache/request.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c index 29c231758293..b6ff101d2611 100644 --- a/drivers/md/bcache/request.c +++ b/drivers/md/bcache/request.c @@ -914,7 +914,7 @@ static int cached_dev_cache_miss(struct btree *b, struct search *s, miss = bio_next_split(bio, sectors, GFP_NOIO, &s->d->bio_split); /* btree_search_recurse()'s btree iterator is no good anymore */ - ret = miss == bio ? MAP_DONE : -EINTR; + ret = miss == bio ? MAP_DONE : MAP_CONTINUE; cache_bio = bio_alloc_bioset(GFP_NOWAIT, DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS), -- 2.31.1