[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:
Darrick J. Wong
2007-01-30 01:18:58 -08:00
committed by James Bottomley
parent fe059f122f
commit 3a2755af37
4 changed files with 54 additions and 6 deletions

View File

@@ -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);
}