Idle USB disks disconnect with 2.6.32-38 on Sheevaplug
After having installed linux-image-2.6.32-5-kirkwood version 2.6.32-38
on my Sheevaplug, suddenly my connected USB drive would not spin up
correctly when targeted.
My setup is as follows: Sheevaplug ("Machine: Marvell SheevaPlug
Reference Board", the kernel says), root disk on SD card (mmcblk0p1),
data on a Western Digital Passport External HDD, "WD2500BEV", connected
This disk spins down when not in use and it seems to do this all by
itself (i.e. I did not put any specific measures in place, no commands,
scripts, actions or options during or after boot time).
While using 2.6.32-35squeeze2, trying to read the hard drive would stall
for a moment (during which the drive would spin up), then you would get
After 2.6.32-38, no more. The disk spins up, but for some reason, the
kernel notices an "Unhandled error code":
sd 15:0:0:0: [sda] Unhandled error code
sd 15:0:0:0: [sda] Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
sd 15:0:0:0: [sda] CDB: Read(10): 28 00 00 c0 01 3f 00 00 08 00
end_request: I/O error, dev sda, sector 12583231
usb 1-1.2: USB disconnect, address 8
... it disconnects and, immediately afterwards, reconnects the drive.
And, of course, while /dev/sda1 is still a ghost mount, this "new"
device is going to be sdb.
Then, again, after a few minutes and after new spindown, if you try to
read the disk, it disconnects.
I have tried to find the reason for this different behaviour in the
changelogs, but I did not find a smoking gun. I am willing to dig
through kernel code and/or try module options all the way, but I am by
no means a USB guru and don't know where to start. Does anyone here know
what could be going on?
Oh, btw: I tried two WD disk drives, so it could be a specific WD quirk
but it's not a dead drive; I have also tried various "power" settings in
/sys (autosuspend, wakeup) but to no avail. Reinstating
2.6.32-35squeeze2 solves the problem, immediately.