From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752228AbbEDUeT (ORCPT ); Mon, 4 May 2015 16:34:19 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:29999 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751161AbbEDUeM (ORCPT ); Mon, 4 May 2015 16:34:12 -0400 Date: Mon, 4 May 2015 13:33:59 -0700 From: Shaohua Li To: Jens Axboe CC: Jeff Moyer , , , Subject: Re: [PATCH 4/5] blk-mq: do limited block plug for multiple queue case Message-ID: <20150504203356.GA3541245@devbig257.prn2.facebook.com> References: <20150504194037.GA3300441@devbig257.prn2.facebook.com> <5547CCA9.2000003@fb.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <5547CCA9.2000003@fb.com> User-Agent: Mutt/1.5.20 (2009-12-10) X-Originating-IP: [192.168.52.13] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68,1.0.33,0.0.0000 definitions=2015-05-04_04:2015-05-04,2015-05-04,1970-01-01 signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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 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 --- 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