Re: [PATCH 07/12] getstats: report block sizes for offline domains

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/06/14 09:14, Eric Blake wrote:
> The prior refactoring can now be put to use. With the same domain
> as the previous commit (one qcow2 disk and an empty cdrom drive):
> $ virsh domstats --block foo
> Domain: 'foo'
>   block.count=2
>   block.0.name=hda
>   block.0.allocation=200704
>   block.0.capacity=42949672960
>   block.0.physical=200704
>   block.1.name=hdc
> 
> * src/qemu/qemu_driver.c (qemuStorageLimitsRefresh): Tweak
> semantics of helper function.
> (qemuDomainGetStatsBlock): Use it to report offline statistics.
> 
> Signed-off-by: Eric Blake <eblake@xxxxxxxxxx>
> ---
>  src/qemu/qemu_driver.c | 60 +++++++++++++++++++++++++++++++++++---------------
>  1 file changed, 42 insertions(+), 18 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 404decd..723391b 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -10983,7 +10983,9 @@ qemuDomainMemoryPeek(virDomainPtr dom,
> 
>  /* Refresh the capacity and allocation limits of a given storage
>   * source.  Assumes that the caller has already obtained a domain job.
> - * Set *activeFail to true if data cannot be obtained because a
> + * Pass NULL for path to skip any errors about an empty drive.
> + * Pass NULL for activeFail to skip any monitor attempt, otherwise,

Having a separate offline-only helper in this case would avoid us having
this argument as it would never touch the monitor.

> + * set *activeFail to true if data cannot be obtained because a
>   * transient guest is no longer active.  */
>  static int
>  qemuStorageLimitsRefresh(virQEMUDriverPtr driver, virQEMUDriverConfigPtr cfg,
> @@ -11000,6 +11002,12 @@ qemuStorageLimitsRefresh(virQEMUDriverPtr driver, virQEMUDriverConfigPtr cfg,
>      char *buf = NULL;
>      ssize_t len;
> 
> +    if (!path) {
> +        if (virStorageSourceIsEmpty(src))
> +            return 0;
> +        path = src->path;
> +    }


Again, no need to pass path explicitly.

> +
>      /* FIXME: For an offline domain, we always want to check current
>       * on-disk statistics (as users have been known to change offline
>       * images behind our backs).  For a running domain, however, it

...

> @@ -18530,6 +18542,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
>      virHashTablePtr stats = NULL;
>      qemuDomainObjPrivatePtr priv = dom->privateData;
>      bool abbreviated = false;
> +    virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
> 
>      if (!HAVE_JOB(privflags) || !virDomainObjIsActive(dom)) {
>          abbreviated = true; /* it's ok, just go ahead silently */
> @@ -18555,8 +18568,18 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
> 
>          if (abbreviated || !disk->info.alias ||
>              !(entry = virHashLookup(stats, disk->info.alias))) {
> -            /* FIXME: we could still look up sizing by sharing code
> -             * with qemuDomainGetBlockInfo */
> +            if (qemuStorageLimitsRefresh(driver, cfg, dom,
> +                                         disk, disk->src, NULL, NULL) < 0)
> +                goto cleanup;
> +            if (disk->src->allocation)
> +                QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, i,
> +                                         "allocation", disk->src->allocation);
> +            if (disk->src->capacity)
> +                QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, i,
> +                                         "capacity", disk->src->capacity);
> +            if (disk->src->physical)
> +                QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, i,
> +                                         "physical", disk->src->physical);
>              continue;
>          }

This part looks good. Having stats for offline VMs might be useful.

> 
> @@ -18593,6 +18616,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
> 
>   cleanup:
>      virHashFree(stats);
> +    virObjectUnref(cfg);
>      return ret;
>  }
> 

Peter

Attachment: signature.asc
Description: OpenPGP digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]