From d4a4933a0de872edcbfed94fb334e8979ac2f68e Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 22 Nov 2019 13:23:31 +0100 Subject: [PATCH] api: Allow keeping completed domain job stats when reading them virDomainGetJobStats destroys the completed statistics on the first read. Give the user possibility to keep them around if they wish so. Add a flag VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED which will read the stats without destroying them. Signed-off-by: Peter Krempa Reviewed-by: Eric Blake --- include/libvirt/libvirt-domain.h | 2 ++ src/libvirt-domain.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index a2f007568c..6c21fe1098 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -3246,6 +3246,8 @@ struct _virDomainJobInfo { typedef enum { VIR_DOMAIN_JOB_STATS_COMPLETED = 1 << 0, /* return stats of a recently * completed job */ + VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED = 1 << 1, /* don't remove completed + stats when reading them */ } virDomainGetJobStatsFlags; int virDomainGetJobInfo(virDomainPtr dom, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 87110036ca..b9345804ea 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -8796,7 +8796,8 @@ virDomainGetJobInfo(virDomainPtr domain, virDomainJobInfoPtr info) * flag may be used to query statistics of a completed incoming pre-copy * migration (statistics for post-copy migration are only available on the * source host). Statistics of a completed job are automatically destroyed - * once read or when libvirtd is restarted. Note that time information + * once read (unless the VIR_DOMAIN_JOB_STATS_COMPLETED_KEEP is used as well) + * or when libvirtd is restarted. Note that time information * returned for completed migrations may be completely irrelevant unless both * source and destination hosts have synchronized time (i.e., NTP daemon is * running on both of them). The statistics of a completed job can also be @@ -8823,6 +8824,9 @@ virDomainGetJobStats(virDomainPtr domain, virCheckNonNullArgGoto(type, error); virCheckNonNullArgGoto(params, error); virCheckNonNullArgGoto(nparams, error); + VIR_REQUIRE_FLAG_GOTO(VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED, + VIR_DOMAIN_JOB_STATS_COMPLETED, + error); conn = domain->conn; -- GitLab