Commit acc8c0a9 authored by Keith Busch's avatar Keith Busch Committed by Jens Axboe

blk-mq: add missing unplug trace event

The single-queue optimized list flush doesn't have an unplug trace event
to pair with the plug event. Add one.

In the unlikely event an error occurs and falls back to the less
optimized plug flush path, it's possible a 2nd unplug trace event will
be logged, but it will show the remainig count that weren't previously
handled.
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
Link: https://lore.kernel.org/r/20240906194540.3719642-1-kbusch@meta.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent a02e98be
...@@ -2753,6 +2753,7 @@ static void blk_mq_dispatch_plug_list(struct blk_plug *plug, bool from_sched) ...@@ -2753,6 +2753,7 @@ static void blk_mq_dispatch_plug_list(struct blk_plug *plug, bool from_sched)
void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
{ {
struct request *rq; struct request *rq;
unsigned int depth;
/* /*
* We may have been called recursively midway through handling * We may have been called recursively midway through handling
...@@ -2763,6 +2764,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) ...@@ -2763,6 +2764,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
*/ */
if (plug->rq_count == 0) if (plug->rq_count == 0)
return; return;
depth = plug->rq_count;
plug->rq_count = 0; plug->rq_count = 0;
if (!plug->multiple_queues && !plug->has_elevator && !from_schedule) { if (!plug->multiple_queues && !plug->has_elevator && !from_schedule) {
...@@ -2770,6 +2772,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) ...@@ -2770,6 +2772,7 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
rq = rq_list_peek(&plug->mq_list); rq = rq_list_peek(&plug->mq_list);
q = rq->q; q = rq->q;
trace_block_unplug(q, depth, true);
/* /*
* Peek first request and see if we have a ->queue_rqs() hook. * Peek first request and see if we have a ->queue_rqs() hook.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment