diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 04e5b25a70..7dcd40e420 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -7245,8 +7245,18 @@ virDomainSetVcpusFlags(virDomainPtr domain, unsigned int nvcpus, virCheckDomainReturn(domain, -1); virCheckReadOnlyGoto(domain->conn->flags, error); + VIR_REQUIRE_FLAG_GOTO(VIR_DOMAIN_VCPU_MAXIMUM, + VIR_DOMAIN_AFFECT_CONFIG, + error); + + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_AFFECT_CURRENT, + VIR_DOMAIN_AFFECT_LIVE, + error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_AFFECT_CURRENT, + VIR_DOMAIN_AFFECT_CONFIG, + error); VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_VCPU_GUEST, - VIR_DOMAIN_VCPU_MAXIMUM, + VIR_DOMAIN_AFFECT_CONFIG, error); virCheckNonZeroArgGoto(nvcpus, error); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d39d327cac..f8d493d47f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4942,13 +4942,6 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, goto endjob; } - /* MAXIMUM cannot be mixed with LIVE. */ - if ((flags & VIR_DOMAIN_VCPU_MAXIMUM) && (flags & VIR_DOMAIN_AFFECT_LIVE)) { - virReportError(VIR_ERR_INVALID_ARG, "%s", - _("cannot adjust maximum vcpus on running domain")); - goto endjob; - } - if (flags & VIR_DOMAIN_AFFECT_LIVE) maxvcpus = vm->def->maxvcpus; if (flags & VIR_DOMAIN_AFFECT_CONFIG) { @@ -4964,13 +4957,6 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, } if (flags & VIR_DOMAIN_VCPU_GUEST) { - if (flags & VIR_DOMAIN_AFFECT_CONFIG) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("setting vcpus via guest agent isn't supported " - "on offline domain")); - goto endjob; - } - if (!qemuDomainAgentAvailable(vm, true)) goto endjob;