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@xxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > 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); -- Damien Le Moal Western Digital Research