[libvirt] RFC (V2) New virDomainBlockPull API family to libvirt

Zhi Yong Wu zwu.kernel at gmail.com
Mon Aug 15 04:40:09 UTC 2011


HI, Deniel and Adam.

Have the patchset been merged into libvirt upstream?

On Fri, Jul 22, 2011 at 11:01 PM, Adam Litke <agl at us.ibm.com> wrote:
> Thanks Daniel.  The upstream code is looking good.  I will work on
> adding some documentation to the development guide.
>
> On 07/22/2011 01:07 AM, Daniel Veillard wrote:
>> On Thu, Jul 21, 2011 at 01:55:04PM -0500, Adam Litke wrote:
>>> Here are the patches to implement the BlockPull/BlockJob API as discussed and
>>> agreed to.  I am testing with a python script (included for completeness as the
>>> final patch).  The qemu monitor interface is not expected to change in the
>>> future.  Stefan is planning to submit placeholder commands for upstream qemu
>>> until the generic streaming support is implemented.
>>>
>>> Changes since V1:
>>>  - Make virDomainBlockPullAbort() and virDomainGetBlockPullInfo() into a
>>>    generic BlockJob interface.
>>>  - Added virDomainBlockJobSetSpeed()
>>>  - Rename VIR_DOMAIN_EVENT_ID_BLOCK_PULL event to fit into block job API
>>>  - Add bandwidth argument to virDomainBlockPull()
>>>
>>> Summary of changes since first generation patch series:
>>>  - Qemu dropped incremental streaming so remove libvirt incremental
>>>    BlockPull() API
>>>  - Rename virDomainBlockPullAll() to virDomainBlockPull()
>>>  - Changes required to qemu monitor handlers for changed command names
>>>
>>> --
>>>
>>> To help speed the provisioning process for large domains, new QED disks are
>>> created with backing to a template image.  These disks are configured with
>>> copy on read such that blocks that are read from the backing file are copied
>>> to the new disk.  This reduces I/O over a potentially costly path to the
>>> backing image.
>>>
>>> In such a configuration, there is a desire to remove the dependency on the
>>> backing image as the domain runs.  To accomplish this, qemu will provide an
>>> interface to perform sequential copy on read operations during normal VM
>>> operation.  Once all data has been copied, the disk image's link to the
>>> backing file is removed.
>>>
>>> The virDomainBlockPull API family brings this functionality to libvirt.
>>>
>>> virDomainBlockPull() instructs the hypervisor to stream the entire device in
>>> the background.  Progress of this operation can be checked with the function
>>> virDomainBlockJobInfo().  An ongoing stream can be cancelled with
>>> virDomainBlockJobAbort().  virDomainBlockJobSetSpeed() allows you to limit the
>>> bandwidth that the operation may consume.
>>>
>>> An event (VIR_DOMAIN_EVENT_ID_BLOCK_JOB) will be emitted when a disk has been
>>> fully populated or if a BlockPull() operation was terminated due to an error.
>>> This event is useful to avoid polling on virDomainBlockJobInfo() for
>>> completion and could also be used by the security driver to revoke access to
>>> the backing file when it is no longer needed.
>>
>>   Thanks Adam for that revised patch set.
>>
>>     ACK
>>
>> It all looked good to me, based on previous review and a last look.
>> I just had to fix a few merge conflicts due to new entry points being
>> added in the meantime and one commit message, but basically it was clean :-)
>>
>>   So I pushed the set except 8 of course. I'm not sure if we should try
>> to store it in the example, or on the wiki. The Wiki might be a bit more
>> logical because I'm not sure we can run the test as is now in all
>> setups.
>>
>>
>>   I think the remaining item would be to add documentation about how to
>> use this, the paragraphs above should probably land somewhere on the web
>> site, ideally on the development guide
>>   http://libvirt.org/devguide.html
>> but I'm open to suggestions :-)
>>
>> Daniel
>>
>
> --
> Adam Litke
> IBM Linux Technology Center
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>



-- 
Regards,

Zhi Yong Wu




More information about the libvir-list mailing list