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(a)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