From: Hannes Reinecke Subject: [PATCH 1/2] Add 'tpgs' sysfs attribute for SCSI devices We need the 'TGPS' setting of the inquiry data to properly support ALUA. So just add an accessor for the stored inquiry data and display it in sysfs. Signed-off-by: Hannes Reinecke Acked-by: Nicholas A. Bellinger Acked-by: Chandra Seetharaman --- drivers/scsi/scsi_sysfs.c | 10 ++++++++++ include/scsi/scsi_device.h | 5 +++++ 2 files changed, 15 insertions(+) Index: linux-2.6/drivers/scsi/scsi_sysfs.c =================================================================== --- linux-2.6.orig/drivers/scsi/scsi_sysfs.c +++ linux-2.6/drivers/scsi/scsi_sysfs.c @@ -529,6 +529,15 @@ sdev_store_timeout (struct device *dev, static DEVICE_ATTR(timeout, S_IRUGO | S_IWUSR, sdev_show_timeout, sdev_store_timeout); static ssize_t +sdev_show_tpgs (struct device *dev, struct device_attribute *attr, char *buf) +{ + struct scsi_device *sdev; + sdev = to_scsi_device(dev); + return snprintf(buf, 20, "%d\n", scsi_device_tpgs(sdev)); +} +static DEVICE_ATTR(tpgs, S_IRUGO, sdev_show_tpgs, NULL); + +static ssize_t store_rescan_field (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -688,6 +697,7 @@ static struct attribute *scsi_sdev_attrs &dev_attr_vendor.attr, &dev_attr_model.attr, &dev_attr_rev.attr, + &dev_attr_tpgs.attr, &dev_attr_rescan.attr, &dev_attr_delete.attr, &dev_attr_state.attr, Index: linux-2.6/include/scsi/scsi_device.h =================================================================== --- linux-2.6.orig/include/scsi/scsi_device.h +++ linux-2.6/include/scsi/scsi_device.h @@ -470,6 +470,11 @@ static inline int scsi_device_protection return sdev->scsi_level > SCSI_2 && sdev->inquiry[5] & (1<<0); } +static inline int scsi_device_tpgs(struct scsi_device *sdev) +{ + return (sdev->inquiry[5] >> 4) &3; +} + #define MODULE_ALIAS_SCSI_DEVICE(type) \ MODULE_ALIAS("scsi:t-" __stringify(type) "*") #define SCSI_DEVICE_MODALIAS_FMT "scsi:t-0x%02x"