simdisk: convert to blk_alloc_disk/blk_cleanup_disk

Convert the simdisk 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-21-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Christoph Hellwig 2021-05-21 07:51:10 +02:00 committed by Jens Axboe
parent c3e2353836
commit b1833edc4c
1 changed files with 7 additions and 22 deletions

View File

@ -27,7 +27,6 @@
struct simdisk { struct simdisk {
const char *filename; const char *filename;
spinlock_t lock; spinlock_t lock;
struct request_queue *queue;
struct gendisk *gd; struct gendisk *gd;
struct proc_dir_entry *procfile; struct proc_dir_entry *procfile;
int users; int users;
@ -266,21 +265,13 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
spin_lock_init(&dev->lock); spin_lock_init(&dev->lock);
dev->users = 0; dev->users = 0;
dev->queue = blk_alloc_queue(NUMA_NO_NODE); dev->gd = blk_alloc_disk(NUMA_NO_NODE);
if (dev->queue == NULL) { if (!dev->gd)
pr_err("blk_alloc_queue failed\n"); return -ENOMEM;
goto out_alloc_queue;
}
dev->gd = alloc_disk(SIMDISK_MINORS);
if (dev->gd == NULL) {
pr_err("alloc_disk failed\n");
goto out_alloc_disk;
}
dev->gd->major = simdisk_major; dev->gd->major = simdisk_major;
dev->gd->first_minor = which; dev->gd->first_minor = which;
dev->gd->minors = SIMDISK_MINORS;
dev->gd->fops = &simdisk_ops; dev->gd->fops = &simdisk_ops;
dev->gd->queue = dev->queue;
dev->gd->private_data = dev; dev->gd->private_data = dev;
snprintf(dev->gd->disk_name, 32, "simdisk%d", which); snprintf(dev->gd->disk_name, 32, "simdisk%d", which);
set_capacity(dev->gd, 0); set_capacity(dev->gd, 0);
@ -288,12 +279,6 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
dev->procfile = proc_create_data(tmp, 0644, procdir, &simdisk_proc_ops, dev); dev->procfile = proc_create_data(tmp, 0644, procdir, &simdisk_proc_ops, dev);
return 0; return 0;
out_alloc_disk:
blk_cleanup_queue(dev->queue);
dev->queue = NULL;
out_alloc_queue:
return -ENOMEM;
} }
static int __init simdisk_init(void) static int __init simdisk_init(void)
@ -343,10 +328,10 @@ static void simdisk_teardown(struct simdisk *dev, int which,
char tmp[2] = { '0' + which, 0 }; char tmp[2] = { '0' + which, 0 };
simdisk_detach(dev); simdisk_detach(dev);
if (dev->gd) if (dev->gd) {
del_gendisk(dev->gd); del_gendisk(dev->gd);
if (dev->queue) blk_cleanup_disk(dev->gd);
blk_cleanup_queue(dev->queue); }
remove_proc_entry(tmp, procdir); remove_proc_entry(tmp, procdir);
} }