Message ID | 20210602065345.355274-9-hch@lst.de |
---|---|
State | New |
Headers | show |
Series | [01/30] blk-mq: factor out a blk_mq_alloc_sq_tag_set helper | expand |
On Wed, 2 Jun 2021 at 08:54, Christoph Hellwig <hch@lst.de> wrote: > > Use the blk_mq_alloc_disk API to simplify the gendisk and request_queue > allocation. > > Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Kind regards Uffe > --- > drivers/memstick/core/mspro_block.c | 26 +++++++++++--------------- > 1 file changed, 11 insertions(+), 15 deletions(-) > > diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c > index cf7fe0d58ee7..22778d0e24f5 100644 > --- a/drivers/memstick/core/mspro_block.c > +++ b/drivers/memstick/core/mspro_block.c > @@ -1205,21 +1205,17 @@ static int mspro_block_init_disk(struct memstick_dev *card) > if (disk_id < 0) > return disk_id; > > - msb->disk = alloc_disk(1 << MSPRO_BLOCK_PART_SHIFT); > - if (!msb->disk) { > - rc = -ENOMEM; > + rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &mspro_mq_ops, 2, > + BLK_MQ_F_SHOULD_MERGE); > + if (rc) > goto out_release_id; > - } > > - msb->queue = blk_mq_init_sq_queue(&msb->tag_set, &mspro_mq_ops, 2, > - BLK_MQ_F_SHOULD_MERGE); > - if (IS_ERR(msb->queue)) { > - rc = PTR_ERR(msb->queue); > - msb->queue = NULL; > - goto out_put_disk; > + msb->disk = blk_mq_alloc_disk(&msb->tag_set, card); > + if (IS_ERR(msb->disk)) { > + rc = PTR_ERR(msb->disk); > + goto out_free_tag_set; > } > - > - msb->queue->queuedata = card; > + msb->queue = msb->disk->queue; > > blk_queue_max_hw_sectors(msb->queue, MSPRO_BLOCK_MAX_PAGES); > blk_queue_max_segments(msb->queue, MSPRO_BLOCK_MAX_SEGS); > @@ -1228,10 +1224,10 @@ static int mspro_block_init_disk(struct memstick_dev *card) > > msb->disk->major = major; > msb->disk->first_minor = disk_id << MSPRO_BLOCK_PART_SHIFT; > + msb->disk->minors = 1 << MSPRO_BLOCK_PART_SHIFT; > msb->disk->fops = &ms_block_bdops; > msb->usage_count = 1; > msb->disk->private_data = msb; > - msb->disk->queue = msb->queue; > > sprintf(msb->disk->disk_name, "mspblk%d", disk_id); > > @@ -1247,8 +1243,8 @@ static int mspro_block_init_disk(struct memstick_dev *card) > msb->active = 1; > return 0; > > -out_put_disk: > - put_disk(msb->disk); > +out_free_tag_set: > + blk_mq_free_tag_set(&msb->tag_set); > out_release_id: > mutex_lock(&mspro_block_disk_lock); > idr_remove(&mspro_block_disk_idr, disk_id); > -- > 2.30.2 >
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c index cf7fe0d58ee7..22778d0e24f5 100644 --- a/drivers/memstick/core/mspro_block.c +++ b/drivers/memstick/core/mspro_block.c @@ -1205,21 +1205,17 @@ static int mspro_block_init_disk(struct memstick_dev *card) if (disk_id < 0) return disk_id; - msb->disk = alloc_disk(1 << MSPRO_BLOCK_PART_SHIFT); - if (!msb->disk) { - rc = -ENOMEM; + rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &mspro_mq_ops, 2, + BLK_MQ_F_SHOULD_MERGE); + if (rc) goto out_release_id; - } - msb->queue = blk_mq_init_sq_queue(&msb->tag_set, &mspro_mq_ops, 2, - BLK_MQ_F_SHOULD_MERGE); - if (IS_ERR(msb->queue)) { - rc = PTR_ERR(msb->queue); - msb->queue = NULL; - goto out_put_disk; + msb->disk = blk_mq_alloc_disk(&msb->tag_set, card); + if (IS_ERR(msb->disk)) { + rc = PTR_ERR(msb->disk); + goto out_free_tag_set; } - - msb->queue->queuedata = card; + msb->queue = msb->disk->queue; blk_queue_max_hw_sectors(msb->queue, MSPRO_BLOCK_MAX_PAGES); blk_queue_max_segments(msb->queue, MSPRO_BLOCK_MAX_SEGS); @@ -1228,10 +1224,10 @@ static int mspro_block_init_disk(struct memstick_dev *card) msb->disk->major = major; msb->disk->first_minor = disk_id << MSPRO_BLOCK_PART_SHIFT; + msb->disk->minors = 1 << MSPRO_BLOCK_PART_SHIFT; msb->disk->fops = &ms_block_bdops; msb->usage_count = 1; msb->disk->private_data = msb; - msb->disk->queue = msb->queue; sprintf(msb->disk->disk_name, "mspblk%d", disk_id); @@ -1247,8 +1243,8 @@ static int mspro_block_init_disk(struct memstick_dev *card) msb->active = 1; return 0; -out_put_disk: - put_disk(msb->disk); +out_free_tag_set: + blk_mq_free_tag_set(&msb->tag_set); out_release_id: mutex_lock(&mspro_block_disk_lock); idr_remove(&mspro_block_disk_idr, disk_id);
Use the blk_mq_alloc_disk API to simplify the gendisk and request_queue allocation. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/memstick/core/mspro_block.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-)