On Mon, Jun 06, 2011 at 01:17:55PM -0500, Adam Litke wrote: > Set up the types for the block pull functions and insert them into the > virDriver structure definition. Symbols are exported in this patch to prevent > documentation compile failures. > > * include/libvirt/libvirt.h.in: new API > * src/driver.h: add the new entry to the driver structure > * python/generator.py: fix compiler errors, the actual python bindings are > implemented later > * src/libvirt_public.syms: export symbols > > Signed-off-by: Adam Litke <a...@us.ibm.com> > --- > include/libvirt/libvirt.h.in | 39 +++++++++++++++++++++++++++++++++++++++ > python/generator.py | 3 +++ > src/driver.h | 22 ++++++++++++++++++++++ > src/libvirt_public.syms | 4 ++++ > 4 files changed, 68 insertions(+), 0 deletions(-) > > diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in > index df213f1..ba547c1 100644 > --- a/include/libvirt/libvirt.h.in > +++ b/include/libvirt/libvirt.h.in > @@ -1156,6 +1156,45 @@ 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; > + > +int virDomainBlockPull(virDomainPtr dom, > + const char *path, > + virDomainBlockPullInfoPtr info, > + unsigned int flags); > + > +int virDomainBlockPullAll(virDomainPtr dom, > + const char *path, > + unsigned int flags); > + > +int virDomainBlockPullAbort(virDomainPtr dom, > + const char *path, > + unsigned int flags); > + > +int virDomainGetBlockPullInfo(virDomainPtr dom, > + const char *path, > + virDomainBlockPullInfoPtr info, > + unsigned int flags); > + > + > +/* > * NUMA support > */ > > diff --git a/python/generator.py b/python/generator.py > index 7c38fdd..43e7414 100755 > --- a/python/generator.py > +++ b/python/generator.py > @@ -178,6 +178,8 @@ def enum(type, name, value): > functions_failed = [] > functions_skipped = [ > "virConnectListDomains", > + 'virDomainBlockPull', > + 'virDomainGetBlockPullInfo', > ] > > skipped_modules = { > @@ -192,6 +194,7 @@ skipped_types = { > 'virConnectDomainEventIOErrorCallback': "No function types in python", > 'virConnectDomainEventGraphicsCallback': "No function types in python", > 'virEventAddHandleFunc': "No function types in python", > + 'virDomainBlockPullInfoPtr': "Not implemented yet", > } > > ####################################################################### > diff --git a/src/driver.h b/src/driver.h > index 5df798a..4b30390 100644 > --- a/src/driver.h > +++ b/src/driver.h > @@ -615,6 +615,24 @@ typedef int > unsigned long flags, > int cancelled); > > +typedef int > + (*virDrvDomainBlockPull)(virDomainPtr dom, const char *path, > + virDomainBlockPullInfoPtr info, > + unsigned int flags); > + > +typedef int > + (*virDrvDomainBlockPullAll)(virDomainPtr dom, const char *path, > + unsigned int flags); > + > +typedef int > + (*virDrvDomainBlockPullAbort)(virDomainPtr dom, const char *path, > + unsigned int flags); > + > +typedef int > + (*virDrvDomainGetBlockPullInfo)(virDomainPtr dom, const char *path, > + virDomainBlockPullInfoPtr info, > + unsigned int flags); > + > /** > * _virDriver: > * > @@ -749,6 +767,10 @@ struct _virDriver { > virDrvDomainMigratePerform3 domainMigratePerform3; > virDrvDomainMigrateFinish3 domainMigrateFinish3; > virDrvDomainMigrateConfirm3 domainMigrateConfirm3; > + virDrvDomainBlockPull domainBlockPull; > + virDrvDomainBlockPullAll domainBlockPullAll; > + virDrvDomainBlockPullAbort domainBlockPullAbort; > + virDrvDomainGetBlockPullInfo domainGetBlockPullInfo; > }; > > typedef int > diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms > index 4d4299a..7d85d33 100644 > --- a/src/libvirt_public.syms > +++ b/src/libvirt_public.syms > @@ -448,6 +448,10 @@ LIBVIRT_0.9.2 { > virInterfaceChangeBegin; > virInterfaceChangeCommit; > virInterfaceChangeRollback; > + virDomainBlockPull; > + virDomainBlockPullAll; > + virDomainBlockPullAbort; > + virDomainGetBlockPullInfo; > } LIBVIRT_0.9.0;
We've released 0.9.2 now, so this needs moving to a new version block for 0.9.3 ACK to the rest of the patch Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list