diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/megaraid.c | 26 | ||||
-rw-r--r-- | drivers/scsi/megaraid.h | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi.c | 7 | ||||
-rw-r--r-- | drivers/scsi/scsi_error.c | 7 | ||||
-rw-r--r-- | drivers/scsi/scsi_lib.c | 5 |
5 files changed, 5 insertions, 42 deletions
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 6ee88c59953e..6fe884a2d00d 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/blkdev.h> | 35 | #include <linux/blkdev.h> |
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include <asm/io.h> | 37 | #include <asm/io.h> |
38 | #include <linux/completion.h> | ||
38 | #include <linux/delay.h> | 39 | #include <linux/delay.h> |
39 | #include <linux/proc_fs.h> | 40 | #include <linux/proc_fs.h> |
40 | #include <linux/reboot.h> | 41 | #include <linux/reboot.h> |
@@ -4477,8 +4478,6 @@ mega_internal_command(adapter_t *adapter, lockscope_t ls, megacmd_t *mc, | |||
4477 | 4478 | ||
4478 | scb->idx = CMDID_INT_CMDS; | 4479 | scb->idx = CMDID_INT_CMDS; |
4479 | 4480 | ||
4480 | scmd->state = 0; | ||
4481 | |||
4482 | /* | 4481 | /* |
4483 | * Get the lock only if the caller has not acquired it already | 4482 | * Get the lock only if the caller has not acquired it already |
4484 | */ | 4483 | */ |
@@ -4488,15 +4487,7 @@ mega_internal_command(adapter_t *adapter, lockscope_t ls, megacmd_t *mc, | |||
4488 | 4487 | ||
4489 | if( ls == LOCK_INT ) spin_unlock_irqrestore(&adapter->lock, flags); | 4488 | if( ls == LOCK_INT ) spin_unlock_irqrestore(&adapter->lock, flags); |
4490 | 4489 | ||
4491 | /* | 4490 | wait_for_completion(&adapter->int_waitq); |
4492 | * Wait till this command finishes. Do not use | ||
4493 | * wait_event_interruptible(). It causes panic if CTRL-C is hit when | ||
4494 | * dumping e.g., physical disk information through /proc interface. | ||
4495 | */ | ||
4496 | #if 0 | ||
4497 | wait_event_interruptible(adapter->int_waitq, scmd->state); | ||
4498 | #endif | ||
4499 | wait_event(adapter->int_waitq, scmd->state); | ||
4500 | 4491 | ||
4501 | rval = scmd->result; | 4492 | rval = scmd->result; |
4502 | mc->status = scmd->result; | 4493 | mc->status = scmd->result; |
@@ -4530,16 +4521,7 @@ mega_internal_done(Scsi_Cmnd *scmd) | |||
4530 | 4521 | ||
4531 | adapter = (adapter_t *)scmd->device->host->hostdata; | 4522 | adapter = (adapter_t *)scmd->device->host->hostdata; |
4532 | 4523 | ||
4533 | scmd->state = 1; /* thread waiting for its command to complete */ | 4524 | complete(&adapter->int_waitq); |
4534 | |||
4535 | /* | ||
4536 | * See comment in mega_internal_command() routine for | ||
4537 | * wait_event_interruptible() | ||
4538 | */ | ||
4539 | #if 0 | ||
4540 | wake_up_interruptible(&adapter->int_waitq); | ||
4541 | #endif | ||
4542 | wake_up(&adapter->int_waitq); | ||
4543 | 4525 | ||
4544 | } | 4526 | } |
4545 | 4527 | ||
@@ -4861,7 +4843,7 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
4861 | } | 4843 | } |
4862 | 4844 | ||
4863 | init_MUTEX(&adapter->int_mtx); | 4845 | init_MUTEX(&adapter->int_mtx); |
4864 | init_waitqueue_head(&adapter->int_waitq); | 4846 | init_completion(&adapter->int_waitq); |
4865 | 4847 | ||
4866 | adapter->this_id = DEFAULT_INITIATOR_ID; | 4848 | adapter->this_id = DEFAULT_INITIATOR_ID; |
4867 | adapter->host->this_id = DEFAULT_INITIATOR_ID; | 4849 | adapter->host->this_id = DEFAULT_INITIATOR_ID; |
diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h index e25c4de9edd9..4facf557cd19 100644 --- a/drivers/scsi/megaraid.h +++ b/drivers/scsi/megaraid.h | |||
@@ -891,7 +891,7 @@ typedef struct { | |||
891 | Scsi_Cmnd int_scmd; | 891 | Scsi_Cmnd int_scmd; |
892 | struct semaphore int_mtx; /* To synchronize the internal | 892 | struct semaphore int_mtx; /* To synchronize the internal |
893 | commands */ | 893 | commands */ |
894 | wait_queue_head_t int_waitq; /* wait queue for internal | 894 | struct completion int_waitq; /* wait queue for internal |
895 | cmds */ | 895 | cmds */ |
896 | 896 | ||
897 | int has_cluster; /* cluster support on this HBA */ | 897 | int has_cluster; /* cluster support on this HBA */ |
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index b25e5e531eb9..1afe1e592af4 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -259,7 +259,6 @@ struct scsi_cmnd *scsi_get_command(struct scsi_device *dev, int gfp_mask) | |||
259 | 259 | ||
260 | memset(cmd, 0, sizeof(*cmd)); | 260 | memset(cmd, 0, sizeof(*cmd)); |
261 | cmd->device = dev; | 261 | cmd->device = dev; |
262 | cmd->state = SCSI_STATE_UNUSED; | ||
263 | init_timer(&cmd->eh_timeout); | 262 | init_timer(&cmd->eh_timeout); |
264 | INIT_LIST_HEAD(&cmd->list); | 263 | INIT_LIST_HEAD(&cmd->list); |
265 | spin_lock_irqsave(&dev->list_lock, flags); | 264 | spin_lock_irqsave(&dev->list_lock, flags); |
@@ -609,9 +608,6 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) | |||
609 | * We will use a queued command if possible, otherwise we will | 608 | * We will use a queued command if possible, otherwise we will |
610 | * emulate the queuing and calling of completion function ourselves. | 609 | * emulate the queuing and calling of completion function ourselves. |
611 | */ | 610 | */ |
612 | |||
613 | cmd->state = SCSI_STATE_QUEUED; | ||
614 | |||
615 | atomic_inc(&cmd->device->iorequest_cnt); | 611 | atomic_inc(&cmd->device->iorequest_cnt); |
616 | 612 | ||
617 | /* | 613 | /* |
@@ -764,7 +760,6 @@ void __scsi_done(struct scsi_cmnd *cmd) | |||
764 | * Set the serial numbers back to zero | 760 | * Set the serial numbers back to zero |
765 | */ | 761 | */ |
766 | cmd->serial_number = 0; | 762 | cmd->serial_number = 0; |
767 | cmd->state = SCSI_STATE_BHQUEUE; | ||
768 | 763 | ||
769 | atomic_inc(&cmd->device->iodone_cnt); | 764 | atomic_inc(&cmd->device->iodone_cnt); |
770 | if (cmd->result) | 765 | if (cmd->result) |
@@ -885,8 +880,6 @@ void scsi_finish_command(struct scsi_cmnd *cmd) | |||
885 | SCSI_LOG_MLCOMPLETE(4, printk("Notifying upper driver of completion " | 880 | SCSI_LOG_MLCOMPLETE(4, printk("Notifying upper driver of completion " |
886 | "for device %d %x\n", sdev->id, cmd->result)); | 881 | "for device %d %x\n", sdev->id, cmd->result)); |
887 | 882 | ||
888 | cmd->state = SCSI_STATE_FINISHED; | ||
889 | |||
890 | /* | 883 | /* |
891 | * We can get here with use_sg=0, causing a panic in the upper level | 884 | * We can get here with use_sg=0, causing a panic in the upper level |
892 | */ | 885 | */ |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 0df8615732c1..4f312da021f1 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -74,10 +74,6 @@ int scsi_eh_scmd_add(struct scsi_cmnd *scmd, int eh_flag) | |||
74 | spin_lock_irqsave(shost->host_lock, flags); | 74 | spin_lock_irqsave(shost->host_lock, flags); |
75 | 75 | ||
76 | scsi_eh_eflags_set(scmd, eh_flag); | 76 | scsi_eh_eflags_set(scmd, eh_flag); |
77 | /* | ||
78 | * FIXME: Can we stop setting owner and state. | ||
79 | */ | ||
80 | scmd->state = SCSI_STATE_FAILED; | ||
81 | list_add_tail(&scmd->eh_entry, &shost->eh_cmd_q); | 77 | list_add_tail(&scmd->eh_entry, &shost->eh_cmd_q); |
82 | set_bit(SHOST_RECOVERY, &shost->shost_state); | 78 | set_bit(SHOST_RECOVERY, &shost->shost_state); |
83 | shost->host_failed++; | 79 | shost->host_failed++; |
@@ -634,8 +630,6 @@ static void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, | |||
634 | struct list_head *done_q) | 630 | struct list_head *done_q) |
635 | { | 631 | { |
636 | scmd->device->host->host_failed--; | 632 | scmd->device->host->host_failed--; |
637 | scmd->state = SCSI_STATE_BHQUEUE; | ||
638 | |||
639 | scsi_eh_eflags_clr_all(scmd); | 633 | scsi_eh_eflags_clr_all(scmd); |
640 | 634 | ||
641 | /* | 635 | /* |
@@ -1803,7 +1797,6 @@ scsi_reset_provider(struct scsi_device *dev, int flag) | |||
1803 | scmd->request = &req; | 1797 | scmd->request = &req; |
1804 | memset(&scmd->eh_timeout, 0, sizeof(scmd->eh_timeout)); | 1798 | memset(&scmd->eh_timeout, 0, sizeof(scmd->eh_timeout)); |
1805 | scmd->request->rq_status = RQ_SCSI_BUSY; | 1799 | scmd->request->rq_status = RQ_SCSI_BUSY; |
1806 | scmd->state = SCSI_STATE_INITIALIZING; | ||
1807 | 1800 | ||
1808 | memset(&scmd->cmnd, '\0', sizeof(scmd->cmnd)); | 1801 | memset(&scmd->cmnd, '\0', sizeof(scmd->cmnd)); |
1809 | 1802 | ||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 912cea081119..58dcb0534a26 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -146,11 +146,6 @@ int scsi_queue_insert(struct scsi_cmnd *cmd, int reason) | |||
146 | device->device_blocked = device->max_device_blocked; | 146 | device->device_blocked = device->max_device_blocked; |
147 | 147 | ||
148 | /* | 148 | /* |
149 | * Register the fact that we own the thing for now. | ||
150 | */ | ||
151 | cmd->state = SCSI_STATE_MLQUEUE; | ||
152 | |||
153 | /* | ||
154 | * Decrement the counters, since these commands are no longer | 149 | * Decrement the counters, since these commands are no longer |
155 | * active on the host/device. | 150 | * active on the host/device. |
156 | */ | 151 | */ |