summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas/sas_init.c
diff options
context:
space:
mode:
authorDan Williams2011-11-29 21:08:50 +0100
committerJames Bottomley2012-02-19 21:07:15 +0100
commit3944f50995f947558c35fb16ae0288354756762c (patch)
tree59100b5e0a6aaef675bab78a31838356a3554a95 /drivers/scsi/libsas/sas_init.c
parent[SCSI] libsas: fix timeout vs completion race (diff)
downloadkernel-qcow2-linux-3944f50995f947558c35fb16ae0288354756762c.tar.gz
kernel-qcow2-linux-3944f50995f947558c35fb16ae0288354756762c.tar.xz
kernel-qcow2-linux-3944f50995f947558c35fb16ae0288354756762c.zip
[SCSI] libsas: let libata handle command timeouts
libsas-eh if it successfully aborts an ata command will hide the timeout condition (AC_ERR_TIMEOUT) from libata. The command likely completes with the all-zero task->task_status it started with. Instead, interpret a TMF_RESP_FUNC_COMPLETE as the end of the sas_task but keep the scmd around for libata-eh to handle. Tested-by: Andrzej Jakowski <andrzej.jakowski@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/libsas/sas_init.c')
-rw-r--r--drivers/scsi/libsas/sas_init.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/libsas/sas_init.c b/drivers/scsi/libsas/sas_init.c
index 52cd11d76664..e17fe35af30c 100644
--- a/drivers/scsi/libsas/sas_init.c
+++ b/drivers/scsi/libsas/sas_init.c
@@ -146,6 +146,7 @@ int sas_register_ha(struct sas_ha_struct *sas_ha)
}
INIT_LIST_HEAD(&sas_ha->eh_done_q);
+ INIT_LIST_HEAD(&sas_ha->eh_ata_q);
return 0;