diff --git a/SOURCES/dracut-module-setup.sh b/SOURCES/dracut-module-setup.sh index bdadf7c..a0dc0ff 100755 --- a/SOURCES/dracut-module-setup.sh +++ b/SOURCES/dracut-module-setup.sh @@ -67,14 +67,17 @@ kdump_setup_dns() { } #$1: netdev name -#checking /etc/sysconfig/network-scripts/ifcfg-$1, +#$2: srcaddr #if it use static ip echo it, or echo null kdump_static_ip() { - . /etc/sysconfig/network-scripts/ifcfg-$1 - if [ -n "$IPADDR" ]; then - [ -z "$NETMASK" -a -n "$PREFIX" ] && \ - NETMASK=$(ipcalc -m $IPADDR/$PREFIX | cut -d'=' -f2) - echo -n "${IPADDR}::${GATEWAY}:${NETMASK}::" + local _netmask _gateway + local _netdev="$1" _srcaddr="$2" + local _ipaddr=$(ip addr show dev $_netdev permanent | \ + awk "/ $_srcaddr\/.* $_netdev\$/{print \$2}") + if [ -n "$_ipaddr" ]; then + _netmask=$(ipcalc -m $_ipaddr | cut -d'=' -f2) + _gateway=$(ip route list dev $_netdev | awk '/^default /{print $3}') + echo -n "${_srcaddr}::${_gateway}:${_netmask}::" fi } @@ -181,7 +184,7 @@ kdump_setup_znet() { # Setup dracut to bringup a given network interface kdump_setup_netdev() { - local _netdev=$1 + local _netdev=$1 _srcaddr=$2 local _static _proto _ip_conf _ip_opts _ifname_opts if [ "$(uname -m)" = "s390x" ]; then @@ -189,7 +192,7 @@ kdump_setup_netdev() { fi _netmac=$(kdump_get_mac_addr $_netdev) - _static=$(kdump_static_ip $_netdev) + _static=$(kdump_static_ip $_netdev $_srcaddr) if [ -n "$_static" ]; then _proto=none else @@ -223,8 +226,9 @@ kdump_setup_netdev() { #Function:kdump_install_net #$1: config values of net line in kdump.conf +#$2: srcaddr of network device kdump_install_net() { - local _server _netdev + local _server _netdev _srcaddr local config_val="$1" _server=`echo $config_val | sed 's/.*@//' | cut -d':' -f1` @@ -239,13 +243,15 @@ kdump_install_net() { if [ -n "`echo $_netdev | grep via`" ] then # we are going to a different subnet + _srcaddr=`echo $_netdev|awk '{print $7}'|head -n 1` _netdev=`echo $_netdev|awk '{print $5;}'|head -n 1` else # we are on the same subnet + _srcaddr=`echo $_netdev|awk '{print $5}'|head -n 1` _netdev=`echo $_netdev|awk '{print $3}'|head -n 1` fi - kdump_setup_netdev "${_netdev}" + kdump_setup_netdev "${_netdev}" "${_srcaddr}" #save netdev used for kdump as cmdline # Whoever calling kdump_install_net() is setting up the default gateway, @@ -330,6 +336,7 @@ kdump_setup_iscsi_device() { local username; local password; local userpwd_str; local username_in; local password_in; local userpwd_in_str; local netdev + local srcaddr local idev local netroot_str ; local initiator_str; local netroot_conf="${initdir}/etc/cmdline.d/50iscsi.conf" @@ -364,9 +371,11 @@ kdump_setup_iscsi_device() { [ -n "$username_in" ] && userpwd_in_str=":$username_in:$password_in" netdev=$(/sbin/ip route get to ${tgt_ipaddr} | \ - sed 's|.*dev \(.*\).*|\1|g' | awk '{ print $1; exit }') + sed 's|.*dev \(.*\).*|\1|g') + srcaddr=$(echo $netdev | awk '{ print $3; exit }') + netdev=$(echo $netdev | awk '{ print $1; exit }') - kdump_setup_netdev $netdev + kdump_setup_netdev $netdev $srcaddr # prepare netroot= command line # FIXME: IPV6 addresses require explicit [] around $tgt_ipaddr diff --git a/SOURCES/firstboot_kdump.py b/SOURCES/firstboot_kdump.py old mode 100644 new mode 100755 index a8cd3ba..2bdec5b --- a/SOURCES/firstboot_kdump.py +++ b/SOURCES/firstboot_kdump.py @@ -57,10 +57,10 @@ class moduleClass(Module): # possible bootloaders we'll need to adjust # bootloader : (config file, kdump offset) bootloaders = { "grub" : (["/boot/grub/grub.conf", \ - "/boot/efi/EFI/centos/grub.conf"], [16, 256]),\ + "/boot/efi/EFI/redhat/grub.conf"], [16, 256]),\ "grub2" : (["/boot/grub2/grub.cfg", \ "/boot/efi/EFI/fedora/grub.cfg", \ - "/boot/efi/EFI/centos/grub.cfg"], [16, 256]),\ + "/boot/efi/EFI/redhat/grub.cfg"], [16, 256]),\ "zipl" : (["/etc/zipl.conf"], [0]),\ "yaboot" : (["/boot/etc/yaboot.conf"], [32]) } bootloader = None diff --git a/SOURCES/kexec-tools-2.0.4-Enumerate-all-sys-devices-system-cpu-cpuN-when-they-.patch b/SOURCES/kexec-tools-2.0.4-Enumerate-all-sys-devices-system-cpu-cpuN-when-they-.patch new file mode 100644 index 0000000..703ba3e --- /dev/null +++ b/SOURCES/kexec-tools-2.0.4-Enumerate-all-sys-devices-system-cpu-cpuN-when-they-.patch @@ -0,0 +1,48 @@ +From 08484c97ecce7df2ded8079c6478a58262007acc Mon Sep 17 00:00:00 2001 +From: Takao Indoh +Date: Thu, 5 Jun 2014 14:10:54 +0900 +Subject: [PATCH 1/2] Enumerate all /sys/devices/system/cpu/cpuN when they are + discontiguous + +There is a case that the number of /sys/devices/system/cpu/cpuN is not +contiguous, for example after cpu hot removing. This patch fixes so that +all /sys/devices/system/cpu/cpuN is handled when they are discontiguous. + +Signed-off-by: Takao Indoh +Reviewed-by: Zhang Yanfei +Acked-by: WANG Chao +Signed-off-by: Simon Horman +--- + kexec/crashdump-elf.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/kexec/crashdump-elf.c b/kexec/crashdump-elf.c +index 2baa357..c869347 100644 +--- a/kexec/crashdump-elf.c ++++ b/kexec/crashdump-elf.c +@@ -41,6 +41,7 @@ int FUNC(struct kexec_info *info, + uint64_t vmcoreinfo_addr, vmcoreinfo_len; + int has_vmcoreinfo = 0; + int (*get_note_info)(int cpu, uint64_t *addr, uint64_t *len); ++ long int count_cpu; + + if (xen_present()) + nr_cpus = xen_get_nr_phys_cpus(); +@@ -138,11 +139,13 @@ int FUNC(struct kexec_info *info, + + /* PT_NOTE program headers. One per cpu */ + +- for (i = 0; i < nr_cpus; i++) { ++ count_cpu = nr_cpus; ++ for (i = 0; count_cpu > 0; i++) { + if (get_note_info(i, ¬es_addr, ¬es_len) < 0) { + /* This cpu is not present. Skip it. */ + continue; + } ++ count_cpu--; + + phdr = (PHDR *) bufp; + bufp += sizeof(PHDR); +-- +1.9.3 + diff --git a/SOURCES/kexec-tools-2.0.4-Fix-mistaken-check-of-stat-2-return-value.patch b/SOURCES/kexec-tools-2.0.4-Fix-mistaken-check-of-stat-2-return-value.patch new file mode 100644 index 0000000..2708daa --- /dev/null +++ b/SOURCES/kexec-tools-2.0.4-Fix-mistaken-check-of-stat-2-return-value.patch @@ -0,0 +1,32 @@ +From 272ceb535415437041f989278635ac8de729cd6b Mon Sep 17 00:00:00 2001 +From: Takao Indoh +Date: Thu, 5 Jun 2014 14:10:55 +0900 +Subject: [PATCH 2/2] Fix mistaken check of stat(2) return value + +get_crash_notes_per_cpu() should return -1 if return value of stat(2) is +zero (on success). + +Signed-off-by: Takao Indoh +Reviewed-by: Zhang Yanfei +Acked-by: WANG Chao +Signed-off-by: Simon Horman +--- + kexec/crashdump.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kexec/crashdump.c b/kexec/crashdump.c +index 131e624..15c1105 100644 +--- a/kexec/crashdump.c ++++ b/kexec/crashdump.c +@@ -84,7 +84,7 @@ int get_crash_notes_per_cpu(int cpu, uint64_t *addr, uint64_t *len) + if (fopen_errno != ENOENT) + die("Could not open \"%s\": %s\n", crash_notes, + strerror(fopen_errno)); +- if (!stat("/sys/devices", &cpu_stat)) { ++ if (stat("/sys/devices", &cpu_stat)) { + stat_errno = errno; + if (stat_errno == ENOENT) + die("\"/sys/devices\" does not exist. " +-- +1.9.3 + diff --git a/SPECS/kexec-tools.spec b/SPECS/kexec-tools.spec index ea15bfa..da34dd2 100644 --- a/SPECS/kexec-tools.spec +++ b/SPECS/kexec-tools.spec @@ -1,6 +1,6 @@ Name: kexec-tools Version: 2.0.4 -Release: 32%{?dist}.1 +Release: 32%{?dist}.2 License: GPLv2 Group: Applications/System Summary: The kexec/kdump userspace component. @@ -101,6 +101,8 @@ Patch616: kexec-tools-2.0.4-makedumpfile-Fall-back-to-read-when-mmap-fails.patch Patch617: kexec-tools-2.0.4-vmcore-dmesg-struct_val_u64-not-casting-u64-to-u32.patch Patch618: kexec-tools-2.0.4-makedumpfile-Improve-progress-information-for-huge-memor.patch Patch619: kexec-tools-2.0.4-vmcore-dmesg-stack-smashing-happend-in-extreme-case.patch +Patch620: kexec-tools-2.0.4-Enumerate-all-sys-devices-system-cpu-cpuN-when-they-.patch +Patch621: kexec-tools-2.0.4-Fix-mistaken-check-of-stat-2-return-value.patch %description kexec-tools provides /sbin/kexec binary that facilitates a new @@ -151,6 +153,8 @@ tar -z -x -v -f %{SOURCE19} %patch617 -p1 %patch618 -p1 %patch619 -p1 +%patch620 -p1 +%patch621 -p1 tar -z -x -v -f %{SOURCE13} @@ -374,6 +378,10 @@ done %endif %changelog +* Fri Jul 04 2014 WANG Chao - 2.0.4-32.2 +- kexec hotplug/remove fix +- handle IPADDR option in ifcfg-* + * Fri May 09 2014 WANG Chao - 2.0.4-32.1 - remove "nofail" from mount options