On 12/16/24 8:18 PM, Christoph Hellwig wrote:
On Mon, Dec 16, 2024 at 12:19:01PM -0800, Bart Van Assche wrote:
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 8d2aab4d9ba9..80eb91296142 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2971,8 +2971,6 @@ static struct request *blk_mq_get_new_requests(struct request_queue *q,
if (rq)
return rq;
rq_qos_cleanup(q, bio);
- if (bio->bi_opf & REQ_NOWAIT)
- bio_wouldblock_error(bio);
return NULL;
Please turn this into:
if (rq)
rq_qos_cleanup(q, bio);
return rq;
Otherwise this looks like a nice cleanup.
It seems to me that there is a typo in the above code? Unless if you
tell me otherwise, I will assume that this is what you meant:
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);
Thanks,
Bart.