nvdimm-pmem: convert to blk_alloc_disk/blk_cleanup_disk
authorChristoph Hellwig <hch@lst.de>
Fri, 21 May 2021 05:51:07 +0000 (07:51 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 1 Jun 2021 13:42:23 +0000 (07:42 -0600)
Convert the nvdimm-pmem 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-18-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvdimm/pmem.c

index 968b848..9fcd050 100644 (file)
@@ -338,7 +338,7 @@ static void pmem_pagemap_cleanup(struct dev_pagemap *pgmap)
        struct request_queue *q =
                container_of(pgmap->ref, struct request_queue, q_usage_counter);
 
-       blk_cleanup_queue(q);
+       blk_cleanup_disk(queue_to_disk(q));
 }
 
 static void pmem_release_queue(void *pgmap)
@@ -361,7 +361,6 @@ static void pmem_release_disk(void *__pmem)
        kill_dax(pmem->dax_dev);
        put_dax(pmem->dax_dev);
        del_gendisk(pmem->disk);
-       put_disk(pmem->disk);
 }
 
 static const struct dev_pagemap_ops fsdax_pagemap_ops = {
@@ -422,10 +421,12 @@ static int pmem_attach_disk(struct device *dev,
                return -EBUSY;
        }
 
-       q = blk_alloc_queue(dev_to_node(dev));
-       if (!q)
+       disk = blk_alloc_disk(nid);
+       if (!disk)
                return -ENOMEM;
+       q = disk->queue;
 
+       pmem->disk = disk;
        pmem->pfn_flags = PFN_DEV;
        pmem->pgmap.ref = &q->q_usage_counter;
        if (is_nd_pfn(dev)) {
@@ -470,11 +471,6 @@ static int pmem_attach_disk(struct device *dev,
        if (pmem->pfn_flags & PFN_MAP)
                blk_queue_flag_set(QUEUE_FLAG_DAX, q);
 
-       disk = alloc_disk_node(0, nid);
-       if (!disk)
-               return -ENOMEM;
-       pmem->disk = disk;
-
        disk->fops              = &pmem_fops;
        disk->queue             = q;
        disk->private_data      = pmem;
@@ -490,7 +486,6 @@ static int pmem_attach_disk(struct device *dev,
                flags = DAXDEV_F_SYNC;
        dax_dev = alloc_dax(pmem, disk->disk_name, &pmem_dax_ops, flags);
        if (IS_ERR(dax_dev)) {
-               put_disk(disk);
                return PTR_ERR(dax_dev);
        }
        dax_write_cache(dax_dev, nvdimm_has_cache(nd_region));