static int
qemuDomainHotplugDelVcpu(virQEMUDriverPtr driver,
+ virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
unsigned int vcpu)
{
if (qemuDomainRemoveVcpu(driver, vm, vcpu) < 0)
goto cleanup;
+ qemuDomainVcpuPersistOrder(vm->def);
+
+ if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0)
+ goto cleanup;
+
ret = 0;
cleanup:
static int
qemuDomainHotplugAddVcpu(virQEMUDriverPtr driver,
+ virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
unsigned int vcpu)
{
if (qemuDomainValidateVcpuInfo(vm) < 0)
goto cleanup;
+ qemuDomainVcpuPersistOrder(vm->def);
+
+ if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0)
+ goto cleanup;
+
ret = 0;
cleanup:
qemuDomainObjPrivatePtr priv = vm->privateData;
qemuCgroupEmulatorAllNodesDataPtr emulatorCgroup = NULL;
ssize_t nextvcpu = -1;
- int rc = 0;
int ret = -1;
if (qemuCgroupEmulatorAllNodesAllow(priv->cgroup, &emulatorCgroup) < 0)
if (enable) {
while ((nextvcpu = virBitmapNextSetBit(vcpumap, nextvcpu)) != -1) {
- if ((rc = qemuDomainHotplugAddVcpu(driver, vm, nextvcpu)) < 0)
- break;
+ if (qemuDomainHotplugAddVcpu(driver, cfg, vm, nextvcpu) < 0)
+ goto cleanup;
}
} else {
for (nextvcpu = virDomainDefGetVcpusMax(vm->def) - 1; nextvcpu >= 0; nextvcpu--) {
if (!virBitmapIsBitSet(vcpumap, nextvcpu))
continue;
- if ((rc = qemuDomainHotplugDelVcpu(driver, vm, nextvcpu)) < 0)
- break;
+ if (qemuDomainHotplugDelVcpu(driver, cfg, vm, nextvcpu) < 0)
+ goto cleanup;
}
}
- qemuDomainVcpuPersistOrder(vm->def);
-
- if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0)
- goto cleanup;
-
- if (rc < 0)
- goto cleanup;
-
ret = 0;
cleanup: