Merge tag 'for-5.14/drivers-2021-06-29' of git://git.kernel.dk/linux-block
[sfrench/cifs-2.6.git] / drivers / block / sx8.c
index 71dcfde042abb96263e5c12eb7620565d3d539e5..7b54353ee92bcb68601628b55813655be56bc09a 100644 (file)
@@ -1343,32 +1343,25 @@ static int carm_init_disk(struct carm_host *host, unsigned int port_no)
 {
        struct carm_port *port = &host->port[port_no];
        struct gendisk *disk;
-       struct request_queue *q;
 
        port->host = host;
        port->port_no = port_no;
 
-       disk = alloc_disk(CARM_MINORS_PER_MAJOR);
-       if (!disk)
-               return -ENOMEM;
+       disk = blk_mq_alloc_disk(&host->tag_set, port);
+       if (IS_ERR(disk))
+               return PTR_ERR(disk);
 
        port->disk = disk;
        sprintf(disk->disk_name, DRV_NAME "/%u",
                (unsigned int)host->id * CARM_MAX_PORTS + port_no);
        disk->major = host->major;
        disk->first_minor = port_no * CARM_MINORS_PER_MAJOR;
+       disk->minors = CARM_MINORS_PER_MAJOR;
        disk->fops = &carm_bd_ops;
        disk->private_data = port;
 
-       q = blk_mq_init_queue(&host->tag_set);
-       if (IS_ERR(q))
-               return PTR_ERR(q);
-
-       blk_queue_max_segments(q, CARM_MAX_REQ_SG);
-       blk_queue_segment_boundary(q, CARM_SG_BOUNDARY);
-
-       q->queuedata = port;
-       disk->queue = q;
+       blk_queue_max_segments(disk->queue, CARM_MAX_REQ_SG);
+       blk_queue_segment_boundary(disk->queue, CARM_SG_BOUNDARY);
        return 0;
 }
 
@@ -1382,9 +1375,7 @@ static void carm_free_disk(struct carm_host *host, unsigned int port_no)
 
        if (disk->flags & GENHD_FL_UP)
                del_gendisk(disk);
-       if (disk->queue)
-               blk_cleanup_queue(disk->queue);
-       put_disk(disk);
+       blk_cleanup_disk(disk);
 }
 
 static int carm_init_shm(struct carm_host *host)