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 <agl@xxxxxxxxxx> --- 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; # .... define new API here using predicted next version number .... -- 1.7.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list