qemu: process: Convert multiple boolean args to a single flag

Validation of qemu process startup requires to know whether the process
is used for a fresh VM or whether it's reloaded from a
snapshot/migration. Pass this information in via a flag rather than
calculating it from a bunch of bools.
This commit is contained in:
Peter Krempa 2016-05-27 13:45:05 +02:00
parent 43e21b1f10
commit 0d1c17aa68
3 changed files with 15 additions and 15 deletions

View File

@ -3627,7 +3627,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
} }
if (qemuProcessInit(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, if (qemuProcessInit(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN,
true, false, VIR_QEMU_PROCESS_START_AUTODESTROY) < 0) true, VIR_QEMU_PROCESS_START_AUTODESTROY) < 0)
goto stopjob; goto stopjob;
stopProcess = true; stopProcess = true;

View File

@ -4285,8 +4285,7 @@ qemuProcessStartWarnShmem(virDomainObjPtr vm)
static int static int
qemuProcessStartValidateXML(virDomainObjPtr vm, qemuProcessStartValidateXML(virDomainObjPtr vm,
virQEMUCapsPtr qemuCaps, virQEMUCapsPtr qemuCaps,
bool migration, unsigned int flags)
bool snapshot)
{ {
/* The bits we validate here are XML configs that we previously /* The bits we validate here are XML configs that we previously
* accepted. We reject them at VM startup time rather than parse * accepted. We reject them at VM startup time rather than parse
@ -4299,7 +4298,10 @@ qemuProcessStartValidateXML(virDomainObjPtr vm,
if (qemuValidateCpuCount(vm->def, qemuCaps) < 0) if (qemuValidateCpuCount(vm->def, qemuCaps) < 0)
return -1; return -1;
if (!migration && !snapshot && /* checks below should not be executed when starting a qemu process for a
* VM that was running before (migration, snapshots, save). It's more
* important to start such VM than keep the configuration clean */
if ((flags & VIR_QEMU_PROCESS_START_NEW) &&
virDomainDefCheckDuplicateDiskInfo(vm->def) < 0) virDomainDefCheckDuplicateDiskInfo(vm->def) < 0)
return -1; return -1;
@ -4329,8 +4331,6 @@ static int
qemuProcessStartValidate(virQEMUDriverPtr driver, qemuProcessStartValidate(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
virQEMUCapsPtr qemuCaps, virQEMUCapsPtr qemuCaps,
bool migration,
bool snapshot,
unsigned int flags) unsigned int flags)
{ {
size_t i; size_t i;
@ -4358,7 +4358,7 @@ qemuProcessStartValidate(virQEMUDriverPtr driver,
} }
if (qemuProcessStartValidateXML(vm, qemuCaps, migration, snapshot) < 0) if (qemuProcessStartValidateXML(vm, qemuCaps, flags) < 0)
return -1; return -1;
VIR_DEBUG("Checking for any possible (non-fatal) issues"); VIR_DEBUG("Checking for any possible (non-fatal) issues");
@ -4408,7 +4408,6 @@ qemuProcessInit(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
bool migration, bool migration,
bool snap,
unsigned int flags) unsigned int flags)
{ {
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
@ -4438,8 +4437,7 @@ qemuProcessInit(virQEMUDriverPtr driver,
vm->def->os.machine))) vm->def->os.machine)))
goto cleanup; goto cleanup;
if (qemuProcessStartValidate(driver, vm, priv->qemuCaps, if (qemuProcessStartValidate(driver, vm, priv->qemuCaps, flags) < 0)
migration, snap, flags) < 0)
goto cleanup; goto cleanup;
/* Do this upfront, so any part of the startup process can add /* Do this upfront, so any part of the startup process can add
@ -5415,8 +5413,10 @@ qemuProcessStart(virConnectPtr conn,
VIR_QEMU_PROCESS_START_PAUSED | VIR_QEMU_PROCESS_START_PAUSED |
VIR_QEMU_PROCESS_START_AUTODESTROY, cleanup); VIR_QEMU_PROCESS_START_AUTODESTROY, cleanup);
if (qemuProcessInit(driver, vm, asyncJob, !!migrateFrom, if (!migrateFrom && !snapshot)
!!snapshot, flags) < 0) flags |= VIR_QEMU_PROCESS_START_NEW;
if (qemuProcessInit(driver, vm, asyncJob, !!migrateFrom, flags) < 0)
goto cleanup; goto cleanup;
if (migrateFrom) { if (migrateFrom) {
@ -5493,9 +5493,9 @@ qemuProcessCreatePretendCmd(virConnectPtr conn,
VIR_QEMU_PROCESS_START_AUTODESTROY, cleanup); VIR_QEMU_PROCESS_START_AUTODESTROY, cleanup);
flags |= VIR_QEMU_PROCESS_START_PRETEND; flags |= VIR_QEMU_PROCESS_START_PRETEND;
flags |= VIR_QEMU_PROCESS_START_NEW;
if (qemuProcessInit(driver, vm, QEMU_ASYNC_JOB_NONE, !!migrateURI, if (qemuProcessInit(driver, vm, QEMU_ASYNC_JOB_NONE, !!migrateURI, flags) < 0)
false, flags) < 0)
goto cleanup; goto cleanup;
if (qemuProcessPrepareDomain(conn, driver, vm, flags) < 0) if (qemuProcessPrepareDomain(conn, driver, vm, flags) < 0)

View File

@ -68,6 +68,7 @@ typedef enum {
VIR_QEMU_PROCESS_START_PAUSED = 1 << 1, VIR_QEMU_PROCESS_START_PAUSED = 1 << 1,
VIR_QEMU_PROCESS_START_AUTODESTROY = 1 << 2, VIR_QEMU_PROCESS_START_AUTODESTROY = 1 << 2,
VIR_QEMU_PROCESS_START_PRETEND = 1 << 3, VIR_QEMU_PROCESS_START_PRETEND = 1 << 3,
VIR_QEMU_PROCESS_START_NEW = 1 << 4, /* internal, new VM is starting */
} qemuProcessStartFlags; } qemuProcessStartFlags;
int qemuProcessStart(virConnectPtr conn, int qemuProcessStart(virConnectPtr conn,
@ -93,7 +94,6 @@ int qemuProcessInit(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
bool migration, bool migration,
bool snap,
unsigned int flags); unsigned int flags);
int qemuProcessPrepareDomain(virConnectPtr conn, int qemuProcessPrepareDomain(virConnectPtr conn,