fb7efbf012
Most notably revert of
743970d2ea
Resolves: #1170765,#1202598
39 lines
1.5 KiB
Diff
39 lines
1.5 KiB
Diff
From 7390da4b25fb32f2c6b1f743dda477e50078e5b2 Mon Sep 17 00:00:00 2001
|
|
From: Tom Gundersen <teg@jklm.no>
|
|
Date: Tue, 25 Aug 2015 14:12:19 +0200
|
|
Subject: [PATCH 42/47] 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 bf81e792f3c0). 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.
|
|
---
|
|
src/udev/udev-builtin-net_id.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
|
|
index 6e7e127..589f1f7 100644
|
|
--- a/src/udev/udev-builtin-net_id.c
|
|
+++ b/src/udev/udev-builtin-net_id.c
|
|
@@ -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;
|
|
--
|
|
2.5.0
|
|
|