diff mbox series

blk-mq: Make blk_mq_quiesce_tagset() hold the tag list mutex less long

Message ID 20241022181617.2716173-1-bvanassche@acm.org (mailing list archive)
State New
Headers show
Series blk-mq: Make blk_mq_quiesce_tagset() hold the tag list mutex less long | expand

Commit Message

Bart Van Assche Oct. 22, 2024, 6:16 p.m. UTC
Make sure that the tag_list_lock mutex is no longer held than necessary.
This change reduces latency if e.g. blk_mq_quiesce_tagset() is called
concurrently from more than one thread. This function is used by the
NVMe core and also by the UFS driver.

Reported-by: Peter Wang <peter.wang@mediatek.com>
Cc: Chao Leng <lengchao@huawei.com>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: stable@vger.kernel.org
Fixes: commit 414dd48e882c ("blk-mq: add tagset quiesce interface")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 block/blk-mq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Keith Busch Oct. 22, 2024, 8:08 p.m. UTC | #1
On Tue, Oct 22, 2024 at 11:16:17AM -0700, Bart Van Assche wrote:
> Make sure that the tag_list_lock mutex is no longer held than necessary.
> This change reduces latency if e.g. blk_mq_quiesce_tagset() is called
> concurrently from more than one thread. This function is used by the
> NVMe core and also by the UFS driver.

Looks good to me.

Reviewed-by: Keith Busch <kbusch@kernel.org>
Jens Axboe Oct. 22, 2024, 10:25 p.m. UTC | #2
On Tue, 22 Oct 2024 11:16:17 -0700, Bart Van Assche wrote:
> Make sure that the tag_list_lock mutex is no longer held than necessary.
> This change reduces latency if e.g. blk_mq_quiesce_tagset() is called
> concurrently from more than one thread. This function is used by the
> NVMe core and also by the UFS driver.
> 
> 

Applied, thanks!

[1/1] blk-mq: Make blk_mq_quiesce_tagset() hold the tag list mutex less long
      commit: 6fbd7e0472b73bc21b19d56d3f95c2a1a5456607

Best regards,
Ming Lei Oct. 23, 2024, 2:15 a.m. UTC | #3
On Tue, Oct 22, 2024 at 11:16:17AM -0700, Bart Van Assche wrote:
> Make sure that the tag_list_lock mutex is no longer held than necessary.
> This change reduces latency if e.g. blk_mq_quiesce_tagset() is called
> concurrently from more than one thread. This function is used by the
> NVMe core and also by the UFS driver.
> 
> Reported-by: Peter Wang <peter.wang@mediatek.com>
> Cc: Chao Leng <lengchao@huawei.com>
> Cc: Ming Lei <ming.lei@redhat.com>
> Cc: stable@vger.kernel.org
> Fixes: commit 414dd48e882c ("blk-mq: add tagset quiesce interface")
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>

Reviewed-by: Ming Lei <ming.lei@redhat.com>

Thanks,
Ming
diff mbox series

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 4b2c8e940f59..1ef227dfb9ba 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -283,8 +283,9 @@  void blk_mq_quiesce_tagset(struct blk_mq_tag_set *set)
 		if (!blk_queue_skip_tagset_quiesce(q))
 			blk_mq_quiesce_queue_nowait(q);
 	}
-	blk_mq_wait_quiesce_done(set);
 	mutex_unlock(&set->tag_list_lock);
+
+	blk_mq_wait_quiesce_done(set);
 }
 EXPORT_SYMBOL_GPL(blk_mq_quiesce_tagset);