diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2011-03-07 16:40:47 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 03:55:30 -0700 |
commit | aa14510295d3d87431c915c0b2bc5dd3af7f2c35 (patch) | |
tree | 7dddb3f3ab2fa9c90d0155f18230bb9e630f6018 /drivers/scsi/isci/request.c | |
parent | 50e7f9b5a9ae4a763b2c27500807cf237faca9b0 (diff) | |
download | op-kernel-dev-aa14510295d3d87431c915c0b2bc5dd3af7f2c35.zip op-kernel-dev-aa14510295d3d87431c915c0b2bc5dd3af7f2c35.tar.gz |
isci: Always set response/status for requests going into the error path.
In the case of I/O requests being failed because of a required device
reset condition, set the response and status to indicate an I/O failure.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/request.c')
-rw-r--r-- | drivers/scsi/isci/request.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c index f19a952..0156431 100644 --- a/drivers/scsi/isci/request.c +++ b/drivers/scsi/isci/request.c @@ -809,11 +809,11 @@ static void isci_task_save_for_upper_layer_completion( /* Normal notification (task_done) */ dev_dbg(&host->pdev->dev, - "%s: Normal - task = %p, response=%d, status=%d\n", + "%s: Normal - task = %p, response=%d (%d), status=%d (%d)\n", __func__, task, - response, - status); + task->task_status.resp, response, + task->task_status.stat, status); /* Add to the completed list. */ list_add(&request->completed_node, &host->requests_to_complete); @@ -827,11 +827,11 @@ static void isci_task_save_for_upper_layer_completion( * already in the abort path. */ dev_warn(&host->pdev->dev, - "%s: Aborted - task = %p, response=%d, status=%d\n", + "%s: Aborted - task = %p, response=%d (%d), status=%d (%d)\n", __func__, task, - response, - status); + task->task_status.resp, response, + task->task_status.stat, status); /* Wake up whatever process was waiting for this * request to complete. @@ -850,11 +850,11 @@ static void isci_task_save_for_upper_layer_completion( case isci_perform_error_io_completion: /* Use sas_task_abort */ dev_warn(&host->pdev->dev, - "%s: Error - task = %p, response=%d, status=%d\n", + "%s: Error - task = %p, response=%d (%d), status=%d (%d)\n", __func__, task, - response, - status); + task->task_status.resp, response, + task->task_status.stat, status); /* Add to the aborted list. */ list_add(&request->completed_node, &host->requests_to_errorback); @@ -862,11 +862,11 @@ static void isci_task_save_for_upper_layer_completion( default: dev_warn(&host->pdev->dev, - "%s: Unknown - task = %p, response=%d, status=%d\n", + "%s: Unknown - task = %p, response=%d (%d), status=%d (%d)\n", __func__, task, - response, - status); + task->task_status.resp, response, + task->task_status.stat, status); /* Add to the error to libsas list. */ list_add(&request->completed_node, @@ -1165,6 +1165,10 @@ void isci_request_io_request_complete( task->task_state_flags |= SAS_TASK_NEED_DEV_RESET; spin_unlock_irqrestore(&task->task_state_lock, task_flags); + /* Fail the I/O. */ + response = SAS_TASK_UNDELIVERED; + status = SAM_STAT_TASK_ABORTED; + complete_to_host = isci_perform_error_io_completion; request->complete_in_target = false; break; |