Lines Matching refs:blk_dev

36 static u32 nd_blk_meta_size(struct nd_blk_device *blk_dev)  in nd_blk_meta_size()  argument
38 return blk_dev->nsblk->lbasize - blk_dev->sector_size; in nd_blk_meta_size()
63 static int nd_blk_rw_integrity(struct nd_blk_device *blk_dev, in nd_blk_rw_integrity() argument
67 unsigned int len = nd_blk_meta_size(blk_dev); in nd_blk_rw_integrity()
73 nsblk = blk_dev->nsblk; in nd_blk_rw_integrity()
74 ndbr = blk_dev->ndbr; in nd_blk_rw_integrity()
75 ns_offset = lba * blk_dev->internal_lbasize + blk_dev->sector_size; in nd_blk_rw_integrity()
109 static int nd_blk_rw_integrity(struct nd_blk_device *blk_dev, in nd_blk_rw_integrity() argument
117 static int nd_blk_do_bvec(struct nd_blk_device *blk_dev, in nd_blk_do_bvec() argument
122 struct nd_blk_region *ndbr = blk_dev->ndbr; in nd_blk_do_bvec()
137 cur_len = bip ? min(len, blk_dev->sector_size) : len; in nd_blk_do_bvec()
139 lba = div_u64(sector << SECTOR_SHIFT, blk_dev->sector_size); in nd_blk_do_bvec()
140 ns_offset = lba * blk_dev->internal_lbasize; in nd_blk_do_bvec()
141 dev_offset = to_dev_offset(blk_dev->nsblk, ns_offset, cur_len); in nd_blk_do_bvec()
152 err = nd_blk_rw_integrity(blk_dev, bip, lba, rw); in nd_blk_do_bvec()
158 sector += blk_dev->sector_size >> SECTOR_SHIFT; in nd_blk_do_bvec()
169 struct nd_blk_device *blk_dev; in nd_blk_make_request() local
188 blk_dev = disk->private_data; in nd_blk_make_request()
195 err = nd_blk_do_bvec(blk_dev, bip, bvec.bv_page, len, in nd_blk_make_request()
198 dev_info(&blk_dev->nsblk->common.dev, in nd_blk_make_request()
217 struct nd_blk_device *blk_dev = dev_get_drvdata(ndns->claim); in nd_blk_rw_bytes() local
218 struct nd_namespace_blk *nsblk = blk_dev->nsblk; in nd_blk_rw_bytes()
219 struct nd_blk_region *ndbr = blk_dev->ndbr; in nd_blk_rw_bytes()
224 if (unlikely(offset + n > blk_dev->disk_size)) { in nd_blk_rw_bytes()
241 struct nd_blk_device *blk_dev) in nd_blk_attach_disk() argument
247 internal_nlba = div_u64(blk_dev->disk_size, blk_dev->internal_lbasize); in nd_blk_attach_disk()
248 available_disk_size = internal_nlba * blk_dev->sector_size; in nd_blk_attach_disk()
250 blk_dev->queue = blk_alloc_queue(GFP_KERNEL); in nd_blk_attach_disk()
251 if (!blk_dev->queue) in nd_blk_attach_disk()
254 blk_queue_make_request(blk_dev->queue, nd_blk_make_request); in nd_blk_attach_disk()
255 blk_queue_max_hw_sectors(blk_dev->queue, UINT_MAX); in nd_blk_attach_disk()
256 blk_queue_bounce_limit(blk_dev->queue, BLK_BOUNCE_ANY); in nd_blk_attach_disk()
257 blk_queue_logical_block_size(blk_dev->queue, blk_dev->sector_size); in nd_blk_attach_disk()
258 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, blk_dev->queue); in nd_blk_attach_disk()
260 disk = blk_dev->disk = alloc_disk(0); in nd_blk_attach_disk()
262 blk_cleanup_queue(blk_dev->queue); in nd_blk_attach_disk()
270 disk->private_data = blk_dev; in nd_blk_attach_disk()
271 disk->queue = blk_dev->queue; in nd_blk_attach_disk()
277 if (nd_blk_meta_size(blk_dev)) { in nd_blk_attach_disk()
278 int rc = nd_integrity_init(disk, nd_blk_meta_size(blk_dev)); in nd_blk_attach_disk()
283 blk_cleanup_queue(blk_dev->queue); in nd_blk_attach_disk()
297 struct nd_blk_device *blk_dev; in nd_blk_probe() local
304 blk_dev = kzalloc(sizeof(*blk_dev), GFP_KERNEL); in nd_blk_probe()
305 if (!blk_dev) in nd_blk_probe()
309 blk_dev->disk_size = nvdimm_namespace_capacity(ndns); in nd_blk_probe()
310 blk_dev->ndbr = to_nd_blk_region(dev->parent); in nd_blk_probe()
311 blk_dev->nsblk = to_nd_namespace_blk(&ndns->dev); in nd_blk_probe()
312 blk_dev->internal_lbasize = roundup(nsblk->lbasize, in nd_blk_probe()
314 blk_dev->sector_size = ((nsblk->lbasize >= 4096) ? 4096 : 512); in nd_blk_probe()
315 dev_set_drvdata(dev, blk_dev); in nd_blk_probe()
320 else if (nd_btt_probe(ndns, blk_dev) == 0) { in nd_blk_probe()
324 rc = nd_blk_attach_disk(ndns, blk_dev); in nd_blk_probe()
326 kfree(blk_dev); in nd_blk_probe()
330 static void nd_blk_detach_disk(struct nd_blk_device *blk_dev) in nd_blk_detach_disk() argument
332 del_gendisk(blk_dev->disk); in nd_blk_detach_disk()
333 put_disk(blk_dev->disk); in nd_blk_detach_disk()
334 blk_cleanup_queue(blk_dev->queue); in nd_blk_detach_disk()
339 struct nd_blk_device *blk_dev = dev_get_drvdata(dev); in nd_blk_remove() local
344 nd_blk_detach_disk(blk_dev); in nd_blk_remove()
345 kfree(blk_dev); in nd_blk_remove()