
On 03/22/2011 11:47 PM, Taku Izumi wrote:
This patch introduces VIR_DOMAIN_MEM_CURRENT flag and modifies virDomainSetMemoryFlags function to support it.
/* Memory size modification flags. */ typedef enum { + VIR_DOMAIN_MEM_CURRENT= 0, /* affect current domain */
I tweaked the spacing here.
VIR_DOMAIN_MEM_LIVE = (1 << 0), /* affect active domain */ VIR_DOMAIN_MEM_CONFIG = (1 << 1), /* affect next boot */ } virDomainMemoryModFlags; Index: libvirt/src/libvirt.c =================================================================== --- libvirt.orig/src/libvirt.c +++ libvirt/src/libvirt.c @@ -2862,10 +2862,12 @@ error: * to Domain0 i.e. the domain where the application runs. * This funcation may requires privileged access to the hypervisor.
Oops, let's fix that typo in "funcation" while we're here.
* - * @flags must include VIR_DOMAIN_MEM_LIVE to affect a running - * domain (which may fail if domain is not active), or - * VIR_DOMAIN_MEM_CONFIG to affect the next boot via the XML - * description of the domain. Both flags may be set. + * @flags may include VIR_DOMAIN_MEM_LIVE or VIR_DOMAIN_MEM_CONFIG. + * Both flags may be set. If VIR_DOMAIN_MEM_LIVE is set, the change affects + * a running domain and may fail if domain is not active. + * If VIR_DOMAIN_MEM_CONFIG is set, the change affects the next boot via + * the XML description on the domain. If neither flag is specified + * (=VIR_DOMAIN_MEM_CURRENT), behavior is different depending on hypervisor.
I tweaked this wording a bit.
* * Returns 0 in case of success, -1 in case of failure. */ @@ -2891,8 +2893,7 @@ virDomainSetMemoryFlags(virDomainPtr dom goto error; }
- if (memory < 4096 || - (flags & (VIR_DOMAIN_MEM_LIVE | VIR_DOMAIN_MEM_CONFIG)) == 0) { + if (memory < 4096) { virLibDomainError(VIR_ERR_INVALID_ARG, __FUNCTION__); goto error; }
Here's what I squashed in before pushing: diff --git i/include/libvirt/libvirt.h.in w/include/libvirt/libvirt.h.in index c9129bc..d765412 100644 --- i/include/libvirt/libvirt.h.in +++ w/include/libvirt/libvirt.h.in @@ -854,9 +854,9 @@ int virDomainGetMemoryParameters(virDomainPtr domain, /* Memory size modification flags. */ typedef enum { - VIR_DOMAIN_MEM_CURRENT= 0, /* affect current domain */ - VIR_DOMAIN_MEM_LIVE = (1 << 0), /* affect active domain */ - VIR_DOMAIN_MEM_CONFIG = (1 << 1), /* affect next boot */ + VIR_DOMAIN_MEM_CURRENT = 0, /* affect current domain state */ + VIR_DOMAIN_MEM_LIVE = (1 << 0), /* affect active domain */ + VIR_DOMAIN_MEM_CONFIG = (1 << 1), /* affect next boot */ } virDomainMemoryModFlags; diff --git i/src/libvirt.c w/src/libvirt.c index ee11643..dde4bd4 100644 --- i/src/libvirt.c +++ w/src/libvirt.c @@ -2822,14 +2822,17 @@ error: * Dynamically change the target amount of physical memory allocated to a * domain. If domain is NULL, then this change the amount of memory reserved * to Domain0 i.e. the domain where the application runs. - * This funcation may requires privileged access to the hypervisor. + * This function may requires privileged access to the hypervisor. * * @flags may include VIR_DOMAIN_MEM_LIVE or VIR_DOMAIN_MEM_CONFIG. * Both flags may be set. If VIR_DOMAIN_MEM_LIVE is set, the change affects - * a running domain and may fail if domain is not active. - * If VIR_DOMAIN_MEM_CONFIG is set, the change affects the next boot via - * the XML description on the domain. If neither flag is specified - * (=VIR_DOMAIN_MEM_CURRENT), behavior is different depending on hypervisor. + * a running domain and will fail if domain is not active. + * If VIR_DOMAIN_MEM_CONFIG is set, the change affects persistent state, + * and will fail for transient domains. If neither flag is specified + * (that is, @flags is VIR_DOMAIN_MEM_CURRENT), then an inactive domain + * modifies persistent setup, while an active domain is hypervisor-dependent + * on whether just live or both live and persistent state is changed. + * Not all hypervisors can support all flag combinations. * * Returns 0 in case of success, -1 in case of failure. */ -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org