[SCSI] libsas: prevent double completion of scmds from eh
authorDan Williams <dan.j.williams@intel.com>
Wed, 7 Dec 2011 07:24:42 +0000 (23:24 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 19 Feb 2012 20:04:52 +0000 (14:04 -0600)
commita3a142524aa4b1539a64a55087bf12ffa4b1f94e
tree2440c6438979cf410ca9231ab77d5115a140eca5
parent3dff5721e4f67e6231dfc419d30aaa7563bfffd4
[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>
drivers/scsi/libsas/sas_scsi_host.c
include/scsi/libsas.h