Bug 1003682 - biosdevname does not set NAME for ethernet interfaces with KERNEL!="eth*"
biosdevname does not set NAME for ethernet interfaces with KERNEL!="eth*"
Product: Fedora
Classification: Fedora
Component: biosdevname (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Praveen K Paladugu
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2013-09-02 13:25 EDT by Harald Hoyer
Modified: 2013-09-02 13:27 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2013-09-02 13:27:41 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
Proposed patch (1.05 KB, patch)
2013-09-02 13:25 EDT, Harald Hoyer
no flags Details | Diff

  None (edit)
Description Harald Hoyer 2013-09-02 13:25:40 EDT
Created attachment 792936 [details]
Proposed patch

During the bootup processes with an initramfs, udev triggers two times with ACTION=="add".

In the first run, biosdevname would set NAME="em1" for KERNEL=="eth0".
In the second run, biosdevname would not set NAME="em1", because KERNEL!="eth0".
Therefore NAME=="" and the default systemd-udevd net names would kick in.

Proposed udev rules, which fix this issue are:

SUBSYSTEM!="net", GOTO="netdevicename_end"
ACTION!="add",    GOTO="netdevicename_end"
NAME=="?*",       GOTO="netdevicename_end"
ATTR{type}!="1",  GOTO="netdevicename_end"
ENV{DEVTYPE}=="?*", GOTO="netdevicename_end"

# kernel command line "biosdevname={0|1}" can turn off/on biosdevname
ENV{biosdevname}=="?*", ENV{UDEV_BIOSDEVNAME}="$env{biosdevname}"
# ENV{UDEV_BIOSDEVNAME} can be used for blacklist/whitelist
# but will be overwritten by the kernel command line argument
ENV{UDEV_BIOSDEVNAME}=="0", GOTO="netdevicename_end"
ENV{UDEV_BIOSDEVNAME}=="1", GOTO="netdevicename_start"

# uncomment the next line for biosdevname to be off by default
# GOTO="netdevicename_end"


# using NAME= instead of setting INTERFACE_NAME, so that persistent
# names aren't generated for these devices, they are "named" on each boot.
SUBSYSTEMS=="pci", PROGRAM="/sbin/biosdevname --policy physical -i %k", NAME="%c",  OPTIONS+="string_escape=replace"

Comment 1 Harald Hoyer 2013-09-02 13:26:38 EDT
RHEL bug 988766 hit this issue.

I built F20, rawhide and RHEL-7 packages with this patch.
Comment 2 Harald Hoyer 2013-09-02 13:27:41 EDT
Just FYI to fix this upstream.

Note You need to log in before you can comment on or make changes to this bug.