summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas/sas_internal.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-11-17 17:59:54 -0800
committerJames Bottomley <JBottomley@Parallels.com>2012-02-29 12:49:36 -0600
commit36a399473902a57218dc493c5a814708a56b73ab (patch)
treee64a9f136bbacaded9fdd3d3d39c342953d9be34 /drivers/scsi/libsas/sas_internal.h
parent50824d6c5657ce340e3911171865a8d99fdd8eba (diff)
downloadlinux-36a399473902a57218dc493c5a814708a56b73ab.tar.gz
linux-36a399473902a57218dc493c5a814708a56b73ab.tar.bz2
linux-36a399473902a57218dc493c5a814708a56b73ab.zip
[SCSI] libsas: poll for ata device readiness after reset
Use ata_wait_after_reset() to poll for link recovery after a reset. This combined with sas_ha->eh_mutex prevents expander rediscovery from probing phys in an intermediate state. Local discovery does not have a mechanism to filter link status changes during this timeout, so it remains the responsibility of lldds to prevent premature port teardown. Although once all lldd's support ->lldd_ata_check_ready() that could be used as a gate to local port teardown. The signature fis is re-transmitted when the link comes back so we should be revalidating the ata device class, but that is left to a future patch. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/libsas/sas_internal.h')
-rw-r--r--drivers/scsi/libsas/sas_internal.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h
index 9e960b2d535a..a9a3bb94c1bc 100644
--- a/drivers/scsi/libsas/sas_internal.h
+++ b/drivers/scsi/libsas/sas_internal.h
@@ -89,7 +89,8 @@ int sas_smp_get_phy_events(struct sas_phy *phy);
struct domain_device *sas_find_dev_by_rphy(struct sas_rphy *rphy);
struct domain_device *sas_ex_to_ata(struct domain_device *ex_dev, int phy_id);
-
+int sas_get_phy_attached_sas_addr(struct domain_device *dev, int phy_id,
+ u8 *attached_sas_addr);
void sas_hae_reset(struct work_struct *work);
void sas_free_device(struct kref *kref);