Lines Matching defs:nsblk

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