On Tue, 2012-07-24 at 09:59 -0400, Chris Evich wrote:
> Good job!  I think I wrote it originally with the thought vm.create 
> could potentially be called to setup a VM with an existing underlying 
> qemu process and open tapfd.  Is it correct assumption then vm.create() 
> will only ever be called to start a new qemu process?

I thought about it, seems to be a safe assumption.

> There's already a lock being used to prevent simultanious vm.create() 
> usage.  However perhaps a check for multiple vm.create() calls would 
> help too?  Just a thought.

Hmmm, good question, need to think about it.

> Also, just a small thing - it's "establish" not "stablish" :)

Dammit, I keep forgetting about this one :) I'm not sure why I always
think the correct spelling is stablish...

> 
> On 07/23/2012 06:40 PM, Lucas Meneghel Rodrigues wrote:
> > This is a solution for issue #441.
> >
> > In kvm_vm.create(), the process of attaching each one
> > of the nics on kvm_vm.virtnet currently happens only
> > if the nic doesn't have a tapfd key. However, on test
> > failure (and consequent vm destruction), this field
> > will continue to be filled up, therefore a new connection
> > to the bridge will never be stablished, making all
> > subsequent tests to fail.
> >
> > However, the old networking code used to stablish the
> > network interface-bridge connection regardless of the
> > state of the nic, when create() is called. Applying the
> > same logic proved to be an effective solution for the
> > problem, therefore it's implemented on this patch.
> >
> > CC: Chris Evich<cev...@redhat.com>
> > CC: Lukas Doktor<ldok...@redhat.com>
> > Signed-off-by: Lucas Meneghel Rodrigues<l...@redhat.com>
> > ---
> >   client/virt/kvm_vm.py |   19 +++++++++----------
> >   1 file changed, 9 insertions(+), 10 deletions(-)
> >
> > diff --git a/client/virt/kvm_vm.py b/client/virt/kvm_vm.py
> > index 8d9c737..c2f803a 100644
> > --- a/client/virt/kvm_vm.py
> > +++ b/client/virt/kvm_vm.py
> > @@ -1457,16 +1457,15 @@ class VM(virt_vm.BaseVM):
> >                                       % (nic.nic_name, mac_source.name))
> >                       nic.mac = mac_source.get_mac_address(nic.nic_name)
> >                   if nic.nettype == 'bridge' or nic.nettype == 'network':
> > -                    if not nic.get('tapfd'):
> > -                        nic.tapfd = str(virt_utils.open_tap("/dev/net/tun",
> > -                                                            nic.ifname,
> > -                                                            
> > vnet_hdr=False))
> > -                        logging.debug("Adding VM %s NIC ifname %s"
> > -                                      " to bridge %s" % (self.name,
> > -                                            nic.ifname, nic.netdst))
> > -                        if nic.nettype == 'bridge':
> > -                            virt_utils.add_to_bridge(nic.ifname, 
> > nic.netdst)
> > -                        virt_utils.bring_up_ifname(nic.ifname)
> > +                    nic.tapfd = str(virt_utils.open_tap("/dev/net/tun",
> > +                                                        nic.ifname,
> > +                                                        vnet_hdr=False))
> > +                    logging.debug("Adding VM %s NIC ifname %s"
> > +                                  " to bridge %s" % (self.name,
> > +                                        nic.ifname, nic.netdst))
> > +                    if nic.nettype == 'bridge':
> > +                        virt_utils.add_to_bridge(nic.ifname, nic.netdst)
> > +                    virt_utils.bring_up_ifname(nic.ifname)
> >                   elif nic.nettype == 'user':
> >                       logging.info("Assuming dependencies met for "
> >                                    "user mode nic %s, and ready to go"
> 
> 


_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to