Am 02.07.2013 um 12:44 schrieb Paolo Bonzini <pbonz...@redhat.com>: > Il 02/07/2013 10:28, Peter Lieven ha scritto: >>> I agree that it's better to emit an error than to corrupt the disk. I'm >>> just trying to understand what needs to be done on top of this to make 4 >>> KB LUNs work. >> >> Reading is quite easy, you just have to have a wrapper that is reading an >> aligned >> portion of sectors around the original request and then extracting what was >> requested. >> Writing is very complicated. Requests have to be serialized, >> Read-Modify-Write for >> unaligned write requests. Paolo had all this prepared already. >> >> I wonder if it would be enough to have the block size of the host/iSCSI >> device propagated >> to the guest drivers and read 4K (or the protocol block size bytes) when >> probing the MBR. > > No, propagating the size of the device is only correct if we're doing > SCSI passthrough (-device scsi-block) and in that case we're doing it > already. > > For emulation, the choices are: > > 1) manually set the logical_block_size of the disk to 4096 (which means > the disk cannot be used as a boot disk, at least with BIOS; I don't know > about UEFI); > > 2) do 512e/4KN as in my patches. You would still need to expose a 4K > physical_sector_size to be precise, but it is just an optimization.
This seems the more reasonable for me. Can you check what needs to be done to get your last version of your old series ready for upstream? Is the exposing of a sector size > 512 byte complicated or is this something that is already possible with IDE, Virtio-BLK, Virtio-SCSI etc.? Peter