aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2012-10-24 17:51:41 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-11-26 23:59:34 -0500
commit51976a8c85cec0c62e410bc38b8a11dbc690764d (patch)
treef794cefb30f5cbe532b4abc0de32349eb1757983 /drivers/scsi
parentafd5e34b2bb34881d3a789e62486814a49b47faa (diff)
[SCSI] osd_uld: Add osdname & systemid sysfs at scsi_osd class
This patch adds the support for the following two read-only sysfs attributes to scsi_osd class members : osdname & systemid These attributes will show up as below in sysfs class hierarchy: /sys/class/scsi_osd/osdX/osdname /sys/class/scsi_osd/osdX/systemid The osdname & systemid are OSD device attributes which uniquely identify a device on the network, while it's IP and certainly it's /dev/osdX device path might change. Userspace utilities (e.g. mkfs.exofs) can parse these attributes to identify the correct OSD in safer and faster way. (Today osd apps open each device in the system and send a attributes query for these, in order to access the user requested device) Signed-off-by: Sachin Bhamare <sbhamare@panasas.com> Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/osd/osd_uld.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/scsi/osd/osd_uld.c b/drivers/scsi/osd/osd_uld.c
index d4ed9eb52657..43754176a7b7 100644
--- a/drivers/scsi/osd/osd_uld.c
+++ b/drivers/scsi/osd/osd_uld.c
@@ -97,9 +97,37 @@ struct osd_dev_handle {
97 97
98static DEFINE_IDA(osd_minor_ida); 98static DEFINE_IDA(osd_minor_ida);
99 99
100/*
101 * scsi sysfs attribute operations
102 */
103static ssize_t osdname_show(struct device *dev, struct device_attribute *attr,
104 char *buf)
105{
106 struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
107 class_dev);
108 return sprintf(buf, "%s\n", ould->odi.osdname);
109}
110
111static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,
112 char *buf)
113{
114 struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
115 class_dev);
116
117 memcpy(buf, ould->odi.systemid, ould->odi.systemid_len);
118 return ould->odi.systemid_len;
119}
120
121static struct device_attribute osd_uld_attrs[] = {
122 __ATTR(osdname, S_IRUGO, osdname_show, NULL),
123 __ATTR(systemid, S_IRUGO, systemid_show, NULL),
124 __ATTR_NULL,
125};
126
100static struct class osd_uld_class = { 127static struct class osd_uld_class = {
101 .owner = THIS_MODULE, 128 .owner = THIS_MODULE,
102 .name = "scsi_osd", 129 .name = "scsi_osd",
130 .dev_attrs = osd_uld_attrs,
103}; 131};
104 132
105/* 133/*