diff --git a/kdump-use-bus-id-to-identify-qeth-devices.patch b/kdump-use-bus-id-to-identify-qeth-devices.patch new file mode 100644 index 0000000..0659ece --- /dev/null +++ b/kdump-use-bus-id-to-identify-qeth-devices.patch @@ -0,0 +1,95 @@ +From: Petr Tesarik +Date: Fri, 6 Apr 2018 14:43:06 +0200 +Subject: Use bus id to identify qeth devices +References: bsc#1085617 +Upstream: merged +Git-commit: 5c608e4d8adf57e66ce85ec62bf59887e6b860e7 + +QETH devices may not have a stable MAC address, so dracut's ifname= +parameter is not useful. The device's bus ID is stable, but there +is (currently) no support in dracut, so a custom udev rule must be +generated instead. + +Signed-off-by: Petr Tesarik +--- + init/setup-kdump.functions | 47 ++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 38 insertions(+), 9 deletions(-) + +--- a/init/setup-kdump.functions ++++ b/init/setup-kdump.functions +@@ -453,6 +453,24 @@ function kdump_vlan_config() # { + # + # Parameters: + # 1) device device name ++# Output: ++# permanent hardware address ++function kdump_hwaddr() # {{{ ++{ ++ local _iface="$1" ++ local _type=$(<"/sys/class/net/$_iface/addr_assign_type") ++ if [ "$_type" -eq 0 ] ++ then ++ cat "/sys/class/net/$kdump_iface/address" ++ else ++ ethtool -P "$kdump_iface" | sed 's/^[^:]*: *//' ++ fi ++} # }}} ++ ++# Get the ifname parameter for a given device ++# ++# Parameters: ++# 1) device device name + # Output variables: + # kdump_netif corresponding ifname= initrd parameter added + # kdump_iface device name in initrd +@@ -466,16 +484,16 @@ function kdump_ifname_config() # + if [ -z "$ifkind" ] + then + kdump_hwif="$kdump_hwif $kdump_iface" ++ local _drv=$( readlink "/sys/class/net/$kdump_iface/device/driver" ) + +- local hwaddr +- local addrtype=$(<"/sys/class/net/$kdump_iface/addr_assign_type") +- if [ "$addrtype" -eq 0 ] +- then +- hwaddr=$(<"/sys/class/net/$kdump_iface/address") +- else +- hwaddr=$(ethtool -P "$kdump_iface" | sed 's/^[^:]*: *//') +- fi +- [ -n "$hwaddr" ] && kdump_netif="$kdump_netif ifname=$kdump_iface:$hwaddr" ++ case "$_drv" in ++ */qeth) ++ ;; ++ *) ++ local hwaddr=$(kdump_hwaddr "$kdump_iface") ++ [ -n "$hwaddr" ] && kdump_netif="$kdump_netif ifname=$kdump_iface:$hwaddr" ++ ;; ++ esac + else + case "$ifkind" in + bridge) +@@ -1063,6 +1081,13 @@ function kdump_setup_qeth() # {{ + _cdev2="${_cdev2##*/}" + local _layer2=$("${_root}/etc/udev/rules.d/51-qeth-${_dev}.rules" <"${_root}/etc/udev/rules.d/70-persistent-net-${_iface}.rules" <