[libvirt] [PATCH 5/8] qemu: domain: Add helper to determine presence of memory baloon

Peter Krempa pkrempa at redhat.com
Wed Apr 6 16:02:25 UTC 2016


---
 src/qemu/qemu_command.c |  3 +--
 src/qemu/qemu_domain.c  | 11 +++++++++--
 src/qemu/qemu_domain.h  |  1 +
 src/qemu/qemu_driver.c  | 12 ++++--------
 src/qemu/qemu_process.c |  9 +++------
 5 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index a2448bf..1518a53 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3408,8 +3408,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 (!qemuDomainDefHasMemballoon(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 f38b0f3..c13acd1 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4218,6 +4218,14 @@ qemuDomainMachineHasBuiltinIDE(const virDomainDef *def)
 }


+bool
+qemuDomainDefHasMemballoon(const virDomainDef *def)
+{
+    return def->memballoon &&
+           def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_NONE;
+}
+
+
 /**
  * qemuDomainUpdateCurrentMemorySize:
  *
@@ -4242,8 +4250,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 (!qemuDomainDefHasMemballoon(vm->def)) {
         vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def);
         return 0;
     }
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 54d7bd7..2992214 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -516,6 +516,7 @@ bool qemuDomainHasBlockjob(virDomainObjPtr vm, bool copy_only)
 int qemuDomainAlignMemorySizes(virDomainDefPtr def);
 void qemuDomainMemoryDeviceAlignSize(virDomainDefPtr def,
                                      virDomainMemoryDefPtr mem);
+bool qemuDomainDefHasMemballoon(const virDomainDef *def);

 virDomainChrDefPtr qemuFindAgentConfig(virDomainDefPtr def);

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index eaabe58..a00268b 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -2505,8 +2505,7 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period,
     priv = vm->privateData;

     if (def) {
-        if (!def->memballoon ||
-            def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) {
+        if (!qemuDomainDefHasMemballoon(def)) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("Memory balloon model must be virtio to set the"
                              " collection period"));
@@ -2529,8 +2528,7 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period,
     }

     if (persistentDef) {
-        if (!persistentDef->memballoon ||
-            persistentDef->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) {
+        if (!qemuDomainDefHasMemballoon(persistentDef)) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("Memory balloon model must be virtio to set the"
                              " collection period"));
@@ -11495,8 +11493,7 @@ qemuDomainMemoryStats(virDomainPtr dom,
         goto endjob;
     }

-    if (vm->def->memballoon &&
-        vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) {
+    if (qemuDomainDefHasMemballoon(vm->def)) {
         priv = vm->privateData;
         qemuDomainObjEnterMonitor(driver, vm);
         ret = qemuMonitorGetMemoryStats(priv->mon, stats, nr_stats);
@@ -19061,8 +19058,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 (!qemuDomainDefHasMemballoon(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 d9dca74..4911c1d 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -1933,8 +1933,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 (!qemuDomainDefHasMemballoon(vm->def)) {
         vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def);
         return 0;
     }
@@ -4382,8 +4381,7 @@ qemuProcessSetupBalloon(virQEMUDriverPtr driver,
     int period;
     int ret = -1;

-    if (!vm->def->memballoon ||
-        vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_NONE)
+    if (!qemuDomainDefHasMemballoon(vm->def))
         return 0;

     period = vm->def->memballoon->period;
@@ -6237,8 +6235,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
     if (running) {
         virDomainObjSetState(vm, VIR_DOMAIN_RUNNING,
                              VIR_DOMAIN_RUNNING_UNPAUSED);
-        if (vm->def->memballoon &&
-            vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO &&
+        if (qemuDomainDefHasMemballoon(vm->def) &&
             vm->def->memballoon->period) {
             qemuDomainObjEnterMonitor(driver, vm);
             qemuMonitorSetMemoryStatsPeriod(priv->mon,
-- 
2.8.0




More information about the libvir-list mailing list