[libvirt] [PATCH] Use correct pci addresses during interface-detach[v2]
Nitesh Konkar
niteshkonkar.libvirt at gmail.com
Mon Mar 7 08:45:50 UTC 2016
Hello Michal,
Thanks for the feedback. I have sent a follow up v3 version of my patch.
Warm Regards,
Nitesh Konkar.
On Mon, Feb 22, 2016 at 6:02 PM, Michal Privoznik <mprivozn at redhat.com>
wrote:
> On 19.02.2016 12:53, Nitesh Konkar wrote:
> > The virsh attach virsh detach interface command fails when both live
> and config
> > are set and when the interface gets attached to different pci slots
> > on live and config xml respectively.
> >
> > When we attach an interface with both --live and --config,
> > the first time they get the same PCI slots, but the second time
> > onwards it differs and hence the virsh detach-interface --live
> > --config command fails. This patch makes sure that when both
> > --live --config are set , qemuDomainDetachDeviceFlags is called
> > twice, once with config xml and once with live xml.
> >
> > Steps to see the issue:
> > virsh attach-interface --domain DomainName --type network --source
> default --mac 52:54:00:4b:76:5f --live --config
> > virsh detach-interface --domain DomainName --type network --mac
> 52:54:00:4b:76:5f --live --config
> > virsh attach-interface --domain DomainName --type network --source
> default --mac 52:54:00:4b:76:5f --live --config
> > virsh detach-interface --domain DomainName --type network --mac
> 52:54:00:4b:76:5f --live --config
> >
>
> Okay, I can see the problem but I find the solution a bit hackish.
>
> > Signed-off-by:nitkon12 at linux.vnet.ibm.com
> > ---
> > tools/virsh-domain.c | 14 ++++++++++++--
> > 1 file changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> > index 62acecb..43c8436 100644
> > --- a/tools/virsh-domain.c
> > +++ b/tools/virsh-domain.c
> > @@ -10815,7 +10815,7 @@ cmdDetachInterface(vshControl *ctl, const vshCmd
> *cmd)
> > char buf[64];
> > int diff_mac;
> > size_t i;
> > - int ret;
> > + int ret, flag_live_config_both = 0;
>
> This new flag makes me confused. I know what you're trying to achieve
> with it, but the name could be better. How about configDetached?
> Moreover, it's a boolean not an int.
>
> > bool functionReturn = false;
> > unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT;
> > bool current = vshCommandOptBool(cmd, "current");
> > @@ -10830,7 +10830,7 @@ cmdDetachInterface(vshControl *ctl, const vshCmd
> *cmd)
> >
> > if (config || persistent)
> > flags |= VIR_DOMAIN_AFFECT_CONFIG;
> > - if (live)
> > + if (!(config || persistent) && live) // Only Live
> > flags |= VIR_DOMAIN_AFFECT_LIVE;
>
> I don't think I follow. But maybe I'm misguided by --persistent.
> Historically it just an alias for --config. But not in this case. I
> wonder why.
>
> >
> > if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
> > @@ -10851,6 +10851,8 @@ cmdDetachInterface(vshControl *ctl, const vshCmd
> *cmd)
> > else
> > doc = virDomainGetXMLDesc(dom, 0);
> >
> > + forlivexml:
> > +
>
> I'd rather avoid introducing this kind of label. How about putting the
> important code (interface lookup in domain XML) into a separate function
> and call it twice if needed? That way you can also avoid using
> @flag_live_config_both.
>
> > if (!doc)
> > goto cleanup;
> >
> > @@ -10921,6 +10923,14 @@ cmdDetachInterface(vshControl *ctl, const
> vshCmd *cmd)
> > if (ret != 0) {
> > vshError(ctl, "%s", _("Failed to detach interface"));
> > } else {
> > + if ((config || persistent) && live && flag_live_config_both ==
> 0) {//executed only when live config both in cmd.
> > + doc = virDomainGetXMLDesc(dom, 0);
> > + flag_live_config_both=1; //Need to execute this code only
> once
> > + flags |= VIR_DOMAIN_AFFECT_LIVE; //set live flag
> > + flags &= (~VIR_DOMAIN_AFFECT_CONFIG ); // need to unset
> config flag as config xml detach is already done.
> > + mac=NULL;
> > + goto forlivexml;
> > + }
> > vshPrint(ctl, "%s", _("Interface detached successfully\n"));
> > functionReturn = true;
> > }
> >
>
> Then, this patch does not comply with our formatting rules. Run 'make
> syntax-check' to see all the problems.
>
> Looking forward to v3.
>
> Michal
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160307/61844744/attachment-0001.htm>
More information about the libvir-list
mailing list