On Thu, Jun 09, 2011 at 12:40:36PM +0900, Taku Izumi wrote: > > This patch adds the new option (--live, --config and --current) to > "virsh vcpupin" command. The behavior of above aption is the same as > that of "virsh setmem", "virsh setvcpus", and whatnot. > When the --config option is specified, the command affects a persistent > domain, > while --live option is specified, it affects a running (live) domain. > The --current option cannot be used with --config or --live at the same > time, > and when --current is specified, it affects a "current" domain. > > > Signed-off-by: Taku Izumi <izumi.taku@xxxxxxxxxxxxxx> > --- > tools/virsh.c | 33 +++++++++++++++++++++++++++++++-- > tools/virsh.pod | 8 +++++++- > 2 files changed, 38 insertions(+), 3 deletions(-) > > Index: libvirt/tools/virsh.c > =================================================================== > --- libvirt.orig/tools/virsh.c > +++ libvirt/tools/virsh.c > @@ -2929,6 +2929,9 @@ static const vshCmdOptDef opts_vcpupin[] > {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, > {"vcpu", VSH_OT_INT, VSH_OFLAG_REQ, N_("vcpu number")}, > {"cpulist", VSH_OT_DATA, VSH_OFLAG_REQ, N_("host cpu number(s) (comma > separated)")}, > + {"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} > }; > > @@ -2945,6 +2948,26 @@ cmdVcpupin(vshControl *ctl, const vshCmd > int cpumaplen; > int i; > enum { expect_num, expect_num_or_comma } state; > + int config = vshCommandOptBool(cmd, "config"); > + int live = vshCommandOptBool(cmd, "live"); > + int current = vshCommandOptBool(cmd, "current"); > + int flags = 0; > + > + if (current) { > + if (live || config) { > + vshError(ctl, "%s", _("--current must be specified > exclusively")); auto-wrapped. > + return false; > + } > + flags = VIR_DOMAIN_AFFECT_CURRENT; > + } else { > + if (config) > + flags |= VIR_DOMAIN_AFFECT_CONFIG; > + if (live) > + flags |= VIR_DOMAIN_AFFECT_LIVE; > + /* neither option is specified */ > + if (!live && !config) > + flags = -1; > + } > > if (!vshConnectionUsability(ctl, ctl->conn)) > return false; > @@ -3041,8 +3064,14 @@ cmdVcpupin(vshControl *ctl, const vshCmd > cpulist++; > } while (cpulist); > > - if (virDomainPinVcpu(dom, vcpu, cpumap, cpumaplen) != 0) { > - ret = false; > + if (flags == -1) { > + if (virDomainPinVcpu(dom, vcpu, cpumap, cpumaplen) != 0) { > + ret = false; > + } > + } else { > + if (virDomainPinVcpuFlags(dom, vcpu, cpumap, cpumaplen, flags) != > 0) { auto-wrapped. > + ret = false; > + } > } > > VIR_FREE(cpumap); > Index: libvirt/tools/virsh.pod > =================================================================== > --- libvirt.orig/tools/virsh.pod > +++ libvirt/tools/virsh.pod > @@ -790,10 +790,16 @@ values; these two flags cannot both be s > Returns basic information about the domain virtual CPUs, like the number of > vCPUs, the running time, the affinity to physical processors. > > -=item B<vcpupin> I<domain-id> I<vcpu> I<cpulist> > +=item B<vcpupin> I<domain-id> I<vcpu> I<cpulist> optional I<--live> > I<--config> > +I<--current> > > Pin domain VCPUs to host physical CPUs. The I<vcpu> number must be provided > and I<cpulist> is a comma separated list of physical CPU numbers. > +If I<--live> is specified, affect a running guest. > +If I<--config> is specified, affect the next boot of a persistent guest. > +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. auto-wrapped. > +If no flag is specified, behavior is different depending on hypervisor. > > =item B<vncdisplay> I<domain-id> > > > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list