RFC: Qemu backup interface plans

Max Reitz mreitz at redhat.com
Tue May 25 08:50:11 UTC 2021


On 19.05.21 08:11, Vladimir Sementsov-Ogievskiy wrote:
> 18.05.2021 19:39, Max Reitz wrote:

[...]

>> On 17.05.21 14:07, Vladimir Sementsov-Ogievskiy wrote:

[...]

>>> Not also, that there is another benefit of such thing: we'll 
>>> implement this callback in qcow2 driver, so that backup will read 
>>> clusters not in guest cluster order, but in host cluster order, to 
>>> read more sequentially, which should bring better performance on 
>>> rotating disks.
>>
>> I’m not exactly sure how you envision this to work, but block_status 
>> also already gives you the host offset in *map.
>>
> 
> But block-status doesn't give a possibility to read sequentially. For 
> this, user should call block-status several times until the whole disk 
> covered, then sort the segments by host offset. I wonder, could it be 
> implemented as some iterator, like
> 
> read_iter = bdrv_get_sequential_read_iter(source)
> 
> while (extents = bdrv_read_next(read_iter)):
>    for ext in extents:
>      start_writing_task(target, ext.offset, ext.bytes, ext.qiov)
> 
> where bdrv_read_next will read guest data in host-cluster-sequence..

How would you implement this, though?  qcow2 doesn’t have a reverse 
mapping either, so it too would need to read all L2 table entries and 
sort them, wouldn’t it?

Max




More information about the libvir-list mailing list