Bug 1003682

Summary: biosdevname does not set NAME for ethernet interfaces with KERNEL!="eth*"
Product: [Fedora] Fedora Reporter: Harald Hoyer <harald>
Component: biosdevnameAssignee: Praveen K Paladugu <praveen_paladugu>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 20CC: harald, matt_domsch, mebrown, praveen_paladugu, vpavlin
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-02 17:27:41 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Proposed patch none

Description Harald Hoyer 2013-09-02 17:25:40 UTC
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
IMPORT{cmdline}="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"

LABEL="netdevicename_start"

# 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"

LABEL="netdevicename_end"

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

I built F20, rawhide and RHEL-7 packages with this patch.

Comment 2 Harald Hoyer 2013-09-02 17:27:41 UTC
Just FYI to fix this upstream.