rsxx: convert to blk_alloc_disk/blk_cleanup_disk
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>
This commit is contained in:
parent
4441348452
commit
0be7966e7e
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user