Bug 1792001 - [Fedora] [kexec-tools] kdump on vlan device fails
Summary: [Fedora] [kexec-tools] kdump on vlan device fails
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: kexec-tools
Version: 32
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Bhupesh Sharma
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1790645
TreeView+ depends on / blocked
 
Reported: 2020-01-16 20:31 UTC by Bhupesh Sharma
Modified: 2020-02-28 09:21 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2020-02-28 09:21:39 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Bhupesh Sharma 2020-01-16 20:31:41 UTC
Description of problem:
Kdump fails with network unreachable mkdumprd produces vlan config that does not get ip address for vlan on eth device. 

Version-Release number of selected component (if applicable):
kexec-tools-2.0.20-3.fc31.aarch64

How reproducible:
Consistently reproducible with kvm VM with eth0 and eth0.some-vlan device.  Setup kdump.conf for ssh using eth0.vlan device. kdump fails.

Steps to Reproduce:
1.  In vm with single eth0 device and eth0.160:
https://src.fedoraproject.org/rpms/kexec-tools.git
VLAN="yes"
TYPE="Vlan"
PHYSDEV="eth0"
VLAN_ID="160"
REORDER_HDR="no"
GVRP="no"
VLAN_FLAGS="NO_REORDER_HDR"
MVRP="no"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
IPADDR="192.168.132.2"
PREFIX="24"
GATEWAY="192.168.132.1"
DNS1="192.168.132.1"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0.160"
DEVICE="eth0.160"
ONBOOT="yes"

2.  Configure kdump over the eth0.160 device:
ssh kdump.132.1
sshkey /root/.ssh/id_rsa
path /var/crash/
core_collector makedumpfile -F -d 17 -c
default shell

3. Build initrd:
systemctl start kdump

Actual results:
kdump test fails.
kdump shell shows:
# ip addr show eth1
2: kdump-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:27:c4:a5 brd ff:ff:ff:ff:ff:ff
3: eth0.160@kdump-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:27:c4:a5 brd ff:ff:ff:ff:ff:ff

Expected results:
kdump test succeeds.
kdump eth0.160 should get ip address something like:
2: kdump-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:27:c4:a5 brd ff:ff:ff:ff:ff:ff
3: eth0.160@kdump-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:27:c4:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.132.2/24 brd 192.168.132.255 scope global eth1.160
       valid_lft forever preferred_lft forever

Additional info:
Dissection of kdump initrd reveals /etc/cmdline.d/ contains these two files and contents:

40ip.conf 
  ip=192.168.132.2::192.168.132.1:255.255.255.0::kdump-eth0.160:none
43vlan.conf: 
  vlan=eth0.160:kdump-eth0 ifname=kdump-eth0:52:54:00:27:c4:a5

Which can be confirmed, in kdump shell, to build kdump-eth0 device, and eth0.160 device.  eth0.160 does not get an ip address, because the ip address expects device kdump-eth0.160.

The following solution has been tested by the customer and does allow this configuration to work on eth0.160:

diff -up /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh.orig.2 /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh
--- /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh.orig.2	2019-08-27 15:33:28.397000000 -0400
+++ /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh	2019-08-27 15:34:34.571000000 -0400
@@ -252,10 +252,10 @@ kdump_setup_vlan() {
         exit 1
     elif kdump_is_bond "$_phydev"; then
         kdump_setup_bond "$_phydev"
-        echo " vlan=$_netdev:$_phydev" > ${initdir}/etc/cmdline.d/43vlan.conf
+        echo " vlan=$(kdump_setup_ifname $_netdev):$_phydev" > ${initdir}/etc/cmdline.d/43vlan.conf
     else
         _kdumpdev="$(kdump_setup_ifname $_phydev)"
-        echo " vlan=$_netdev:$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
+        echo " vlan=$(kdump_setup_ifname $_netdev):$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
     fi
 }

That patch results in kdump-eth0.160 instead of eth0.160, which allows no changes necessary to 40ip.conf.

Comment 3 Ben Cotton 2020-02-11 17:34:13 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 32 development cycle.
Changing version to 32.

Comment 5 Kairui Song 2020-02-28 09:21:39 UTC
Kexec-tools side issue is fixed in latest release, on F31 F32 and rawhide.
One still have to use network-legacy module in dracut by add dracut_args --add "network-legacy" in /etc/kdump.conf to make it work, due to a dracut issue. I'll close this one as kexec-tools is good.


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