Commit 3b91d09c authored by James Bottomley's avatar James Bottomley

scsi_transport_sas: add is_sas_attached() function

Adds a function designed to be callable any time (regardless of
whether the transport attributes are configured or not) which returns
true if the device is attached over a SAS transport.  The design of
this function is that transport specific functions can be embedded
within a

if (is_sas_attached(sdev)) {

which would be compiled out (and thus eliminate the symbols) if SAS is
not configured.
Reviewed-by: default avatarHannes Reinecke <>
Signed-off-by: default avatarJames Bottomley <>
parent ed94724b
......@@ -340,6 +340,22 @@ static int do_sas_phy_delete(struct device *dev, void *data)
return 0;
* is_sas_attached - check if device is SAS attached
* @sdev: scsi device to check
* returns true if the device is SAS attached
int is_sas_attached(struct scsi_device *sdev)
struct Scsi_Host *shost = sdev->host;
return shost->transportt-> ==
* sas_remove_children - tear down a devices SAS data structures
* @dev: device belonging to the sas object
......@@ -10,6 +10,15 @@ struct scsi_transport_template;
struct sas_rphy;
struct request;
static inline int is_sas_attached(struct scsi_device *sdev)
return 0;
extern int is_sas_attached(struct scsi_device *sdev);
static inline int sas_protocol_ata(enum sas_protocol proto)
return ((proto & SAS_PROTOCOL_SATA) ||
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment