Il 02/07/2013 12:49, Peter Lieven ha scritto: > > 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.?
It is possible with virtio-blk and SCSI with the logical_block_size property of virtio-blk-*, scsi-hd and scsi-disk devices. IIRC libvirt supports it, too. IDE only supports 512e/4KN (in general, not just in QEMU). Paolo > Peter >