usb_storage

Pete Zaitcev zaitcev at redhat.com
Tue Mar 22 20:10:01 UTC 2005


On Tue, 22 Mar 2005 11:28:57 +0000 Paul <paul at all-the-johnsons.co.uk> wrote:

> (from dmesg)
> usb 3-2: device not accepting address 4, error -110
> usb 3-2: new full speed USB device using ohci_hcd and address 5
> cdrom: open failed.
> usb 3-2: device descriptor read/64, error -110
> cdrom: open failed.

Looks like Peter lost his bet. :-)

> What is error -110?

It is a high level timeout. The device accepted the control transfer,
but did not send a reply over some significant amount of time (a few
seconds). This means that the lower level sequencer in the device
continues to operate.

In Peter's case, -71 means that the device is dead like a brick.
Usually it happens when it's completely crashed or is executing
an internal cold reset after a crash.

The difference is rather academic at this point. The important thing
to understand is that there is no single root case for these failures.
Some folks say, "let's introduce an exclusion, never send control transfer
together with bulk transfer and it will be all right". Bzzzzt, false.
It will help some devices, no doubt, but not all (it also breaks
those devices which REQUIRE several transfers at once). Other people
try adding delays into random places in the enumeration sequence. I tried
refactoring enumeration (helps a lot for my USB flash keys, does not
help my iPod).

The answer is to deploy a variety of measures with strict regression
testing (which means SLOW and GRADUAL deployment): caching of descriptor
strings by kernel so "cat /proc/bus/usb/devices" does not hit devices,
less aggressive polling by HAL and switchover to non-polled, event
driven modes in HAL, refactoring and correct delays of enumeration.

All the while this goes on, developers need bug reports, but they do not
need things like "Any signs of usb_storage being fixed?"

Bug reports MUST include:
 - dmesg or other applicable logs (terminal captures) and use scenarios.
 - /proc/bus/usb/devices
 - last kernel release working (if any)
 - kernel release not working
 - HAL & hotplug releases

Bug reports must never include words "latest" and "current". If I see
them, I ignore the report (Why? Because it takes hot iron to extract
info and then users just feel wronged anyway, so why bother). You can
use word "rawhide", but it's redundant. Include actual output of
uname -a, rpm -q, or cat /proc/version.

Best wishes,
-- Pete




More information about the fedora-devel-list mailing list