aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Skirvin <jeffrey.d.skirvin@intel.com>2011-09-28 21:47:46 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-10-02 14:21:24 -0400
commitcd06b9bae18c64658d5a86526fb19cfe0ea8814f (patch)
treeef755cca6da001bf2972acb7f649bb6bf995e922
parentb50102d3e9a43a75379407c2080f696f61cb286b (diff)
[SCSI] isci: SATA/STP I/O is only returned in the normal path to libsas
Since libsas has it's own means to escalate SATA/STP device error handling depending on task status codes, return all SATA/STP I/O on the normal path. i.e. skip sas_task_abort() and let sas_ata_task_done() disposition the qc. Longer term we want to audit non-essential calls to sas_task_abort(). Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
-rw-r--r--drivers/scsi/isci/task.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/scsi/isci/task.h b/drivers/scsi/isci/task.h
index 4a7fa90287ef..15b18d158993 100644
--- a/drivers/scsi/isci/task.h
+++ b/drivers/scsi/isci/task.h
@@ -286,6 +286,25 @@ isci_task_set_completion_status(
286 task->task_status.resp = response; 286 task->task_status.resp = response;
287 task->task_status.stat = status; 287 task->task_status.stat = status;
288 288
289 switch (task->task_proto) {
290
291 case SAS_PROTOCOL_SATA:
292 case SAS_PROTOCOL_STP:
293 case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
294
295 if (task_notification_selection
296 == isci_perform_error_io_completion) {
297 /* SATA/STP I/O has it's own means of scheduling device
298 * error handling on the normal path.
299 */
300 task_notification_selection
301 = isci_perform_normal_io_completion;
302 }
303 break;
304 default:
305 break;
306 }
307
289 switch (task_notification_selection) { 308 switch (task_notification_selection) {
290 309
291 case isci_perform_error_io_completion: 310 case isci_perform_error_io_completion: