aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-11-17 20:59:54 -0500
committerJames Bottomley <JBottomley@Parallels.com>2012-02-29 13:49:36 -0500
commit36a399473902a57218dc493c5a814708a56b73ab (patch)
treee64a9f136bbacaded9fdd3d3d39c342953d9be34 /include
parent50824d6c5657ce340e3911171865a8d99fdd8eba (diff)
[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 'include')
-rw-r--r--include/scsi/libsas.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 18704a2e4f07..2079b18467a1 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -615,6 +615,7 @@ struct sas_domain_function_template {
615 int (*lldd_clear_task_set)(struct domain_device *, u8 *lun); 615 int (*lldd_clear_task_set)(struct domain_device *, u8 *lun);
616 int (*lldd_I_T_nexus_reset)(struct domain_device *); 616 int (*lldd_I_T_nexus_reset)(struct domain_device *);
617 int (*lldd_ata_soft_reset)(struct domain_device *); 617 int (*lldd_ata_soft_reset)(struct domain_device *);
618 int (*lldd_ata_check_ready)(struct domain_device *);
618 void (*lldd_ata_set_dmamode)(struct domain_device *); 619 void (*lldd_ata_set_dmamode)(struct domain_device *);
619 int (*lldd_lu_reset)(struct domain_device *, u8 *lun); 620 int (*lldd_lu_reset)(struct domain_device *, u8 *lun);
620 int (*lldd_query_task)(struct sas_task *); 621 int (*lldd_query_task)(struct sas_task *);