diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-12-02 19:07:01 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-02-19 15:13:51 -0500 |
commit | 81c757bc696284f39f07766f0c2ca67af64ce9bd (patch) | |
tree | a01a13219199520c7a992f90d54cc83513a5cdb0 /drivers/scsi/libsas/sas_internal.h | |
parent | 0b3e09da1350397f3f8b6fd839ab455b0b587451 (diff) |
[SCSI] libsas: execute transport link resets with libata-eh via host workqueue
Link resets leave ata affiliations intact, so arrange for libsas to make
an effort to avoid dropping the device due to a slow-to-recover link.
Towards this end carry out reset in the host workqueue so that it can
check for ata devices and kick the reset request to libata. Hard
resets, in contrast, bypass libata since they are meant for associating
an ata device with another initiator in the domain (tears down
affiliations).
Need to add a new transport_sas_phy_reset() since the current
sas_phy_reset() is a utility function to libsas lldds. They are not
prepared for it to loop back into eh.
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.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h index 9ba65e0c6f91..ae9698d9d857 100644 --- a/drivers/scsi/libsas/sas_internal.h +++ b/drivers/scsi/libsas/sas_internal.h | |||
@@ -85,6 +85,7 @@ int sas_smp_phy_control(struct domain_device *dev, int phy_id, | |||
85 | int sas_smp_get_phy_events(struct sas_phy *phy); | 85 | int sas_smp_get_phy_events(struct sas_phy *phy); |
86 | 86 | ||
87 | struct domain_device *sas_find_dev_by_rphy(struct sas_rphy *rphy); | 87 | struct domain_device *sas_find_dev_by_rphy(struct sas_rphy *rphy); |
88 | struct domain_device *sas_ex_to_ata(struct domain_device *ex_dev, int phy_id); | ||
88 | 89 | ||
89 | void sas_hae_reset(struct work_struct *work); | 90 | void sas_hae_reset(struct work_struct *work); |
90 | 91 | ||