aha/drivers/scsi/libsas
Darrick J. Wong 6d4dcd4dae [SCSI] libsas: Reset timer on taskless scsi_cmnds in sas_scsi_timed_out
Every so often, a scsi_cmnd will time out, and the libsas timeout handler
will discover that the scsi_cmnd does not have a sas_task attached to it.
This can happen in two cases: (1) the scsi_cmnd actually made it through
libsas to the HBA and is now going through scsi_done, or (2) the
scsi_cmnd has been held up (host lock, slab alloc, etc) and libsas has
not yet attached a sas_task.  In both cases, it is safe to ask SCSI for
more time to process the command via EH_RESET_TIMER; we cannot blindly
return EH_HANDLED because if (2) happens, we could end up calling
scsi_done while another CPU is heading towards sas_queuecommand, which
causes slab corruption when sas_task_done updates the freed scsi_cmnd.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2007-01-13 16:13:38 -06:00
..
Kconfig [SCSI] aic94xx: new driver 2006-08-29 09:52:29 -05:00
Makefile [SCSI] aic94xx: new driver 2006-08-29 09:52:29 -05:00
sas_discover.c [SCSI] libsas: Clean up rphys/port dev list after a discovery error. 2007-01-13 14:23:36 -06:00
sas_dump.c [SCSI] aic94xx: new driver 2006-08-29 09:52:29 -05:00
sas_dump.h [SCSI] aic94xx: new driver 2006-08-29 09:52:29 -05:00
sas_event.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
sas_expander.c [SCSI] libsas: Clean up rphys/port dev list after a discovery error on an expander 2007-01-13 14:24:25 -06:00
sas_init.c [SCSI] libsas: Add a sysfs knob to enable/disable a phy 2007-01-13 16:13:00 -06:00
sas_internal.h WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
sas_phy.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
sas_port.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
sas_scsi_host.c [SCSI] libsas: Reset timer on taskless scsi_cmnds in sas_scsi_timed_out 2007-01-13 16:13:38 -06:00