summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Skirvin <jeffrey.d.skirvin@intel.com>2011-06-20 14:09:11 -0700
committerDan Williams <dan.j.williams@intel.com>2011-07-03 04:04:50 -0700
commitf53a3a32c1e799e27f63bff7b42b4c36749e5e6f (patch)
tree0861e3c856227ad8d910b764ca9d6a91d1887240
parentcde76fbf1f27551a08860227765ae8d5026ac0d9 (diff)
downloadlinux-stable-f53a3a32c1e799e27f63bff7b42b4c36749e5e6f.tar.gz
linux-stable-f53a3a32c1e799e27f63bff7b42b4c36749e5e6f.tar.bz2
linux-stable-f53a3a32c1e799e27f63bff7b42b4c36749e5e6f.zip
isci: Requests that do not start must be set to "complete"
Requests that fail at start because of a reset pending condition must be set to complete in order to allow for later cleanup. Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r--drivers/scsi/isci/request.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index 3a891d32c331..5879e5f308e6 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -3678,18 +3678,19 @@ int isci_request_execute(
* Update it's status and add it to the list in the
* remote device object.
*/
- isci_request_change_state(request, started);
list_add(&request->dev_node, &isci_device->reqs_in_process);
if (status == SCI_SUCCESS) {
/* Save the tag for possible task mgmt later. */
request->io_tag = request->sci.io_tag;
+ isci_request_change_state(request, started);
} else {
/* The request did not really start in the
* hardware, so clear the request handle
* here so no terminations will be done.
*/
request->terminated = true;
+ isci_request_change_state(request, completed);
}
spin_unlock_irqrestore(&isci_host->scic_lock, flags);