USB ehci_hcd problem

Eric Battersby gyre-Ja3L+HSX0kI at public.gmane.org
Fri Aug 7 13:36:09 UTC 2009


On Thu, 6 Aug 2009, Tyler Aviss wrote:

> If you could find the appropriate ID for your device, you can create
> an entry in /etc/udev/rules.d that launches a script whenever it's
> plugged.

Thanks for the direction.
I needed a generic solution so I added this to  '40-redhat.rules':
   KERNEL=="sd?", PROGRAM="/usr/local/bin/udev_usb_rule %k %c", NAME="%c"
and it seems to work at the right time.


> On Thu, Aug 6, 2009 at 3:11 AM, Eric Battersby<gyre-Ja3L+HSX0kI at public.gmane.org> wrote:
>> How do I automate setting
>> '/sys/block/sdb/device/max_sectors' immediately after connecting
>> the device?
>>
>> Why?
>>
>> My USB 3.5" drives occasionally drop their connection
>> and leave the ext3 partition corrupted. This happens infrequently, thus
>> making it hard to track down.
>> It happens more typically during large file transfers.
>>
>> It appears to be a long time known bug, that is elusive and hard to
>> track down.
>>
>>  http://bugzilla.kernel.org/show_bug.cgi?id=11159#c68
>>  https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/61235/+activity
>>
>> Here are my errors, from /var/log/messages: (with minor editing '..')
>> ## after connecting USB drive (ok):
>> ..00:45..sd 7:0:0:0: [sdb] Assuming drive cache: write through
>> ..00:45.. sdb: sdb1 sdb2 sdb3 sdb4
>> ..00:45..sd 7:0:0:0: [sdb] Attached SCSI disk
>> ..00:45..sd 7:0:0:0: Attached scsi generic sg2 type 0
>> ## after mounting USB ext3 partition (ok):
>> ..01:32..kjournald starting.  Commit interval 5 seconds
>> ..01:32..EXT3 FS on sdb1, internal journal
>> ..01:32..EXT3-fs: mounted filesystem with ordered data mode.
>> ## then after running a 'du' command, I got these errors
>> ## and the drive disconnected
>> ..02:40..EXT3-fs error (device sdb1): htree_dirblock_to_tree: bad entry in
>> directory #13812933: inode out of bounds - offset=0, inode=32784893,
>> rec_len=4096, name_len=0
>> ..02:41..EXT3-fs error (device sdb1): htree_dirblock_to_tree: bad entry in
>> directory #13566095: rec_len is smaller than minimal - offset=0, inode=0,
>> rec_len=0, name_len=0
>> ..04:22..usb 6-1: reset high speed USB device using ehci_hcd and address 5
>> ..04:37..usb 6-1: device descriptor read/64, error -110
>> ..04:37..usb 6-1: device descriptor read/64, error -71
>> ..04:37..usb 6-1: reset high speed USB device using ehci_hcd and address 5
>>  ..
>> ..04:39..usb 6-1: USB disconnect, address 5
>> ..04:39..sd 7:0:0:0: [sdb] Result: hostbyte=DID_NO_CONNECT
>> driverbyte=DRIVER_OK,SUGGEST_OK
>> ..04:39..end_request: I/O error, dev sdb, sector 22947615
>>
>>
>> Workaround fixes:
>>
>>  (1) modprobe -r ehci-hcd
>>      - this is useless as it reverts to USB 1
>>
>>  (2) a number of suggested kernel parameter changes
>>      and then a kernel recompile
>>      - not certain if these will work, so not my first choice
>>
>>  (3) echo 64 >/sys/block/sdb/device/max_sectors
>>      - 'sdb' is an example
>>      - previous value was '240' in my case
>>      - this appears to have fixed the problem as I have been monitoring
>>        /var/log/messages
>>
>>  (4) mount using 'sync' option
>>      - tried this but the slow down is too much
>>      - 'cp' slowed down about 10x with a 1GB file,
>>        while 'dd bs=100M' was only a little slower
>>        - it appears that 'cp' is leveraging its efficiency on
>>          implicit system buffering which 'sync' removes
>>
>> Now, how do I automate setting
>> '/sys/block/sdb/device/max_sectors' immediately after connecting
>> the device?  Note that this path does not exist until
>> the device is plugged in.
...
--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list