Message ID | 20241217223809.683035-3-bvanassche@acm.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Three blk_mq_submit_bio() patches | expand |
On 2024/12/17 14:38, Bart Van Assche wrote: > The error handling code in blk_mq_get_new_requests() cannot be understood > without knowing that this function is only called by blk_mq_submit_bio(). > Hence move the code for handling blk_mq_get_new_requests() failures into > blk_mq_submit_bio(). > > Cc: Damien Le Moal <dlemoal@kernel.org> > Cc: Christoph Hellwig <hch@lst.de> > Signed-off-by: Bart Van Assche <bvanassche@acm.org> > --- > block/blk-mq.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 8d2aab4d9ba9..f4300e608ed8 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -2968,12 +2968,9 @@ static struct request *blk_mq_get_new_requests(struct request_queue *q, > } > > rq = __blk_mq_alloc_requests(&data); > - if (rq) > - return rq; > - rq_qos_cleanup(q, bio); > - if (bio->bi_opf & REQ_NOWAIT) > - bio_wouldblock_error(bio); > - return NULL; > + if (!rq) No unlikely() here ? > + rq_qos_cleanup(q, bio); > + return rq; > } > > /* > @@ -3106,8 +3103,11 @@ void blk_mq_submit_bio(struct bio *bio) > blk_mq_use_cached_rq(rq, plug, bio); > } else { > rq = blk_mq_get_new_requests(q, plug, bio, nr_segs); > - if (unlikely(!rq)) > + if (unlikely(!rq)) { > + if (bio->bi_opf & REQ_NOWAIT) > + bio_wouldblock_error(bio); > goto queue_exit; > + } > } > > trace_block_getrq(bio);
diff --git a/block/blk-mq.c b/block/blk-mq.c index 8d2aab4d9ba9..f4300e608ed8 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2968,12 +2968,9 @@ static struct request *blk_mq_get_new_requests(struct request_queue *q, } rq = __blk_mq_alloc_requests(&data); - if (rq) - return rq; - rq_qos_cleanup(q, bio); - if (bio->bi_opf & REQ_NOWAIT) - bio_wouldblock_error(bio); - return NULL; + if (!rq) + rq_qos_cleanup(q, bio); + return rq; } /* @@ -3106,8 +3103,11 @@ void blk_mq_submit_bio(struct bio *bio) blk_mq_use_cached_rq(rq, plug, bio); } else { rq = blk_mq_get_new_requests(q, plug, bio, nr_segs); - if (unlikely(!rq)) + if (unlikely(!rq)) { + if (bio->bi_opf & REQ_NOWAIT) + bio_wouldblock_error(bio); goto queue_exit; + } } trace_block_getrq(bio);
The error handling code in blk_mq_get_new_requests() cannot be understood without knowing that this function is only called by blk_mq_submit_bio(). Hence move the code for handling blk_mq_get_new_requests() failures into blk_mq_submit_bio(). Cc: Damien Le Moal <dlemoal@kernel.org> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- block/blk-mq.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)