linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] don't call ips_eh_reset in ips_queue to avoid deadlock
@ 2006-02-22  8:11 Mike Christie
  0 siblings, 0 replies; 2+ messages in thread
From: Mike Christie @ 2006-02-22  8:11 UTC (permalink / raw)
  To: linux-scsi, jack_hammer

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>

--- linux-2.6.16-rc4/drivers/scsi/ips.c	2006-02-17 16:23:45.000000000 -0600
+++ linux-2.6.16-rc4.work/drivers/scsi/ips.c	2006-02-22 01:51:39.000000000 -0600
@@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (
 				return (0);
 			}
 			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->scsi_done(SC);
 			return (0);



^ permalink raw reply	[flat|nested] 2+ messages in thread
* RE: [PATCH] don't call ips_eh_reset in ips_queue to avoid deadlock
@ 2006-02-22 14:41 Hammer, Jack
  0 siblings, 0 replies; 2+ messages in thread
From: Hammer, Jack @ 2006-02-22 14:41 UTC (permalink / raw)
  To: Mike Christie, linux-scsi


The only place this can occur ( an ioctl reset ) is from the ServeRAID
bootable CD, which is a 2.4 kernel, which explains why this has not been
a problem and would be impossible for you to test, even if you had
hardware.

It appears to be a technically correct patch. I concur - please apply
this patch.

Thanks Mike.

Jack Hammer
Adaptec



-----Original Message-----
From: Mike Christie [mailto:michaelc@cs.wisc.edu] 
Sent: Wednesday, February 22, 2006 3:12 AM
To: linux-scsi@vger.kernel.org; Hammer, Jack
Subject: [PATCH] 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>

--- linux-2.6.16-rc4/drivers/scsi/ips.c	2006-02-17 16:23:45.000000000
-0600
+++ linux-2.6.16-rc4.work/drivers/scsi/ips.c	2006-02-22
01:51:39.000000000 -0600
@@ -1146,7 +1146,7 @@ ips_queue(Scsi_Cmnd * SC, void (*done) (
 				return (0);
 			}
 			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->scsi_done(SC);
 			return (0);




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-02-22 14:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-22  8:11 [PATCH] don't call ips_eh_reset in ips_queue to avoid deadlock Mike Christie
  -- strict thread matches above, loose matches on Subject: below --
2006-02-22 14:41 Hammer, Jack

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).