diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-03-21 18:43:53 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-04-22 15:26:24 -0400 |
commit | 5a92289f41311a54ededb5e4ed474cc38f5d85de (patch) | |
tree | d99aaf8979104aad5b500bc9785c143f260d9e20 | |
parent | ac515c084be9b3995f7aef0ae87797e75e0260f0 (diff) |
libnvdimm, pmem: kill ->pmem_queue and ->pmem_disk
The devm conversion obviates the need to continue to remember the queue
and disk locally in the driver.
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/nvdimm/pmem.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 3fc68962c1fc..d9a0dbc2d023 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c | |||
@@ -33,9 +33,6 @@ | |||
33 | #include "nd.h" | 33 | #include "nd.h" |
34 | 34 | ||
35 | struct pmem_device { | 35 | struct pmem_device { |
36 | struct request_queue *pmem_queue; | ||
37 | struct gendisk *pmem_disk; | ||
38 | |||
39 | /* One contiguous memory region per device */ | 36 | /* One contiguous memory region per device */ |
40 | phys_addr_t phys_addr; | 37 | phys_addr_t phys_addr; |
41 | /* when non-zero this device is hosting a 'pfn' instance */ | 38 | /* when non-zero this device is hosting a 'pfn' instance */ |
@@ -52,7 +49,7 @@ struct pmem_device { | |||
52 | static void pmem_clear_poison(struct pmem_device *pmem, phys_addr_t offset, | 49 | static void pmem_clear_poison(struct pmem_device *pmem, phys_addr_t offset, |
53 | unsigned int len) | 50 | unsigned int len) |
54 | { | 51 | { |
55 | struct device *dev = disk_to_dev(pmem->pmem_disk); | 52 | struct device *dev = pmem->bb.dev; |
56 | sector_t sector; | 53 | sector_t sector; |
57 | long cleared; | 54 | long cleared; |
58 | 55 | ||
@@ -241,7 +238,6 @@ static int pmem_attach_disk(struct device *dev, | |||
241 | q = blk_alloc_queue_node(GFP_KERNEL, dev_to_node(dev)); | 238 | q = blk_alloc_queue_node(GFP_KERNEL, dev_to_node(dev)); |
242 | if (!q) | 239 | if (!q) |
243 | return -ENOMEM; | 240 | return -ENOMEM; |
244 | pmem->pmem_queue = q; | ||
245 | 241 | ||
246 | pmem->pfn_flags = PFN_DEV; | 242 | pmem->pfn_flags = PFN_DEV; |
247 | if (is_nd_pfn(dev)) { | 243 | if (is_nd_pfn(dev)) { |
@@ -274,12 +270,12 @@ static int pmem_attach_disk(struct device *dev, | |||
274 | return PTR_ERR(addr); | 270 | return PTR_ERR(addr); |
275 | pmem->virt_addr = (void __pmem *) addr; | 271 | pmem->virt_addr = (void __pmem *) addr; |
276 | 272 | ||
277 | blk_queue_make_request(pmem->pmem_queue, pmem_make_request); | 273 | blk_queue_make_request(q, pmem_make_request); |
278 | blk_queue_physical_block_size(pmem->pmem_queue, PAGE_SIZE); | 274 | blk_queue_physical_block_size(q, PAGE_SIZE); |
279 | blk_queue_max_hw_sectors(pmem->pmem_queue, UINT_MAX); | 275 | blk_queue_max_hw_sectors(q, UINT_MAX); |
280 | blk_queue_bounce_limit(pmem->pmem_queue, BLK_BOUNCE_ANY); | 276 | blk_queue_bounce_limit(q, BLK_BOUNCE_ANY); |
281 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, pmem->pmem_queue); | 277 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); |
282 | pmem->pmem_queue->queuedata = pmem; | 278 | q->queuedata = pmem; |
283 | 279 | ||
284 | disk = alloc_disk_node(0, nid); | 280 | disk = alloc_disk_node(0, nid); |
285 | if (!disk) | 281 | if (!disk) |
@@ -290,13 +286,12 @@ static int pmem_attach_disk(struct device *dev, | |||
290 | } | 286 | } |
291 | 287 | ||
292 | disk->fops = &pmem_fops; | 288 | disk->fops = &pmem_fops; |
293 | disk->queue = pmem->pmem_queue; | 289 | disk->queue = q; |
294 | disk->flags = GENHD_FL_EXT_DEVT; | 290 | disk->flags = GENHD_FL_EXT_DEVT; |
295 | nvdimm_namespace_disk_name(ndns, disk->disk_name); | 291 | nvdimm_namespace_disk_name(ndns, disk->disk_name); |
296 | disk->driverfs_dev = dev; | 292 | disk->driverfs_dev = dev; |
297 | set_capacity(disk, (pmem->size - pmem->pfn_pad - pmem->data_offset) | 293 | set_capacity(disk, (pmem->size - pmem->pfn_pad - pmem->data_offset) |
298 | / 512); | 294 | / 512); |
299 | pmem->pmem_disk = disk; | ||
300 | if (devm_init_badblocks(dev, &pmem->bb)) | 295 | if (devm_init_badblocks(dev, &pmem->bb)) |
301 | return -ENOMEM; | 296 | return -ENOMEM; |
302 | nvdimm_badblocks_populate(to_nd_region(dev->parent), &pmem->bb, res); | 297 | nvdimm_badblocks_populate(to_nd_region(dev->parent), &pmem->bb, res); |