Commit 0592c3d1 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

gdrom: use blk_mq_alloc_disk

Use the blk_mq_alloc_disk API to simplify the gendisk and request_queue
allocation.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Link: https://lore.kernel.org/r/20210602065345.355274-15-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent afea05a1
...@@ -772,53 +772,50 @@ static int probe_gdrom(struct platform_device *devptr) ...@@ -772,53 +772,50 @@ static int probe_gdrom(struct platform_device *devptr)
goto probe_fail_no_mem; goto probe_fail_no_mem;
} }
probe_gdrom_setupcd(); probe_gdrom_setupcd();
gd.disk = alloc_disk(1);
if (!gd.disk) { err = blk_mq_alloc_sq_tag_set(&gd.tag_set, &gdrom_mq_ops, 1,
err = -ENODEV; BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING);
goto probe_fail_no_disk; if (err)
goto probe_fail_free_cd_info;
gd.disk = blk_mq_alloc_disk(&gd.tag_set, NULL);
if (IS_ERR(gd.disk)) {
err = PTR_ERR(gd.disk);
goto probe_fail_free_tag_set;
} }
gd.gdrom_rq = gd.disk->queue;
probe_gdrom_setupdisk(); probe_gdrom_setupdisk();
if (register_cdrom(gd.disk, gd.cd_info)) { if (register_cdrom(gd.disk, gd.cd_info)) {
err = -ENODEV; err = -ENODEV;
goto probe_fail_cdrom_register; goto probe_fail_cleanup_disk;
} }
gd.disk->fops = &gdrom_bdops; gd.disk->fops = &gdrom_bdops;
gd.disk->events = DISK_EVENT_MEDIA_CHANGE; gd.disk->events = DISK_EVENT_MEDIA_CHANGE;
/* latch on to the interrupt */ /* latch on to the interrupt */
err = gdrom_set_interrupt_handlers(); err = gdrom_set_interrupt_handlers();
if (err) if (err)
goto probe_fail_cmdirq_register; goto probe_fail_cleanup_disk;
gd.gdrom_rq = blk_mq_init_sq_queue(&gd.tag_set, &gdrom_mq_ops, 1,
BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING);
if (IS_ERR(gd.gdrom_rq)) {
err = PTR_ERR(gd.gdrom_rq);
gd.gdrom_rq = NULL;
goto probe_fail_requestq;
}
err = probe_gdrom_setupqueue(); err = probe_gdrom_setupqueue();
if (err) if (err)
goto probe_fail_toc; goto probe_fail_free_irqs;
gd.toc = kzalloc(sizeof(struct gdromtoc), GFP_KERNEL); gd.toc = kzalloc(sizeof(struct gdromtoc), GFP_KERNEL);
if (!gd.toc) { if (!gd.toc) {
err = -ENOMEM; err = -ENOMEM;
goto probe_fail_toc; goto probe_fail_free_irqs;
} }
add_disk(gd.disk); add_disk(gd.disk);
return 0; return 0;
probe_fail_toc: probe_fail_free_irqs:
blk_cleanup_queue(gd.gdrom_rq);
blk_mq_free_tag_set(&gd.tag_set);
probe_fail_requestq:
free_irq(HW_EVENT_GDROM_DMA, &gd); free_irq(HW_EVENT_GDROM_DMA, &gd);
free_irq(HW_EVENT_GDROM_CMD, &gd); free_irq(HW_EVENT_GDROM_CMD, &gd);
probe_fail_cmdirq_register: probe_fail_cleanup_disk:
probe_fail_cdrom_register: blk_cleanup_disk(gd.disk);
del_gendisk(gd.disk); probe_fail_free_tag_set:
probe_fail_no_disk: blk_mq_free_tag_set(&gd.tag_set);
probe_fail_free_cd_info:
kfree(gd.cd_info); kfree(gd.cd_info);
probe_fail_no_mem: probe_fail_no_mem:
unregister_blkdev(gdrom_major, GDROM_DEV_NAME); unregister_blkdev(gdrom_major, GDROM_DEV_NAME);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment