Commit 9c4f8971 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

pcd: 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-6-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 89a5f065
...@@ -309,21 +309,19 @@ static void pcd_init_units(void) ...@@ -309,21 +309,19 @@ static void pcd_init_units(void)
pcd_drive_count = 0; pcd_drive_count = 0;
for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) { for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
struct gendisk *disk = alloc_disk(1); struct gendisk *disk;
if (!disk) if (blk_mq_alloc_sq_tag_set(&cd->tag_set, &pcd_mq_ops, 1,
BLK_MQ_F_SHOULD_MERGE))
continue; continue;
disk->queue = blk_mq_init_sq_queue(&cd->tag_set, &pcd_mq_ops, disk = blk_mq_alloc_disk(&cd->tag_set, cd);
1, BLK_MQ_F_SHOULD_MERGE); if (IS_ERR(disk)) {
if (IS_ERR(disk->queue)) { blk_mq_free_tag_set(&cd->tag_set);
disk->queue = NULL;
put_disk(disk);
continue; continue;
} }
INIT_LIST_HEAD(&cd->rq_list); INIT_LIST_HEAD(&cd->rq_list);
disk->queue->queuedata = cd;
blk_queue_bounce_limit(disk->queue, BLK_BOUNCE_HIGH); blk_queue_bounce_limit(disk->queue, BLK_BOUNCE_HIGH);
cd->disk = disk; cd->disk = disk;
cd->pi = &cd->pia; cd->pi = &cd->pia;
...@@ -343,6 +341,7 @@ static void pcd_init_units(void) ...@@ -343,6 +341,7 @@ static void pcd_init_units(void)
cd->info.mask = 0; cd->info.mask = 0;
disk->major = major; disk->major = major;
disk->first_minor = unit; disk->first_minor = unit;
disk->minors = 1;
strcpy(disk->disk_name, cd->name); /* umm... */ strcpy(disk->disk_name, cd->name); /* umm... */
disk->fops = &pcd_bdops; disk->fops = &pcd_bdops;
disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE; disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
...@@ -759,10 +758,8 @@ static int pcd_detect(void) ...@@ -759,10 +758,8 @@ static int pcd_detect(void)
for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) { for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
if (!cd->disk) if (!cd->disk)
continue; continue;
blk_cleanup_queue(cd->disk->queue); blk_cleanup_disk(cd->disk);
cd->disk->queue = NULL;
blk_mq_free_tag_set(&cd->tag_set); blk_mq_free_tag_set(&cd->tag_set);
put_disk(cd->disk);
} }
pi_unregister_driver(par_drv); pi_unregister_driver(par_drv);
return -1; return -1;
......
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