diff options
author | Vishal Verma <vishal.l.verma@intel.com> | 2016-07-27 18:38:59 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-08-08 12:26:14 -0400 |
commit | abe8b4e3cef88b8202641d63f5ad58141b970b0f (patch) | |
tree | b52e23c0f87ac191907395db7d5fae85fd1383f7 | |
parent | 68202c9f0ad6e16ee806fbadbc5838d55fe5aa5c (diff) |
nvdimm, btt: add a size attribute for BTTs
To be consistent with other namespaces, expose a 'size' attribute for
BTT devices also.
Cc: Dan Williams <dan.j.williams@intel.com>
Reported-by: Linda Knippers <linda.knippers@hpe.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/nvdimm/btt.c | 1 | ||||
-rw-r--r-- | drivers/nvdimm/btt_devs.c | 20 | ||||
-rw-r--r-- | drivers/nvdimm/nd.h | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c index 88e91666f145..368795aad5c9 100644 --- a/drivers/nvdimm/btt.c +++ b/drivers/nvdimm/btt.c | |||
@@ -1269,6 +1269,7 @@ static int btt_blk_init(struct btt *btt) | |||
1269 | } | 1269 | } |
1270 | } | 1270 | } |
1271 | set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9); | 1271 | set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9); |
1272 | btt->nd_btt->size = btt->nlba * (u64)btt->sector_size; | ||
1272 | revalidate_disk(btt->btt_disk); | 1273 | revalidate_disk(btt->btt_disk); |
1273 | 1274 | ||
1274 | return 0; | 1275 | return 0; |
diff --git a/drivers/nvdimm/btt_devs.c b/drivers/nvdimm/btt_devs.c index 3fa7919f94a8..97dd2925ed6e 100644 --- a/drivers/nvdimm/btt_devs.c +++ b/drivers/nvdimm/btt_devs.c | |||
@@ -140,10 +140,30 @@ static ssize_t namespace_store(struct device *dev, | |||
140 | } | 140 | } |
141 | static DEVICE_ATTR_RW(namespace); | 141 | static DEVICE_ATTR_RW(namespace); |
142 | 142 | ||
143 | static ssize_t size_show(struct device *dev, | ||
144 | struct device_attribute *attr, char *buf) | ||
145 | { | ||
146 | struct nd_btt *nd_btt = to_nd_btt(dev); | ||
147 | ssize_t rc; | ||
148 | |||
149 | device_lock(dev); | ||
150 | if (dev->driver) | ||
151 | rc = sprintf(buf, "%llu\n", nd_btt->size); | ||
152 | else { | ||
153 | /* no size to convey if the btt instance is disabled */ | ||
154 | rc = -ENXIO; | ||
155 | } | ||
156 | device_unlock(dev); | ||
157 | |||
158 | return rc; | ||
159 | } | ||
160 | static DEVICE_ATTR_RO(size); | ||
161 | |||
143 | static struct attribute *nd_btt_attributes[] = { | 162 | static struct attribute *nd_btt_attributes[] = { |
144 | &dev_attr_sector_size.attr, | 163 | &dev_attr_sector_size.attr, |
145 | &dev_attr_namespace.attr, | 164 | &dev_attr_namespace.attr, |
146 | &dev_attr_uuid.attr, | 165 | &dev_attr_uuid.attr, |
166 | &dev_attr_size.attr, | ||
147 | NULL, | 167 | NULL, |
148 | }; | 168 | }; |
149 | 169 | ||
diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h index 40476399d227..8024a0ef86d3 100644 --- a/drivers/nvdimm/nd.h +++ b/drivers/nvdimm/nd.h | |||
@@ -143,6 +143,7 @@ struct nd_btt { | |||
143 | struct nd_namespace_common *ndns; | 143 | struct nd_namespace_common *ndns; |
144 | struct btt *btt; | 144 | struct btt *btt; |
145 | unsigned long lbasize; | 145 | unsigned long lbasize; |
146 | u64 size; | ||
146 | u8 *uuid; | 147 | u8 *uuid; |
147 | int id; | 148 | int id; |
148 | }; | 149 | }; |