From 0cd2ca59e6d087f18cf8a067702df36e91873f35 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Fri, 20 Jan 2023 10:14:52 +0000 Subject: [PATCH] import kexec-tools-2.0.25-5.el8 --- SOURCES/dracut-module-setup.sh | 13 ++++++++++++- SOURCES/kdump-lib-initramfs.sh | 12 +++++++++--- SOURCES/kdump-lib.sh | 16 ++++++++++++++++ SOURCES/kdumpctl | 6 ++++-- SPECS/kexec-tools.spec | 13 ++++++++++++- 5 files changed, 53 insertions(+), 7 deletions(-) diff --git a/SOURCES/dracut-module-setup.sh b/SOURCES/dracut-module-setup.sh index 3dfed90..9cbb5d6 100755 --- a/SOURCES/dracut-module-setup.sh +++ b/SOURCES/dracut-module-setup.sh @@ -57,6 +57,14 @@ depends() { _dep="$_dep ssh-client" fi + if is_lvm2_thinp_dump_target; then + if grep -q lvmthinpool-monitor <<< $(dracut --list-modules); then + add_opt_module lvmthinpool-monitor + else + dwarning "Required lvmthinpool-monitor modules is missing! Please upgrade dracut >= 057." + fi + fi + if [ "$(uname -m)" = "s390x" ]; then _dep="$_dep znet" fi @@ -464,10 +472,13 @@ kdump_setup_znet() { source_ifcfg_file $_netdev + [[ -z "$NETTYPE" ]] && return + [[ -z "$SUBCHANNELS" ]] && return + for i in $OPTIONS; do _options=${_options},$i done - echo rd.znet=${NETTYPE},${SUBCHANNELS}${_options} rd.znet_ifname=$_netdev:${SUBCHANNELS} > ${initdir}/etc/cmdline.d/30znet.conf + echo rd.znet=${NETTYPE},${SUBCHANNELS}${_options} rd.znet_ifname=$(kdump_setup_ifname $_netdev):${SUBCHANNELS} > ${initdir}/etc/cmdline.d/30znet.conf } # Setup dracut to bringup a given network interface diff --git a/SOURCES/kdump-lib-initramfs.sh b/SOURCES/kdump-lib-initramfs.sh index e030fe6..6c707f4 100755 --- a/SOURCES/kdump-lib-initramfs.sh +++ b/SOURCES/kdump-lib-initramfs.sh @@ -145,9 +145,15 @@ dump_fs() $CORE_COLLECTOR /proc/vmcore $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete _exitcode=$? if [ $_exitcode -eq 0 ]; then - mv $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore - sync - dinfo "saving vmcore complete" + sync -f "$_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete" + _sync_exitcode=$? + if [ $_sync_exitcode -eq 0 ]; then + mv "$_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete" "$_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore" + dinfo "saving vmcore complete" + else + derror "sync vmcore failed, _exitcode:$_sync_exitcode" + return 1 + fi else derror "saving vmcore failed, _exitcode:$_exitcode" fi diff --git a/SOURCES/kdump-lib.sh b/SOURCES/kdump-lib.sh index aabe9d0..4abef85 100755 --- a/SOURCES/kdump-lib.sh +++ b/SOURCES/kdump-lib.sh @@ -7,6 +7,7 @@ DEFAULT_PATH="/var/crash/" FENCE_KDUMP_CONFIG_FILE="/etc/sysconfig/fence_kdump" FENCE_KDUMP_SEND="/usr/libexec/fence_kdump_send" FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump_enabled" +LVM_CONF="/etc/lvm/lvm.conf" is_fadump_capable() { @@ -62,6 +63,15 @@ is_fs_dump_target() egrep -q "^ext[234]|^xfs|^btrfs|^minix" /etc/kdump.conf } +is_lvm2_thinp_device() +{ + _device_path=$1 + _lvm2_thin_device=$(lvm lvs -S 'lv_layout=sparse && lv_layout=thin' \ + --nosuffix --noheadings -o vg_name,lv_name "$_device_path" 2> /dev/null) + + [ -n "$_lvm2_thin_device" ] +} + strip_comments() { echo $@ | sed -e 's/\(.*\)#.*/\1/' @@ -161,6 +171,12 @@ is_dump_to_rootfs() grep -E "^(failure_action|default)[[:space:]]dump_to_rootfs" /etc/kdump.conf >/dev/null } +is_lvm2_thinp_dump_target() +{ + _target=$(get_block_dump_target) + [ -n "$_target" ] && is_lvm2_thinp_device "$_target" +} + get_failure_action_target() { local _target diff --git a/SOURCES/kdumpctl b/SOURCES/kdumpctl index 70bea88..ba32806 100755 --- a/SOURCES/kdumpctl +++ b/SOURCES/kdumpctl @@ -398,6 +398,7 @@ check_files_modified() # HOOKS is mandatory and need to check the modification time files="$files $HOOKS" + is_lvm2_thinp_dump_target && files="$files $LVM_CONF" check_exist "$files" && check_executable "$EXTRA_BINS" [ $? -ne 0 ] && return 2 @@ -486,8 +487,9 @@ check_fs_modified() fi # No need to check in case of raw target. - # Currently we do not check also if ssh/nfs target is specified - if is_ssh_dump_target || is_nfs_dump_target || is_raw_dump_target; then + # Currently we do not check also if ssh/nfs/thinp target is specified + if is_ssh_dump_target || is_nfs_dump_target || is_raw_dump_target || + is_lvm2_thinp_dump_target; then return 0 fi diff --git a/SPECS/kexec-tools.spec b/SPECS/kexec-tools.spec index 1ea0a42..df0e907 100644 --- a/SPECS/kexec-tools.spec +++ b/SPECS/kexec-tools.spec @@ -1,6 +1,6 @@ Name: kexec-tools Version: 2.0.25 -Release: 3%{?dist} +Release: 5%{?dist} License: GPLv2 Group: Applications/System Summary: The kexec/kdump userspace component @@ -396,6 +396,17 @@ done %endif %changelog +* Wed Jan 18 2023 Pingfan Liu - 2.0.25-5 + dracut-module-setup: Fix invalid rd.znet command line entry + dracut-module-setup: Fix persistent nic name on s390 + +* Mon Jan 9 2023 Pingfan Liu - 2.0.25-4 +- Don't check fs modified when dump target is lvm2 thinp +- Add dependency of dracut lvmthinpool-monitor module +- lvm.conf should be check modified if lvm2 thinp enabled +- Add lvm2 thin provision dump target checker +- Fix the sync issue for dump_fs + * 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