SHA256
1
0
forked from pool/systemd

Accepting request 308492 from home:jengelh:branches:Base:System

- Drop 1021-patch, ...
  those parts are moved to a separate package (udev-persistent-ifnames, SR 308347)

OBS-URL: https://build.opensuse.org/request/show/308492
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=870
This commit is contained in:
Cristian Rodríguez 2015-05-26 01:06:32 +00:00 committed by Git OBS Bridge
parent 53f6858b56
commit 4fcc5bbf99
12 changed files with 36 additions and 721 deletions

View File

@ -1,547 +0,0 @@
---
Makefile.am | 9
src/udev/net/link-config.c | 17 +
src/udev/rule_generator/75-persistent-net-generator.rules | 105 ++++++++++
src/udev/rule_generator/76-net-sriov-names.rules | 18 +
src/udev/rule_generator/net-set-sriov-names | 79 +++++++
src/udev/rule_generator/rule_generator.functions | 113 +++++++++++
src/udev/rule_generator/write_net_rules | 141 ++++++++++++++
7 files changed, 479 insertions(+), 3 deletions(-)
Index: systemd-218/Makefile.am
===================================================================
--- systemd-218.orig/Makefile.am
+++ systemd-218/Makefile.am
@@ -3416,7 +3416,14 @@ dist_udevrules_DATA += \
rules/75-tty-description.rules \
rules/78-sound-card.rules \
rules/80-net-setup-link.rules \
- rules/95-udev-late.rules
+ rules/95-udev-late.rules \
+ src/udev/rule_generator/75-persistent-net-generator.rules \
+ src/udev/rule_generator/76-net-sriov-names.rules
+
+udevlibexec_PROGRAMS += \
+ src/udev/rule_generator/rule_generator.functions \
+ src/udev/rule_generator/write_net_rules \
+ src/udev/rule_generator/net-set-sriov-names
nodist_udevrules_DATA += \
rules/99-systemd.rules
Index: systemd-218/src/udev/net/link-config.c
===================================================================
--- systemd-218.orig/src/udev/net/link-config.c
+++ systemd-218/src/udev/net/link-config.c
@@ -176,16 +176,29 @@ static bool enable_name_policy(void) {
size_t l;
r = proc_cmdline(&line);
- if (r < 0) {
+ if (r < 0)
log_warning_errno(r, "Failed to read /proc/cmdline, ignoring: %m");
+#if defined(NET_IFNAMES) && (NET_IFNAMES == 1)
+# warning Using persistent rules as a default
+ if (r < 0)
+ return false;
+
+ FOREACH_WORD_QUOTED(w, l, line, state)
+ if (strneq(w, "net.ifnames=1", l))
+ return true;
+
+ return false;
+#else
+# warning Using predictable rules as a default
+ if (r < 0)
return true;
- }
FOREACH_WORD_QUOTED(word, l, line, state)
if (strneq(word, "net.ifnames=0", l))
return false;
return true;
+#endif
}
int link_config_load(link_config_ctx *ctx) {
Index: systemd-218/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -0,0 +1,105 @@
+# do not edit this file, it will be overwritten on update
+
+# these rules generate rules for persistent network device naming
+#
+# variables used to communicate:
+# MATCHADDR MAC address used for the match
+# MATCHID bus_id used for the match
+# MATCHDRV driver name used for the match
+# MATCHIFTYPE interface type match
+# COMMENT comment to add to the generated rule
+# INTERFACE_NAME requested name supplied by external tool
+# INTERFACE_NEW new interface name returned by rule writer
+
+ACTION!="add", GOTO="persistent_net_generator_end"
+SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
+
+# ignore the interface if a name has already been set
+NAME=="?*", GOTO="persistent_net_generator_end"
+
+# device name whitelist
+KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
+
+IMPORT{cmdline}="net.ifnames"
+ENV{net.ifnames}=="1", GOTO="persistent_net_generator_end"
+
+# ignore Xen virtual interfaces
+SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
+
+# read MAC address
+ENV{MATCHADDR}="$attr{address}"
+
+# match interface type
+ENV{MATCHIFTYPE}="$attr{type}"
+
+# ignore KVM virtual interfaces
+ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end"
+# ignore VMWare virtual interfaces
+ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", GOTO="persistent_net_generator_end"
+# ignore Hyper-V virtual interfaces
+ENV{MATCHADDR}=="00:15:5d:*", GOTO="persistent_net_generator_end"
+
+# These vendors are known to violate the local MAC address assignment scheme
+# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom
+ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist"
+# 3Com
+ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist"
+# 3Com IBM PC; Imagen; Valid; Cisco; Apple
+ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist"
+# Intel
+ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist"
+# Olivetti
+ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist"
+# CMC Masscomp; Silicon Graphics; Prime EXL
+ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist"
+# Prominet Corporation Gigabit Ethernet Switch
+ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist"
+# BTI (Bus-Tech, Inc.) IBM Mainframes
+ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist"
+# Realtek
+ENV{MATCHADDR}=="52:54:00:*", GOTO="globally_administered_whitelist"
+# Novell 2000
+ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist"
+# Realtec
+ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist"
+# Kingston Technologies
+ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist"
+# Xensource
+ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
+
+# match interface dev_id
+ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+
+# do not use "locally administered" MAC address
+ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
+
+# do not use empty address
+ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
+
+LABEL="globally_administered_whitelist"
+
+# build comment line for generated rule:
+SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)"
+SUBSYSTEMS=="pcmcia", ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)"
+SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})"
+
+# ibmveth likes to use "locally administered" MAC addresses
+DRIVERS=="ibmveth", ENV{MATCHADDR}="$attr{address}", ENV{COMMENT}="ibmveth ($id)"
+
+# S/390 uses id matches only, do not use MAC address match
+SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{MATCHID}="$id", ENV{MATCHDRV}="$driver", ENV{MATCHADDR}=""
+
+# see if we got enough data to create a rule
+ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", GOTO="persistent_net_generator_end"
+
+# default comment
+ENV{COMMENT}=="", ENV{COMMENT}="net device ($attr{driver})"
+
+# write rule
+DRIVERS=="?*", IMPORT{program}="write_net_rules"
+
+# rename interface if needed
+ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
+
+LABEL="persistent_net_generator_end"
Index: systemd-218/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rule_generator/76-net-sriov-names.rules
@@ -0,0 +1,18 @@
+# do not edit this file, it will be overwritten on update
+#
+# rename SRIOV virtual function interfaces
+
+ACTION=="remove", GOTO="net-sriov-names_end"
+SUBSYSTEM!="net", GOTO="net-sriov-names_end"
+
+IMPORT{cmdline}="net.ifnames"
+ENV{net.ifnames}=="1", GOTO="net-sriov-names_end"
+
+SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", NAME=="?*", ENV{INTERFACE_NEW}="$name"
+SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACTION=="add", IMPORT{program}="net-set-sriov-names"
+
+# rename interface if needed
+ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
+ENV{INTERFACE_NEW}=="", DRIVERS=="cxgb4vf|igbvf|ixgbevf", NAME="vf$attr{ifindex}"
+
+LABEL="net-sriov-names_end"
Index: systemd-218/src/udev/rule_generator/net-set-sriov-names
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rule_generator/net-set-sriov-names
@@ -0,0 +1,79 @@
+#!/bin/bash -e
+#
+# This script is run to rename virtual interfaces
+#
+
+if [ -n "$UDEV_LOG" ]; then
+ if [ "$UDEV_LOG" -ge 7 ]; then
+ set -x
+ fi
+fi
+
+# according to dev_new_index(), ifindex is within [1, INT_MAX]
+int_max=$(/usr/bin/getconf INT_MAX)
+ifindex_before() {
+ a=$1
+ b=$2
+
+ ((0 < (b - a) && (b - a) < int_max / 2 ||
+ -1 * int_max < (b - a) && (b - a) < -1 * int_max / 2))
+}
+
+rename_interface() {
+ local src_net=$1
+ local dest_net=$2
+ local err=0
+
+ /sbin/ip link set dev $src_net down
+ /sbin/ip link set dev $src_net name $dest_net
+}
+
+if [ -z "$INTERFACE" ]; then
+ echo "missing \$INTERFACE" >&2
+ exit 1
+fi
+
+if [ -e "/sys/class/net/$INTERFACE/device/physfn" ]; then
+ pf=$(ls -1 "/sys/class/net/$INTERFACE/device/physfn/net")
+ if [ $(echo "$pf" | wc -l) -ne 1 ]; then
+ echo "too many pf's" >&2
+ exit 1
+ fi
+ read vfindex < "/sys/class/net/$INTERFACE/ifindex"
+ read pfindex < "/sys/class/net/$pf/ifindex"
+ if ifindex_before $pfindex $vfindex; then
+ bus_info=$(basename $(readlink "/sys/class/net/$INTERFACE/device"))
+ for virtfn in "/sys/class/net/$pf/device/"virtfn*; do
+ if [ "$(basename $(readlink "$virtfn"))" = "$bus_info" ]; then
+ vfnum=$(basename "$virtfn")
+ vfnum=${vfnum#virtfn}
+ echo "INTERFACE_NEW=$pf.vf$vfnum"
+ exit 0
+ fi
+ done
+ fi
+fi
+
+read pfindex < "/sys/class/net/$INTERFACE/ifindex"
+shopt -s nullglob
+for virtfn in "/sys/class/net/$INTERFACE/device/"virtfn*; do
+ vf=$(ls -1 "$virtfn/net")
+ if [ $(echo "$vf" | wc -l) -ne 1 ]; then
+ echo "too many vf's" >&2
+ exit 1
+ fi
+ read vfindex < "/sys/class/net/$vf/ifindex"
+ if ifindex_before $vfindex $pfindex; then
+ vfnum=$(basename "$virtfn")
+ vfnum=${vfnum#virtfn}
+ if [ "$INTERFACE_NEW" ]; then
+ new_name=$INTERFACE_NEW
+ else
+ new_name=$INTERFACE
+ fi
+ new_name="$new_name.vf$vfnum"
+ if [ "$vf" != "$new_name" ]; then
+ rename_interface "$vf" "$new_name"
+ fi
+ fi
+done
Index: systemd-218/src/udev/rule_generator/rule_generator.functions
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rule_generator/rule_generator.functions
@@ -0,0 +1,113 @@
+# functions used by the udev rule generator
+
+# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+PATH='/usr/bin:/bin:/usr/sbin:/sbin'
+
+# Read a single line from file $1 in the $DEVPATH directory.
+# The function must not return an error even if the file does not exist.
+sysread() {
+ local file="$1"
+ [ -e "/sys$DEVPATH/$file" ] || return 0
+ local value
+ read value < "/sys$DEVPATH/$file" || return 0
+ echo "$value"
+}
+
+sysreadlink() {
+ local file="$1"
+ [ -e "/sys$DEVPATH/$file" ] || return 0
+ readlink -f /sys$DEVPATH/$file 2> /dev/null || true
+}
+
+# Return true if a directory is writeable.
+writeable() {
+ if ln -s test-link $1/.is-writeable 2> /dev/null; then
+ rm -f $1/.is-writeable
+ return 0
+ else
+ return 1
+ fi
+}
+
+# Create a lock file for the current rules file.
+lock_rules_file() {
+ RUNDIR="/run/udev"
+ [ -e "$RUNDIR" ] || return 0
+
+ RULES_LOCK="$RUNDIR/.lock-${RULES_FILE##*/}"
+
+ retry=30
+ while ! mkdir $RULES_LOCK 2> /dev/null; do
+ if [ $retry -eq 0 ]; then
+ echo "Cannot lock $RULES_FILE!" >&2
+ exit 2
+ fi
+ sleep 1
+ retry=$(($retry - 1))
+ done
+}
+
+unlock_rules_file() {
+ [ "$RULES_LOCK" ] || return 0
+ rmdir $RULES_LOCK || true
+}
+
+# Choose the real rules file if it is writeable or a temporary file if not.
+# Both files should be checked later when looking for existing rules.
+choose_rules_file() {
+ RUNDIR="/run/udev"
+ local tmp_rules_file="$RUNDIR/tmp-rules--${RULES_FILE##*/}"
+ [ -e "$RULES_FILE" -o -e "$tmp_rules_file" ] || PRINT_HEADER=1
+
+ if writeable ${RULES_FILE%/*}; then
+ RO_RULES_FILE='/dev/null'
+ else
+ RO_RULES_FILE=$RULES_FILE
+ RULES_FILE=$tmp_rules_file
+ fi
+}
+
+# Return the name of the first free device.
+raw_find_next_available() {
+ local links="$1"
+
+ local basename=${links%%[ 0-9]*}
+ local max=-1
+ for name in $links; do
+ local num=${name#$basename}
+ [ "$num" ] || num=0
+ [ $num -gt $max ] && max=$num
+ done
+
+ local max=$(($max + 1))
+ # "name0" actually is just "name"
+ [ $max -eq 0 ] && return
+ echo "$max"
+}
+
+# Find all rules matching a key (with action) and a pattern.
+find_all_rules() {
+ local key="$1"
+ local linkre="$2"
+ local match="$3"
+
+ local search='.*[[:space:],]'"$key"'"('"$linkre"')".*'
+ echo $(sed -n -r -e 's/^#.*//' -e "${match}s/${search}/\1/p" \
+ $RO_RULES_FILE \
+ $([ -e $RULES_FILE ] && echo $RULES_FILE) \
+ 2>/dev/null)
+}
Index: systemd-218/src/udev/rule_generator/write_net_rules
===================================================================
--- /dev/null
+++ systemd-218/src/udev/rule_generator/write_net_rules
@@ -0,0 +1,141 @@
+#!/bin/sh -e
+
+# This script is run to create persistent network device naming rules
+# based on properties of the device.
+# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
+# on stdout to allow udev to IMPORT it.
+
+# variables used to communicate:
+# MATCHADDR MAC address used for the match
+# MATCHID bus_id used for the match
+# MATCHDEVID dev_id used for the match
+# MATCHDRV driver name used for the match
+# MATCHIFTYPE interface type match
+# COMMENT comment to add to the generated rule
+# INTERFACE_NAME requested name supplied by external tool
+# INTERFACE_NEW new interface name returned by rule writer
+
+# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
+# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# debug, if UDEV_LOG=<debug>
+if [ -n "$UDEV_LOG" ]; then
+ if [ "$UDEV_LOG" -ge 7 ]; then
+ set -x
+ fi
+fi
+
+RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+
+. /usr/lib/udev/rule_generator.functions
+
+interface_name_taken() {
+ local value="$(find_all_rules 'NAME=' $INTERFACE)"
+ if [ "$value" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+find_next_available() {
+ raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
+}
+
+write_rule() {
+ local match="$1"
+ local name="$2"
+ local comment="$3"
+
+ {
+ if [ "$PRINT_HEADER" ]; then
+ PRINT_HEADER=
+ echo "# This file was automatically generated by the $0"
+ echo "# program, run by the persistent-net-generator.rules rules file."
+ echo "#"
+ echo "# You can modify it, as long as you keep each rule on a single"
+ echo "# line, and change only the value of the NAME= key."
+ fi
+
+ echo ""
+ [ "$comment" ] && echo "# $comment"
+ echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
+ } >> $RULES_FILE
+}
+
+if [ -z "$INTERFACE" ]; then
+ echo "missing \$INTERFACE" >&2
+ exit 1
+fi
+
+# Prevent concurrent processes from modifying the file at the same time.
+lock_rules_file
+
+# Check if the rules file is writeable.
+choose_rules_file
+
+# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
+if [ "$MATCHADDR" ]; then
+ match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
+fi
+
+if [ "$MATCHDRV" ]; then
+ match="$match, DRIVERS==\"$MATCHDRV\""
+fi
+
+if [ "$MATCHDEVID" ]; then
+ match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
+fi
+
+if [ "$MATCHID" ]; then
+ match="$match, KERNELS==\"$MATCHID\""
+fi
+
+if [ "$MATCHIFTYPE" ]; then
+ match="$match, ATTR{type}==\"$MATCHIFTYPE\""
+fi
+
+if [ -z "$match" ]; then
+ echo "missing valid match" >&2
+ unlock_rules_file
+ exit 1
+fi
+
+basename=${INTERFACE%%[0-9]*}
+match="$match, KERNEL==\"$basename*\""
+
+if [ "$INTERFACE_NAME" ]; then
+ # external tools may request a custom name
+ COMMENT="$COMMENT (custom name provided by external tool)"
+ if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
+ INTERFACE=$INTERFACE_NAME;
+ echo "INTERFACE_NEW=$INTERFACE"
+ fi
+else
+ # if a rule using the current name already exists, find a new name
+ if interface_name_taken; then
+ INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
+ # prevent INTERFACE from being "eth" instead of "eth0"
+ [ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
+ echo "INTERFACE_NEW=$INTERFACE"
+ fi
+fi
+
+write_rule "$match" "$INTERFACE" "$COMMENT"
+
+unlock_rules_file
+
+exit 0

View File

@ -1,14 +0,0 @@
Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules
+++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -68,7 +68,8 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob
ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
# match interface dev_id
-ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+# disable due to bnc#882714
+# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
# do not use "locally administered" MAC address
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""

View File

@ -1,16 +0,0 @@
Index: systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/75-persistent-net-generator.rules
+++ systemd-210/src/udev/rule_generator/75-persistent-net-generator.rules
@@ -68,8 +68,9 @@ ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="glob
ENV{MATCHADDR}=="00:16:3e:*", GOTO="globally_administered_whitelist"
# match interface dev_id
-# disable due to bnc#882714
-# ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
+# HACK: for s390x, if layer2 == 0, dont use dev_id
+ENV{LAYER2}="1", TEST=="device/layer2", ENV{LAYER2}="$attr{device/layer2}"
+ENV{LAYER2}!="0", ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
# do not use "locally administered" MAC address
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""

View File

@ -1,16 +0,0 @@
Index: systemd-210/src/udev/rule_generator/write_net_rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/write_net_rules
+++ systemd-210/src/udev/rule_generator/write_net_rules
@@ -101,6 +101,11 @@ if [ "$MATCHDEVID" ]; then
fi
if [ "$MATCHID" ]; then
+ ID="$(find_all_rules 'KERNELS==' "$MATCHID")"
+ if [ "$ID" == "$MATCHID" ]; then
+ unlock_rules_file
+ exit 0
+ fi
match="$match, KERNELS==\"$MATCHID\""
fi

View File

@ -1,12 +0,0 @@
Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/76-net-sriov-names.rules
+++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
@@ -4,6 +4,7 @@
ACTION=="remove", GOTO="net-sriov-names_end"
SUBSYSTEM!="net", GOTO="net-sriov-names_end"
+KERNEL!="eth*", GOTO="net-sriov-names_end"
IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="1", GOTO="net-sriov-names_end"

View File

@ -1,12 +0,0 @@
Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/76-net-sriov-names.rules
+++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
@@ -5,6 +5,7 @@
ACTION=="remove", GOTO="net-sriov-names_end"
SUBSYSTEM!="net", GOTO="net-sriov-names_end"
KERNEL!="eth*", GOTO="net-sriov-names_end"
+NAME=="?*", GOTO="net-sriov-names_end"
IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="1", GOTO="net-sriov-names_end"

View File

@ -1,29 +0,0 @@
Index: systemd-210/src/udev/rule_generator/write_net_rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/write_net_rules
+++ systemd-210/src/udev/rule_generator/write_net_rules
@@ -89,6 +89,12 @@ choose_rules_file
# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
if [ "$MATCHADDR" ]; then
+ # Check if MACADDR doesn't exist already in the generated rules
+ MAC="$(/usr/bin/grep -w -o -C1 -m1 "$MATCHADDR" "$RULES_FILE" 2>/dev/null || true)"
+ if [ "$MAC" = "$MATCHADDR" ]; then
+ unlock_rules_file
+ exit 0
+ fi
match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
fi
@@ -101,8 +107,9 @@ if [ "$MATCHDEVID" ]; then
fi
if [ "$MATCHID" ]; then
- ID="$(find_all_rules 'KERNELS==' "$MATCHID")"
- if [ "$ID" == "$MATCHID" ]; then
+ # Check if KERNEL doesn't exist already in the generated rules
+ KERNEL="$(find_all_rules 'KERNELS==' "$MATCHID")"
+ if [ "$KERNEL" = "$MATCHID" ]; then
unlock_rules_file
exit 0
fi

View File

@ -1,11 +0,0 @@
Index: systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
===================================================================
--- systemd-210.orig/src/udev/rule_generator/76-net-sriov-names.rules
+++ systemd-210/src/udev/rule_generator/76-net-sriov-names.rules
@@ -15,6 +15,5 @@ SUBSYSTEM=="net", SUBSYSTEMS=="pci", ACT
# rename interface if needed
ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
-ENV{INTERFACE_NEW}=="", DRIVERS=="cxgb4vf|igbvf|ixgbevf", NAME="vf$attr{ifindex}"
LABEL="net-sriov-names_end"

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Mon May 18 12:25:54 UTC 2015 - jengelh@inai.de
- Drop 1021-udev-re-add-persistent-net-rules.patch,
1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch,
1040-re-enable-dev_id-conditionally-in-persistent-rules.patch,
1046-fix-duplicated-rules-with-layer3-interfaces.patch,
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch,
1051-check-if-NAME-has-a-value.patch,
1053-better-checks-in-write_net_rules.patch,
1088-drop-renaming-of-virtual-interfaces-in-guest.patch.
1021 originally broke parsing of net.ifnames=0 [bnc#931165],
and given that neither the kernel command line needs to be
touched nor the source be patched to reach the unpredictable
naming setup for SLE, all these parts are moved to a separate
package.
-------------------------------------------------------------------
Mon May 18 14:39:47 UTC 2015 - werner@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd-mini
#
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -281,24 +281,10 @@ Patch1011: 1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch
Patch1012: 1012-Skip-persistent-device-link-creation-on-multipath-de.patch
# PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931)
Patch1013: 1013-no-runtime-PM-for-IBM-consoles.patch
# PATCH-FIX-SUSE 1021-udev-re-add-persistent-net-rules.patch
Patch1021: 1021-udev-re-add-persistent-net-rules.patch
# PATCH-FIX-SUSE 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
Patch1035: 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
# PATCH-FIX-SUSE 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
Patch1036: 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
# PATCH-FIX-SUSE See bnc#882714 comment #51
Patch1037: 1037-udev-exclude-cd-dvd-from-block-device.patch
# PATCH-FIX-SUSE 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch (bnc#884403 and bnc#882714)
Patch1040: 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch
# PATCH-FIX-SUSE 1046-fix-duplicated-rules-with-layer3-interfaces.patch (bnc#882714)
Patch1046: 1046-fix-duplicated-rules-with-layer3-interfaces.patch
# PATCH-FIX-SUSE 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch (bnc#885232)
Patch1050: 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
# PATCH-FIX-SUSE 1051-check-if-NAME-has-a-value.patch (bnc#885232)
Patch1051: 1051-check-if-NAME-has-a-value.patch
# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178)
Patch1053: 1053-better-checks-in-write_net_rules.patch
# PATCH-FIX-SUSE 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
Patch1055: 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
# PATCH-FIX-SUSE 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch
@ -307,8 +293,6 @@ Patch1060: 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.p
Patch1062: 1062-rules-set-default-permissions-for-GenWQE-devices.patch
# PATCH-FIX-SUSE 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch (bnc#886852)
Patch1066: 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch
# PATCH-FIX-SUSE 1088-drop-renaming-of-virtual-interfaces-in-guest.patch (bnc#898432)
Patch1088: 1088-drop-renaming-of-virtual-interfaces-in-guest.patch
# PATCH-FIX-SUSE 1095-set-ssd-disk-to-use-deadline-scheduler.patch (bnc#904517)
Patch1095: 1095-set-ssd-disk-to-use-deadline-scheduler.patch
# PATCH-FIX-SUSE 1096-new-udev-root-symlink-generator.patch
@ -633,17 +617,10 @@ cp %{SOURCE7} m4/
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1021 -p1
%patch1035 -p1
%patch1036 -p1
%if %{with blkrrpart}
%patch1037 -p1
%endif
%patch1040 -p1
%patch1046 -p1
%patch1050 -p1
%patch1051 -p1
%patch1053 -p1
%if %{with blkrrpart}
%else
%patch1055 -p1
@ -651,7 +628,6 @@ cp %{SOURCE7} m4/
%patch1060 -p1
%patch1062 -p1
%patch1066 -p1
%patch1088 -p1
%patch1095 -p1
%patch1096 -p1
%patch1097 -p1
@ -724,10 +700,6 @@ export LDFLAGS
CFLAGS="$CFLAGS -DNET_IFNAMES=1"
%else
CFLAGS="$CFLAGS -DNET_IFNAMES=0"
for rules in 75-persistent-net-generator 76-net-sriov-names
do
sed -ri '/^ENV\{net.ifnames\}=="1", GOTO="[^"]*"$/{ s/=="1"/!="0"/ }' src/udev/rule_generator/${rules}.rules
done
%endif
cflags -pipe CFLAGS
cflags -Wl,-O2 LDFLAGS
@ -1491,10 +1463,7 @@ exit 0
%{_prefix}/lib/udev/scsi_id
%{_prefix}/lib/udev/v4l_id
%{_prefix}/lib/udev/udev-generate-persistent-rule
%{_prefix}/lib/udev/net-set-sriov-names
%{_prefix}/lib/udev/remount-tmpfs
%{_prefix}/lib/udev/rule_generator.functions
%{_prefix}/lib/udev/write_net_rules
%{_prefix}/lib/udev/rootsymlink-generator
%dir %{_prefix}/lib/udev/rules.d/
%exclude %{_prefix}/lib/udev/rules.d/70-uaccess.rules

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Mon May 18 12:25:54 UTC 2015 - jengelh@inai.de
- Drop 1021-udev-re-add-persistent-net-rules.patch,
1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch,
1040-re-enable-dev_id-conditionally-in-persistent-rules.patch,
1046-fix-duplicated-rules-with-layer3-interfaces.patch,
1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch,
1051-check-if-NAME-has-a-value.patch,
1053-better-checks-in-write_net_rules.patch,
1088-drop-renaming-of-virtual-interfaces-in-guest.patch.
1021 originally broke parsing of net.ifnames=0 [bnc#931165],
and given that neither the kernel command line needs to be
touched nor the source be patched to reach the unpredictable
naming setup for SLE, all these parts are moved to a separate
package.
-------------------------------------------------------------------
Mon May 18 14:39:47 UTC 2015 - werner@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package systemd
#
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -276,24 +276,10 @@ Patch1011: 1011-64-btrfs.rules-skip-btrfs-check-if-devices-are-not-r.patch
Patch1012: 1012-Skip-persistent-device-link-creation-on-multipath-de.patch
# PATCH-FIX-SUSE Do not use runtime PM for some IBM consoles (bnc#868931)
Patch1013: 1013-no-runtime-PM-for-IBM-consoles.patch
# PATCH-FIX-SUSE 1021-udev-re-add-persistent-net-rules.patch
Patch1021: 1021-udev-re-add-persistent-net-rules.patch
# PATCH-FIX-SUSE 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
Patch1035: 1035-99-systemd.rules-Ignore-devices-with-SYSTEMD_READY-0.patch
# PATCH-FIX-SUSE 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
Patch1036: 1036-rules-disable-usage-of-dev_id-in-persistent-rules.patch
# PATCH-FIX-SUSE See bnc#882714 comment #51
Patch1037: 1037-udev-exclude-cd-dvd-from-block-device.patch
# PATCH-FIX-SUSE 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch (bnc#884403 and bnc#882714)
Patch1040: 1040-re-enable-dev_id-conditionally-in-persistent-rules.patch
# PATCH-FIX-SUSE 1046-fix-duplicated-rules-with-layer3-interfaces.patch (bnc#882714)
Patch1046: 1046-fix-duplicated-rules-with-layer3-interfaces.patch
# PATCH-FIX-SUSE 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch (bnc#885232)
Patch1050: 1050-only-rename-SRIOV-VF-devices-when-name-starts-with-eth.patch
# PATCH-FIX-SUSE 1051-check-if-NAME-has-a-value.patch (bnc#885232)
Patch1051: 1051-check-if-NAME-has-a-value.patch
# PATCH-FIX-SUSE 1053-better-checks-in-write_net_rules.patch (bnc#888178)
Patch1053: 1053-better-checks-in-write_net_rules.patch
# PATCH-FIX-SUSE 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
Patch1055: 1055-let-9719859c07aa13539ed2cd4b31972cd30f678543-apply.patch
# PATCH-FIX-SUSE 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.patch
@ -302,8 +288,6 @@ Patch1060: 1060-udev-use-device-mapper-target-name-for-btrfs-device-ready.p
Patch1062: 1062-rules-set-default-permissions-for-GenWQE-devices.patch
# PATCH-FIX-SUSE 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch (bnc#886852)
Patch1066: 1066-udev-add-compatibility-links-for-truncated-by-id-links.patch
# PATCH-FIX-SUSE 1088-drop-renaming-of-virtual-interfaces-in-guest.patch (bnc#898432)
Patch1088: 1088-drop-renaming-of-virtual-interfaces-in-guest.patch
# PATCH-FIX-SUSE 1095-set-ssd-disk-to-use-deadline-scheduler.patch (bnc#904517)
Patch1095: 1095-set-ssd-disk-to-use-deadline-scheduler.patch
# PATCH-FIX-SUSE 1096-new-udev-root-symlink-generator.patch
@ -628,17 +612,10 @@ cp %{SOURCE7} m4/
%patch1011 -p1
%patch1012 -p1
%patch1013 -p1
%patch1021 -p1
%patch1035 -p1
%patch1036 -p1
%if %{with blkrrpart}
%patch1037 -p1
%endif
%patch1040 -p1
%patch1046 -p1
%patch1050 -p1
%patch1051 -p1
%patch1053 -p1
%if %{with blkrrpart}
%else
%patch1055 -p1
@ -646,7 +623,6 @@ cp %{SOURCE7} m4/
%patch1060 -p1
%patch1062 -p1
%patch1066 -p1
%patch1088 -p1
%patch1095 -p1
%patch1096 -p1
%patch1097 -p1
@ -719,10 +695,6 @@ export LDFLAGS
CFLAGS="$CFLAGS -DNET_IFNAMES=1"
%else
CFLAGS="$CFLAGS -DNET_IFNAMES=0"
for rules in 75-persistent-net-generator 76-net-sriov-names
do
sed -ri '/^ENV\{net.ifnames\}=="1", GOTO="[^"]*"$/{ s/=="1"/!="0"/ }' src/udev/rule_generator/${rules}.rules
done
%endif
cflags -pipe CFLAGS
cflags -Wl,-O2 LDFLAGS
@ -1486,10 +1458,7 @@ exit 0
%{_prefix}/lib/udev/scsi_id
%{_prefix}/lib/udev/v4l_id
%{_prefix}/lib/udev/udev-generate-persistent-rule
%{_prefix}/lib/udev/net-set-sriov-names
%{_prefix}/lib/udev/remount-tmpfs
%{_prefix}/lib/udev/rule_generator.functions
%{_prefix}/lib/udev/write_net_rules
%{_prefix}/lib/udev/rootsymlink-generator
%dir %{_prefix}/lib/udev/rules.d/
%exclude %{_prefix}/lib/udev/rules.d/70-uaccess.rules