On 21.09.2015 19:21, Peter Krempa wrote: > 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; > +} > + There are some other occurrences of this pattern too, e.g.: virDomainDefPostParseInternal virDomainDefFormatInternal Probably worth 'fixing' those places too. > + > /** > * 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))) > ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list