mspro: use blk_mq_alloc_disk
authorChristoph Hellwig <hch@lst.de>
Wed, 2 Jun 2021 06:53:23 +0000 (09:53 +0300)
committerJens Axboe <axboe@kernel.dk>
Fri, 11 Jun 2021 17:53:02 +0000 (11:53 -0600)
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>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Link: https://lore.kernel.org/r/20210602065345.355274-9-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/memstick/core/mspro_block.c

index cf7fe0d..22778d0 100644 (file)
@@ -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);