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/aic7xxx | |
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/aic7xxx')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 4 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 31db0edc7cf9..53b7b2c15f86 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -1591,11 +1591,11 @@ ahd_linux_bus_reset(Scsi_Cmnd *cmd) | |||
1591 | printf("%s: Bus reset called for cmd %p\n", | 1591 | printf("%s: Bus reset called for cmd %p\n", |
1592 | ahd_name(ahd), cmd); | 1592 | ahd_name(ahd), cmd); |
1593 | #endif | 1593 | #endif |
1594 | ahd_midlayer_entrypoint_lock(ahd, &s); | 1594 | ahd_lock(ahd, &s); |
1595 | found = ahd_reset_channel(ahd, cmd->device->channel + 'A', | 1595 | found = ahd_reset_channel(ahd, cmd->device->channel + 'A', |
1596 | /*initiate reset*/TRUE); | 1596 | /*initiate reset*/TRUE); |
1597 | ahd_linux_run_complete_queue(ahd); | 1597 | ahd_linux_run_complete_queue(ahd); |
1598 | ahd_midlayer_entrypoint_unlock(ahd, &s); | 1598 | ahd_unlock(ahd, &s); |
1599 | 1599 | ||
1600 | if (bootverbose) | 1600 | if (bootverbose) |
1601 | printf("%s: SCSI bus reset delivered. " | 1601 | printf("%s: SCSI bus reset delivered. " |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index 89f073a3b766..b89094db14c1 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c | |||
@@ -829,10 +829,14 @@ ahc_linux_bus_reset(struct scsi_cmnd *cmd) | |||
829 | { | 829 | { |
830 | struct ahc_softc *ahc; | 830 | struct ahc_softc *ahc; |
831 | int found; | 831 | int found; |
832 | unsigned long flags; | ||
832 | 833 | ||
833 | ahc = *(struct ahc_softc **)cmd->device->host->hostdata; | 834 | ahc = *(struct ahc_softc **)cmd->device->host->hostdata; |
835 | |||
836 | ahc_lock(ahc, &flags); | ||
834 | found = ahc_reset_channel(ahc, cmd->device->channel + 'A', | 837 | found = ahc_reset_channel(ahc, cmd->device->channel + 'A', |
835 | /*initiate reset*/TRUE); | 838 | /*initiate reset*/TRUE); |
839 | ahc_unlock(ahc, &flags); | ||
836 | 840 | ||
837 | if (bootverbose) | 841 | if (bootverbose) |
838 | printf("%s: SCSI bus reset delivered. " | 842 | printf("%s: SCSI bus reset delivered. " |