diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-05-28 07:56:31 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-06-17 13:05:10 -0400 |
commit | 68b3aa7c9805aee9005a8ca53c5e99177961fbb9 (patch) | |
tree | 3f28891df0b3a1ecdfe6a98547d8f3c43b74e905 /drivers/scsi/in2000.c | |
parent | 94d0e7b805961c44e4dc486ffc21075084bb7175 (diff) |
[SCSI] allow sleeping in ->eh_bus_reset_handler()
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/in2000.c')
-rw-r--r-- | drivers/scsi/in2000.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/scsi/in2000.c b/drivers/scsi/in2000.c index fbb29f7971d7..aed7e64865fa 100644 --- a/drivers/scsi/in2000.c +++ b/drivers/scsi/in2000.c | |||
@@ -1644,14 +1644,16 @@ static int in2000_bus_reset(Scsi_Cmnd * cmd) | |||
1644 | struct Scsi_Host *instance; | 1644 | struct Scsi_Host *instance; |
1645 | struct IN2000_hostdata *hostdata; | 1645 | struct IN2000_hostdata *hostdata; |
1646 | int x; | 1646 | int x; |
1647 | unsigned long flags; | ||
1647 | 1648 | ||
1648 | instance = cmd->device->host; | 1649 | instance = cmd->device->host; |
1649 | hostdata = (struct IN2000_hostdata *) instance->hostdata; | 1650 | hostdata = (struct IN2000_hostdata *) instance->hostdata; |
1650 | 1651 | ||
1651 | printk(KERN_WARNING "scsi%d: Reset. ", instance->host_no); | 1652 | printk(KERN_WARNING "scsi%d: Reset. ", instance->host_no); |
1652 | 1653 | ||
1653 | /* do scsi-reset here */ | 1654 | spin_lock_irqsave(instance->host_lock, flags); |
1654 | 1655 | ||
1656 | /* do scsi-reset here */ | ||
1655 | reset_hardware(instance, RESET_CARD_AND_BUS); | 1657 | reset_hardware(instance, RESET_CARD_AND_BUS); |
1656 | for (x = 0; x < 8; x++) { | 1658 | for (x = 0; x < 8; x++) { |
1657 | hostdata->busy[x] = 0; | 1659 | hostdata->busy[x] = 0; |
@@ -1668,6 +1670,8 @@ static int in2000_bus_reset(Scsi_Cmnd * cmd) | |||
1668 | hostdata->outgoing_len = 0; | 1670 | hostdata->outgoing_len = 0; |
1669 | 1671 | ||
1670 | cmd->result = DID_RESET << 16; | 1672 | cmd->result = DID_RESET << 16; |
1673 | |||
1674 | spin_unlock_irqrestore(instance->host_lock, flags); | ||
1671 | return SUCCESS; | 1675 | return SUCCESS; |
1672 | } | 1676 | } |
1673 | 1677 | ||