Просмотр исходного кода

scsi_transport_sas: add function to get SAS endpoint address

For a device known to be SAS connected, this will return the endpoint
address.  This is useful for getting the SAS address of SATA devices.

Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
James Bottomley 10 лет назад
Родитель
Сommit
bcf508c133
2 измененных файлов с 15 добавлено и 0 удалено
  1. 14 0
      drivers/scsi/scsi_transport_sas.c
  2. 1 0
      include/scsi/scsi_transport_sas.h

+ 14 - 0
drivers/scsi/scsi_transport_sas.c

@@ -382,6 +382,20 @@ void sas_remove_host(struct Scsi_Host *shost)
 }
 EXPORT_SYMBOL(sas_remove_host);
 
+/**
+ * sas_get_address - return the SAS address of the device
+ * @sdev: scsi device
+ *
+ * Returns the SAS address of the scsi device
+ */
+u64 sas_get_address(struct scsi_device *sdev)
+{
+	struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
+
+	return rdev->rphy.identify.sas_address;
+}
+EXPORT_SYMBOL(sas_get_address);
+
 /**
  * sas_tlr_supported - checking TLR bit in vpd 0x90
  * @sdev: scsi device struct

+ 1 - 0
include/scsi/scsi_transport_sas.h

@@ -189,6 +189,7 @@ extern int sas_phy_add(struct sas_phy *);
 extern void sas_phy_delete(struct sas_phy *);
 extern int scsi_is_sas_phy(const struct device *);
 
+u64 sas_get_address(struct scsi_device *);
 unsigned int sas_tlr_supported(struct scsi_device *);
 unsigned int sas_is_tlr_enabled(struct scsi_device *);
 void sas_disable_tlr(struct scsi_device *);