[libvirt] [PATCHv2] virNetDevVethCreate: assign container if name based on parent if name
Daniel P. Berrange
berrange at redhat.com
Thu Aug 29 11:50:28 UTC 2013
On Thu, Aug 29, 2013 at 02:46:43PM +0300, Oskari Saarenmaa wrote:
> On Thu, Aug 29, 2013 at 11:28:43AM +0100, Daniel P. Berrange wrote:
> > On Thu, Aug 29, 2013 at 01:00:15PM +0300, Oskari Saarenmaa wrote:
> > > Replace the loop trying to find a free veth interface name for the container
> > > by assigning the container if name to parent name + 'p' by default.
> > > Interface name selection logic is susceptible to race conditions, so try to
> > > select just one name by default and use that as a template for the second
> > > name. The parent name can also be overriden in domain configuration.
> >
> > This doesn't do anything to solve the race condition AFAICT. You still
> > have the window between finding a free name, and calling the ip command
> > to allocate it.
>
> That's true, but I think this change makes sense as a standalone change for
> now; it makes sure libvirt uses the caller assigned names (if any) which
> let's the caller work around this by selecting the name they like.
>
> > What we need here is a change that will catch the failure from the ip
> > command, and then go back to the start and find free names and retry
> > the ip command.
>
> I don't like this approach. It would require us to parse ip's stderr which
> would be quite a bit of fragile code to handle a case that shouldn't ever
> happen. We should just select a unique interface name in the first place, I
> don't see any benefits in trying to force interface names to use low
> integers in their names.
That is not fixing the race condition at all.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list