]> err.no Git - linux-2.6/commit
[SCSI] libsas: Don't give scsi_cmnds to the EH if they never made it to the SAS LLDD...
authorDarrick J. Wong <djwong@us.ibm.com>
Thu, 11 Jan 2007 22:14:55 +0000 (14:14 -0800)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Sat, 13 Jan 2007 22:12:39 +0000 (16:12 -0600)
commitb218a0d8e250e0ae8fd4d4e45bd66a588b380752
tree6c60dc11ef8d064404eb2fd6a3b4f37529a2c72f
parentbf451207511d049189ddb0a4eae3acdb086a3c82
[SCSI] libsas: Don't give scsi_cmnds to the EH if they never made it to the SAS LLDD or have already returned

On a system with many SAS targets, it appears possible that a scsi_cmnd
can time out without ever making it to the SAS LLDD or at the same time
that a completion is occurring.  In both of these cases, telling the
LLDD to abort the sas_task makes no sense because the LLDD won't know
about the sas_task; what we really want to do is to increase the timer.
Note that this involves creating another sas_task bit to indicate
whether or not the task has been sent to the LLDD; I could have
implemented this by slightly redefining SAS_TASK_STATE_PENDING, but
this way seems cleaner.

This second version amends the aic94xx portion to set the
TASK_AT_INITIATOR flag for all sas_tasks that were passed to
lldd_execute_task.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/aic94xx/aic94xx_task.c
drivers/scsi/libsas/sas_scsi_host.c
include/scsi/libsas.h