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;
 }
        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);
 }