target: export protocol identifier
authorMike Christie <mchristi@redhat.com>
Fri, 13 Jan 2017 10:47:48 +0000 (04:47 -0600)
committerNicholas Bellinger <nab@linux-iscsi.org>
Sun, 19 Feb 2017 05:36:50 +0000 (21:36 -0800)
I think the transport statistics device file was supposed
to show scsiTransportProtocolType. It instead shows the
fabric name which is normally closer to the driver name.

I was thinking I cannot change from fabric name to protocol
type name incase people are expecting the driver name, so
this patch adds another file proto_id that exports the SCSI
protocol identifier ID.

Signed-off-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_stat.c

index 1a39033..be380e4 100644 (file)
@@ -795,16 +795,34 @@ static ssize_t target_stat_transport_dev_name_show(struct config_item *item,
        return ret;
 }
 
+static ssize_t target_stat_transport_proto_id_show(struct config_item *item,
+               char *page)
+{
+       struct se_lun *lun = to_transport_stat(item);
+       struct se_device *dev;
+       struct se_portal_group *tpg = lun->lun_tpg;
+       ssize_t ret = -ENODEV;
+
+       rcu_read_lock();
+       dev = rcu_dereference(lun->lun_se_dev);
+       if (dev)
+               ret = snprintf(page, PAGE_SIZE, "%u\n", tpg->proto_id);
+       rcu_read_unlock();
+       return ret;
+}
+
 CONFIGFS_ATTR_RO(target_stat_transport_, inst);
 CONFIGFS_ATTR_RO(target_stat_transport_, device);
 CONFIGFS_ATTR_RO(target_stat_transport_, indx);
 CONFIGFS_ATTR_RO(target_stat_transport_, dev_name);
+CONFIGFS_ATTR_RO(target_stat_transport_, proto_id);
 
 static struct configfs_attribute *target_stat_scsi_transport_attrs[] = {
        &target_stat_transport_attr_inst,
        &target_stat_transport_attr_device,
        &target_stat_transport_attr_indx,
        &target_stat_transport_attr_dev_name,
+       &target_stat_transport_attr_proto_id,
        NULL,
 };