[libvirt] [PATCH 3/3] setmem: add --current option to virsh setmem command

Taku Izumi izumi.taku at jp.fujitsu.com
Wed Mar 23 05:49:28 UTC 2011


This patch adds the new option (--current) to the "virsh setmem" command.
When --current option is specified, it affects a "current" domain.
The word "current" denotes that if a domain is running, it affects
a running domain only; otherwise it affects a persistent domain.

Signed-off-by: Taku Izumi <izumi.taku at jp.fujitsu.com>
---
 tools/virsh.c   |   20 +++++++++++++++-----
 tools/virsh.pod |    7 +++++--
 2 files changed, 20 insertions(+), 7 deletions(-)

Index: libvirt/tools/virsh.c
===================================================================
--- libvirt.orig/tools/virsh.c
+++ libvirt/tools/virsh.c
@@ -2920,6 +2920,7 @@ static const vshCmdOptDef opts_setmem[]
     {"kilobytes", VSH_OT_INT, VSH_OFLAG_REQ, N_("number of kilobytes of memory")},
     {"config", VSH_OT_BOOL, 0, N_("affect next boot")},
     {"live", VSH_OT_BOOL, 0, N_("affect running domain")},
+    {"current", VSH_OT_BOOL, 0, N_("affect current domain")},
     {NULL, 0, 0, NULL}
 };

@@ -2932,14 +2933,23 @@ cmdSetmem(vshControl *ctl, const vshCmd
     int ret = TRUE;
     int config = vshCommandOptBool(cmd, "config");
     int live = vshCommandOptBool(cmd, "live");
+    int current = vshCommandOptBool(cmd, "current");
     int flags = 0;

-    /* Need to use flags if config was specified, but prefer older api
-     * for live-only behavior otherwise */
-    if (config) {
-        flags = VIR_DOMAIN_MEM_CONFIG;
+    if (current) {
+        if (live || config) {
+            vshError(ctl, "%s", _("--current must be specified exclusively"));
+            return FALSE;
+        }
+        flags = VIR_DOMAIN_MEM_CURRENT;
+    } else {
+        if (config)
+            flags |= VIR_DOMAIN_MEM_CONFIG;
         if (live)
             flags |= VIR_DOMAIN_MEM_LIVE;
+        /* neither option is specified */
+        if (!live && !config)
+            flags = -1;
     }

     if (!vshConnectionUsability(ctl, ctl->conn))
@@ -2972,7 +2982,7 @@ cmdSetmem(vshControl *ctl, const vshCmd
         return FALSE;
     }

-    if (!flags) {
+    if (flags == -1) {
         if (virDomainSetMemory(dom, kilobytes) != 0) {
             ret = FALSE;
         }
Index: libvirt/tools/virsh.pod
===================================================================
--- libvirt.orig/tools/virsh.pod
+++ libvirt/tools/virsh.pod
@@ -578,12 +578,15 @@ Therefore, -1 is a useful shorthand for
 B<Note>: The weight and cap parameters are defined only for the
 XEN_CREDIT scheduler and are now I<DEPRECATED>.

-=item B<setmem> I<domain-id> B<kilobytes> optional I<--config> I<--live>
+=item B<setmem> I<domain-id> B<kilobytes> optional I<--config> I<--live> I<--current>

 Change the memory allocation for a guest domain.
 If I<--live> is specified, perform a memory balloon of a running guest.
 If I<--config> is specified, affect the next boot of a persistent guest.
-Both flags may be given.  If neither flag is given, I<--live> is assumed.
+If I<--current> is specified, affect a current guest.
+Both I<--live> and I<--config> flags may be given, but I<--current> is
+exclusive. If neither flag is specified, behavior is different depending
+on hypervisor.

 Some hypervisors require a larger granularity than kilobytes, and requests
 that are not an even multiple will be rounded up.  For example, vSphere/ESX





More information about the libvir-list mailing list