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@xxxxxxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list