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
> 


Reply via email to