[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <a46c6365-7423-cab0-896b-621af85b3f99@huawei.com>
Date: Mon, 23 Aug 2021 09:55:44 +0100
From: John Garry <john.garry@...wei.com>
To: Ming Lei <ming.lei@...hat.com>
CC: "axboe@...nel.dk" <axboe@...nel.dk>,
"jejb@...ux.ibm.com" <jejb@...ux.ibm.com>,
"martin.petersen@...cle.com" <martin.petersen@...cle.com>,
"linux-block@...r.kernel.org" <linux-block@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
"kashyap.desai@...adcom.com" <kashyap.desai@...adcom.com>,
"hare@...e.de" <hare@...e.de>
Subject: Re: [PATCH v2 10/11] blk-mq: Use shared tags for shared sbitmap
support
On 18/08/2021 09:16, Ming Lei wrote:
>> 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.
>
>> }
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
Powered by blists - more mailing lists