diff mbox series

[07/30] ms_block: use blk_mq_alloc_disk

Message ID 20210602065345.355274-8-hch@lst.de
State New
Headers show
Series None | expand

Commit Message

Christoph Hellwig June 2, 2021, 6:53 a.m. UTC
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/ms_block.c | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

Comments

Ulf Hansson June 3, 2021, 3:36 p.m. UTC | #1
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/ms_block.c | 25 ++++++++++---------------

>  1 file changed, 10 insertions(+), 15 deletions(-)

>

> diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c

> index 0bacf4268f83..dac258d12aca 100644

> --- a/drivers/memstick/core/ms_block.c

> +++ b/drivers/memstick/core/ms_block.c

> @@ -2110,21 +2110,17 @@ static int msb_init_disk(struct memstick_dev *card)

>         if (msb->disk_id  < 0)

>                 return msb->disk_id;

>

> -       msb->disk = alloc_disk(0);

> -       if (!msb->disk) {

> -               rc = -ENOMEM;

> +       rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &msb_mq_ops, 2,

> +                                    BLK_MQ_F_SHOULD_MERGE);

> +       if (rc)

>                 goto out_release_id;

> -       }

>

> -       msb->queue = blk_mq_init_sq_queue(&msb->tag_set, &msb_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, MS_BLOCK_MAX_PAGES);

>         blk_queue_max_segments(msb->queue, MS_BLOCK_MAX_SEGS);

> @@ -2135,7 +2131,6 @@ static int msb_init_disk(struct memstick_dev *card)

>         sprintf(msb->disk->disk_name, "msblk%d", msb->disk_id);

>         msb->disk->fops = &msb_bdops;

>         msb->disk->private_data = msb;

> -       msb->disk->queue = msb->queue;

>

>         capacity = msb->pages_in_block * msb->logical_block_count;

>         capacity *= (msb->page_size / 512);

> @@ -2155,8 +2150,8 @@ static int msb_init_disk(struct memstick_dev *card)

>         dbg("Disk added");

>         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(&msb_disk_lock);

>         idr_remove(&msb_disk_idr, msb->disk_id);

> --

> 2.30.2

>
diff mbox series

Patch

diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c
index 0bacf4268f83..dac258d12aca 100644
--- a/drivers/memstick/core/ms_block.c
+++ b/drivers/memstick/core/ms_block.c
@@ -2110,21 +2110,17 @@  static int msb_init_disk(struct memstick_dev *card)
 	if (msb->disk_id  < 0)
 		return msb->disk_id;
 
-	msb->disk = alloc_disk(0);
-	if (!msb->disk) {
-		rc = -ENOMEM;
+	rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &msb_mq_ops, 2,
+				     BLK_MQ_F_SHOULD_MERGE);
+	if (rc)
 		goto out_release_id;
-	}
 
-	msb->queue = blk_mq_init_sq_queue(&msb->tag_set, &msb_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, MS_BLOCK_MAX_PAGES);
 	blk_queue_max_segments(msb->queue, MS_BLOCK_MAX_SEGS);
@@ -2135,7 +2131,6 @@  static int msb_init_disk(struct memstick_dev *card)
 	sprintf(msb->disk->disk_name, "msblk%d", msb->disk_id);
 	msb->disk->fops = &msb_bdops;
 	msb->disk->private_data = msb;
-	msb->disk->queue = msb->queue;
 
 	capacity = msb->pages_in_block * msb->logical_block_count;
 	capacity *= (msb->page_size / 512);
@@ -2155,8 +2150,8 @@  static int msb_init_disk(struct memstick_dev *card)
 	dbg("Disk added");
 	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(&msb_disk_lock);
 	idr_remove(&msb_disk_idr, msb->disk_id);