summaryrefslogtreecommitdiff
path: root/block/blk-mq.c
diff options
context:
space:
mode:
authorJeff Moyer <jmoyer@redhat.com>2015-10-20 23:13:51 +0800
committerJens Axboe <axboe@fb.com>2015-10-21 15:00:48 -0600
commit0809e3ac62319dc7534b64f95ac37e230d740e8a (patch)
tree70814dd32f930745834e4186445acf8dcbd1e3c1 /block/blk-mq.c
parent3380f4589f6d9725e275525fd0580c8ee2b5cbbc (diff)
downloadlwn-0809e3ac62319dc7534b64f95ac37e230d740e8a.tar.gz
lwn-0809e3ac62319dc7534b64f95ac37e230d740e8a.zip
block: fix plug list flushing for nomerge queues
Request queues with merging disabled will not flush the plug list after BLK_MAX_REQUEST_COUNT requests have been queued, since the code relies on blk_attempt_plug_merge to compute the request_count. Fix this by computing the number of queued requests even for nomerge queues. Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r--block/blk-mq.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c
index d921cd5177f5..9683a561efcd 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1268,9 +1268,12 @@ static void blk_mq_make_request(struct request_queue *q, struct bio *bio)
blk_queue_split(q, &bio, q->bio_split);
- if (!is_flush_fua && !blk_queue_nomerges(q) &&
- blk_attempt_plug_merge(q, bio, &request_count, &same_queue_rq))
- return;
+ if (!is_flush_fua && !blk_queue_nomerges(q)) {
+ if (blk_attempt_plug_merge(q, bio, &request_count,
+ &same_queue_rq))
+ return;
+ } else
+ request_count = blk_plug_queued_count(q);
rq = blk_mq_map_request(q, bio, &data);
if (unlikely(!rq))