Skip to content

Commit 3c073d3

Browse files
author
Ming Lei
committed
blk-mq: Pass tag_set to blk_mq_free_rq_map/tags
JIRA: https://issues.redhat.com/browse/RHEL-120078 commit 9ad8e5a Author: Ming Lei <ming.lei@redhat.com> Date: Sat Aug 30 10:18:20 2025 +0800 blk-mq: Pass tag_set to blk_mq_free_rq_map/tags To prepare for converting the tag->rqs freeing to be SRCU-based, the tag_set is needed in the freeing helper functions. This patch adds 'struct blk_mq_tag_set *' as the first parameter to blk_mq_free_rq_map() and blk_mq_free_tags(), and updates all their call sites. This allows access to the tag_set's SRCU structure in the next step, which will be used to free the tag maps after a grace period. No functional change is intended in this patch. Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Yu Kuai <yukuai3@huawei.com> Signed-off-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Ming Lei <ming.lei@redhat.com>
1 parent 12fa57b commit 3c073d3

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

block/blk-mq-tag.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ struct blk_mq_tags *blk_mq_init_tags(unsigned int total_tags,
576576
return NULL;
577577
}
578578

579-
void blk_mq_free_tags(struct blk_mq_tags *tags)
579+
void blk_mq_free_tags(struct blk_mq_tag_set *set, struct blk_mq_tags *tags)
580580
{
581581
sbitmap_queue_free(&tags->bitmap_tags);
582582
sbitmap_queue_free(&tags->breserved_tags);

block/blk-mq.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3487,14 +3487,14 @@ void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
34873487
}
34883488
}
34893489

3490-
void blk_mq_free_rq_map(struct blk_mq_tags *tags)
3490+
void blk_mq_free_rq_map(struct blk_mq_tag_set *set, struct blk_mq_tags *tags)
34913491
{
34923492
kfree(tags->rqs);
34933493
tags->rqs = NULL;
34943494
kfree(tags->static_rqs);
34953495
tags->static_rqs = NULL;
34963496

3497-
blk_mq_free_tags(tags);
3497+
blk_mq_free_tags(set, tags);
34983498
}
34993499

35003500
static enum hctx_type hctx_idx_to_type(struct blk_mq_tag_set *set,
@@ -3556,7 +3556,7 @@ static struct blk_mq_tags *blk_mq_alloc_rq_map(struct blk_mq_tag_set *set,
35563556
err_free_rqs:
35573557
kfree(tags->rqs);
35583558
err_free_tags:
3559-
blk_mq_free_tags(tags);
3559+
blk_mq_free_tags(set, tags);
35603560
return NULL;
35613561
}
35623562

@@ -4103,7 +4103,7 @@ struct blk_mq_tags *blk_mq_alloc_map_and_rqs(struct blk_mq_tag_set *set,
41034103

41044104
ret = blk_mq_alloc_rqs(set, tags, hctx_idx, depth);
41054105
if (ret) {
4106-
blk_mq_free_rq_map(tags);
4106+
blk_mq_free_rq_map(set, tags);
41074107
return NULL;
41084108
}
41094109

@@ -4131,7 +4131,7 @@ void blk_mq_free_map_and_rqs(struct blk_mq_tag_set *set,
41314131
{
41324132
if (tags) {
41334133
blk_mq_free_rqs(set, tags, hctx_idx);
4134-
blk_mq_free_rq_map(tags);
4134+
blk_mq_free_rq_map(set, tags);
41354135
}
41364136
}
41374137

block/blk-mq.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void blk_mq_put_rq_ref(struct request *rq);
5959
*/
6060
void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
6161
unsigned int hctx_idx);
62-
void blk_mq_free_rq_map(struct blk_mq_tags *tags);
62+
void blk_mq_free_rq_map(struct blk_mq_tag_set *set, struct blk_mq_tags *tags);
6363
struct blk_mq_tags *blk_mq_alloc_map_and_rqs(struct blk_mq_tag_set *set,
6464
unsigned int hctx_idx, unsigned int depth);
6565
void blk_mq_free_map_and_rqs(struct blk_mq_tag_set *set,
@@ -162,7 +162,7 @@ struct blk_mq_alloc_data {
162162

163163
struct blk_mq_tags *blk_mq_init_tags(unsigned int nr_tags,
164164
unsigned int reserved_tags, unsigned int flags, int node);
165-
void blk_mq_free_tags(struct blk_mq_tags *tags);
165+
void blk_mq_free_tags(struct blk_mq_tag_set *set, struct blk_mq_tags *tags);
166166

167167
unsigned int blk_mq_get_tag(struct blk_mq_alloc_data *data);
168168
unsigned long blk_mq_get_tags(struct blk_mq_alloc_data *data, int nr_tags,

0 commit comments

Comments
 (0)