Re: [PATCH 4/5] blk-mq: do limited block plug for multiple queue case

From: Jens Axboe
Date: Mon May 04 2015 - 16:35:50 EST


On 05/04/2015 02:33 PM, Shaohua Li wrote:
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@xxxxxx> 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.

That's fine, I'll grab 1-3 as-is. Thanks!

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/