udev: net_id - support predictable ifnames on virtio buses
Virtio buses are undeterministically enumerated, so we cannot use them as a basis
for deterministic naming (see bf81e792f3
). However, we are guaranteed that there
is only ever one virtio bus for every parent device, so we can simply skip over
the virtio buses when naming the devices.
This commit is contained in:
parent
fc94c32605
commit
54683f0f9b
|
@ -280,8 +280,16 @@ static int names_pci(struct udev_device *dev, struct netnames *names) {
|
|||
assert(names);
|
||||
|
||||
parent = udev_device_get_parent(dev);
|
||||
|
||||
/* there can only ever be one virtio bus per parent device, so we can
|
||||
safely ignore any virtio buses. see
|
||||
<http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */
|
||||
while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
|
||||
parent = udev_device_get_parent(parent);
|
||||
|
||||
if (!parent)
|
||||
return -ENOENT;
|
||||
|
||||
/* check if our direct parent is a PCI device with no other bus in-between */
|
||||
if (streq_ptr("pci", udev_device_get_subsystem(parent))) {
|
||||
names->type = NET_PCI;
|
||||
|
|
Loading…
Reference in New Issue