[libvirt] [PATCH] vz: support cpu time in driver's domainGetInfo
Maxim Nestratov
mnestratov at virtuozzo.com
Fri Oct 30 06:16:05 UTC 2015
28.10.2015 17:29, Nikolay Shirokovskiy пишет:
> Just straight-forward patch.
> Use reference counting for privdom as stats internally could drop domain lock.
>
> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
> ---
> src/vz/vz_driver.c | 19 ++++++++++++++++---
> 1 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
> index 6f1cbfb..0a968b9 100644
> --- a/src/vz/vz_driver.c
> +++ b/src/vz/vz_driver.c
> @@ -554,7 +554,7 @@ vzDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
> virDomainObjPtr privdom;
> int ret = -1;
>
> - if (!(privdom = vzDomObjFromDomain(domain)))
> + if (!(privdom = vzDomObjFromDomainRef(domain)))
> goto cleanup;
>
> info->state = virDomainObjGetState(privdom, NULL);
> @@ -562,11 +562,24 @@ vzDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
> info->maxMem = virDomainDefGetMemoryActual(privdom->def);
> info->nrVirtCpu = privdom->def->vcpus;
> info->cpuTime = 0;
> +
> + if (virDomainObjIsActive(privdom)) {
> + unsigned long long vtime;
> + size_t i;
> +
> + for (i = 0; i < privdom->def->vcpus; ++i) {
> + if (prlsdkGetVcpuStats(privdom, i, &vtime) < 0) {
> + virReportError(VIR_ERR_OPERATION_FAILED, "%s",
> + _("cannot read cputime for domain"));
> + goto cleanup;
> + }
> + info->cpuTime += vtime;
> + }
> + }
> ret = 0;
>
> cleanup:
> - if (privdom)
> - virObjectUnlock(privdom);
> + virDomainObjEndAPI(&privdom);
> return ret;
> }
>
ACK. Looks good.
More information about the libvir-list
mailing list