Skip to contentSkip to conversation

osduld: Add osdname & systemid sysfs at scsi_osd class

PATCH In review Boaz Harrosh 1 participant 3 messages Oct 24, 2012 – Nov 5, 2012 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 osduld: 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)

---
 drivers/scsi/osd/osd_uld.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)
drivers/scsi/osd/osd_uld.c +28 -0
index d4ed9eb..4375417 100644
@@ -97,9 +97,37 @@ struct osd_dev_handle {
 
 static DEFINE_IDA(osd_minor_ida);
 
+/*
+ * scsi sysfs attribute operations
+ */
+static ssize_t osdname_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+	return sprintf(buf, "%s\n", ould->odi.osdname);
+}
+
+static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+
+	memcpy(buf, ould->odi.systemid, ould->odi.systemid_len);
+	return ould->odi.systemid_len;
+}
+
+static struct device_attribute osd_uld_attrs[] = {
+	__ATTR(osdname, S_IRUGO, osdname_show, NULL),
+	__ATTR(systemid, S_IRUGO, systemid_show, NULL),
+	__ATTR_NULL,
+};
+
 static struct class osd_uld_class = {
 	.owner		= THIS_MODULE,
 	.name		= "scsi_osd",
+	.dev_attrs	= osd_uld_attrs,
 };
 
 /*
Signature · 1 line
1.7.6.5
#1 lore raw
Quoted 14 lines · Boaz Harrosh

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.

Quoted 6 lines

(Today osd apps open each device in the system and send a
attributes query for these, in order to access the user requested device)

James hi.

This is for the next (v3.8) merge window. Please submit to scsi-misc tree.

It is actually a very old well tested, but forgotten patch.

Thanks
Boaz

Quoted 47 lines
---
 drivers/scsi/osd/osd_uld.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)
drivers/scsi/osd/osd_uld.c +28 -0
index d4ed9eb..4375417 100644
@@ -97,9 +97,37 @@ struct osd_dev_handle {
 
 static DEFINE_IDA(osd_minor_ida);
 
+/*
+ * scsi sysfs attribute operations
+ */
+static ssize_t osdname_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+	return sprintf(buf, "%s\n", ould->odi.osdname);
+}
+
+static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+
+	memcpy(buf, ould->odi.systemid, ould->odi.systemid_len);
+	return ould->odi.systemid_len;
+}
+
+static struct device_attribute osd_uld_attrs[] = {
+	__ATTR(osdname, S_IRUGO, osdname_show, NULL),
+	__ATTR(systemid, S_IRUGO, systemid_show, NULL),
+	__ATTR_NULL,
+};
+
 static struct class osd_uld_class = {
 	.owner		= THIS_MODULE,
 	.name		= "scsi_osd",
+	.dev_attrs	= osd_uld_attrs,
 };
 
 /*
#2 lore raw
Quoted 19 lines · Boaz Harrosh
Quoted 18 lines · Boaz Harrosh

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)

Quoted 7 lines
Quoted 2 lines

James hi.

This is for the next (v3.8) merge window. Please submit to scsi-misc tree.

James ping!

Do you want that I push it through my osd tree?

Thanks
Boaz

Quoted 59 lines

It is actually a very old well tested, but forgotten patch.

Thanks
Boaz

Quoted 37 lines
---
 drivers/scsi/osd/osd_uld.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)
drivers/scsi/osd/osd_uld.c +24 -0
index d4ed9eb..4375417 100644
@@ -97,9 +97,37 @@ struct osd_dev_handle {
 
 static DEFINE_IDA(osd_minor_ida);
 
+/*
+ * scsi sysfs attribute operations
+ */
+static ssize_t osdname_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+	return sprintf(buf, "%s\n", ould->odi.osdname);
+}
+
+static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,
+			    char *buf)
+{
+	struct osd_uld_device *ould = container_of(dev, struct osd_uld_device,
+						   class_dev);
+
+	memcpy(buf, ould->odi.systemid, ould->odi.systemid_len);
+	return ould->odi.systemid_len;
+}
+
+static struct device_attribute osd_uld_attrs[] = {
+	__ATTR(osdname, S_IRUGO, osdname_show, NULL),
+	__ATTR(systemid, S_IRUGO, systemid_show, NULL),

drivers/scsi/osd/osd_uld.c struct osd_dev_handle { · line 133

Quoted 10 lines
drivers/scsi/osd/osd_uld.c +4 -0
+	__ATTR_NULL,
+};
+
 static struct class osd_uld_class = {
 	.owner		= THIS_MODULE,
 	.name		= "scsi_osd",
+	.dev_attrs	= osd_uld_attrs,
 };
 
 /*

_______________________________________________
osd-dev mailing list
[email protected]
http://mailman.open-osd.org/mailman/listinfo/osd-dev