scsi: export 'wwid' to sysfs
authorHannes Reinecke <hare@suse.de>
Tue, 1 Dec 2015 09:16:56 +0000 (10:16 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Dec 2015 21:42:13 +0000 (16:42 -0500)
Use scsi_vpd_lun_id() to export the world-wide unique id (wwid) to
sysfs.  Note that this is the 'best' wwid according to the rules in
scsi_vpd_lun_id(), not every possible wwid presented by the drive.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_sysfs.c

index d015374f8ea923d8fb0bd33b0918e272a8dc0aa0..ef360533790d21a75a16e34c83dee8b3e9d80e4e 100644 (file)
@@ -905,6 +905,22 @@ sdev_show_function(queue_depth, "%d\n");
 static DEVICE_ATTR(queue_depth, S_IRUGO | S_IWUSR, sdev_show_queue_depth,
                   sdev_store_queue_depth);
 
+static ssize_t
+sdev_show_wwid(struct device *dev, struct device_attribute *attr,
+                   char *buf)
+{
+       struct scsi_device *sdev = to_scsi_device(dev);
+       ssize_t count;
+
+       count = scsi_vpd_lun_id(sdev, buf, PAGE_SIZE);
+       if (count > 0) {
+               buf[count] = '\n';
+               count++;
+       }
+       return count;
+}
+static DEVICE_ATTR(wwid, S_IRUGO, sdev_show_wwid, NULL);
+
 #ifdef CONFIG_SCSI_DH
 static ssize_t
 sdev_show_dh_state(struct device *dev, struct device_attribute *attr,
@@ -1028,6 +1044,7 @@ static struct attribute *scsi_sdev_attrs[] = {
        &dev_attr_modalias.attr,
        &dev_attr_queue_depth.attr,
        &dev_attr_queue_type.attr,
+       &dev_attr_wwid.attr,
 #ifdef CONFIG_SCSI_DH
        &dev_attr_dh_state.attr,
 #endif