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. Paolo