]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
setmem: add --current option to virsh setmem command
authorTaku Izumi <izumi.taku@jp.fujitsu.com>
Wed, 23 Mar 2011 05:49:28 +0000 (14:49 +0900)
committerEric Blake <eblake@redhat.com>
Thu, 7 Apr 2011 23:19:46 +0000 (17:19 -0600)
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@jp.fujitsu.com>
tools/virsh.c
tools/virsh.pod

index a718abf09d2d739701e68ba1f5e8b138e0a7a6b6..e186c757c7685ac0d2f932b962af6a92058b02f9 100644 (file)
@@ -2932,6 +2932,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}
 };
 
@@ -2944,14 +2945,23 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
     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))
@@ -2984,7 +2994,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
         return FALSE;
     }
 
-    if (!flags) {
+    if (flags == -1) {
         if (virDomainSetMemory(dom, kilobytes) != 0) {
             ret = FALSE;
         }
index 6319373be898132741bf6ca71390b8ef52f6a2b3..580e1dcb96b01c34531d81906f06ac60694444d8 100644 (file)
@@ -583,11 +583,15 @@ 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>
+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 the current guest state.
+Both I<--live> and I<--config> flags may be given, but I<--current> is
+exclusive. If no 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