Commit ba3af0af authored by Mike Christie's avatar Mike Christie Committed by James Bottomley

[SCSI] don't call ips_eh_reset in ips_queue to avoid deadlock

When the locking was changed in the eh code ips_eh_reset was changed
so that it was a wraper around __ips_eh_reset and all ips_eh_reset
does is grab the host lock and then calls __ips_eh_reset.

In the queuecommand, ips_queue is called with the host_lock held so if
it calls ips_eh_reset we will have a problem. This patch just has
ips_queue call __ips_eh_reset.

Patch is only compile tested. I do not have the HW.
Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Acked-by: default avatarHammer, Jack <Jack_Hammer@adaptec.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 6d73c851
...@@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *)) ...@@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *))
return (0); return (0);
} }
ha->ioctl_reset = 1; /* This reset request is from an IOCTL */ ha->ioctl_reset = 1; /* This reset request is from an IOCTL */
ips_eh_reset(SC); __ips_eh_reset(SC);
SC->result = DID_OK << 16; SC->result = DID_OK << 16;
SC->scsi_done(SC); SC->scsi_done(SC);
return (0); return (0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment