[libvirt] [PATCH 5/6] tools: fix the wrong check when use virsh setvcpus --maximum
Pavel Hrdina
phrdina at redhat.com
Mon Mar 23 08:41:40 UTC 2015
On Mon, Mar 23, 2015 at 11:33:50AM +0800, Yanbing Du wrote:
>
>
> On 03/20/2015 10:39 PM, Pavel Hrdina wrote:
> > From: Luyao Huang <lhuang at redhat.com>
> >
> > We will ignore --maximum option when only use setvcpus with
> > this option, like this (this error is another issue):
> >
> > # virsh setvcpus test3 --maximum 10
> > error: Failed to create controller cpu for group: No such file or directory
> >
> > this is because we do not set it in flags before we check if there is
> > a flags set.
> >
> > Refactor these code and fix the logic.
> >
> > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1204033
> >
> > Signed-off-by: Luyao Huang <lhuang at redhat.com>
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> > tools/virsh-domain.c | 30 ++++++------------------------
> > 1 file changed, 6 insertions(+), 24 deletions(-)
> >
> > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> > index 1d8225c..9430ad9 100644
> > --- a/tools/virsh-domain.c
> > +++ b/tools/virsh-domain.c
> > @@ -6735,6 +6735,8 @@ cmdSetvcpus(vshControl *ctl, const vshCmd *cmd)
> > VSH_EXCLUSIVE_OPTIONS_VAR(current, live);
> > VSH_EXCLUSIVE_OPTIONS_VAR(current, config);
> > VSH_EXCLUSIVE_OPTIONS_VAR(guest, config);
> > + VSH_EXCLUSIVE_OPTIONS_VAR(guest, maximum);
> > + VSH_EXCLUSIVE_OPTIONS_VAR(config, maximum);
>
> 'maximum' should be used with 'config', and 'live' and 'maximum' are
> mutually exclusive
Yes, you're right, I've definitely meant live instead of config. Good catch.
Pavel
>
> >
> > if (config)
> > flags |= VIR_DOMAIN_AFFECT_CONFIG;
> > @@ -6742,9 +6744,8 @@ cmdSetvcpus(vshControl *ctl, const vshCmd *cmd)
> > flags |= VIR_DOMAIN_AFFECT_LIVE;
> > if (guest)
> > flags |= VIR_DOMAIN_VCPU_GUEST;
> > - /* none of the options were specified */
> > - if (!current && flags == 0)
> > - flags = -1;
> > + if (maximum)
> > + flags |= VIR_DOMAIN_VCPU_MAXIMUM;
> >
> > if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
> > return false;
> > @@ -6754,30 +6755,11 @@ cmdSetvcpus(vshControl *ctl, const vshCmd *cmd)
> > goto cleanup;
> > }
> >
> > - if (flags == -1) {
> > + /* none of the options were specified */
> > + if (!current && flags == 0) {
> > if (virDomainSetVcpus(dom, count) != 0)
> > goto cleanup;
> > } else {
> > - /* If the --maximum flag was given, we need to ensure only the
> > - --config flag is in effect as well */
> > - if (maximum) {
> > - vshDebug(ctl, VSH_ERR_DEBUG, "--maximum flag was given\n");
> > -
> > - flags |= VIR_DOMAIN_VCPU_MAXIMUM;
> > -
> > - /* If neither the --config nor --live flags were given, OR
> > - if just the --live flag was given, we need to error out
> > - warning the user that the --maximum flag can only be used
> > - with the --config flag */
> > - if (live || !config) {
> > -
> > - /* Warn the user about the invalid flag combination */
> > - vshError(ctl, _("--maximum must be used with --config only"));
> > - goto cleanup;
> > - }
> > - }
> > -
> > - /* Apply the virtual cpu changes */
> > if (virDomainSetVcpusFlags(dom, count, flags) < 0)
> > goto cleanup;
> > }
> >
>
> --
> Regards,
> Yanbing Du
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list