[libvirt] [PATCHv2] virNetDevVethCreate: assign container if name based on parent if name

Oskari Saarenmaa os at ohmu.fi
Thu Aug 29 11:46:43 UTC 2013


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.

/ Oskari




More information about the libvir-list mailing list