[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