1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemu: cpu hotplug: Set vcpu state directly in the new structure

Avoid using virDomainDefSetVcpus when we can set it directly in the
structure.
This commit is contained in:
Peter Krempa 2015-12-17 13:19:54 +01:00
parent 9bf284daa9
commit a190744aa9

View File

@ -4764,6 +4764,7 @@ qemuDomainHotplugAddVcpu(virQEMUDriverPtr driver,
unsigned int vcpu)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virDomainVcpuInfoPtr vcpuinfo;
int ret = -1;
int rc;
int oldvcpus = virDomainDefGetVcpus(vm->def);
@ -4773,6 +4774,15 @@ qemuDomainHotplugAddVcpu(virQEMUDriverPtr driver,
char *mem_mask = NULL;
virDomainNumatuneMemMode mem_mode;
if (!(vcpuinfo = virDomainDefGetVcpu(vm->def, vcpu)))
return -1;
if (vcpuinfo->online) {
virReportError(VIR_ERR_INVALID_ARG,
_("vCPU '%u' is already online"), vcpu);
return -1;
}
qemuDomainObjEnterMonitor(driver, vm);
rc = qemuMonitorSetCPU(priv->mon, vcpu, true);
@ -4788,7 +4798,7 @@ qemuDomainHotplugAddVcpu(virQEMUDriverPtr driver,
if (rc < 0)
goto cleanup;
ignore_value(virDomainDefSetVcpus(vm->def, oldvcpus + 1));
vcpuinfo->online = true;
if (ncpupids < 0)
goto cleanup;
@ -4864,12 +4874,22 @@ qemuDomainHotplugDelVcpu(virQEMUDriverPtr driver,
unsigned int vcpu)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virDomainVcpuInfoPtr vcpuinfo;
int ret = -1;
int rc;
int oldvcpus = virDomainDefGetVcpus(vm->def);
pid_t *cpupids = NULL;
int ncpupids = 0;
if (!(vcpuinfo = virDomainDefGetVcpu(vm->def, vcpu)))
return -1;
if (!vcpuinfo->online) {
virReportError(VIR_ERR_INVALID_ARG,
_("vCPU '%u' is already offline"), vcpu);
return -1;
}
qemuDomainObjEnterMonitor(driver, vm);
rc = qemuMonitorSetCPU(priv->mon, vcpu, false);
@ -4893,7 +4913,7 @@ qemuDomainHotplugDelVcpu(virQEMUDriverPtr driver,
goto cleanup;
}
ignore_value(virDomainDefSetVcpus(vm->def, oldvcpus - 1));
vcpuinfo->online = false;
if (qemuDomainDelCgroupForThread(priv->cgroup,
VIR_CGROUP_THREAD_VCPU, vcpu) < 0)