2021-06-27 07:27:33

by Qiang Bai

[permalink] [raw]
Subject: [PATCH] bcache: fix cache miss's issue

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


2021-06-28 16:09:32

by Coly Li

[permalink] [raw]
Subject: Re: [PATCH] bcache: fix cache miss's issue

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),