isci: don't hold scic_lock over calls to sas_task_abort()
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>
This commit is contained in:
parent
1077a57410
commit
c4b9e24c4b
@ -449,6 +449,18 @@ int isci_request_execute(
|
|||||||
list_add(&request->dev_node,
|
list_add(&request->dev_node,
|
||||||
&isci_device->reqs_in_process);
|
&isci_device->reqs_in_process);
|
||||||
|
|
||||||
|
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 ==
|
if (status ==
|
||||||
SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED) {
|
SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED) {
|
||||||
/* Signal libsas that we need the SCSI error
|
/* Signal libsas that we need the SCSI error
|
||||||
@ -463,18 +475,6 @@ int isci_request_execute(
|
|||||||
*/
|
*/
|
||||||
status = SCI_SUCCESS;
|
status = SCI_SUCCESS;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
/* 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);
|
|
||||||
|
|
||||||
} else
|
} else
|
||||||
dev_warn(&isci_host->pdev->dev,
|
dev_warn(&isci_host->pdev->dev,
|
||||||
|
Loading…
Reference in New Issue
Block a user