[libvirt] [PATCH 02/13] conf: Add helper to determine whether memory hotplug is enabled for a vm

Peter Krempa pkrempa at redhat.com
Mon Sep 21 17:21:23 UTC 2015


Add a simple helper so that the code doesn't have to rewrite the same
condition multiple times.
---
 src/conf/domain_conf.c    | 9 ++++++++-
 src/conf/domain_conf.h    | 1 +
 src/libvirt_private.syms  | 1 +
 src/qemu/qemu_command.c   | 2 +-
 src/qemu/qemu_domain.c    | 2 +-
 src/qemu/qemu_migration.c | 5 ++---
 6 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a3b3ccb..fa2e331 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1154,7 +1154,7 @@ int
 virDomainDefCheckUnsupportedMemoryHotplug(virDomainDefPtr def)
 {
     /* memory hotplug tunables are not supported by this driver */
-    if (def->mem.max_memory > 0 || def->mem.memory_slots > 0) {
+    if (virDomainDefHasMemoryHotplug(def)) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("memory hotplug tunables <maxMemory> are not "
                          "supported by this hypervisor driver"));
@@ -7671,6 +7671,13 @@ virDomainParseMemoryLimit(const char *xpath,
 }


+bool
+virDomainDefHasMemoryHotplug(const virDomainDef *def)
+{
+    return def->mem.memory_slots > 0 || def->mem.max_memory > 0;
+}
+
+
 /**
  * virDomainDefGetMemoryInitial:
  * @def: domain definition
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 8be390b..cfd2600 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2324,6 +2324,7 @@ struct _virDomainDef {
 unsigned long long virDomainDefGetMemoryInitial(virDomainDefPtr def);
 void virDomainDefSetMemoryInitial(virDomainDefPtr def, unsigned long long size);
 unsigned long long virDomainDefGetMemoryActual(virDomainDefPtr def);
+bool virDomainDefHasMemoryHotplug(const virDomainDef *def);

 typedef enum {
     VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_AES,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 8c1f388..1a92422 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -217,6 +217,7 @@ virDomainDefGetMemoryActual;
 virDomainDefGetMemoryInitial;
 virDomainDefGetSecurityLabelDef;
 virDomainDefHasDeviceAddress;
+virDomainDefHasMemoryHotplug;
 virDomainDefMaybeAddController;
 virDomainDefMaybeAddInput;
 virDomainDefNeedsPlacementAdvice;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 25f57f2..e1f199c 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -9323,7 +9323,7 @@ qemuBuildCommandLine(virConnectPtr conn,

     virCommandAddArg(cmd, "-m");

-    if (def->mem.max_memory) {
+    if (virDomainDefHasMemoryHotplug(def)) {
         if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PC_DIMM)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("memory hotplug isn't supported by this QEMU binary"));
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e4a88cd..f840b0d 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1367,7 +1367,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
     }

     if (dev->type == VIR_DOMAIN_DEVICE_MEMORY &&
-        def->mem.max_memory == 0) {
+        !virDomainDefHasMemoryHotplug(def)) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("maxMemory has to be specified when using memory "
                          "devices "));
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 903612b..948ad3b 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3000,10 +3000,9 @@ qemuMigrationBeginPhase(virQEMUDriverPtr driver,
         }
     }

-    if (vm->def->mem.max_memory ||
+    if (virDomainDefHasMemoryHotplug(vm->def) ||
         ((flags & VIR_MIGRATE_PERSIST_DEST) &&
-         vm->newDef &&
-         vm->newDef->mem.max_memory))
+         vm->newDef && virDomainDefHasMemoryHotplug(vm->newDef)))
         cookieFlags |= QEMU_MIGRATION_COOKIE_MEMORY_HOTPLUG;

     if (!(mig = qemuMigrationEatCookie(driver, vm, NULL, 0, 0)))
-- 
2.4.5




More information about the libvir-list mailing list