aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/request.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/isci/request.c')
-rw-r--r--drivers/scsi/isci/request.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index 946caaeb66c6..b519373597a5 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -53,7 +53,6 @@
53 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54 */ 54 */
55 55
56#include <scsi/sas_ata.h>
57#include "isci.h" 56#include "isci.h"
58#include "scic_remote_device.h" 57#include "scic_remote_device.h"
59#include "scic_io_request.h" 58#include "scic_io_request.h"
@@ -452,22 +451,11 @@ int isci_request_execute(
452 task->task_state_flags |= SAS_TASK_NEED_DEV_RESET; 451 task->task_state_flags |= SAS_TASK_NEED_DEV_RESET;
453 spin_unlock_irqrestore(&task->task_state_lock, flags); 452 spin_unlock_irqrestore(&task->task_state_lock, flags);
454 453
455 /* Cause this task to be scheduled in the SCSI error handler 454 /* Cause this task to be scheduled in the SCSI error
456 * thread. 455 * handler thread.
457 */ 456 */
458 if (dev_is_sata(task->dev)) { 457 isci_execpath_callback(isci_host, task,
459 /* Since we are still in the submit path, and since 458 sas_task_abort);
460 * libsas takes the host lock on behalf of SATA
461 * devices before I/O starts, we need to unlock
462 * before we can put the task in the error path.
463 */
464 raw_local_irq_save(flags);
465 spin_unlock(isci_host->shost->host_lock);
466 sas_task_abort(task);
467 spin_lock(isci_host->shost->host_lock);
468 raw_local_irq_restore(flags);
469 } else
470 sas_task_abort(task);
471 459
472 /* Change the status, since we are holding 460 /* Change the status, since we are holding
473 * the I/O until it is managed by the SCSI 461 * the I/O until it is managed by the SCSI