aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas/sas_scsi_host.c
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@us.ibm.com>2007-01-30 04:18:58 -0500
committerJames Bottomley <jejb@mulgrave.localdomain>2007-07-18 12:16:03 -0400
commit3a2755af37b317d47fdc3dd15178adaf5d47263e (patch)
tree1d4bca0573db7d4a19a4feac5a14855764a3f3fb /drivers/scsi/libsas/sas_scsi_host.c
parentfe059f122fb9d1bd3a629d4215a4dde11df66f98 (diff)
[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>
Diffstat (limited to 'drivers/scsi/libsas/sas_scsi_host.c')
-rw-r--r--drivers/scsi/libsas/sas_scsi_host.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index ba5c91b81312..7663841eb4cf 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -47,9 +47,6 @@
47 47
48/* ---------- SCSI Host glue ---------- */ 48/* ---------- SCSI Host glue ---------- */
49 49
50#define TO_SAS_TASK(_scsi_cmd) ((void *)(_scsi_cmd)->host_scribble)
51#define ASSIGN_SAS_TASK(_sc, _t) do { (_sc)->host_scribble = (void *) _t; } while (0)
52
53static void sas_scsi_task_done(struct sas_task *task) 50static void sas_scsi_task_done(struct sas_task *task)
54{ 51{
55 struct task_status_struct *ts = &task->task_status; 52 struct task_status_struct *ts = &task->task_status;
@@ -1018,6 +1015,11 @@ void sas_task_abort(struct sas_task *task)
1018 return; 1015 return;
1019 } 1016 }
1020 1017
1018 if (dev_is_sata(task->dev)) {
1019 sas_ata_task_abort(task);
1020 return;
1021 }
1022
1021 scsi_req_abort_cmd(sc); 1023 scsi_req_abort_cmd(sc);
1022 scsi_schedule_eh(sc->device->host); 1024 scsi_schedule_eh(sc->device->host);
1023} 1025}