[libvirt] [PATCH 1/3] setmem: introduce VIR_DOMAIN_MEM_CURRENT flag

Eric Blake eblake at redhat.com
Thu Apr 7 23:23:41 UTC 2011


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 at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110407/daa12637/attachment-0001.sig>


More information about the libvir-list mailing list