Skip to content

Commit

Permalink
isci: don't hold scic_lock over calls to sas_task_abort()
Browse files Browse the repository at this point in the history
In the case where submitted I/Os fail with the status code
SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED, the execute function now waits
until scic_lock is cleared before calling the helper function
"isci_request_signal_device_reset" which sets the flag for the pending
reset condition on the I/O.

Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
  • Loading branch information
Jeff Skirvin authored and Dan Williams committed Jul 3, 2011
1 parent 1077a57 commit c4b9e24
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions drivers/scsi/isci/request.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,33 +449,33 @@ int isci_request_execute(
list_add(&request->dev_node,
&isci_device->reqs_in_process);

if (status ==
SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED) {
/* Signal libsas that we need the SCSI error
* handler thread to work on this I/O and that
* we want a device reset.
*/
isci_request_signal_device_reset(request);

/* Change the status, since we are holding
* the I/O until it is managed by the SCSI
* error handler.
*/
status = SCI_SUCCESS;
}
else
if (status == SCI_SUCCESS) {
/* Save the tag for possible task mgmt later. */
request->io_tag = scic_io_request_get_io_tag(
request->sci_request_handle);


}
} else
dev_warn(&isci_host->pdev->dev,
"%s: failed request start\n",
__func__);

spin_unlock_irqrestore(&isci_host->scic_lock, flags);

if (status ==
SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED) {
/* Signal libsas that we need the SCSI error
* handler thread to work on this I/O and that
* we want a device reset.
*/
isci_request_signal_device_reset(request);

/* Change the status, since we are holding
* the I/O until it is managed by the SCSI
* error handler.
*/
status = SCI_SUCCESS;
}

} else
dev_warn(&isci_host->pdev->dev,
"%s: request_construct failed - status = 0x%x\n",
Expand Down

0 comments on commit c4b9e24

Please sign in to comment.