summaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-12-07 08:24:42 +0100
committerJames Bottomley <JBottomley@Parallels.com>2012-02-19 21:04:52 +0100
commita3a142524aa4b1539a64a55087bf12ffa4b1f94e (patch)
tree2440c6438979cf410ca9231ab77d5115a140eca5 /include/scsi
parent[SCSI] libsas: close error handling vs sas_ata_task_done() race (diff)
downloadlinux-a3a142524aa4b1539a64a55087bf12ffa4b1f94e.tar.xz
linux-a3a142524aa4b1539a64a55087bf12ffa4b1f94e.zip
[SCSI] libsas: prevent double completion of scmds from eh
We invoke task->task_done() to free the task in the eh case, but at this point we are prepared for scsi_eh_flush_done_q() to finish off the scmd. Introduce sas_end_task() to capture the final response status from the lldd and free the task. Also take the opportunity to kill this warning. drivers/scsi/libsas/sas_scsi_host.c: In function ‘sas_end_task’: drivers/scsi/libsas/sas_scsi_host.c:102:3: warning: case value ‘2’ not in enumerated type ‘enum exec_status’ [-Wswitch] Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/libsas.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 10eb2ea74431..071041b290d6 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -452,7 +452,10 @@ enum service_response {
};
enum exec_status {
- /* The SAM_STAT_.. codes fit in the lower 6 bits */
+ /* The SAM_STAT_.. codes fit in the lower 6 bits, alias some of
+ * them here to silence 'case value not in enumerated type' warnings
+ */
+ __SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,
SAS_DEV_NO_RESPONSE = 0x80,
SAS_DATA_UNDERRUN,