On 04/15/2013 09:11 AM, Peter Krempa wrote:
Subject line is long, and doesn't match...
This flag will allow to use qemu guest agent commands to disable
processors in a
live guest.
---
include/libvirt/libvirt.h.in | 1 +
src/libvirt.c | 7 +++++++
tools/virsh-domain.c | 25 +++++++++++++++++++++++--
tools/virsh.pod | 13 ++++++++++---
4 files changed, 41 insertions(+), 5 deletions(-)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index 518f0fe..f12173d 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -2120,6 +2120,7 @@ typedef enum {
/* Additionally, these flags may be bitwise-OR'd in. */
VIR_DOMAIN_VCPU_MAXIMUM = (1 << 2), /* Max rather than current count */
+ VIR_DOMAIN_VCPU_AGENT = (1 << 3), /* Use guest-agent based cpu hotplug */
...actual flag name. May I suggest:
API: add VIR_DOMAIN_VCPU_AGENT for agent-based vcpu hotplug
} virDomainVcpuFlags;
int virDomainSetVcpus (virDomainPtr domain,
diff --git a/src/libvirt.c b/src/libvirt.c
index c8728b7..0b780cf 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -8887,6 +8887,10 @@ error:
* equal to virConnectGetMaxVcpus(). Otherwise, this call affects the
* current virtual CPU limit, which must be less than or equal to the
* maximum limit.
+ *
+ * If @flags includes VIR_DOMAIN_VCPU_AGENT, then a guest agent is used to
+ * modify the number of processors used by a domain.
I'm assuming that VCPU_AGENT and VCPU_MAXIMUM are mutually exclusive
(the guest cannot increase or decrease the maximum number of vcpus that
the hypervisor uses as its limit); also the flag is useless if not
specified on a running domain. Probably worth mentioning this in the docs.
+ *
* Not all hypervisors can support all flag combinations.
*
* Returns 0 in case of success, -1 in case of failure.
@@ -8957,6 +8961,9 @@ error:
* virtual CPU limit is queried. Otherwise, this call queries the
* current virtual CPU limit.
*
+ * If @flags includes VIR_DOMAIN_VCPU_AGENT, then a guest agent is used to
+ * modify the number of processors used by a domain.
This is under virDomainGetVcpusFlags(), which reads rather than queries
the number of processors. But here, VCPU_AGENT|MAXIMUM makes sense - a
guest might see a (smaller) maximum of possible vcpus that could still
be hotplugged, in relation to the hypervisor limit.
+ *
* Returns the number of vCPUs in case of success, -1 in case of failure.
*/
You should probably encode any mutual exclusion directly into libvirt.c,
so that hypervisor drivers don't have to repeat the same logic.
But looks like a good start for a useful addition.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org