Willem Riede wrote: > On 2003.05.19 09:01, Douglas Gilbert wrote: > >>Debug: sleeping function called from illegal context at include/linux/rwsem.h:43 >>Call Trace: >> [] __might_sleep+0x5c/0x5e >> [] do_page_fault+0x78/0x4a8 >> [] idescsi_transfer_pc+0xfb/0x130 [ide_scsi] > > > A page fault while in idescsi_transfer_pc?! > What memory would be accessed that is allowed to be paged out? > > By the way, I have never seen that problem. When ide-scsi fails for me, it > is in the same way Randy reports. While my change improves mean-time-to-hang > significantly on my machine, it obviously doesn't for Randy. Back to the > drawing board :-( Willem, When I tried today, my test went for a while then failed with a timeout and an abort lockup (which you reported as fixed but I don't have that fix): hdb: irq timeout: status=0xd0 { Busy } ide-scsi: abort called for 330982 hdb: ATAPI reset complete <> Attached is a patch to idescsi_queue(). Won't fix the problems we are seeing now. Changes: - returns 0 on error (not 1 which means "busy") - yield DID_NO_CONNECT for channel, id or lun invalid (this should fix the "responding to multiple lun" problem often seen in lk 2.4 - memset the whole of pc and rq to zero Doug Gilbert