Commit 87eb73b2 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

nvdimm-pmem: convert to blk_alloc_disk/blk_cleanup_disk

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20210521055116.1053587-18-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent d4e4e583
...@@ -338,7 +338,7 @@ static void pmem_pagemap_cleanup(struct dev_pagemap *pgmap) ...@@ -338,7 +338,7 @@ static void pmem_pagemap_cleanup(struct dev_pagemap *pgmap)
struct request_queue *q = struct request_queue *q =
container_of(pgmap->ref, struct request_queue, q_usage_counter); 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) static void pmem_release_queue(void *pgmap)
...@@ -361,7 +361,6 @@ static void pmem_release_disk(void *__pmem) ...@@ -361,7 +361,6 @@ static void pmem_release_disk(void *__pmem)
kill_dax(pmem->dax_dev); kill_dax(pmem->dax_dev);
put_dax(pmem->dax_dev); put_dax(pmem->dax_dev);
del_gendisk(pmem->disk); del_gendisk(pmem->disk);
put_disk(pmem->disk);
} }
static const struct dev_pagemap_ops fsdax_pagemap_ops = { static const struct dev_pagemap_ops fsdax_pagemap_ops = {
...@@ -422,10 +421,12 @@ static int pmem_attach_disk(struct device *dev, ...@@ -422,10 +421,12 @@ static int pmem_attach_disk(struct device *dev,
return -EBUSY; return -EBUSY;
} }
q = blk_alloc_queue(dev_to_node(dev)); disk = blk_alloc_disk(nid);
if (!q) if (!disk)
return -ENOMEM; return -ENOMEM;
q = disk->queue;
pmem->disk = disk;
pmem->pfn_flags = PFN_DEV; pmem->pfn_flags = PFN_DEV;
pmem->pgmap.ref = &q->q_usage_counter; pmem->pgmap.ref = &q->q_usage_counter;
if (is_nd_pfn(dev)) { if (is_nd_pfn(dev)) {
...@@ -470,11 +471,6 @@ static int pmem_attach_disk(struct device *dev, ...@@ -470,11 +471,6 @@ static int pmem_attach_disk(struct device *dev,
if (pmem->pfn_flags & PFN_MAP) if (pmem->pfn_flags & PFN_MAP)
blk_queue_flag_set(QUEUE_FLAG_DAX, q); 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->fops = &pmem_fops;
disk->queue = q; disk->queue = q;
disk->private_data = pmem; disk->private_data = pmem;
...@@ -490,7 +486,6 @@ static int pmem_attach_disk(struct device *dev, ...@@ -490,7 +486,6 @@ static int pmem_attach_disk(struct device *dev,
flags = DAXDEV_F_SYNC; flags = DAXDEV_F_SYNC;
dax_dev = alloc_dax(pmem, disk->disk_name, &pmem_dax_ops, flags); dax_dev = alloc_dax(pmem, disk->disk_name, &pmem_dax_ops, flags);
if (IS_ERR(dax_dev)) { if (IS_ERR(dax_dev)) {
put_disk(disk);
return PTR_ERR(dax_dev); return PTR_ERR(dax_dev);
} }
dax_write_cache(dax_dev, nvdimm_has_cache(nd_region)); dax_write_cache(dax_dev, nvdimm_has_cache(nd_region));
......
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