From 0e11d67106e9d19abda5483f5b512342ec42a15a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 13 Dec 2022 06:13:29 +0000 Subject: [PATCH] import kexec-tools-2.0.25-3.el8 --- SOURCES/dracut-module-setup.sh | 59 +++++++++++++++++++++-- SOURCES/{kdump.conf => gen-kdump-conf.sh} | 38 +++++++++++++++ SPECS/kexec-tools.spec | 13 +++-- 3 files changed, 103 insertions(+), 7 deletions(-) rename SOURCES/{kdump.conf => gen-kdump-conf.sh} (95%) mode change 100644 => 100755 diff --git a/SOURCES/dracut-module-setup.sh b/SOURCES/dracut-module-setup.sh index 7ad8507..3dfed90 100755 --- a/SOURCES/dracut-module-setup.sh +++ b/SOURCES/dracut-module-setup.sh @@ -1,5 +1,20 @@ #!/bin/bash +_save_kdump_netifs() { + local _name + + if [[ -n $2 ]]; then + _name=$2 + else + _name=$1 + fi + unique_netifs[$1]=$_name +} + +_get_kdump_netifs() { + echo -n "${!unique_netifs[@]}" +} + kdump_module_init() { if ! [[ -d "${initdir}/tmp" ]]; then mkdir -p "${initdir}/tmp" @@ -300,11 +315,35 @@ kdump_setup_ifname() { echo "$_ifname" } +kdump_install_nm_netif_allowlist() { + local _netif _except_netif _netif_allowlist _netif_allowlist_nm_conf + + for _netif in $1; do + _per_mac=$(kdump_get_perm_addr "$_netif") + if [[ "$_per_mac" != 'not set' ]]; then + _except_netif="mac:$_per_mac" + else + _except_netif="interface-name:${unique_netifs[${_netif}]}" + fi + _netif_allowlist="${_netif_allowlist}except:${_except_netif};" + done + + _netif_allowlist_nm_conf=${initdir}/tmp/netif_allowlist_nm_conf + cat << EOF > "$_netif_allowlist_nm_conf" +[device-others] +match-device=${_netif_allowlist} +managed=false +EOF + + inst "$_netif_allowlist_nm_conf" "/etc/NetworkManager/conf.d/10-kdump-netif_allowlist.conf" + rm -f "$_netif_allowlist_nm_conf" +} + kdump_setup_bridge() { local _netdev=$1 local _brif _dev _mac _kdumpdev for _dev in `ls /sys/class/net/$_netdev/brif/`; do - _kdumpdev=$_dev + _kdumpdev="" if kdump_is_bond "$_dev"; then kdump_setup_bond "$_dev" elif kdump_is_team "$_dev"; then @@ -316,6 +355,8 @@ kdump_setup_bridge() { _kdumpdev=$(kdump_setup_ifname $_dev) echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/41bridge.conf fi + _save_kdump_netifs "$_dev" "$_kdumpdev" + [[ -z $_kdumpdev ]] && _kdumpdev=$_dev _brif+="$_kdumpdev," done echo " bridge=$_netdev:$(echo $_brif | sed -e 's/,$//')" >> ${initdir}/etc/cmdline.d/41bridge.conf @@ -327,6 +368,7 @@ kdump_setup_bond() { for _dev in `cat /sys/class/net/$_netdev/bonding/slaves`; do _mac=$(kdump_get_perm_addr $_dev) _kdumpdev=$(kdump_setup_ifname $_dev) + _save_kdump_netifs "$_dev" "$_kdumpdev" echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/42bond.conf _slaves+="$_kdumpdev," done @@ -345,6 +387,7 @@ kdump_setup_team() { for _dev in `teamnl $_netdev ports | awk -F':' '{print $2}'`; do _mac=$(kdump_get_perm_addr $_dev) _kdumpdev=$(kdump_setup_ifname $_dev) + _save_kdump_netifs "$_dev" "$_kdumpdev" echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/44team.conf _slaves+="$_kdumpdev," done @@ -379,6 +422,7 @@ kdump_setup_vlan() { _kdumpdev="$(kdump_setup_ifname $_phydev)" echo " vlan=$(kdump_setup_ifname $_netdev):$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf fi + _save_kdump_netifs "$_phydev" "$_kdumpdev" } # find online znet device @@ -477,6 +521,7 @@ kdump_setup_netdev() { _ifname_opts=" ifname=$kdumpnic:$_netmac" echo "$_ifname_opts" >> $_ip_conf fi + _save_kdump_netifs "$_netdev" "$_kdumpdev" kdump_setup_dns "$_netdev" @@ -765,7 +810,7 @@ kdump_check_iscsi_targets () { # If our prerequisites are not met, fail anyways. type -P iscsistart >/dev/null || return 1 - kdump_check_setup_iscsi() ( + kdump_check_setup_iscsi() { local _dev _dev=$1 @@ -775,7 +820,7 @@ kdump_check_iscsi_targets () { cd .. done [[ -d iscsi_session ]] && kdump_setup_iscsi_device "$PWD" - ) + } [[ $hostonly ]] || [[ $mount_needs ]] && { for_each_host_dev_and_slaves_all kdump_check_setup_iscsi @@ -941,7 +986,8 @@ kdump_install_systemd_conf() { } install() { - local arch + declare -A unique_netifs + local arch _netifs kdump_module_init kdump_install_conf @@ -993,6 +1039,11 @@ install() { # at some point of time. kdump_check_iscsi_targets + _netifs=$(_get_kdump_netifs) + if [[ -n "$_netifs" ]]; then + kdump_install_nm_netif_allowlist "$_netifs" + fi + kdump_install_systemd_conf # For the lvm type target under kdump, in /etc/lvm/lvm.conf we can diff --git a/SOURCES/kdump.conf b/SOURCES/gen-kdump-conf.sh old mode 100644 new mode 100755 similarity index 95% rename from SOURCES/kdump.conf rename to SOURCES/gen-kdump-conf.sh index a0af268..4bda9e8 --- a/SOURCES/kdump.conf +++ b/SOURCES/gen-kdump-conf.sh @@ -1,3 +1,12 @@ +#!/bin/bash +# $1: target arch + + +SED_EXP="" + +generate() +{ + sed "$SED_EXP" << EOF # This file contains a series of commands to perform (in order) in the kdump # kernel after a kernel crash in the crash kernel(1st kernel) has happened. # @@ -183,3 +192,32 @@ core_collector makedumpfile -l --message-level 7 -d 31 #dracut_args --omit-drivers "cfg80211 snd" --add-drivers "ext2 ext3" #fence_kdump_args -p 7410 -f auto -c 0 -i 10 #fence_kdump_nodes node1 node2 +EOF +} + +update_param() +{ + SED_EXP="${SED_EXP}s/^$1.*$/$1 $2/;" +} + +case "$1" in +aarch64) + ;; +i386) + ;; +ppc64) + ;; +ppc64le) + ;; +s390x) + update_param core_collector \ + "makedumpfile -c --message-level 7 -d 31" + ;; +x86_64) + ;; +*) + echo "Warning: Unknown architecture '$1', using default kdump.conf template." + ;; +esac + +generate diff --git a/SPECS/kexec-tools.spec b/SPECS/kexec-tools.spec index 344a52a..1ea0a42 100644 --- a/SPECS/kexec-tools.spec +++ b/SPECS/kexec-tools.spec @@ -1,6 +1,6 @@ Name: kexec-tools Version: 2.0.25 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2 Group: Applications/System Summary: The kexec/kdump userspace component @@ -12,7 +12,7 @@ Source3: kdump.sysconfig.x86_64 Source4: kdump.sysconfig.i386 Source5: kdump.sysconfig.ppc64 Source7: mkdumprd -Source8: kdump.conf +Source8: gen-kdump-conf.sh Source9: https://github.com/makedumpfile/makedumpfile/archive/1.7.1.tar.gz Source10: kexec-kdump-howto.txt Source12: mkdumprd.8 @@ -158,6 +158,9 @@ cp %{SOURCE27} . cp %{SOURCE28} . cp %{SOURCE31} . +# Generate sysconfig file +%{SOURCE8} %{_target_cpu} > kdump.conf + make %ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64 make -C eppic/libeppic @@ -196,7 +199,7 @@ install -m 644 $SYSCONFIG $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/kdump install -m 755 %{SOURCE7} $RPM_BUILD_ROOT/usr/sbin/mkdumprd install -m 755 %{SOURCE36} $RPM_BUILD_ROOT/usr/sbin/mkfadumprd -install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/kdump.conf +install -m 644 kdump.conf $RPM_BUILD_ROOT%{_sysconfdir}/kdump.conf install -m 644 kexec/kexec.8 $RPM_BUILD_ROOT%{_mandir}/man8/kexec.8 install -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_mandir}/man8/mkdumprd.8 install -m 644 %{SOURCE25} $RPM_BUILD_ROOT%{_mandir}/man8/kdumpctl.8 @@ -393,6 +396,10 @@ done %endif %changelog +* Fri Dec 2 2022 Pingfan Liu - 2.0.25-3 +- kdump.conf: use a simple generator script to maintain +- Reduce kdump memory consumption by not letting NetworkManager manage unneeded network interfaces + * Mon Oct 17 2022 Pingfan Liu - 2.0.25-2 - mkdumprd: Improve error messages on non-existing NFS target directories - fadump: avoid non-debug kernel use for fadump case