On Mon, 26 Mar 2012, Norman Diamond wrote: > dd if=/dev/sdb of=/dev/zero bs=512 count=1 skip=551563 > should succeed because block 551563 has no problem. But it fails because ehci_hcd insists on reading blocks 551560 through 551567, and block 551562 does have a problem. No, ehci-hcd insists on nothing. It is the block layer which insists on reading an entire page at a time. > Some years ago similar problems in linux-ide and libata were fixed. ehci_hcd would also benefit from fixing. This has nothing at all to do with ehci-hcd. You can prove this (assuming your computer has a UHCI or OHCI controller) by unloading ehci-hcd and running the test again. > ehci_hcd has further problems. After failing to read block 551562, it tries to reassign device addresses on the USB bus, fails repeatedly, and gives up. Unplugging and replugging the USB cable fixes this, so that block numbers far enough away from bad blocks can be read again. I think that unplugging should not be necessary. ehci_hcd does not try to reassign anything. Rather, it is usb-storage which resets the non-working device. If the device were working properly, unplugging and replugging it wouldn't be necessary. The failure is entirely the device's fault. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html