On Thu, 20 Nov 2003, David Brownell wrote: > > Nov 10 19:59:25 shaun kernel: usb-storage: Command WRITE_10 (10 bytes) > > Nov 10 19:59:25 shaun kernel: usb-storage: 2a 00 00 01 4f 6e 00 00 1f 00 > > Nov 10 19:59:25 shaun kernel: usb-storage: Bulk Command S 0x43425355 T 0x131f L > > 63488 F 0 Trg 0 LUN 0 CL 10 > > Nov 10 19:59:25 shaun kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 > > bytes > > Nov 10 19:59:25 shaun kernel: usb-storage: Status code 0; transferred 31/31 > > Nov 10 19:59:25 shaun kernel: usb-storage: -- transfer complete > > Nov 10 19:59:25 shaun kernel: usb-storage: Bulk command transfer result=0 > > Nov 10 19:59:25 shaun kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer > > 63488 bytes, 2 entries > > Nov 10 19:59:25 shaun kernel: usb 1-1: sg_complete, unlink --> -19 > > That is, the sg_complete() code was cleaning up after an error and > it ran into a problem ... like maybe it was trying to unlink an urb > that hadn't yet been submitted. That particular error is nothing to > worry about AFAICT, unless perhaps it's masking something else. > (The diagnostic suggests _something_ unexpected.) > > The other thing that looks potentially interesting is that you managed > to get more than the usual amount of contiguous memory. Normally I'd > expect about fifteen sglist entries. A few things come to mind then: > > - Individual bulk transfers over about four "pages" (16K) will kick in > a mechanism in the EHCI driver that should work fine, but which > doesn't get used much at all. A bug could be lurking there > (qtd_fill at the top of ehci-q.c), but none jumps out at me. > > - If "dvdrecord" is using the SG driver, it's also possible there's > an issue with alignment. In this case, the buffers must all be > aligned on 512 byte boundaries -- and have lengths that are all > multiples of 512 bytes -- if the SG code is doing anything that > verges on zerocopy I/O ("O_DIRECT").
I don't know anything about how dvdrecord works, but alignment could well be the source of the problem. Try applying this patch and see if it changes anything: http://marc.theaimsgroup.com/?l=linux-usb-devel&m=106943859421845&w=2 > Maybe you can play with "dvdrecord" options (or system load) to see > if you can make it deliver smaller sglist entries, to rule out that > first factor. > > > > Nov 10 20:01:05 shaun kernel: usb-storage: command_abort called > > Nov 10 20:01:05 shaun kernel: usb-storage: usb_stor_stop_transport called > > Nov 10 20:01:05 shaun kernel: usb-storage: -- cancelling sg request > > Also it seems like usb-storage decided to abort after ten seconds. > That's short for the usual timeouts (maybe dvdrecord chose it), but > long for recovery from the fault noted above. But it didn't say a > thing about _why_ it chose to cancel ... so it's not clear to me > whether the fault was reported (and if so, what was it?) but mis-handled, > or whether it was instead just never reported. The abort was a simple timeout, and almost certainly the time limit was chosen by dvdrecord. Whatever the problem was, it prevented the usb_sg_wait() routine from returning; hence the timeout. Alan Stern ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel