[SCSI] libsas: let libata recover links that fail to transmit initial sig-fis
authorDan Williams <dan.j.williams@intel.com>
Fri, 13 Jan 2012 01:57:35 +0000 (17:57 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 29 Feb 2012 21:33:02 +0000 (15:33 -0600)
commit354cf82980e2449e71fdaa3c6f170357ebd65467
tree8300579ebb51e19e503437d5c1f5ce2fd5186f18
parenta692b0eec5efae382dfa800e8b4b083f172921a7
[SCSI] libsas: let libata recover links that fail to transmit initial sig-fis

libsas fails to discover all sata devices in the domain.  If a device fails
negotiation and does not transmit a signature fis the link needs recovery.
libata already understands how to manage slow to come up links, so treat these
conditions as ata device attach events for the purposes of creating an
ata_port.  This allows libata to manage retrying link bring up.

Rediscovery is modified to be careful about checking changes in dev_type.  It
looks like libsas leaks old devices if the sas address changes, but that's a
fix for another patch.

Acked-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libsas/sas_ata.c
drivers/scsi/libsas/sas_discover.c
drivers/scsi/libsas/sas_expander.c
drivers/scsi/libsas/sas_internal.h
include/scsi/sas.h
include/scsi/sas_ata.h