* [PATCH v2 0/2] some random cleanups for blk-mq.c
@ 2022-11-02 2:52 Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map() Jinlong Chen
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Jinlong Chen @ 2022-11-02 2:52 UTC (permalink / raw)
To: axboe; +Cc: hch, chaitanyak, linux-block, linux-kernel, nickyc975
Patch 1 improves the error handling blk_mq_alloc_rq_map(). Patch 2
improves readability of blk_mq_alloc_cached_request().
Changes in v2:
- drop wrong and worthless patches, suggested by Christoph, Jens and
Chaitanya
- remove silly goto-return-NULL in patch 1 (patch 2 originally), suggested
by Christoph and Jens
Jinlong Chen (2):
blk-mq: improve error handling in blk_mq_alloc_rq_map()
blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request()
block/blk-mq.c | 46 ++++++++++++++++++++++++----------------------
1 file changed, 24 insertions(+), 22 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map()
2022-11-02 2:52 [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
@ 2022-11-02 2:52 ` Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 2/2] blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request() Jinlong Chen
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jinlong Chen @ 2022-11-02 2:52 UTC (permalink / raw)
To: axboe; +Cc: hch, chaitanyak, linux-block, linux-kernel, nickyc975
Use goto-style error handling like we do elsewhere in the kernel.
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
---
block/blk-mq.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 623e8a506539..453ad445a6bd 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3274,21 +3274,22 @@ static struct blk_mq_tags *blk_mq_alloc_rq_map(struct blk_mq_tag_set *set,
tags->rqs = kcalloc_node(nr_tags, sizeof(struct request *),
GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
node);
- if (!tags->rqs) {
- blk_mq_free_tags(tags);
- return NULL;
- }
+ if (!tags->rqs)
+ goto err_free_tags;
tags->static_rqs = kcalloc_node(nr_tags, sizeof(struct request *),
GFP_NOIO | __GFP_NOWARN | __GFP_NORETRY,
node);
- if (!tags->static_rqs) {
- kfree(tags->rqs);
- blk_mq_free_tags(tags);
- return NULL;
- }
+ if (!tags->static_rqs)
+ goto err_free_rqs;
return tags;
+
+err_free_rqs:
+ kfree(tags->rqs);
+err_free_tags:
+ blk_mq_free_tags(tags);
+ return NULL;
}
static int blk_mq_init_request(struct blk_mq_tag_set *set, struct request *rq,
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request()
2022-11-02 2:52 [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map() Jinlong Chen
@ 2022-11-02 2:52 ` Jinlong Chen
2022-11-02 3:01 ` [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
2022-11-02 14:45 ` Jens Axboe
3 siblings, 0 replies; 5+ messages in thread
From: Jinlong Chen @ 2022-11-02 2:52 UTC (permalink / raw)
To: axboe; +Cc: hch, chaitanyak, linux-block, linux-kernel, nickyc975
if-else is more readable than goto here.
Signed-off-by: Jinlong Chen <nickyc975@zju.edu.cn>
---
block/blk-mq.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 453ad445a6bd..6ffca7af5b6f 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -544,25 +544,26 @@ static struct request *blk_mq_alloc_cached_request(struct request_queue *q,
if (!plug)
return NULL;
+
if (rq_list_empty(plug->cached_rq)) {
if (plug->nr_ios == 1)
return NULL;
rq = blk_mq_rq_cache_fill(q, plug, opf, flags);
- if (rq)
- goto got_it;
- return NULL;
- }
- rq = rq_list_peek(&plug->cached_rq);
- if (!rq || rq->q != q)
- return NULL;
+ if (!rq)
+ return NULL;
+ } else {
+ rq = rq_list_peek(&plug->cached_rq);
+ if (!rq || rq->q != q)
+ return NULL;
- if (blk_mq_get_hctx_type(opf) != rq->mq_hctx->type)
- return NULL;
- if (op_is_flush(rq->cmd_flags) != op_is_flush(opf))
- return NULL;
+ if (blk_mq_get_hctx_type(opf) != rq->mq_hctx->type)
+ return NULL;
+ if (op_is_flush(rq->cmd_flags) != op_is_flush(opf))
+ return NULL;
+
+ plug->cached_rq = rq_list_next(rq);
+ }
- plug->cached_rq = rq_list_next(rq);
-got_it:
rq->cmd_flags = opf;
INIT_LIST_HEAD(&rq->queuelist);
return rq;
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] some random cleanups for blk-mq.c
2022-11-02 2:52 [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map() Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 2/2] blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request() Jinlong Chen
@ 2022-11-02 3:01 ` Jinlong Chen
2022-11-02 14:45 ` Jens Axboe
3 siblings, 0 replies; 5+ messages in thread
From: Jinlong Chen @ 2022-11-02 3:01 UTC (permalink / raw)
To: axboe; +Cc: hch, chaitanyak, linux-block, linux-kernel
> Patch 1 improves the error handling blk_mq_alloc_rq_map(). Patch 2
> improves readability of blk_mq_alloc_cached_request().
>
> Changes in v2:
> - drop wrong and worthless patches, suggested by Christoph, Jens and
> Chaitanya
> - remove silly goto-return-NULL in patch 1 (patch 2 originally), suggested
> by Christoph and Jens
>
> Jinlong Chen (2):
> blk-mq: improve error handling in blk_mq_alloc_rq_map()
> blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request()
>
> block/blk-mq.c | 46 ++++++++++++++++++++++++----------------------
> 1 file changed, 24 insertions(+), 22 deletions(-)
Oops, I forgot the reviewed tag by Christoph!
Sorry!
Jinlong Chen
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] some random cleanups for blk-mq.c
2022-11-02 2:52 [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
` (2 preceding siblings ...)
2022-11-02 3:01 ` [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
@ 2022-11-02 14:45 ` Jens Axboe
3 siblings, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2022-11-02 14:45 UTC (permalink / raw)
To: Jinlong Chen; +Cc: linux-block, linux-kernel, chaitanyak, hch
On Wed, 2 Nov 2022 10:52:28 +0800, Jinlong Chen wrote:
> Patch 1 improves the error handling blk_mq_alloc_rq_map(). Patch 2
> improves readability of blk_mq_alloc_cached_request().
>
> Changes in v2:
> - drop wrong and worthless patches, suggested by Christoph, Jens and
> Chaitanya
> - remove silly goto-return-NULL in patch 1 (patch 2 originally), suggested
> by Christoph and Jens
>
> [...]
Applied, thanks!
[1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map()
commit: 7edfd68165b8dab8cde231728ff092a625469eb7
[2/2] blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request()
commit: 4046728253751adb41b05e85ebd686210efde1ad
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-02 14:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-02 2:52 [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 1/2] blk-mq: improve error handling in blk_mq_alloc_rq_map() Jinlong Chen
2022-11-02 2:52 ` [PATCH v2 2/2] blk-mq: use if-else instead of goto in blk_mq_alloc_cached_request() Jinlong Chen
2022-11-02 3:01 ` [PATCH v2 0/2] some random cleanups for blk-mq.c Jinlong Chen
2022-11-02 14:45 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).