Hi!
I was doing some stress testing on the packet writing patch for the
2.4.19-pre2 kernel. I was unpacking a kernel tarball to a cdrw disk on
a freecom usb cdrw device. After a while, some problem occurred which
made usb-storage decide to perform a bus reset. Unfortunately it
needed to allocate memory first and the memory allocator decided it
needed to do IO, which led to a deadlock.
I see that some changes went into 2.5.4-pre2 which I think would fix
this problem. (Addition of a "mem_flags" parameter to various memory
allocating functions in the usb subsystem.)
Are there any plans to include this fix in the 2.4.x kernel tree? (I
didn't see it in the latest batch from Greg KH.)
For reference, here is a stack trace of the stuck scsi_eh_1 kernel
thread. There are some false entries, but you can see that
uhci_submit_urb calls kmem_cache_alloc which eventually decides it
needs to flush dirty data to disk and deadlocks.
Trace; c017f5d6 <__get_request_wait+86/d0>
Trace; c017fc5b <__make_request+47b/630>
Trace; c48c05cf <.data.end+3950/????>
Trace; c017fec6