SCSI deadlock

Jakub Jelinek (jj@sunsite.ms.mff.cuni.cz)
Thu, 19 Mar 1998 11:03:56 +0100 (MET)


Hi!

We definitely need to get rid of all cli()/sti() stuff in at least block
devices. This is a need to do before 2.2 is out, otherwise it won't ever be
SMP stable. Today I found this while trying to make a 90G filesystem on my
SparcServer 1000e:

CPU0: CPU2:
scsi_old_done->rw_intr->requeue_sd_request ...
do_sd_request() add_request()
{ {
spin_lock_irqsave(&io_req_lock,f); cli();
... ...
scsi_allocate_device() do_sd_request();
{ {
cli(); spin_lock_irqsave(&io_req_lock,f);
... ...
} }
... ...
} }

Classical deadlock, what to say more. And it of course freezes the machine
hard, no IRQs, nothing.
Anyone has enough time to look at all cli/sti/restore_flags in at least
generic scsi + generic block device layer? I won't be able to fix this in
the next two weeks at least.

Cheers,
Jakub
___________________________________________________________________
Jakub Jelinek | jj@sunsite.mff.cuni.cz | http://sunsite.mff.cuni.cz
Administrator of SunSITE Czech Republic, MFF, Charles University
___________________________________________________________________
Ultralinux - first 64bit OS to take full power of the UltraSparc
Linux version 2.1.89 on a sparc64 machine (498.80 BogoMips).
___________________________________________________________________

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu