Re: [PATCH v2 10/11] blk-mq: Use shared tags for shared sbitmap support
From: John Garry <hidden>
Date: 2021-08-23 08:51:52
Also in:
linux-scsi, lkml
From: John Garry <hidden>
Date: 2021-08-23 08:51:52
Also in:
linux-scsi, lkml
On 18/08/2021 09:16, Ming Lei wrote:
quoted
ret = blk_mq_alloc_rqs(set, tags, 0, set->queue_depth); + if (ret) { + blk_mq_exit_sched_shared_sbitmap(queue); + return ret;There are two such patterns for allocate rq map and request pool together, please put them into one helper(such as blk_mq_alloc_map_and_rqs) which can return the allocated tags and handle failure inline. Also we may convert current users into this helper.quoted
}
Hi Ming, Do you have a preference for the API: int blk_mq_alloc_map_and_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags **tags, unsigned int hctx_idx, unsigned int depth); void blk_mq_free_map_and_requests(struct blk_mq_tag_set *set, struct blk_mq_tags **tags, unsigned int hctx_idx); or struct blk_mq_tags *blk_mq_alloc_map_and_rqs(struct blk_mq_tag_set *set, unsigned int hctx_idx, unsigned int depth); void blk_mq_free_map_and_requests(struct blk_mq_tag_set *set, struct blk_mq_tags *tags, unsigned int hctx_idx); The advantage of the first is that we don't need the pattern: blk_mq_free_map_and_requests(tags) tags = NULL; But then passing struct blk_mq_tags ** is a bit overly complicated. Thanks, John