On 02/19/13 13:35, Jiri Denemark wrote:
This is an extensible version of virDomainGetJobInfo.
---
include/libvirt/libvirt.h.in | 205 +++++++++++++++++++++++++++++++++++++++++++
python/generator.py | 1 +
src/driver.h | 7 ++
src/libvirt.c | 58 ++++++++++++
src/libvirt_public.syms | 1 +
5 files changed, 272 insertions(+)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index eda9e12..9d1c6ea 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -3945,9 +3945,214 @@ struct _virDomainJobInfo {
...
+/**
+ * VIR_DOMAIN_JOB_DISK_PROCESSED:
+ *
+ * virDomainGetJobStats field: as VIR_DOMAIN_JOB_DATA_PROCESSED but only
+ * tracking guest memory progress, as VIR_TYPED_PARAM_ULLONG.
s/memory/disk/
+ *
+ * This field corresponds to fileProcessed field in virDomainJobInfo.
+ */
+#define VIR_DOMAIN_JOB_DISK_PROCESSED "disk_processed"
+
+/**
+ * VIR_DOMAIN_JOB_DISK_REMAINING:
+ *
+ * virDomainGetJobStats field: as VIR_DOMAIN_JOB_DATA_REMAINING but only
+ * tracking guest memory progress, as VIR_TYPED_PARAM_ULLONG.
s/memory/disk/
+ *
+ * This field corresponds to fileRemaining field in virDomainJobInfo.
+ */
+#define VIR_DOMAIN_JOB_DISK_REMAINING "disk_remaining"
+
+/**
+ * VIR_DOMAIN_JOB_COMPRESSION_CACHE:
+ *
+ * virDomainGetJobStats field: size of the cache (in bytes) used for
+ * compressing repeatedly transferred memory pages during live migration,
+ * as VIR_TYPED_PARAM_ULLONG.
+ */
+#define VIR_DOMAIN_JOB_COMPRESSION_CACHE "compression_cache"
+
+/**
+ * VIR_DOMAIN_JOB_COMPRESSION_BYTES:
+ *
+ * virDomainGetJobStats field: number of compressed bytes transferred
+ * since the beginning of migration, as VIR_TYPED_PARAM_ULLONG.
+ */
+#define VIR_DOMAIN_JOB_COMPRESSION_BYTES "compression_bytes"
+
+/**
+ * VIR_DOMAIN_JOB_COMPRESSION_PAGES:
+ *
+ * virDomainGetJobStats field: number of compressed pages transferred
+ * since the beginning of migration, as VIR_TYPED_PARAM_ULLONG.
+ */
+#define VIR_DOMAIN_JOB_COMPRESSION_PAGES "compression_pages"
+
+/**
+ * VIR_DOMAIN_JOB_COMPRESSION_CACHE_MISSES:
+ *
+ * virDomainGetJobStats field: number of repeatedly changing pages that
+ * were not found in compression cache and thus could not be compressed,
+ * as VIR_TYPED_PARAM_ULLONG.
+ */
This field and those above are a bit too XBZRLE specific although try to
be general. But it doesn't bother me more than writing this.
+#define VIR_DOMAIN_JOB_COMPRESSION_CACHE_MISSES
"compression_cache_misses"
+
+/**
+ * VIR_DOMAIN_JOB_COMPRESSION_OVERFLOW:
+ *
+ * virDomainGetJobStats field: number of repeatedly changing pages that
+ * were found in compression cache but were sent uncompressed because
+ * the result of compression was larger than the original page as a whole,
+ * as VIR_TYPED_PARAM_ULLONG.
+ */
+#define VIR_DOMAIN_JOB_COMPRESSION_OVERFLOW "compression_overflow"
+
+
+/**
* virDomainSnapshot:
*
* a virDomainSnapshot is a private structure representing a snapshot of
...
diff --git a/src/libvirt.c b/src/libvirt.c
index 1e78500..3611839 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -17399,6 +17399,64 @@ error:
/**
+ * virDomainGetJobStats:
+ * @domain: a domain object
+ * @type: where to store the job type (one of virDomainJobType)
+ * @params: where to store job statistics
+ * @nparams: number of items in @params
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Extract information about progress of a background job on a domain.
+ * Will return an error if the domain is not active. The function returns
+ * a superset of progress information provided by virDomainGetJobInfo.
+ * Possible fields returned in @params are defined by VIR_DOMAIN_JOB_*
+ * macros.
Possibly worth mentioning that newer daemon when used with older client
may return some fields unknown by the client.
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virDomainGetJobStats(virDomainPtr domain,
+ int *type,
+ virTypedParameterPtr *params,
+ int *nparams,
+ unsigned int flags)
...
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
index 3bdfd57..361408f 100644
--- a/src/libvirt_public.syms
+++ b/src/libvirt_public.syms
@@ -605,6 +605,7 @@ LIBVIRT_1.0.2 {
LIBVIRT_1.0.3 {
Hopefully you won't need to change this.
global:
+ virDomainGetJobStats;
virNodeDeviceLookupSCSIHostByWWN;
} LIBVIRT_1.0.2;
ACK with the comments fixed.
Peter