diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-03-19 02:47:43 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-04-22 15:26:23 -0400 |
commit | bd842b8ca7f207b99a5476a8174e62c29a2ff80e (patch) | |
tree | 50365a7b28e6b0796cc8823b63287b531b67d77b /drivers/nvdimm | |
parent | d44077a7cddce18fc8d83194bb4c83a0225f0f40 (diff) |
libnvdimm, pmem: use ->queuedata for driver private data
Save a pointer chase by storing the driver private data in the
request_queue rather than the gendisk.
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/nvdimm')
-rw-r--r-- | drivers/nvdimm/pmem.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 6fa39f55dbe3..2238e3af48ae 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c | |||
@@ -135,8 +135,7 @@ static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio) | |||
135 | unsigned long start; | 135 | unsigned long start; |
136 | struct bio_vec bvec; | 136 | struct bio_vec bvec; |
137 | struct bvec_iter iter; | 137 | struct bvec_iter iter; |
138 | struct block_device *bdev = bio->bi_bdev; | 138 | struct pmem_device *pmem = q->queuedata; |
139 | struct pmem_device *pmem = bdev->bd_disk->private_data; | ||
140 | 139 | ||
141 | do_acct = nd_iostat_start(bio, &start); | 140 | do_acct = nd_iostat_start(bio, &start); |
142 | bio_for_each_segment(bvec, bio, iter) { | 141 | bio_for_each_segment(bvec, bio, iter) { |
@@ -161,7 +160,7 @@ static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio) | |||
161 | static int pmem_rw_page(struct block_device *bdev, sector_t sector, | 160 | static int pmem_rw_page(struct block_device *bdev, sector_t sector, |
162 | struct page *page, int rw) | 161 | struct page *page, int rw) |
163 | { | 162 | { |
164 | struct pmem_device *pmem = bdev->bd_disk->private_data; | 163 | struct pmem_device *pmem = bdev->bd_queue->queuedata; |
165 | int rc; | 164 | int rc; |
166 | 165 | ||
167 | rc = pmem_do_bvec(pmem, page, PAGE_SIZE, 0, rw, sector); | 166 | rc = pmem_do_bvec(pmem, page, PAGE_SIZE, 0, rw, sector); |
@@ -183,7 +182,7 @@ static int pmem_rw_page(struct block_device *bdev, sector_t sector, | |||
183 | static long pmem_direct_access(struct block_device *bdev, sector_t sector, | 182 | static long pmem_direct_access(struct block_device *bdev, sector_t sector, |
184 | void __pmem **kaddr, pfn_t *pfn) | 183 | void __pmem **kaddr, pfn_t *pfn) |
185 | { | 184 | { |
186 | struct pmem_device *pmem = bdev->bd_disk->private_data; | 185 | struct pmem_device *pmem = bdev->bd_queue->queuedata; |
187 | resource_size_t offset = sector * 512 + pmem->data_offset; | 186 | resource_size_t offset = sector * 512 + pmem->data_offset; |
188 | 187 | ||
189 | *kaddr = pmem->virt_addr + offset; | 188 | *kaddr = pmem->virt_addr + offset; |
@@ -267,6 +266,7 @@ static int pmem_attach_disk(struct device *dev, | |||
267 | blk_queue_max_hw_sectors(pmem->pmem_queue, UINT_MAX); | 266 | blk_queue_max_hw_sectors(pmem->pmem_queue, UINT_MAX); |
268 | blk_queue_bounce_limit(pmem->pmem_queue, BLK_BOUNCE_ANY); | 267 | blk_queue_bounce_limit(pmem->pmem_queue, BLK_BOUNCE_ANY); |
269 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, pmem->pmem_queue); | 268 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, pmem->pmem_queue); |
269 | pmem->pmem_queue->queuedata = pmem; | ||
270 | 270 | ||
271 | disk = alloc_disk_node(0, nid); | 271 | disk = alloc_disk_node(0, nid); |
272 | if (!disk) { | 272 | if (!disk) { |
@@ -275,7 +275,6 @@ static int pmem_attach_disk(struct device *dev, | |||
275 | } | 275 | } |
276 | 276 | ||
277 | disk->fops = &pmem_fops; | 277 | disk->fops = &pmem_fops; |
278 | disk->private_data = pmem; | ||
279 | disk->queue = pmem->pmem_queue; | 278 | disk->queue = pmem->pmem_queue; |
280 | disk->flags = GENHD_FL_EXT_DEVT; | 279 | disk->flags = GENHD_FL_EXT_DEVT; |
281 | nvdimm_namespace_disk_name(ndns, disk->disk_name); | 280 | nvdimm_namespace_disk_name(ndns, disk->disk_name); |