diff options
author | Peter Krempa <pkrempa@redhat.com> | 2016-04-27 16:39:41 +0200 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2016-04-28 09:25:32 +0200 |
commit | b527e7c8e2e13c194cf32fee76d3be3d89365524 (patch) | |
tree | b82260e898096a060564b2ab77e3eb9852a47a67 | |
parent | 63e2b766a5a704eb19b8bdaeb1cf0fa91f990cb8 (diff) | |
download | libvirt-b527e7c8e2e13c194cf32fee76d3be3d89365524.tar.gz |
qemu: Error out if setting vcpu count would lead to invalid config
When the domain definition describes a machine with NUMA, setting the
maximum vCPU count via the API might lead to an invalid config.
Add a check that will forbid this until we add more advanced cpu config
capabilities.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1327499
-rw-r--r-- | src/libvirt_private.syms | 1 | ||||
-rw-r--r-- | src/qemu/qemu_driver.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0de35efb25..5030ec3a15 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -674,6 +674,7 @@ virNodeDeviceObjUnlock; virDomainNumaCheckABIStability; virDomainNumaEquals; virDomainNumaFree; +virDomainNumaGetCPUCountTotal; virDomainNumaGetMaxCPUID; virDomainNumaGetMemorySize; virDomainNumaGetNodeCount; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5992492ebd..e5badf637a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4903,6 +4903,13 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, if (persistentDef) { if (flags & VIR_DOMAIN_VCPU_MAXIMUM) { + if (virDomainNumaGetCPUCountTotal(persistentDef->numa) > nvcpus) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Number of CPUs in <numa> exceeds the desired " + "maximum vcpu count")); + goto endjob; + } + if (virDomainDefSetVcpusMax(persistentDef, nvcpus) < 0) goto endjob; } else { |