[libvirt] [PATCH] Add new API virDomainBlockPull* to header and drivers
Matthias Bolte
matthias.bolte at googlemail.com
Wed Jun 1 18:06:50 UTC 2011
2011/6/1 Adam Litke <agl at us.ibm.com>:
> Set up the types for the block pull functions and insert them into the
> virDriver structure definition. Because of static initializers, update every
> driver and set the new fields to NULL.
>
> * include/libvirt/libvirt.h.in: new API
> * src/driver.h src/*/*_driver.c src/vbox/vbox_tmpl.c: add the new
> entry to the driver structure
> * python/generator.py: fix compiler errors, the actual python bindings are
> implemented later
>
> Signed-off-by: Adam Litke <agl at us.ibm.com>
> ---
> include/libvirt/libvirt.h.in | 92 ++++++++++++++++++++++++++++++++++++++++++
> python/generator.py | 3 +
> src/driver.h | 21 ++++++++++
> src/esx/esx_driver.c | 4 ++
> src/lxc/lxc_driver.c | 4 ++
> src/openvz/openvz_driver.c | 4 ++
> src/phyp/phyp_driver.c | 4 ++
> src/qemu/qemu_driver.c | 4 ++
> src/remote/remote_driver.c | 4 ++
> src/test/test_driver.c | 4 ++
> src/uml/uml_driver.c | 4 ++
> src/vbox/vbox_tmpl.c | 4 ++
> src/xen/xen_driver.c | 4 ++
Changing all the other driver files will go away when you rebase to
git head because of named initializers.
> 13 files changed, 156 insertions(+), 0 deletions(-)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index 5783303..9af1b76 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -1145,6 +1145,98 @@ int virDomainUpdateDeviceFlags(virDomainPtr domain,
> const char *xml, unsigned int flags);
>
> /*
> + * BlockPull API
> + */
> +
> +/* An iterator for initiating and monitoring block pull operations */
> +typedef unsigned long long virDomainBlockPullCursor;
> +
> +typedef struct _virDomainBlockPullInfo virDomainBlockPullInfo;
> +struct _virDomainBlockPullInfo {
> + /*
> + * The following fields provide an indication of block pull progress. @cur
> + * indicates the current position and will be between 0 and @end. @end is
> + * the final cursor position for this operation and represents completion.
> + * To approximate progress, divide @cur by @end.
> + */
> + virDomainBlockPullCursor cur;
> + virDomainBlockPullCursor end;
> +};
> +typedef virDomainBlockPullInfo *virDomainBlockPullInfoPtr;
> +
> +/**
> + * virDomainBlockPull:
> + * @dom: pointer to domain object
> + * @path: Fully-qualified filename of disk
> + * @info: A pointer to a virDomainBlockPullInfo structure, or NULL
> + * @flags: currently unused, for future extension
> + *
> + * Populate a disk image with data from its backing image. Once all data from
> + * its backing image has been pulled, the disk no longer depends on a backing
> + * image. This function works incrementally, performing a small amount of work
> + * each time it is called. When successful, @info is updated with the current
> + * progress.
> + *
> + * Returns -1 in case of failure, 0 when successful.
> + */
> +int virDomainBlockPull(virDomainPtr dom,
> + const char *path,
> + virDomainBlockPullInfoPtr info,
> + unsigned int flags);
> +
You're documenting the functions twice, in libvirt.h and in libvirt.c.
Typically the functions are just documented in libvirt.c.
Matthias
More information about the libvir-list
mailing list