diff options
Diffstat (limited to 'drivers/scsi/u14-34f.c')
-rw-r--r-- | drivers/scsi/u14-34f.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c index dca215411f68..98369ce09283 100644 --- a/drivers/scsi/u14-34f.c +++ b/drivers/scsi/u14-34f.c | |||
@@ -446,8 +446,6 @@ static struct scsi_host_template driver_template = { | |||
446 | .release = u14_34f_release, | 446 | .release = u14_34f_release, |
447 | .queuecommand = u14_34f_queuecommand, | 447 | .queuecommand = u14_34f_queuecommand, |
448 | .eh_abort_handler = u14_34f_eh_abort, | 448 | .eh_abort_handler = u14_34f_eh_abort, |
449 | .eh_device_reset_handler = NULL, | ||
450 | .eh_bus_reset_handler = NULL, | ||
451 | .eh_host_reset_handler = u14_34f_eh_host_reset, | 449 | .eh_host_reset_handler = u14_34f_eh_host_reset, |
452 | .bios_param = u14_34f_bios_param, | 450 | .bios_param = u14_34f_bios_param, |
453 | .slave_configure = u14_34f_slave_configure, | 451 | .slave_configure = u14_34f_slave_configure, |
@@ -1419,16 +1417,20 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1419 | printk("%s: reset, enter, target %d.%d:%d, pid %ld.\n", | 1417 | printk("%s: reset, enter, target %d.%d:%d, pid %ld.\n", |
1420 | BN(j), SCarg->device->channel, SCarg->device->id, SCarg->device->lun, SCarg->pid); | 1418 | BN(j), SCarg->device->channel, SCarg->device->id, SCarg->device->lun, SCarg->pid); |
1421 | 1419 | ||
1420 | spin_lock_irq(sh[j]->host_lock); | ||
1421 | |||
1422 | if (SCarg->host_scribble == NULL) | 1422 | if (SCarg->host_scribble == NULL) |
1423 | printk("%s: reset, pid %ld inactive.\n", BN(j), SCarg->pid); | 1423 | printk("%s: reset, pid %ld inactive.\n", BN(j), SCarg->pid); |
1424 | 1424 | ||
1425 | if (HD(j)->in_reset) { | 1425 | if (HD(j)->in_reset) { |
1426 | printk("%s: reset, exit, already in reset.\n", BN(j)); | 1426 | printk("%s: reset, exit, already in reset.\n", BN(j)); |
1427 | spin_unlock_irq(sh[j]->host_lock); | ||
1427 | return FAILED; | 1428 | return FAILED; |
1428 | } | 1429 | } |
1429 | 1430 | ||
1430 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { | 1431 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { |
1431 | printk("%s: reset, exit, timeout error.\n", BN(j)); | 1432 | printk("%s: reset, exit, timeout error.\n", BN(j)); |
1433 | spin_unlock_irq(sh[j]->host_lock); | ||
1432 | return FAILED; | 1434 | return FAILED; |
1433 | } | 1435 | } |
1434 | 1436 | ||
@@ -1479,6 +1481,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1479 | 1481 | ||
1480 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { | 1482 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { |
1481 | printk("%s: reset, cannot reset, timeout error.\n", BN(j)); | 1483 | printk("%s: reset, cannot reset, timeout error.\n", BN(j)); |
1484 | spin_unlock_irq(sh[j]->host_lock); | ||
1482 | return FAILED; | 1485 | return FAILED; |
1483 | } | 1486 | } |
1484 | 1487 | ||
@@ -1540,6 +1543,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1540 | if (arg_done) printk("%s: reset, exit, pid %ld done.\n", BN(j), SCarg->pid); | 1543 | if (arg_done) printk("%s: reset, exit, pid %ld done.\n", BN(j), SCarg->pid); |
1541 | else printk("%s: reset, exit.\n", BN(j)); | 1544 | else printk("%s: reset, exit.\n", BN(j)); |
1542 | 1545 | ||
1546 | spin_unlock_irq(sh[j]->host_lock); | ||
1543 | return SUCCESS; | 1547 | return SUCCESS; |
1544 | } | 1548 | } |
1545 | 1549 | ||