[kexec-tools] module-setup.sh: do not add duplicate ip=xxx to 40ip.conf

WANG Chao wangchao at fedoraproject.org
Wed Jan 29 08:34:55 UTC 2014


commit 11cb81590412f1cb835fe05cb792be6cf082dc00
Author: WANG Chao <chaowang at redhat.com>
Date:   Fri Dec 20 18:06:17 2013 +0800

    module-setup.sh: do not add duplicate ip=xxx to 40ip.conf
    
    In the remote dump case, and if fence kdump is configured, chances are
    that the same network interface will be setup more than once.
    One time for network dump, the other times for fence kdump. The result
    is we will have two or more duplicate ip= configuration in 40ip.conf.
    
    These are exactly duplicates, however dracut will refuse to continue and
    raise a fatal error if there are duplicate configuration for the same
    interface. So we have to avoid adding these duplicates.
    
    Signed-off-by: WANG Chao <chaowang at redhat.com>
    Tested-by: Zhi Zou <zzou at redhat.com>
    Tested-by: Marek Grac <mgrac at redhat.com>
    Acked-by: Vivek Goyal <vgoyal at redhat.com>

 dracut-module-setup.sh |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index a9d223f..0babc65 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -182,7 +182,7 @@ kdump_setup_znet() {
 # Setup dracut to bringup a given network interface
 kdump_setup_netdev() {
     local _netdev=$1
-    local _static _proto
+    local _static _proto _ip_conf _ip_opts _ifname_opts
 
     if [ "$(uname -m)" = "s390x" ]; then
         kdump_setup_znet $_netdev
@@ -196,7 +196,14 @@ kdump_setup_netdev() {
         _proto=dhcp
     fi
 
-    echo " ip=${_static}$_netdev:${_proto}" > ${initdir}/etc/cmdline.d/40ip.conf
+    _ip_conf="${initdir}/etc/cmdline.d/40ip.conf"
+    _ip_opts=" ip=${_static}$_netdev:${_proto}"
+
+    # dracut doesn't allow duplicated configuration for same NIC, even they're exactly the same.
+    # so we have to avoid adding duplicates
+    if [ ! -f $_ip_conf ] || ! grep -q $_ip_opts $_ip_conf; then
+        echo "$_ip_opts" >> $_ip_conf
+    fi
 
     if kdump_is_bridge "$_netdev"; then
         kdump_setup_bridge "$_netdev"
@@ -207,7 +214,8 @@ kdump_setup_netdev() {
     elif kdump_is_vlan "$_netdev"; then
         kdump_setup_vlan "$_netdev"
     else
-        echo " ifname=$_netdev:$(kdump_get_mac_addr $_netdev)" >> ${initdir}/etc/cmdline.d/40ip.conf
+        _ifname_opts=" ifname=$_netdev:$(kdump_get_mac_addr $_netdev)"
+        echo "$_ifname_opts" >> $_ip_conf
     fi
 
     kdump_setup_dns "$_netdev"


More information about the scm-commits mailing list