diff options
Diffstat (limited to 'drivers/scsi/aic7xxx_old.c')
-rw-r--r-- | drivers/scsi/aic7xxx_old.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c index 9e9d0c40187e..fac091e7093c 100644 --- a/drivers/scsi/aic7xxx_old.c +++ b/drivers/scsi/aic7xxx_old.c | |||
@@ -10358,7 +10358,7 @@ aic7xxx_queue(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *)) | |||
10358 | * Returns an enumerated type that indicates the status of the operation. | 10358 | * Returns an enumerated type that indicates the status of the operation. |
10359 | *-F*************************************************************************/ | 10359 | *-F*************************************************************************/ |
10360 | static int | 10360 | static int |
10361 | aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | 10361 | __aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) |
10362 | { | 10362 | { |
10363 | struct aic7xxx_host *p; | 10363 | struct aic7xxx_host *p; |
10364 | struct aic7xxx_scb *scb; | 10364 | struct aic7xxx_scb *scb; |
@@ -10551,6 +10551,18 @@ aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | |||
10551 | return SUCCESS; | 10551 | return SUCCESS; |
10552 | } | 10552 | } |
10553 | 10553 | ||
10554 | static int | ||
10555 | aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | ||
10556 | { | ||
10557 | int rc; | ||
10558 | |||
10559 | spin_lock_irq(cmd->device->host->host_lock); | ||
10560 | rc = __aic7xxx_bus_device_reset(cmd); | ||
10561 | spin_unlock_irq(cmd->device->host->host_lock); | ||
10562 | |||
10563 | return rc; | ||
10564 | } | ||
10565 | |||
10554 | 10566 | ||
10555 | /*+F************************************************************************* | 10567 | /*+F************************************************************************* |
10556 | * Function: | 10568 | * Function: |
@@ -10585,7 +10597,7 @@ aic7xxx_panic_abort(struct aic7xxx_host *p, Scsi_Cmnd *cmd) | |||
10585 | * Abort the current SCSI command(s). | 10597 | * Abort the current SCSI command(s). |
10586 | *-F*************************************************************************/ | 10598 | *-F*************************************************************************/ |
10587 | static int | 10599 | static int |
10588 | aic7xxx_abort(Scsi_Cmnd *cmd) | 10600 | __aic7xxx_abort(Scsi_Cmnd *cmd) |
10589 | { | 10601 | { |
10590 | struct aic7xxx_scb *scb = NULL; | 10602 | struct aic7xxx_scb *scb = NULL; |
10591 | struct aic7xxx_host *p; | 10603 | struct aic7xxx_host *p; |
@@ -10802,6 +10814,19 @@ success: | |||
10802 | return SUCCESS; | 10814 | return SUCCESS; |
10803 | } | 10815 | } |
10804 | 10816 | ||
10817 | static int | ||
10818 | aic7xxx_abort(Scsi_Cmnd *cmd) | ||
10819 | { | ||
10820 | int rc; | ||
10821 | |||
10822 | spin_lock_irq(cmd->device->host->host_lock); | ||
10823 | rc = __aic7xxx_abort(cmd); | ||
10824 | spin_unlock_irq(cmd->device->host->host_lock); | ||
10825 | |||
10826 | return rc; | ||
10827 | } | ||
10828 | |||
10829 | |||
10805 | /*+F************************************************************************* | 10830 | /*+F************************************************************************* |
10806 | * Function: | 10831 | * Function: |
10807 | * aic7xxx_reset | 10832 | * aic7xxx_reset |
@@ -10820,6 +10845,8 @@ aic7xxx_reset(Scsi_Cmnd *cmd) | |||
10820 | struct aic_dev_data *aic_dev; | 10845 | struct aic_dev_data *aic_dev; |
10821 | 10846 | ||
10822 | p = (struct aic7xxx_host *) cmd->device->host->hostdata; | 10847 | p = (struct aic7xxx_host *) cmd->device->host->hostdata; |
10848 | spin_lock_irq(p->host->host_lock); | ||
10849 | |||
10823 | aic_dev = AIC_DEV(cmd); | 10850 | aic_dev = AIC_DEV(cmd); |
10824 | if(aic7xxx_position(cmd) < p->scb_data->numscbs) | 10851 | if(aic7xxx_position(cmd) < p->scb_data->numscbs) |
10825 | { | 10852 | { |
@@ -10859,6 +10886,7 @@ aic7xxx_reset(Scsi_Cmnd *cmd) | |||
10859 | * longer have it. | 10886 | * longer have it. |
10860 | */ | 10887 | */ |
10861 | unpause_sequencer(p, FALSE); | 10888 | unpause_sequencer(p, FALSE); |
10889 | spin_unlock_irq(p->host->host_lock); | ||
10862 | return SUCCESS; | 10890 | return SUCCESS; |
10863 | } | 10891 | } |
10864 | 10892 | ||
@@ -10882,7 +10910,6 @@ aic7xxx_reset(Scsi_Cmnd *cmd) | |||
10882 | unpause_sequencer(p, FALSE); | 10910 | unpause_sequencer(p, FALSE); |
10883 | spin_unlock_irq(p->host->host_lock); | 10911 | spin_unlock_irq(p->host->host_lock); |
10884 | ssleep(2); | 10912 | ssleep(2); |
10885 | spin_lock_irq(p->host->host_lock); | ||
10886 | return SUCCESS; | 10913 | return SUCCESS; |
10887 | } | 10914 | } |
10888 | 10915 | ||