The current esp code will perform partial reads on devices with sector sizes > 512. The attached patch makes it read the whole sector from the device, and uses the additional if multiple blocks are requested.
I'm not sure if the old behavior is technically wrong, but it confused me when debugging the qemu device emulation :-)
Paul