On Sun, 2006-02-19 at 00:31 +0100, Jürgen E. Fischer wrote: > - just run the bh if the interrupt is from the controller and if so > ensure that it's only called once per interrupt. This is the bit that looks like the actual fix. It basically uses service as a flag to debounce the interrupt. This: > HOSTDATA(shpnt)->in_intr++; > > + if( HOSTDATA(shpnt)->service==0 ) { > + DO_UNLOCK(flags); > + return; > + } Looks a bit wrong. If that ever triggered, you'd exit your task handler with in_intr raised, which would cause a panic the next time is_complete() was called. The driver still seems to have an awful lot of locking confusion between the host lock and its own internal lock (stored in the host structure). I think there are several races and other nasties that could be cleaned up simply by moving to using the host lock everywhere. James - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html