On Wed, Sep 26, 2018 at 02:35:50PM +0200, Ilya Dryomov wrote: > trace_block_unplug() takes true for explicit unplugs and false for > implicit unplugs. schedule() unplugs are implicit and should be > reported as timer unplugs. While correct in the legacy code, this has > been inverted in blk-mq since 4.11. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: bd166ef183c2 ("blk-mq-sched: add framework for MQ capable IO schedulers") Reviewed-by: Omar Sandoval <osandov@xxxxxx> > Signed-off-by: Ilya Dryomov <idryomov@xxxxxxxxx> > --- > block/blk-mq.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 85a1c1a59c72..e3c39ea8e17b 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -1628,7 +1628,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) > BUG_ON(!rq->q); > if (rq->mq_ctx != this_ctx) { > if (this_ctx) { > - trace_block_unplug(this_q, depth, from_schedule); > + trace_block_unplug(this_q, depth, !from_schedule); > blk_mq_sched_insert_requests(this_q, this_ctx, > &ctx_list, > from_schedule); > @@ -1648,7 +1648,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) > * on 'ctx_list'. Do those. > */ > if (this_ctx) { > - trace_block_unplug(this_q, depth, from_schedule); > + trace_block_unplug(this_q, depth, !from_schedule); > blk_mq_sched_insert_requests(this_q, this_ctx, &ctx_list, > from_schedule); > } > -- > 2.14.4 >