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 <[email protected]>
---
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
On 6/27/21 3:18 PM, Qiang Bai wrote:
> 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 <[email protected]>
NACK. The commit log should explain how the fixing issue happens in
detail, and why your method fixes it.
Thanks.
Coly Li
> ---
> 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),