Messages in this thread Patch in this message | | | Date | Mon, 4 May 2015 13:33:59 -0700 | From | Shaohua Li <> | Subject | Re: [PATCH 4/5] blk-mq: do limited block plug for multiple queue case |
| |
On Mon, May 04, 2015 at 01:46:49PM -0600, Jens Axboe wrote: > On 05/04/2015 01:40 PM, Shaohua Li wrote: > >On Fri, May 01, 2015 at 04:16:04PM -0400, Jeff Moyer wrote: > >>Shaohua Li <shli@fb.com> writes: > >> > >>>plug is still helpful for workload with IO merge, but it can be harmful > >>>otherwise especially with multiple hardware queues, as there is > >>>(supposed) no lock contention in this case and plug can introduce > >>>latency. For multiple queues, we do limited plug, eg plug only if there > >>>is request merge. If a request doesn't have merge with following > >>>request, the requet will be dispatched immediately. > >>> > >>>This also fixes a bug. If we directly issue a request and it fails, we > >>>use blk_mq_merge_queue_io(). But we already assigned bio to a request in > >>>blk_mq_bio_to_request. blk_mq_merge_queue_io shouldn't run > >>>blk_mq_bio_to_request again. > >> > >>Good catch. Might've been better to split that out first for easy > >>backport to stable kernels, but I won't hold you to that. > > > >It's not a severe bug, but I don't mind. Jens, please let me know if I > >should split the patch into 2 patches. > > I don't care that much for this particular case. But since one/more > of the others need respin anyway, might be prudent to split it up in > any case.
ok, done. I'll repost the patch 4/5. Please let me know if I should repost 1-3.
From 5f8117b38ba423a4c746b05d40d3647c73b89a32 Mon Sep 17 00:00:00 2001 Message-Id: <5f8117b38ba423a4c746b05d40d3647c73b89a32.1430771485.git.shli@fb.com> From: Shaohua Li <shli@fb.com> Date: Mon, 4 May 2015 13:26:55 -0700 Subject: [PATCH] blk-mq: avoid re-initialize request which is failed in direct dispatch
If we directly issue a request and it fails, we use blk_mq_merge_queue_io(). But we already assigned bio to a request in blk_mq_bio_to_request. blk_mq_merge_queue_io shouldn't run blk_mq_bio_to_request again.
Signed-off-by: Shaohua Li <shli@fb.com> --- block/blk-mq.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/block/blk-mq.c b/block/blk-mq.c index e1a5b9e..2a411c9 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1294,6 +1294,8 @@ static void blk_mq_make_request(struct request_queue *q, struct bio *bio) blk_mq_end_request(rq, rq->errors); goto done; } + blk_mq_insert_request(rq, false, true, true); + return; } } -- 1.8.1
| |