qemu: move memory size align to qemuProcessPrepareDomain()

qemuBuildCommandLine() is calling qemuDomainAlignMemorySizes(),
which is an operation that changes live XML and domain and has
little to do with the command line build process.

Move it to qemuProcessPrepareDomain() where we're supposed to
make live XML and domain changes before launch. qemuProcessStart()
is setting VIR_QEMU_PROCESS_START_NEW if !migrate && !snapshot,
same conditions used in qemuBuildCommandLine() to call
qemuDomainAlignMemorySizes(), making this change seamless.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
Daniel Henrique Barboza 2020-11-18 15:12:51 -03:00
parent 3bb9ed8bc2
commit 5a34d0667d
2 changed files with 6 additions and 3 deletions

View File

@ -9841,9 +9841,6 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
qemuBuildDomainLoaderCommandLine(cmd, def, qemuCaps); qemuBuildDomainLoaderCommandLine(cmd, def, qemuCaps);
if (!migrateURI && !snapshot && qemuDomainAlignMemorySizes(def) < 0)
return NULL;
if (qemuBuildMemCommandLine(cmd, def, qemuCaps, priv) < 0) if (qemuBuildMemCommandLine(cmd, def, qemuCaps, priv) < 0)
return NULL; return NULL;

View File

@ -6493,6 +6493,12 @@ qemuProcessPrepareDomain(virQEMUDriverPtr driver,
if (qemuExtDevicesPrepareDomain(driver, vm) < 0) if (qemuExtDevicesPrepareDomain(driver, vm) < 0)
return -1; return -1;
if (flags & VIR_QEMU_PROCESS_START_NEW) {
VIR_DEBUG("Aligning guest memory");
if (qemuDomainAlignMemorySizes(vm->def) < 0)
return -1;
}
for (i = 0; i < vm->def->nchannels; i++) { for (i = 0; i < vm->def->nchannels; i++) {
if (qemuDomainPrepareChannel(vm->def->channels[i], if (qemuDomainPrepareChannel(vm->def->channels[i],
priv->channelTargetDir) < 0) priv->channelTargetDir) < 0)