tree 8d4af0e70f0d8d5c04e2efa1d68fe507dc5d8923
parent b4edcbcafdecc80ef5356ff6452768b1b926ea76
author Christoph Hellwig <[EMAIL PROTECTED]> Sun, 19 Jun 2005 13:42:05 +0200
committer James Bottomley <[EMAIL PROTECTED](none)> Sun, 26 Jun 2005 22:16:24 
-0500

[SCSI] remove scsi_cmnd->state

We never look at it except for the old megaraid driver that abuses it
for sending internal commands.  That usage can be fixed easily because
those internal commands are single-threaded by a mutex and we can easily
use a completion there.

Signed-off-by: James Bottomley <[EMAIL PROTECTED]>

 drivers/scsi/megaraid.c   |   26 ++++----------------------
 drivers/scsi/megaraid.h   |    2 +-
 drivers/scsi/scsi.c       |    7 -------
 drivers/scsi/scsi_error.c |    7 -------
 drivers/scsi/scsi_lib.c   |    5 -----
 include/scsi/scsi_cmnd.h  |    1 -
 6 files changed, 5 insertions(+), 43 deletions(-)

diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -35,6 +35,7 @@
 #include <linux/blkdev.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
+#include <linux/completion.h>
 #include <linux/delay.h>
 #include <linux/proc_fs.h>
 #include <linux/reboot.h>
@@ -4477,8 +4478,6 @@ mega_internal_command(adapter_t *adapter
 
        scb->idx = CMDID_INT_CMDS;
 
-       scmd->state = 0;
-
        /*
         * Get the lock only if the caller has not acquired it already
         */
@@ -4488,15 +4487,7 @@ mega_internal_command(adapter_t *adapter
 
        if( ls == LOCK_INT ) spin_unlock_irqrestore(&adapter->lock, flags);
 
-       /*
-        * Wait till this command finishes. Do not use
-        * wait_event_interruptible(). It causes panic if CTRL-C is hit when
-        * dumping e.g., physical disk information through /proc interface.
-        */
-#if 0
-       wait_event_interruptible(adapter->int_waitq, scmd->state);
-#endif
-       wait_event(adapter->int_waitq, scmd->state);
+       wait_for_completion(&adapter->int_waitq);
 
        rval = scmd->result;
        mc->status = scmd->result;
@@ -4530,16 +4521,7 @@ mega_internal_done(Scsi_Cmnd *scmd)
 
        adapter = (adapter_t *)scmd->device->host->hostdata;
 
-       scmd->state = 1; /* thread waiting for its command to complete */
-
-       /*
-        * See comment in mega_internal_command() routine for
-        * wait_event_interruptible()
-        */
-#if 0
-       wake_up_interruptible(&adapter->int_waitq);
-#endif
-       wake_up(&adapter->int_waitq);
+       complete(&adapter->int_waitq);
 
 }
 
@@ -4861,7 +4843,7 @@ megaraid_probe_one(struct pci_dev *pdev,
        }
                
        init_MUTEX(&adapter->int_mtx);
-       init_waitqueue_head(&adapter->int_waitq);
+       init_completion(&adapter->int_waitq);
 
        adapter->this_id = DEFAULT_INITIATOR_ID;
        adapter->host->this_id = DEFAULT_INITIATOR_ID;
diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h
--- a/drivers/scsi/megaraid.h
+++ b/drivers/scsi/megaraid.h
@@ -891,7 +891,7 @@ typedef struct {
        Scsi_Cmnd               int_scmd;
        struct semaphore        int_mtx;        /* To synchronize the internal
                                                commands */
-       wait_queue_head_t       int_waitq;      /* wait queue for internal
+       struct completion       int_waitq;      /* wait queue for internal
                                                 cmds */
 
        int     has_cluster;    /* cluster support on this HBA */
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -259,7 +259,6 @@ struct scsi_cmnd *scsi_get_command(struc
 
                memset(cmd, 0, sizeof(*cmd));
                cmd->device = dev;
-               cmd->state = SCSI_STATE_UNUSED;
                init_timer(&cmd->eh_timeout);
                INIT_LIST_HEAD(&cmd->list);
                spin_lock_irqsave(&dev->list_lock, flags);
@@ -609,9 +608,6 @@ int scsi_dispatch_cmd(struct scsi_cmnd *
         * We will use a queued command if possible, otherwise we will
         * emulate the queuing and calling of completion function ourselves.
         */
-
-       cmd->state = SCSI_STATE_QUEUED;
-
        atomic_inc(&cmd->device->iorequest_cnt);
 
        /*
@@ -764,7 +760,6 @@ void __scsi_done(struct scsi_cmnd *cmd)
         * Set the serial numbers back to zero
         */
        cmd->serial_number = 0;
-       cmd->state = SCSI_STATE_BHQUEUE;
 
        atomic_inc(&cmd->device->iodone_cnt);
        if (cmd->result)
@@ -885,8 +880,6 @@ void scsi_finish_command(struct scsi_cmn
        SCSI_LOG_MLCOMPLETE(4, printk("Notifying upper driver of completion "
                                "for device %d %x\n", sdev->id, cmd->result));
 
-       cmd->state = SCSI_STATE_FINISHED;
-
        /*
         * We can get here with use_sg=0, causing a panic in the upper level
         */
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -74,10 +74,6 @@ int scsi_eh_scmd_add(struct scsi_cmnd *s
        spin_lock_irqsave(shost->host_lock, flags);
 
        scsi_eh_eflags_set(scmd, eh_flag);
-       /*
-        * FIXME: Can we stop setting owner and state.
-        */
-       scmd->state = SCSI_STATE_FAILED;
        list_add_tail(&scmd->eh_entry, &shost->eh_cmd_q);
        set_bit(SHOST_RECOVERY, &shost->shost_state);
        shost->host_failed++;
@@ -634,8 +630,6 @@ static void scsi_eh_finish_cmd(struct sc
                               struct list_head *done_q)
 {
        scmd->device->host->host_failed--;
-       scmd->state = SCSI_STATE_BHQUEUE;
-
        scsi_eh_eflags_clr_all(scmd);
 
        /*
@@ -1803,7 +1797,6 @@ scsi_reset_provider(struct scsi_device *
        scmd->request = &req;
        memset(&scmd->eh_timeout, 0, sizeof(scmd->eh_timeout));
        scmd->request->rq_status        = RQ_SCSI_BUSY;
-       scmd->state                     = SCSI_STATE_INITIALIZING;
 
        memset(&scmd->cmnd, '\0', sizeof(scmd->cmnd));
     
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -146,11 +146,6 @@ int scsi_queue_insert(struct scsi_cmnd *
                device->device_blocked = device->max_device_blocked;
 
        /*
-        * Register the fact that we own the thing for now.
-        */
-       cmd->state = SCSI_STATE_MLQUEUE;
-
-       /*
         * Decrement the counters, since these commands are no longer
         * active on the host/device.
         */
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -31,7 +31,6 @@ struct scsi_cmnd {
        int     sc_magic;
 
        struct scsi_device *device;
-       unsigned short state;
        struct scsi_request *sc_request;
 
        struct list_head list;  /* scsi_cmnd participates in queue lists */
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to