From d6cb0d256a602431b95d469743d17272402bd7dd Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 6 Apr 2016 15:02:31 +0200 Subject: [PATCH] domain: Add helper to determine presence of memory baloon --- src/conf/domain_conf.c | 14 ++++++++++++++ src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 3 +-- src/qemu/qemu_domain.c | 3 +-- src/qemu/qemu_driver.c | 3 +-- src/qemu/qemu_process.c | 6 ++---- 7 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5952946557..28248c8873 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -24316,3 +24316,17 @@ virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def) return 0; } + + +/** + * virDomainDefHasMemballoon: + * @def: domain definition + * + * Returns true if domain has a memory ballooning device configured. + */ +bool +virDomainDefHasMemballoon(const virDomainDef *def) +{ + return def->memballoon && + def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_NONE; +} diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index ef7358bb57..1986f5358d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3160,4 +3160,6 @@ int virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def, virBitmapPtr autoCpuset) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4) ATTRIBUTE_RETURN_CHECK; +bool virDomainDefHasMemballoon(const virDomainDef *def) ATTRIBUTE_NONNULL(1); + #endif /* __DOMAIN_CONF_H */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4ef51f04b0..b626fd237c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -225,6 +225,7 @@ virDomainDefGetVcpuPinInfoHelper; virDomainDefGetVcpus; virDomainDefGetVcpusMax; virDomainDefHasDeviceAddress; +virDomainDefHasMemballoon; virDomainDefHasMemoryHotplug; virDomainDefHasVcpusOffline; virDomainDefMaybeAddController; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index b3603abcb6..26c19ff55b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3481,8 +3481,7 @@ qemuBuildMemballoonCommandLine(virCommandPtr cmd, virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_S390) && def->memballoon) def->memballoon->model = VIR_DOMAIN_MEMBALLOON_MODEL_NONE; - if (!def->memballoon || - def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) + if (!virDomainDefHasMemballoon(def)) return 0; if (def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index c22d400415..fa31954616 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4534,8 +4534,7 @@ qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver, /* if no balloning is available, the current size equals to the current * full memory size */ - if (!vm->def->memballoon || - vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) { + if (!virDomainDefHasMemballoon(vm->def)) { vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def); return 0; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e79506239d..718c5fe516 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19099,8 +19099,7 @@ qemuDomainGetStatsBalloon(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, unsigned long long cur_balloon = 0; int err = 0; - if (dom->def->memballoon && - dom->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) { + if (!virDomainDefHasMemballoon(dom->def)) { cur_balloon = virDomainDefGetMemoryActual(dom->def); } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BALLOON_EVENT)) { cur_balloon = dom->def->mem.cur_balloon; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b1e270ff23..b6769bf2c6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2003,8 +2003,7 @@ qemuProcessRefreshBalloonState(virQEMUDriverPtr driver, /* if no ballooning is available, the current size equals to the current * full memory size */ - if (!vm->def->memballoon || - vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) { + if (!virDomainDefHasMemballoon(vm->def)) { vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def); return 0; } @@ -4456,8 +4455,7 @@ qemuProcessSetupBalloon(virQEMUDriverPtr driver, int period; int ret = -1; - if (!vm->def->memballoon || - vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE) + if (!virDomainDefHasMemballoon(vm->def)) return 0; period = vm->def->memballoon->period;