lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 2 Nov 2022 10:19:24 +0800 (GMT+08:00) From: "Jinlong Chen" <nickyc975@....edu.cn> To: "Christoph Hellwig" <hch@....de> Cc: axboe@...nel.dk, linux-block@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: Re: [PATCH 4/4] blk-mq: improve readability of blk_mq_alloc_request() > On Tue, Nov 01, 2022 at 11:11:37PM +0800, Jinlong Chen wrote: > > Add a helper blk_mq_alloc_request_nocache() to alloc request without > > cache. This makes blk_mq_alloc_request() more readable. > > > > Signed-off-by: Jinlong Chen <nickyc975@....edu.cn> > > --- > > block/blk-mq.c | 47 +++++++++++++++++++++++++++++------------------ > > 1 file changed, 29 insertions(+), 18 deletions(-) > > > > diff --git a/block/blk-mq.c b/block/blk-mq.c > > index 87a6348a0d0a..2fae111a42c8 100644 > > --- a/block/blk-mq.c > > +++ b/block/blk-mq.c > > @@ -572,36 +572,47 @@ static struct request *blk_mq_alloc_cached_request(struct request_queue *q, > > return rq; > > } > > > > +static struct request *blk_mq_alloc_request_nocache(struct request_queue *q, > > + blk_opf_t opf, blk_mq_req_flags_t flags) > > The name is a bit odd, but I can't think off a better one. > > > + struct blk_mq_alloc_data data = { > > .q = q, > > .flags = flags, > > .cmd_flags = opf, > > .nr_tags = 1, > > }; > > And this now has superflous indenation. Overall, while the separate > helper looks marginally nicer, I'm not really sure it is worth the > churn. I'll drop the patch if you think it is not worth the churn. But I started doing this because of the following goto statement: rq = blk_mq_alloc_cached_request(q, opf, flags); if (!rq) { [...] ret = blk_queue_enter(q, flags); [...] rq = __blk_mq_alloc_requests(&data); if (!rq) goto out_queue_exit; } [...] out_queue_exit: blk_queue_exit(q); return ERR_PTR(-EWOULDBLOCK); Queue entering has been moved into the fallback path, left queue exiting outside. Should I just eliminate the goto statement and move the error handling into the fallback path too? Like: rq = blk_mq_alloc_cached_request(q, opf, flags); if (!rq) { [...] ret = blk_queue_enter(q, flags); [...] rq = __blk_mq_alloc_requests(&data); if (!rq) { blk_queue_exit(q); return ERR_PTR(-EWOULDBLOCK); } } Thanks! Jinlong Chen
Powered by blists - more mailing lists