aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishal Verma <vishal.l.verma@intel.com>2016-07-27 18:38:59 -0400
committerDan Williams <dan.j.williams@intel.com>2016-08-08 12:26:14 -0400
commitabe8b4e3cef88b8202641d63f5ad58141b970b0f (patch)
treeb52e23c0f87ac191907395db7d5fae85fd1383f7
parent68202c9f0ad6e16ee806fbadbc5838d55fe5aa5c (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.c1
-rw-r--r--drivers/nvdimm/btt_devs.c20
-rw-r--r--drivers/nvdimm/nd.h1
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}
141static DEVICE_ATTR_RW(namespace); 141static DEVICE_ATTR_RW(namespace);
142 142
143static 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}
160static DEVICE_ATTR_RO(size);
161
143static struct attribute *nd_btt_attributes[] = { 162static 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};