[SCSI] sas_ata: Implement sas_task_abort for ATA devices
ATA devices need special handling for sas_task_abort. If the ATA command came from SCSI, then we merely need to tell SCSI to abort the scsi_cmnd. However, internal commands require a bit more work--we need to fill the qc with the appropriate error status and complete the command, and eventually post_internal will issue the actual ABORT TASK. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:

committed by
James Bottomley

parent
fe059f122f
commit
3a2755af37
@@ -47,9 +47,6 @@
|
||||
|
||||
/* ---------- SCSI Host glue ---------- */
|
||||
|
||||
#define TO_SAS_TASK(_scsi_cmd) ((void *)(_scsi_cmd)->host_scribble)
|
||||
#define ASSIGN_SAS_TASK(_sc, _t) do { (_sc)->host_scribble = (void *) _t; } while (0)
|
||||
|
||||
static void sas_scsi_task_done(struct sas_task *task)
|
||||
{
|
||||
struct task_status_struct *ts = &task->task_status;
|
||||
@@ -1018,6 +1015,11 @@ void sas_task_abort(struct sas_task *task)
|
||||
return;
|
||||
}
|
||||
|
||||
if (dev_is_sata(task->dev)) {
|
||||
sas_ata_task_abort(task);
|
||||
return;
|
||||
}
|
||||
|
||||
scsi_req_abort_cmd(sc);
|
||||
scsi_schedule_eh(sc->device->host);
|
||||
}
|
||||
|
Reference in New Issue
Block a user