linux/drivers/scsi/isci
Dan Williams f41a0c441c [SCSI] libsas: fix sas_find_local_phy(), take phy references
In the direct-attached case this routine returns the phy on which this
device was first discovered.  Which is broken if we want to support
wide-targets, as this phy reference can become stale even though the
port is still active.

In the expander-attached case this routine tries to lookup the phy by
scanning the attached sas addresses of the parent expander, and BUG_ONs
if it can't find it.  However since eh and the libsas workqueue run
independently we can still be attempting device recovery via eh after
libsas has recorded the device as detached.  This is even easier to hit
now that eh is blocked while device domain rediscovery takes place, and
that libata is fed more timed out commands increasing the chances that
it will try to recover the ata device.

Arrange for dev->phy to always point to a last known good phy, it may be
stale after the port is torn down, but it will catch up for wide port
reconfigurations, and never be NULL.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2012-02-29 13:01:06 -06:00
..
Makefile isci: merge sata.[ch] into request.c 2011-07-03 04:04:52 -07:00
host.c [SCSI] libsas: introduce sas_drain_work() 2012-02-19 13:48:51 -06:00
host.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
init.c [SCSI] libsas: kill sas_slave_destroy 2012-02-19 13:36:36 -06:00
isci.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
phy.c [SCSI] isci: fix start OOB 2012-01-16 11:47:27 +04:00
phy.h isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
port.c [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state 2012-01-16 11:48:02 +04:00
port.h [SCSI] isci: fix, prevent port from getting stuck in the 'configuring' state 2012-01-16 11:48:02 +04:00
port_config.c [SCSI] isci: fix io failures while wide port links are coming up 2012-01-16 11:46:59 +04:00
probe_roms.c [SCSI] isci: update afe (analog-front-end) recipe for C1 2012-01-16 11:40:29 +04:00
probe_roms.h [SCSI] isci: oem parameter format v1.3 (cable select) 2012-01-16 11:43:04 +04:00
registers.h [SCSI] isci: enable clock gating 2012-02-19 08:09:00 -06:00
remote_device.c [SCSI] isci: enable wide port targets 2012-01-16 11:45:43 +04:00
remote_device.h [SCSI] isci: No need to manage the pending reset bit on pending requests. 2011-10-31 13:20:28 +04:00
remote_node_context.c isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
remote_node_context.h isci: kill 'get/set' macros 2011-07-03 04:04:52 -07:00
remote_node_table.c isci: retire scic_sds_ and scic_ prefixes 2011-07-03 04:04:52 -07:00
remote_node_table.h isci: retire scic_sds_ and scic_ prefixes 2011-07-03 04:04:52 -07:00
request.c [SCSI] libsas: remove ata_port.lock management duties from lldds 2012-02-19 13:50:12 -06:00
request.h [SCSI] isci: Remove redundant isci_request.ttype field. 2011-10-31 13:19:47 +04:00
sas.h [SCSI] isci: fix support for large smp requests 2011-10-02 13:07:17 -05:00
scu_completion_codes.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
scu_event_codes.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
scu_remote_node_context.h isci: move remote_device handling out of the core 2011-07-03 04:00:38 -07:00
scu_task_context.h [SCSI] isci: T10 DIF support 2012-02-19 09:14:24 -06:00
task.c [SCSI] libsas: fix sas_find_local_phy(), take phy references 2012-02-29 13:01:06 -06:00
task.h [SCSI] libsas: remove ata_port.lock management duties from lldds 2012-02-19 13:50:12 -06:00
unsolicited_frame_control.c [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n 2011-08-23 19:50:27 -07:00
unsolicited_frame_control.h [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n 2011-08-23 19:50:27 -07:00