On Mon, Oct 19, 2015 at 11:38 PM, Jeff Moyer <jmo...@redhat.com> wrote: > Ming Lei <ming....@canonical.com> writes: > >> The trace point is for tracing plug event of each request >> queue instead of each task, so we should check the request >> count in the plug list from current queue instead of >> current task. > > If blk_queue_nomerges returns true, request_count won't be updated, so > you've essentially broken plugging for those queues.
Yes, you are right, and blk_queue_bio() has the same problem too, and looks automatic flush plug can't work for nomerges queue at all. Thanks, Ming > > Cheers, > Jeff > >> >> Signed-off-by: Ming Lei <ming....@canonical.com> >> --- >> block/blk-mq.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/block/blk-mq.c b/block/blk-mq.c >> index d55d022..a5e33bc 100644 >> --- a/block/blk-mq.c >> +++ b/block/blk-mq.c >> @@ -1377,7 +1377,7 @@ static void blk_sq_make_request(struct request_queue >> *q, struct bio *bio) >> plug = current->plug; >> if (plug) { >> blk_mq_bio_to_request(rq, bio); >> - if (list_empty(&plug->mq_list)) >> + if (!request_count) >> trace_block_plug(q); >> else if (request_count >= BLK_MAX_REQUEST_COUNT) { >> blk_flush_plug_list(plug, false); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/