* [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
@ 2025-10-15 1:48 Yu Kuai
2025-10-15 4:34 ` Nilay Shroff
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Yu Kuai @ 2025-10-15 1:48 UTC (permalink / raw)
To: axboe, clm, nilay
Cc: linux-block, linux-kernel, yukuai3, yukuai1, yi.zhang, yangerkun,
johnny.chenyi
Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
before q->nr_requests is updated, however, it's still using the old
q->nr_requests to resize tag depth.
Fix this problem by passing in expected new tag depth.
Fixes: 7f2799c546db ("blk-mq: cleanup shared tags case in blk_mq_update_nr_requests()")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
---
block/blk-mq-sched.c | 2 +-
block/blk-mq-tag.c | 5 +++--
block/blk-mq.c | 2 +-
block/blk-mq.h | 3 ++-
4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c
index d06bb137a743..e0bed16485c3 100644
--- a/block/blk-mq-sched.c
+++ b/block/blk-mq-sched.c
@@ -557,7 +557,7 @@ int blk_mq_init_sched(struct request_queue *q, struct elevator_type *e,
if (blk_mq_is_shared_tags(flags)) {
/* Shared tags are stored at index 0 in @et->tags. */
q->sched_shared_tags = et->tags[0];
- blk_mq_tag_update_sched_shared_tags(q);
+ blk_mq_tag_update_sched_shared_tags(q, et->nr_requests);
}
queue_for_each_hw_ctx(q, hctx, i) {
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index c7a4d4b9cc87..5b664dbdf655 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -622,10 +622,11 @@ void blk_mq_tag_resize_shared_tags(struct blk_mq_tag_set *set, unsigned int size
sbitmap_queue_resize(&tags->bitmap_tags, size - set->reserved_tags);
}
-void blk_mq_tag_update_sched_shared_tags(struct request_queue *q)
+void blk_mq_tag_update_sched_shared_tags(struct request_queue *q,
+ unsigned int nr)
{
sbitmap_queue_resize(&q->sched_shared_tags->bitmap_tags,
- q->nr_requests - q->tag_set->reserved_tags);
+ nr - q->tag_set->reserved_tags);
}
/**
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 09f579414161..d626d32f6e57 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -4941,7 +4941,7 @@ struct elevator_tags *blk_mq_update_nr_requests(struct request_queue *q,
* tags can't grow, see blk_mq_alloc_sched_tags().
*/
if (q->elevator)
- blk_mq_tag_update_sched_shared_tags(q);
+ blk_mq_tag_update_sched_shared_tags(q, nr);
else
blk_mq_tag_resize_shared_tags(set, nr);
} else if (!q->elevator) {
diff --git a/block/blk-mq.h b/block/blk-mq.h
index af42dc018808..c4fccdeb5441 100644
--- a/block/blk-mq.h
+++ b/block/blk-mq.h
@@ -186,7 +186,8 @@ void blk_mq_put_tag(struct blk_mq_tags *tags, struct blk_mq_ctx *ctx,
void blk_mq_put_tags(struct blk_mq_tags *tags, int *tag_array, int nr_tags);
void blk_mq_tag_resize_shared_tags(struct blk_mq_tag_set *set,
unsigned int size);
-void blk_mq_tag_update_sched_shared_tags(struct request_queue *q);
+void blk_mq_tag_update_sched_shared_tags(struct request_queue *q,
+ unsigned int nr);
void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool);
void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_tag_iter_fn *fn,
--
2.39.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
2025-10-15 1:48 [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Yu Kuai
@ 2025-10-15 4:34 ` Nilay Shroff
2025-10-15 4:42 ` Ming Lei
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Nilay Shroff @ 2025-10-15 4:34 UTC (permalink / raw)
To: Yu Kuai, axboe, clm
Cc: linux-block, linux-kernel, yukuai1, yi.zhang, yangerkun, johnny.chenyi
On 10/15/25 7:18 AM, Yu Kuai wrote:
> Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
> blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
> before q->nr_requests is updated, however, it's still using the old
> q->nr_requests to resize tag depth.
>
> Fix this problem by passing in expected new tag depth.
>
> Fixes: 7f2799c546db ("blk-mq: cleanup shared tags case in blk_mq_update_nr_requests()")
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Looks good to me:
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
2025-10-15 1:48 [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Yu Kuai
2025-10-15 4:34 ` Nilay Shroff
@ 2025-10-15 4:42 ` Ming Lei
2025-10-15 13:48 ` Jens Axboe
2025-10-15 13:51 ` Jens Axboe
3 siblings, 0 replies; 6+ messages in thread
From: Ming Lei @ 2025-10-15 4:42 UTC (permalink / raw)
To: Yu Kuai
Cc: axboe, clm, nilay, linux-block, linux-kernel, yukuai1, yi.zhang,
yangerkun, johnny.chenyi
On Wed, Oct 15, 2025 at 9:56 AM Yu Kuai <yukuai3@huawei.com> wrote:
>
> Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
> blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
> before q->nr_requests is updated, however, it's still using the old
> q->nr_requests to resize tag depth.
>
> Fix this problem by passing in expected new tag depth.
>
> Fixes: 7f2799c546db ("blk-mq: cleanup shared tags case in blk_mq_update_nr_requests()")
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
2025-10-15 1:48 [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Yu Kuai
2025-10-15 4:34 ` Nilay Shroff
2025-10-15 4:42 ` Ming Lei
@ 2025-10-15 13:48 ` Jens Axboe
2025-10-15 16:32 ` Yu Kuai
2025-10-15 13:51 ` Jens Axboe
3 siblings, 1 reply; 6+ messages in thread
From: Jens Axboe @ 2025-10-15 13:48 UTC (permalink / raw)
To: Yu Kuai, clm, nilay
Cc: linux-block, linux-kernel, yukuai1, yi.zhang, yangerkun, johnny.chenyi
On 10/14/25 7:48 PM, Yu Kuai wrote:
> Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
> blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
> before q->nr_requests is updated, however, it's still using the old
> q->nr_requests to resize tag depth.
>
> Fix this problem by passing in expected new tag depth.
Fix looks fine, but you really should add a Link to the bug report, and
also a Reported-by tag. I'll add those.
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
2025-10-15 1:48 [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Yu Kuai
` (2 preceding siblings ...)
2025-10-15 13:48 ` Jens Axboe
@ 2025-10-15 13:51 ` Jens Axboe
3 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2025-10-15 13:51 UTC (permalink / raw)
To: clm, nilay, Yu Kuai
Cc: linux-block, linux-kernel, yukuai1, yi.zhang, yangerkun, johnny.chenyi
On Wed, 15 Oct 2025 09:48:27 +0800, Yu Kuai wrote:
> Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
> blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
> before q->nr_requests is updated, however, it's still using the old
> q->nr_requests to resize tag depth.
>
> Fix this problem by passing in expected new tag depth.
>
> [...]
Applied, thanks!
[1/1] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
commit: dc96cefef0d3032c69e46a21b345c60e56b18934
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests()
2025-10-15 13:48 ` Jens Axboe
@ 2025-10-15 16:32 ` Yu Kuai
0 siblings, 0 replies; 6+ messages in thread
From: Yu Kuai @ 2025-10-15 16:32 UTC (permalink / raw)
To: Jens Axboe, Yu Kuai, clm, nilay
Cc: linux-block, linux-kernel, yukuai1, yi.zhang, yangerkun, johnny.chenyi
Hi,
在 2025/10/15 21:48, Jens Axboe 写道:
> On 10/14/25 7:48 PM, Yu Kuai wrote:
>> Commit 7f2799c546db ("blk-mq: cleanup shared tags case in
>> blk_mq_update_nr_requests()") moves blk_mq_tag_update_sched_shared_tags()
>> before q->nr_requests is updated, however, it's still using the old
>> q->nr_requests to resize tag depth.
>>
>> Fix this problem by passing in expected new tag depth.
> Fix looks fine, but you really should add a Link to the bug report, and
> also a Reported-by tag. I'll add those.
Thanks! Sorry that I do forget about this.
Kuai
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-10-15 16:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-15 1:48 [PATCH] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Yu Kuai
2025-10-15 4:34 ` Nilay Shroff
2025-10-15 4:42 ` Ming Lei
2025-10-15 13:48 ` Jens Axboe
2025-10-15 16:32 ` Yu Kuai
2025-10-15 13:51 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®