rsxx: convert to blk_alloc_disk/blk_cleanup_disk
authorChristoph Hellwig <hch@lst.de>
Fri, 21 May 2021 05:50:59 +0000 (07:50 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 1 Jun 2021 13:42:23 +0000 (07:42 -0600)
Convert the rsxx driver to use the blk_alloc_disk and blk_cleanup_disk
helpers to simplify gendisk and request_queue allocation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20210521055116.1053587-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/rsxx/dev.c
drivers/block/rsxx/rsxx_priv.h

index 9a28322a8cd893f731b5ab9c3dc753494fc8ed14..1cc40b0ea761906906258e10eea17519285ad33a 100644 (file)
@@ -236,47 +236,40 @@ int rsxx_setup_dev(struct rsxx_cardinfo *card)
                return -ENOMEM;
        }
 
-       card->queue = blk_alloc_queue(NUMA_NO_NODE);
-       if (!card->queue) {
-               dev_err(CARD_TO_DEV(card), "Failed queue alloc\n");
-               unregister_blkdev(card->major, DRIVER_NAME);
-               return -ENOMEM;
-       }
-
-       card->gendisk = alloc_disk(blkdev_minors);
+       card->gendisk = blk_alloc_disk(blkdev_minors);
        if (!card->gendisk) {
                dev_err(CARD_TO_DEV(card), "Failed disk alloc\n");
-               blk_cleanup_queue(card->queue);
                unregister_blkdev(card->major, DRIVER_NAME);
                return -ENOMEM;
        }
 
        if (card->config_valid) {
                blk_size = card->config.data.block_size;
-               blk_queue_dma_alignment(card->queue, blk_size - 1);
-               blk_queue_logical_block_size(card->queue, blk_size);
+               blk_queue_dma_alignment(card->gendisk->queue, blk_size - 1);
+               blk_queue_logical_block_size(card->gendisk->queue, blk_size);
        }
 
-       blk_queue_max_hw_sectors(card->queue, blkdev_max_hw_sectors);
-       blk_queue_physical_block_size(card->queue, RSXX_HW_BLK_SIZE);
+       blk_queue_max_hw_sectors(card->gendisk->queue, blkdev_max_hw_sectors);
+       blk_queue_physical_block_size(card->gendisk->queue, RSXX_HW_BLK_SIZE);
 
-       blk_queue_flag_set(QUEUE_FLAG_NONROT, card->queue);
-       blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, card->queue);
+       blk_queue_flag_set(QUEUE_FLAG_NONROT, card->gendisk->queue);
+       blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, card->gendisk->queue);
        if (rsxx_discard_supported(card)) {
-               blk_queue_flag_set(QUEUE_FLAG_DISCARD, card->queue);
-               blk_queue_max_discard_sectors(card->queue,
+               blk_queue_flag_set(QUEUE_FLAG_DISCARD, card->gendisk->queue);
+               blk_queue_max_discard_sectors(card->gendisk->queue,
                                                RSXX_HW_BLK_SIZE >> 9);
-               card->queue->limits.discard_granularity = RSXX_HW_BLK_SIZE;
-               card->queue->limits.discard_alignment   = RSXX_HW_BLK_SIZE;
+               card->gendisk->queue->limits.discard_granularity =
+                       RSXX_HW_BLK_SIZE;
+               card->gendisk->queue->limits.discard_alignment =
+                       RSXX_HW_BLK_SIZE;
        }
 
        snprintf(card->gendisk->disk_name, sizeof(card->gendisk->disk_name),
                 "rsxx%d", card->disk_id);
        card->gendisk->major = card->major;
-       card->gendisk->first_minor = 0;
+       card->gendisk->minors = blkdev_minors;
        card->gendisk->fops = &rsxx_fops;
        card->gendisk->private_data = card;
-       card->gendisk->queue = card->queue;
 
        return 0;
 }
@@ -286,10 +279,8 @@ void rsxx_destroy_dev(struct rsxx_cardinfo *card)
        if (!enable_blkdev)
                return;
 
-       put_disk(card->gendisk);
+       blk_cleanup_disk(card->gendisk);
        card->gendisk = NULL;
-
-       blk_cleanup_queue(card->queue);
        unregister_blkdev(card->major, DRIVER_NAME);
 }
 
index 6147977994ff004b8f08e01f1eb335560d802dbd..26c320c0d92456327edb50fd1b2008f0827a7f85 100644 (file)
@@ -154,7 +154,6 @@ struct rsxx_cardinfo {
        bool                    bdev_attached;
        int                     disk_id;
        int                     major;
-       struct request_queue    *queue;
        struct gendisk          *gendisk;
        struct {
                /* Used to convert a byte address to a device address. */