[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