mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
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:
parent
43e21b1f10
commit
0d1c17aa68
@ -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;
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user