diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2006-02-22 03:11:59 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-02-28 00:32:39 -0500 |
commit | ba3af0aff042caa1f41b5f7164cab37c717b8811 (patch) | |
tree | 62f0b592202522a5a92fc870a5c44ee854b1f90f /drivers | |
parent | 6d73c8514da241c6b1b8d710a6294786604d7142 (diff) |
[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: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: Hammer, Jack <Jack_Hammer@adaptec.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/ips.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 86c546164da9..481708d527ae 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c | |||
@@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *)) | |||
1146 | return (0); | 1146 | return (0); |
1147 | } | 1147 | } |
1148 | ha->ioctl_reset = 1; /* This reset request is from an IOCTL */ | 1148 | ha->ioctl_reset = 1; /* This reset request is from an IOCTL */ |
1149 | ips_eh_reset(SC); | 1149 | __ips_eh_reset(SC); |
1150 | SC->result = DID_OK << 16; | 1150 | SC->result = DID_OK << 16; |
1151 | SC->scsi_done(SC); | 1151 | SC->scsi_done(SC); |
1152 | return (0); | 1152 | return (0); |