Actually update the fixed up compile failures.
David Howells [Wed, 6 Dec 2006 15:02:26 +0000 (15:02 +0000)]
Signed-Off-By: David Howells <dhowells@redhat.com>

drivers/scsi/aic94xx/aic94xx_scb.c
drivers/scsi/libsas/sas_scsi_host.c
drivers/scsi/scsi_tgt_lib.c
include/scsi/libsas.h

index 14d5d8c..75ed6b0 100644 (file)
@@ -414,9 +414,10 @@ void asd_invalidate_edb(struct asd_ascb *ascb, int edb_id)
 }
 
 /* hard reset a phy later */
-static void do_phy_reset_later(void *data)
+static void do_phy_reset_later(struct work_struct *work)
 {
-       struct sas_phy *sas_phy = data;
+       struct sas_phy *sas_phy =
+               container_of(work, struct sas_phy, reset_work);
        int error;
 
        ASD_DPRINTK("%s: About to hard reset phy %d\n", __FUNCTION__,
@@ -430,7 +431,7 @@ static void do_phy_reset_later(void *data)
 
 static void phy_reset_later(struct sas_phy *sas_phy, struct Scsi_Host *shost)
 {
-       INIT_WORK(&sas_phy->reset_work, do_phy_reset_later, sas_phy);
+       INIT_WORK(&sas_phy->reset_work, do_phy_reset_later);
        queue_work(shost->work_q, &sas_phy->reset_work);
 }
 
@@ -442,7 +443,7 @@ static void task_kill_later(struct asd_ascb *ascb)
        struct Scsi_Host *shost = sas_ha->core.shost;
        struct sas_task *task = ascb->uldd_task;
 
-       INIT_WORK(&task->abort_work, (void (*)(void *))sas_task_abort, task);
+       INIT_WORK(&task->abort_work, sas_task_abort);
        queue_work(shost->work_q, &task->abort_work);
 }
 
index e064aac..22672d5 100644 (file)
@@ -846,8 +846,10 @@ static int do_sas_task_abort(struct sas_task *task)
        return -EAGAIN;
 }
 
-void sas_task_abort(struct sas_task *task)
+void sas_task_abort(struct work_struct *work)
 {
+       struct sas_task *task =
+               container_of(work, struct sas_task, abort_work);
        int i;
 
        for (i = 0; i < 5; i++)
index 39da5cd..386dbae 100644 (file)
@@ -185,10 +185,11 @@ static void cmd_hashlist_del(struct scsi_cmnd *cmd)
        spin_unlock_irqrestore(&qdata->cmd_hash_lock, flags);
 }
 
-static void scsi_tgt_cmd_destroy(void *data)
+static void scsi_tgt_cmd_destroy(struct work_struct *work)
 {
-       struct scsi_cmnd *cmd = data;
-       struct scsi_tgt_cmd *tcmd = cmd->request->end_io_data;
+       struct scsi_tgt_cmd *tcmd =
+               container_of(work, struct scsi_tgt_cmd, work);
+       struct scsi_cmnd *cmd = tcmd->rq->special;
 
        dprintk("cmd %p %d %lu\n", cmd, cmd->sc_data_direction,
                rq_data_dir(cmd->request));
@@ -214,6 +215,7 @@ static void init_scsi_tgt_cmd(struct request *rq, struct scsi_tgt_cmd *tcmd,
        struct list_head *head;
 
        tcmd->tag = tag;
+       INIT_WORK(&tcmd->work, scsi_tgt_cmd_destroy);
        spin_lock_irqsave(&qdata->cmd_hash_lock, flags);
        head = &qdata->cmd_hash[cmd_hashfn(tag)];
        list_add(&tcmd->hash_list, head);
@@ -303,7 +305,7 @@ void scsi_tgt_free_queue(struct Scsi_Host *shost)
                cmd = tcmd->rq->special;
 
                shost->hostt->eh_abort_handler(cmd);
-               scsi_tgt_cmd_destroy(cmd);
+               scsi_tgt_cmd_destroy(&tcmd->work);
        }
 }
 EXPORT_SYMBOL_GPL(scsi_tgt_free_queue);
@@ -347,7 +349,6 @@ static void scsi_tgt_cmd_done(struct scsi_cmnd *cmd)
        dprintk("cmd %p %lu\n", cmd, rq_data_dir(cmd->request));
 
        scsi_tgt_uspace_send_status(cmd, tcmd->tag);
-       INIT_WORK(&tcmd->work, scsi_tgt_cmd_destroy, cmd);
        queue_work(scsi_tgtd, &tcmd->work);
 }
 
@@ -549,13 +550,15 @@ static int scsi_tgt_copy_sense(struct scsi_cmnd *cmd, unsigned long uaddr,
 
 static int scsi_tgt_abort_cmd(struct Scsi_Host *shost, struct scsi_cmnd *cmd)
 {
+       struct scsi_tgt_cmd *tcmd;
        int err;
 
        err = shost->hostt->eh_abort_handler(cmd);
        if (err)
                eprintk("fail to abort %p\n", cmd);
 
-       scsi_tgt_cmd_destroy(cmd);
+       tcmd = cmd->request->end_io_data;
+       scsi_tgt_cmd_destroy(&tcmd->work);
        return err;
 }
 
index b09bdd8..9233ed5 100644 (file)
@@ -646,6 +646,6 @@ void sas_unregister_dev(struct domain_device *);
 
 void sas_init_dev(struct domain_device *);
 
-void sas_task_abort(struct sas_task *task);
+void sas_task_abort(struct work_struct *);
 
 #endif /* _SASLIB_H_ */