diff mbox series

blk-mq: add missing unplug trace event

Message ID 20240906194540.3719642-1-kbusch@meta.com (mailing list archive)
State New, archived
Headers show
Series blk-mq: add missing unplug trace event | expand

Commit Message

Keith Busch Sept. 6, 2024, 7:45 p.m. UTC
From: Keith Busch <kbusch@kernel.org>

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: Keith Busch <kbusch@kernel.org>
---
 block/blk-mq.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jens Axboe Sept. 8, 2024, 2:56 p.m. UTC | #1
On Fri, 06 Sep 2024 12:45:40 -0700, Keith Busch wrote:
> 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.
> 
> [...]

Applied, thanks!

[1/1] blk-mq: add missing unplug trace event
      commit: acc8c0a9887558966295e3c0881e633154c239a9

Best regards,
diff mbox series

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 79cc66275f1cd..3076019a9e0a7 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2757,6 +2757,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)
 {
 	struct request *rq;
+	unsigned int depth;
 
 	/*
 	 * We may have been called recursively midway through handling
@@ -2767,6 +2768,7 @@  void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
 	 */
 	if (plug->rq_count == 0)
 		return;
+	depth = plug->rq_count;
 	plug->rq_count = 0;
 
 	if (!plug->multiple_queues && !plug->has_elevator && !from_schedule) {
@@ -2774,6 +2776,7 @@  void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
 
 		rq = rq_list_peek(&plug->mq_list);
 		q = rq->q;
+		trace_block_unplug(q, depth, true);
 
 		/*
 		 * Peek first request and see if we have a ->queue_rqs() hook.