View Issue Details

IDProjectCategoryView StatusLast Update
0007591CentOS-7systemdpublic2014-12-16 16:49
Reporterdzr Assigned To 
PriorityhighSeveritymajorReproducibilityalways
Status newResolutionopen 
OSCentOSOS Version7.0.1406 
Product Version7.0-1406 
Summary0007591: Systemd udev cannot rename network interfaces
DescriptionOn a system with multiple network cards, interfaces enumerate somewhat randomly which is to be expected. However, udev is unable to rename the interfaces based on configured parameters. I was unable to force a device name with udev persistent rules or with ifcfg script HWADDR entries. However, if I unload and reload the igb and ixgbe kernel modules in their appropriate order, devices are named appropriately.


Steps To ReproduceConfigure naming rules
Reboot system
Additional InformationSystemd commit 97595710b7 removed the ability for udev to rename an interface if the target name is in use. This causes the interface enumeration order to dictate whether a udev naming rule can be applied rather than the rules or link state dictating this.

This system has an intel i350 and an 82599. See the attached log file for enumeration examples and udev rules.


Sep 12 10:42:13 redacted-10g systemd-udevd[549]: starting version 208
Sep 12 10:42:15 redacted-10g systemd-udevd[565]: error changing net interface name eth2 to eth4: File exists
Sep 12 10:42:15 redacted-10g systemd-udevd[564]: error changing net interface name eth3 to eth2: File exists
Sep 12 10:42:15 redacted-10g systemd-udevd[569]: error changing net interface name eth4 to eth3: Device or resource busy

The behavior I am reporting is identical to behavior reported for Ubuntu:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1235162

This was patched here:
https://code.launchpad.net/~tj/ubuntu/saucy/systemd/lp1235162/+merge/189488

I manually applied the ubuntu patch as it was written and reinstalled systemd. Naming rules worked as expected after rebooting:

Sep 12 18:37:59 redacted-10g systemd-udevd[567]: renamed network interface eth4 to rename6
Sep 12 18:37:59 redacted-10g systemd-udevd[564]: renamed network interface eth3 to rename5
Sep 12 18:37:59 redacted-10g systemd-udevd[566]: renamed network interface eth2 to eth4
Sep 12 18:37:59 redacted-10g systemd-udevd[567]: renamed network interface rename6 to eth3
Sep 12 18:37:59 redacted-10g systemd-udevd[564]: renamed network interface rename5 to eth2
TagsNo tags attached.
abrt_hash
URL

Activities

dzr

dzr

2014-09-13 00:10

reporter  

centos_report.txt (8,893 bytes)   
70-persistent-net-rules.conf

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:2f:8c:38", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:2f:8c:39", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:2f:8c:3a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:2f:8c:3b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:c7:64:82", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:26:91:c7:64:83", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth5"

=======


Devices enumerating, notice eth3 is skipped:

Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.0: added PHC on eth0
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.0: eth0: (PCIe:5.0Gb/s:Width x4) 00:26:91:2f:8c:38
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.0: eth0: PBA No: 105900-000
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.1: added PHC on eth1
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.1: eth1: (PCIe:5.0Gb/s:Width x4) 00:26:91:2f:8c:39
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.1: eth1: PBA No: 105900-000
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.2: added PHC on eth2
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.2: eth2: (PCIe:5.0Gb/s:Width x4) 00:26:91:2f:8c:3a
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.2: eth2: PBA No: 105900-000
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.3: added PHC on eth4
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.3: eth4: (PCIe:5.0Gb/s:Width x4) 00:26:91:2f:8c:3b
Sep 12 13:28:35 redacted-10g kernel: igb 0000:06:00.3: eth4: PBA No: 105900-000
Sep 12 13:28:36 redacted-10g kernel: IPv6: ADDRCONF(NETDEV_UP): eth4: link is not ready
Sep 12 13:28:36 redacted-10g systemd-udevd[560]: error changing net interface name eth3 to eth4: File exists
Sep 12 13:28:36 redacted-10g systemd-udevd[556]: error changing net interface name eth4 to eth3: Device or resource busy
Sep 12 13:28:38 redacted-10g avahi-daemon[1486]: Joining mDNS multicast group on interface eth4.IPv4 with address 10.86.37.63.
Sep 12 13:28:38 redacted-10g avahi-daemon[1486]: New relevant interface eth4.IPv4 for mDNS.
Sep 12 13:28:38 redacted-10g avahi-daemon[1486]: Registering new address record for 10.86.37.63 on eth4.IPv4.
Sep 12 13:28:38 redacted-10g network[1482]: Bringing up interface eth4:  [  OK  ]
Sep 12 13:28:38 redacted-10g kernel: ixgbe 0000:81:00.1: registered PHC device on eth5
Sep 12 13:28:38 redacted-10g kernel: IPv6: ADDRCONF(NETDEV_UP): eth5: link is not ready
Sep 12 13:28:38 redacted-10g kernel: ixgbe 0000:81:00.1 eth5: detected SFP+: 4
Sep 12 13:28:39 redacted-10g ntpd[2269]: Listen normally on 4 eth4 10.86.37.63 UDP 123
Sep 12 13:28:40 redacted-10g kernel: ixgbe 0000:81:00.1 eth5: NIC Link is Up 10 Gbps, Flow Control: RX/TX
Sep 12 13:28:40 redacted-10g kernel: IPv6: ADDRCONF(NETDEV_CHANGE): eth5: link becomes ready
Sep 12 13:28:40 redacted-10g avahi-daemon[1486]: Joining mDNS multicast group on interface eth5.IPv4 with address 75.126.85.56.
Sep 12 13:28:40 redacted-10g avahi-daemon[1486]: New relevant interface eth5.IPv4 for mDNS.
Sep 12 13:28:40 redacted-10g avahi-daemon[1486]: Registering new address record for



=========
Earlier log showing udev persistent naming failing due to devices being online.

Sep 12 10:42:11 redacted-10g systemd[1]: Started dracut pre-udev hook.
Sep 12 10:42:11 redacted-10g systemd[1]: Starting udev Kernel Socket.
-- Subject: Unit systemd-udevd-kernel.socket has begun with start-up
-- Unit systemd-udevd-kernel.socket has begun starting up.
Sep 12 10:42:11 redacted-10g systemd[1]: Listening on udev Kernel Socket.
-- Subject: Unit systemd-udevd-kernel.socket has finished start-up
-- Unit systemd-udevd-kernel.socket has finished starting up.
Sep 12 10:42:11 redacted-10g systemd[1]: Starting udev Control Socket.
-- Subject: Unit systemd-udevd-control.socket has begun with start-up
-- Unit systemd-udevd-control.socket has begun starting up.
Sep 12 10:42:11 redacted-10g systemd[1]: Listening on udev Control Socket.
-- Subject: Unit systemd-udevd-control.socket has finished start-up
-- Unit systemd-udevd-control.socket has finished starting up.
Sep 12 10:42:11 redacted-10g systemd[1]: Starting udev Kernel Device Manager...
-- Subject: Unit systemd-udevd.service has begun with start-up
-- Unit systemd-udevd.service has begun starting up.
Sep 12 10:42:11 redacted-10g systemd-udevd[325]: starting version 208
Sep 12 10:42:11 redacted-10g systemd[1]: Started udev Kernel Device Manager.
-- Subject: Unit systemd-udevd.service has finished start-up
-- Unit systemd-udevd.service has finished starting up.
Sep 12 10:42:11 redacted-10g systemd[1]: Starting udev Coldplug all Devices...
-- Subject: Unit systemd-udev-trigger.service has begun with start-up
-- Unit systemd-udev-trigger.service has begun starting up.
Sep 12 10:42:11 redacted-10g systemd-udevd[327]: could not find module by name='ipmi_si'
Sep 12 10:42:11 redacted-10g systemd-udevd[327]: could not find module by name='ipmi_devintf'
Sep 12 10:42:11 redacted-10g systemd-udevd[327]: could not find module by name='ipmi_msghandler'
Sep 12 10:42:11 redacted-10g systemd[1]: Started udev Coldplug all Devices.
-- Subject: Unit systemd-udev-trigger.service has finished start-up
-- Unit systemd-udev-trigger.service has finished starting up.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopping udev Coldplug all Devices...
-- Subject: Unit systemd-udev-trigger.service has begun shutting down
-- Unit systemd-udev-trigger.service has begun shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopped udev Coldplug all Devices.
-- Subject: Unit systemd-udev-trigger.service has finished shutting down
-- Unit systemd-udev-trigger.service has finished shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopping udev Kernel Device Manager...
-- Subject: Unit systemd-udevd.service has begun shutting down
-- Unit systemd-udevd.service has begun shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopped udev Kernel Device Manager.
-- Subject: Unit systemd-udevd.service has finished shutting down
-- Unit systemd-udevd.service has finished shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopping udev Kernel Socket.
-- Subject: Unit systemd-udevd-kernel.socket has begun shutting down
-- Unit systemd-udevd-kernel.socket has begun shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Closed udev Kernel Socket.
-- Subject: Unit systemd-udevd-kernel.socket has finished shutting down
-- Unit systemd-udevd-kernel.socket has finished shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Stopping udev Control Socket.
-- Subject: Unit systemd-udevd-control.socket has begun shutting down
-- Unit systemd-udevd-control.socket has begun shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Closed udev Control Socket.
-- Subject: Unit systemd-udevd-control.socket has finished shutting down
-- Unit systemd-udevd-control.socket has finished shutting down.
Sep 12 10:42:12 redacted-10g systemd[1]: Starting Cleanup udevd DB...
-- Subject: Unit initrd-udevadm-cleanup-db.service has begun with start-up
-- Unit initrd-udevadm-cleanup-db.service has begun starting up.
Sep 12 10:42:12 redacted-10g systemd[1]: Started Cleanup udevd DB.
-- Subject: Unit initrd-udevadm-cleanup-db.service has finished start-up
-- Unit initrd-udevadm-cleanup-db.service has finished starting up.
Sep 12 10:42:13 redacted-10g systemd[1]: Started udev Coldplug all Devices.
-- Subject: Unit systemd-udev-trigger.service has finished start-up
-- Unit systemd-udev-trigger.service has finished starting up.
Sep 12 10:42:13 redacted-10g systemd[1]: Starting udev Kernel Device Manager...
-- Subject: Unit systemd-udevd.service has begun with start-up
-- Unit systemd-udevd.service has begun starting up.
Sep 12 10:42:13 redacted-10g systemd[1]: Started udev Kernel Device Manager.
-- Subject: Unit systemd-udevd.service has finished start-up
-- Unit systemd-udevd.service has finished starting up.
Sep 12 10:42:13 redacted-10g systemd-udevd[549]: starting version 208
Sep 12 10:42:15 redacted-10g systemd-udevd[565]: error changing net interface name eth2 to eth4: File exists
Sep 12 10:42:15 redacted-10g systemd-udevd[564]: error changing net interface name eth3 to eth2: File exists
Sep 12 10:42:15 redacted-10g systemd-udevd[569]: error changing net interface name eth4 to eth3: Device or resource busy
centos_report.txt (8,893 bytes)   

user1999

2014-09-13 00:19

  ~0020899

Last edited: 2014-09-13 00:20

Please file this request for enhancement at bugzilla.redhat.com. Being built from the sources published by RedHat, CentOS will automatically pick the change(s), once they are implemented.

watts

watts

2014-10-03 21:32

reporter   ~0021055

I'm also experiencing the same problem. The Ubuntu patch from last year applies cleanly in the RPM.

Asking around in the systemd IRC channel it appears that the change was deliberate. Perhaps I missed something, but it was very poorly communicated and there are many people that have a need to reshuffle ethX interfaces.

Hopefully Red Hat will realize the mistake and revert it. In the meantime we'll just have to maintain our own RPMs.
dzr

dzr

2014-10-04 00:23

reporter   ~0021056

I checked RH bugzilla before reporting this with RH. There was a similar bug filed and it was closed as wontfix.

user1999

2014-10-04 04:11

  ~0021057

Last edited: 2014-10-04 04:12

... and in this case, since CentOS aims 100% compatibility with RHEL, all we could do is add an entry in the CentOS 7 FAQ and note this difference in behaviour compared to previous releases.

aneagoe

aneagoe

2014-10-27 16:25

reporter   ~0021406

Do you remember which bug number it was filled under with RedHat? I checked their bugzilla but couldn't find it. Would like to chase this with them and it would help if I had the reference. Thx.
sej7278

sej7278

2014-12-16 16:49

reporter   ~0021968

do we have any progress on this, i've just noticed it when running a centos7 vm in exsi.

seems at some point vmware reordered the nics and to put them back i need to use udev (as sysconfig/network-scripts/ifcfg-eth* seems to ignore mac addresses).

the centos7faq incorrectly states:

"""If you have multiple interfaces and want to control naming of each device rather than letting the kernel do in its own way, /etc/udev/rules.d/60-net.rules seems necessary to override /usr/lib/udev/rules.d/60-net.rules."""

which is wrong as /usr/lib/udev/rules.d/60-net.rules doesn't exist and now we know that /etc/udev/rules.d/60-net.rules doesn't work either!

did we ever find the redhat bug?

Issue History

Date Modified Username Field Change
2014-09-13 00:10 dzr New Issue
2014-09-13 00:10 dzr File Added: centos_report.txt
2014-09-13 00:19 user1999 Note Added: 0020899
2014-09-13 00:20 user1999 Note Edited: 0020899
2014-10-03 21:32 watts Note Added: 0021055
2014-10-04 00:23 dzr Note Added: 0021056
2014-10-04 04:11 user1999 Note Added: 0021057
2014-10-04 04:12 user1999 Note Edited: 0021057
2014-10-27 16:25 aneagoe Note Added: 0021406
2014-12-16 16:49 sej7278 Note Added: 0021968