]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/libsas/sas_scsi_host.c
Driver core: change sysdev classes to use dynamic kobject names
[linux-2.6-omap-h63xx.git] / drivers / scsi / libsas / sas_scsi_host.c
index dbc2a912114f1880b0172055d703b0c9553bfbd4..a3fdc57e2673a75d877a98b4d882eb723760ad94 100644 (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;
@@ -216,8 +213,12 @@ int sas_queuecommand(struct scsi_cmnd *cmd,
                struct sas_task *task;
 
                if (dev_is_sata(dev)) {
+                       unsigned long flags;
+
+                       spin_lock_irqsave(dev->sata_dev.ap->lock, flags);
                        res = ata_sas_queuecmd(cmd, scsi_done,
                                               dev->sata_dev.ap);
+                       spin_unlock_irqrestore(dev->sata_dev.ap->lock, flags);
                        goto out;
                }
 
@@ -463,7 +464,7 @@ int sas_eh_bus_reset_handler(struct scsi_cmnd *cmd)
        res = sas_phy_reset(phy, 1);
        if (res)
                SAS_DPRINTK("Bus reset of %s failed 0x%x\n",
-                           phy->dev.kobj.k_name,
+                           kobject_name(&phy->dev.kobj),
                            res);
        if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE)
                return SUCCESS;
@@ -1014,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);
 }