[libvirt] [PATCH 5/7] Introduce flag VIR_DOMAIN_VCPU agent, for agent based CPU unlpug(shutdown).
Eric Blake
eblake at redhat.com
Mon Apr 15 23:17:46 UTC 2013
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130415/0394c3de/attachment-0001.sig>
More information about the libvir-list
mailing list