[libvirt] [PATCH 2/6] Add support for fetching statistics of completed jobs

Jiri Denemark jdenemar at redhat.com
Mon Sep 8 14:56:41 UTC 2014


On Fri, Sep 05, 2014 at 14:42:00 -0400, John Ferlan wrote:
> 
> 
> On 09/01/2014 11:05 AM, Jiri Denemark wrote:
> > virDomainGetJobStats gains new VIR_DOMAIN_JOB_STATS_COMPLETED flag that
> > can be used to fetch statistics of a completed job rather than a
> > currently running job.
> > 
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> >  include/libvirt/libvirt.h.in | 11 +++++++++++
> >  src/libvirt.c                |  8 +++++++-
> >  src/qemu/qemu_domain.c       |  1 +
> >  src/qemu/qemu_domain.h       |  1 +
> >  src/qemu/qemu_driver.c       | 25 +++++++++++++++++++------
> >  src/qemu/qemu_migration.c    |  6 ++++++
> >  src/qemu/qemu_monitor_json.c |  3 ++-
> >  7 files changed, 47 insertions(+), 8 deletions(-)
> > 
> 
> This seems AOK - see my note at the end about qemu_monitor_json.c though.
> 
> 
...
> > diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> > index 62e7d5d..263fa8b 100644
> > --- a/src/qemu/qemu_monitor_json.c
> > +++ b/src/qemu/qemu_monitor_json.c
> > @@ -2478,7 +2478,8 @@ qemuMonitorJSONGetMigrationStatusReply(virJSONValuePtr reply,
> >      if (rc == 0)
> >          status->downtime_set = true;
> >  
> > -    if (status->status == QEMU_MONITOR_MIGRATION_STATUS_ACTIVE) {
> > +    if (status->status == QEMU_MONITOR_MIGRATION_STATUS_ACTIVE ||
> > +        status->status == QEMU_MONITOR_MIGRATION_STATUS_COMPLETED) {
> >          virJSONValuePtr ram = virJSONValueObjectGet(ret, "ram");
> >          if (!ram) {
> >              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > 
> 
> While you're in this module - the following 3 calls don't check status
> (and were flagged by my new coverity):
> 
> virJSONValueObjectGetNumberUlong(ret, "total-time", &status->total_time);
> 
> virJSONValueObjectGetNumberUlong(ram, "normal", &status->ram_normal);
> 
> virJSONValueObjectGetNumberUlong(ram, "normal-bytes",
> &status->ram_normal_bytes);

QEMU does not always report all values so we just ignore failures to get
some of them. I'll look at them and use ignore_value() when appropriate.

> I know "somewhat" outside the bounds of these changes but since they're
> in qemuMonitorJSONGetMigrationStatusReply() and used by the changes here
> - there's enough of a reason to adjust that I think.
> 
> I don't see where "total_time" is ever used though...

Right, we compute total time ourselves. This is just for completeness to
parse all fields QEMU supports in case we want to use them sometime
somewhere :-)

Jirka




More information about the libvir-list mailing list