aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dax/bus.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index a410154d75fb..28c3324271ac 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -279,13 +279,41 @@ static ssize_t size_show(struct device *dev,
279} 279}
280static DEVICE_ATTR_RO(size); 280static DEVICE_ATTR_RO(size);
281 281
282static int dev_dax_target_node(struct dev_dax *dev_dax)
283{
284 struct dax_region *dax_region = dev_dax->region;
285
286 return dax_region->target_node;
287}
288
289static ssize_t target_node_show(struct device *dev,
290 struct device_attribute *attr, char *buf)
291{
292 struct dev_dax *dev_dax = to_dev_dax(dev);
293
294 return sprintf(buf, "%d\n", dev_dax_target_node(dev_dax));
295}
296static DEVICE_ATTR_RO(target_node);
297
298static umode_t dev_dax_visible(struct kobject *kobj, struct attribute *a, int n)
299{
300 struct device *dev = container_of(kobj, struct device, kobj);
301 struct dev_dax *dev_dax = to_dev_dax(dev);
302
303 if (a == &dev_attr_target_node.attr && dev_dax_target_node(dev_dax) < 0)
304 return 0;
305 return a->mode;
306}
307
282static struct attribute *dev_dax_attributes[] = { 308static struct attribute *dev_dax_attributes[] = {
283 &dev_attr_size.attr, 309 &dev_attr_size.attr,
310 &dev_attr_target_node.attr,
284 NULL, 311 NULL,
285}; 312};
286 313
287static const struct attribute_group dev_dax_attribute_group = { 314static const struct attribute_group dev_dax_attribute_group = {
288 .attrs = dev_dax_attributes, 315 .attrs = dev_dax_attributes,
316 .is_visible = dev_dax_visible,
289}; 317};
290 318
291static const struct attribute_group *dax_attribute_groups[] = { 319static const struct attribute_group *dax_attribute_groups[] = {