[SCSI] allow sleeping in ->eh_host_reset_handler()
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
@@ -1417,16 +1417,20 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) {
|
||||
printk("%s: reset, enter, target %d.%d:%d, pid %ld.\n",
|
||||
BN(j), SCarg->device->channel, SCarg->device->id, SCarg->device->lun, SCarg->pid);
|
||||
|
||||
spin_lock_irq(sh[j]->host_lock);
|
||||
|
||||
if (SCarg->host_scribble == NULL)
|
||||
printk("%s: reset, pid %ld inactive.\n", BN(j), SCarg->pid);
|
||||
|
||||
if (HD(j)->in_reset) {
|
||||
printk("%s: reset, exit, already in reset.\n", BN(j));
|
||||
spin_unlock_irq(sh[j]->host_lock);
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (wait_on_busy(sh[j]->io_port, MAXLOOP)) {
|
||||
printk("%s: reset, exit, timeout error.\n", BN(j));
|
||||
spin_unlock_irq(sh[j]->host_lock);
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
@@ -1477,6 +1481,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) {
|
||||
|
||||
if (wait_on_busy(sh[j]->io_port, MAXLOOP)) {
|
||||
printk("%s: reset, cannot reset, timeout error.\n", BN(j));
|
||||
spin_unlock_irq(sh[j]->host_lock);
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
@@ -1538,6 +1543,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) {
|
||||
if (arg_done) printk("%s: reset, exit, pid %ld done.\n", BN(j), SCarg->pid);
|
||||
else printk("%s: reset, exit.\n", BN(j));
|
||||
|
||||
spin_unlock_irq(sh[j]->host_lock);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user