Lines Matching refs:nsblk

16 static u32 nsblk_meta_size(struct nd_namespace_blk *nsblk)  in nsblk_meta_size()  argument
18 return nsblk->lbasize - ((nsblk->lbasize >= 4096) ? 4096 : 512); in nsblk_meta_size()
21 static u32 nsblk_internal_lbasize(struct nd_namespace_blk *nsblk) in nsblk_internal_lbasize() argument
23 return roundup(nsblk->lbasize, INT_LBASIZE_ALIGNMENT); in nsblk_internal_lbasize()
26 static u32 nsblk_sector_size(struct nd_namespace_blk *nsblk) in nsblk_sector_size() argument
28 return nsblk->lbasize - nsblk_meta_size(nsblk); in nsblk_sector_size()
31 static resource_size_t to_dev_offset(struct nd_namespace_blk *nsblk, in to_dev_offset() argument
36 for (i = 0; i < nsblk->num_resources; i++) { in to_dev_offset()
37 if (ns_offset < resource_size(nsblk->res[i])) { in to_dev_offset()
38 if (ns_offset + len > resource_size(nsblk->res[i])) { in to_dev_offset()
39 dev_WARN_ONCE(&nsblk->common.dev, 1, in to_dev_offset()
43 return nsblk->res[i]->start + ns_offset; in to_dev_offset()
45 ns_offset -= resource_size(nsblk->res[i]); in to_dev_offset()
48 dev_WARN_ONCE(&nsblk->common.dev, 1, "request out of range\n"); in to_dev_offset()
52 static struct nd_blk_region *to_ndbr(struct nd_namespace_blk *nsblk) in to_ndbr() argument
57 parent = nsblk->common.dev.parent; in to_ndbr()
63 static int nd_blk_rw_integrity(struct nd_namespace_blk *nsblk, in nd_blk_rw_integrity() argument
66 struct nd_blk_region *ndbr = to_ndbr(nsblk); in nd_blk_rw_integrity()
67 unsigned int len = nsblk_meta_size(nsblk); in nd_blk_rw_integrity()
72 internal_lbasize = nsblk_internal_lbasize(nsblk); in nd_blk_rw_integrity()
73 sector_size = nsblk_sector_size(nsblk); in nd_blk_rw_integrity()
75 dev_offset = to_dev_offset(nsblk, ns_offset, len); in nd_blk_rw_integrity()
109 static int nd_blk_rw_integrity(struct nd_namespace_blk *nsblk, in nd_blk_rw_integrity() argument
116 static int nsblk_do_bvec(struct nd_namespace_blk *nsblk, in nsblk_do_bvec() argument
120 struct nd_blk_region *ndbr = to_ndbr(nsblk); in nsblk_do_bvec()
127 internal_lbasize = nsblk_internal_lbasize(nsblk); in nsblk_do_bvec()
128 sector_size = nsblk_sector_size(nsblk); in nsblk_do_bvec()
142 dev_offset = to_dev_offset(nsblk, ns_offset, cur_len); in nsblk_do_bvec()
153 err = nd_blk_rw_integrity(nsblk, bip, lba, rw); in nsblk_do_bvec()
168 struct nd_namespace_blk *nsblk; in nd_blk_make_request() local
179 nsblk = q->queuedata; in nd_blk_make_request()
186 err = nsblk_do_bvec(nsblk, bip, bvec.bv_page, len, in nd_blk_make_request()
189 dev_dbg(&nsblk->common.dev, in nd_blk_make_request()
208 struct nd_namespace_blk *nsblk = to_nd_namespace_blk(&ndns->dev); in nsblk_rw_bytes() local
209 struct nd_blk_region *ndbr = to_ndbr(nsblk); in nsblk_rw_bytes()
212 dev_offset = to_dev_offset(nsblk, offset, n); in nsblk_rw_bytes()
214 if (unlikely(offset + n > nsblk->size)) { in nsblk_rw_bytes()
241 static int nsblk_attach_disk(struct nd_namespace_blk *nsblk) in nsblk_attach_disk() argument
243 struct device *dev = &nsblk->common.dev; in nsblk_attach_disk()
249 internal_nlba = div_u64(nsblk->size, nsblk_internal_lbasize(nsblk)); in nsblk_attach_disk()
250 available_disk_size = internal_nlba * nsblk_sector_size(nsblk); in nsblk_attach_disk()
260 blk_queue_logical_block_size(q, nsblk_sector_size(nsblk)); in nsblk_attach_disk()
262 q->queuedata = nsblk; in nsblk_attach_disk()
272 nvdimm_namespace_disk_name(&nsblk->common, disk->disk_name); in nsblk_attach_disk()
277 if (nsblk_meta_size(nsblk)) { in nsblk_attach_disk()
278 int rc = nd_integrity_init(disk, nsblk_meta_size(nsblk)); in nsblk_attach_disk()
293 struct nd_namespace_blk *nsblk; in nd_blk_probe() local
299 nsblk = to_nd_namespace_blk(&ndns->dev); in nd_blk_probe()
300 nsblk->size = nvdimm_namespace_capacity(ndns); in nd_blk_probe()
301 dev_set_drvdata(dev, nsblk); in nd_blk_probe()
310 return nsblk_attach_disk(nsblk); in nd_blk_probe()