mbox series

[RFC,0/6] block: add and use tagset init helper

Message ID 20221010170026.49808-1-kch@nvidia.com (mailing list archive)
Headers show
Series block: add and use tagset init helper | expand

Message

Chaitanya Kulkarni Oct. 10, 2022, 5 p.m. UTC
Hi,

The newly added helper blk_mq_init_alloc_tag_set() replaces existing
call to blk_mq_alloc_tag_set() and takes following arguments to
initialize tag_set before calling blk_mq_alloc_tag_set() :-

* blk_mq_ops
* number of h/w queues
* queue depth
* driver data

This approach is taken similar to what we have in the code where helper
function is added to alloc and initialize the common code that was
repeted in the callers :-

* 8c16567d867ed 5 args-init and alloc helper bio_alloc_bioset()
* 0a3140ea0fae3 5 args-init and alloc helper blk_next_bio()
* cdb14e0f7775e 4 args-init and alloc helper blk_mq_alloc_sq_tag_set()

With 5 arguments it shuold be easy to review and we don't have to extend
the API even if tag_set gets a new member, I'll gradually change the
drivers slowly to avoid one big treewide change.

This avoids code repetation of inialization code of tag set in current
block drivers and any future ones.

-ck                    

Chaitanya Kulkarni (6):
  block: add and use tagset init helper
  nbd: use init alloc tagset helper
  virtio-blk: use init alloc tagset helper
  nvme-apple: use init alloc tagset helper
  nvme-core: use init alloc tagset helper
  nvme-pci: use init alloc tagset helper

 block/blk-mq.c                | 12 ++++++++++++
 drivers/block/nbd.c           |  7 ++-----
 drivers/block/null_blk/main.c |  7 ++-----
 drivers/block/virtio_blk.c    |  7 ++-----
 drivers/nvme/host/apple.c     | 14 ++++----------
 drivers/nvme/host/core.c      | 13 +++----------
 drivers/nvme/host/pci.c       |  5 ++++-
 include/linux/blk-mq.h        |  4 +++-
 8 files changed, 32 insertions(+), 37 deletions(-)

Comments

Chaitanya Kulkarni Oct. 10, 2022, 5:40 p.m. UTC | #1
On 10/10/22 10:00, Chaitanya Kulkarni wrote:
> Hi,
> 
> The newly added helper blk_mq_init_alloc_tag_set() replaces existing
> call to blk_mq_alloc_tag_set() and takes following arguments to
> initialize tag_set before calling blk_mq_alloc_tag_set() :-
> 
> * blk_mq_ops
> * number of h/w queues
> * queue depth
> * driver data
> 
> This approach is taken similar to what we have in the code where helper
> function is added to alloc and initialize the common code that was
> repeted in the callers :-
> 
> * 8c16567d867ed 5 args-init and alloc helper bio_alloc_bioset()
> * 0a3140ea0fae3 5 args-init and alloc helper blk_next_bio()
> * cdb14e0f7775e 4 args-init and alloc helper blk_mq_alloc_sq_tag_set()
> 
> With 5 arguments it shuold be easy to review and we don't have to extend
> the API even if tag_set gets a new member, I'll gradually change the
> drivers slowly to avoid one big treewide change.
> 
> This avoids code repetation of inialization code of tag set in current
> block drivers and any future ones.
> 


Please ignore this this has a bug, I'll send it with bug fixed.

Apologies for the noise.

-ck
Christoph Hellwig Oct. 11, 2022, 6:06 a.m. UTC | #2
On Mon, Oct 10, 2022 at 10:00:20AM -0700, Chaitanya Kulkarni wrote:
> Hi,
> 
> The newly added helper blk_mq_init_alloc_tag_set() replaces existing
> call to blk_mq_alloc_tag_set() and takes following arguments to
> initialize tag_set before calling blk_mq_alloc_tag_set() :-

As said before I'm working on proper refcounting for the tagsets.
Please don't do arbitrary and somewhat questionable cleanups in this
area for now, thank you!