[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 05/30] pcd: use blk_mq_alloc_disk



Use the blk_mq_alloc_disk API to simplify the gendisk and request_queue
allocation.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
---
 drivers/block/paride/pcd.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c
index 70da8b86ce58..f9cdd11f02f5 100644
--- a/drivers/block/paride/pcd.c
+++ b/drivers/block/paride/pcd.c
@@ -309,21 +309,19 @@ static void pcd_init_units(void)
 
        pcd_drive_count = 0;
        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;
 
-               disk->queue = blk_mq_init_sq_queue(&cd->tag_set, &pcd_mq_ops,
-                                                  1, BLK_MQ_F_SHOULD_MERGE);
-               if (IS_ERR(disk->queue)) {
-                       disk->queue = NULL;
-                       put_disk(disk);
+               disk = blk_mq_alloc_disk(&cd->tag_set, cd);
+               if (IS_ERR(disk)) {
+                       blk_mq_free_tag_set(&cd->tag_set);
                        continue;
                }
 
                INIT_LIST_HEAD(&cd->rq_list);
-               disk->queue->queuedata = cd;
                blk_queue_bounce_limit(disk->queue, BLK_BOUNCE_HIGH);
                cd->disk = disk;
                cd->pi = &cd->pia;
@@ -343,6 +341,7 @@ static void pcd_init_units(void)
                cd->info.mask = 0;
                disk->major = major;
                disk->first_minor = unit;
+               disk->minors = 1;
                strcpy(disk->disk_name, cd->name);      /* umm... */
                disk->fops = &pcd_bdops;
                disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
@@ -759,10 +758,8 @@ static int pcd_detect(void)
        for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
                if (!cd->disk)
                        continue;
-               blk_cleanup_queue(cd->disk->queue);
-               cd->disk->queue = NULL;
+               blk_cleanup_disk(cd->disk);
                blk_mq_free_tag_set(&cd->tag_set);
-               put_disk(cd->disk);
        }
        pi_unregister_driver(par_drv);
        return -1;
-- 
2.30.2




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.