diff --git a/0009-kdump.sh-Centralize-the-F-suboption-handling.patch b/0009-kdump.sh-Centralize-the-F-suboption-handling.patch new file mode 100644 index 0000000..04a8b25 --- /dev/null +++ b/0009-kdump.sh-Centralize-the-F-suboption-handling.patch @@ -0,0 +1,61 @@ +From 837f1c9a8bd7fd898eb848bd473a32d8eee30307 Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 28 Nov 2025 09:49:35 +0800 +Subject: [PATCH 1/3] kdump.sh: Centralize the -F suboption handling + +Signed-off-by: Pingfan Liu +--- + dracut/99kdumpbase/kdump.sh | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +diff --git a/dracut/99kdumpbase/kdump.sh b/dracut/99kdumpbase/kdump.sh +index 7c4c71c..0fd94c0 100755 +--- a/dracut/99kdumpbase/kdump.sh ++++ b/dracut/99kdumpbase/kdump.sh +@@ -22,8 +22,7 @@ KDUMP_LOG_DEST="" + KDUMP_LOG_OP="" + KDUMP_TEST_ID="" + KDUMP_TEST_STATUS="" +-CORE_COLLECTOR="" +-DEFAULT_CORE_COLLECTOR="makedumpfile -l --message-level 7 -d 31" ++CORE_COLLECTOR="makedumpfile -l --message-level 7 -d 31" + DMESG_COLLECTOR="/sbin/vmcore-dmesg" + FAILURE_ACTION="systemctl reboot -f" + DATEDIR=$(date +%Y-%m-%d-%T) +@@ -108,12 +107,16 @@ get_kdump_confs() { + esac + done < "$KDUMP_CONF_PARSED" + +- if [ -z "$CORE_COLLECTOR" ]; then +- CORE_COLLECTOR="$DEFAULT_CORE_COLLECTOR" +- if is_ssh_dump_target || is_raw_dump_target; then +- CORE_COLLECTOR="$CORE_COLLECTOR -F" +- fi +- fi ++ case $CORE_COLLECTOR in ++ *makedumpfile*) ++ # Ensure no -F in makedumpfile by default. ++ CORE_COLLECTOR=$(echo "$CORE_COLLECTOR" | sed -e "s/-F//g") ++ if is_ssh_dump_target || is_raw_dump_target; then ++ CORE_COLLECTOR="$CORE_COLLECTOR -F" ++ fi ++ ;; ++ esac ++ + } + + # store the kexec kernel log to a file. +@@ -145,10 +148,8 @@ dump_fs() { + fi + fi + +- # Remove -F in makedumpfile case. We don't want a flat format dump here. + case $CORE_COLLECTOR in + *makedumpfile*) +- CORE_COLLECTOR=$(echo "$CORE_COLLECTOR" | sed -e "s/-F//g") + THREADS=$(nproc) + if [ "$THREADS" -gt 1 ]; then + CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" +-- +2.49.0 + diff --git a/0010-kdump.sh-Centralize-the-num-threads-sub-option-handl.patch b/0010-kdump.sh-Centralize-the-num-threads-sub-option-handl.patch new file mode 100644 index 0000000..6c56e36 --- /dev/null +++ b/0010-kdump.sh-Centralize-the-num-threads-sub-option-handl.patch @@ -0,0 +1,61 @@ +From 23bbb1156fe6fc03a3744ce538d908ad9cb0b694 Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Thu, 27 Nov 2025 15:24:18 +0800 +Subject: [PATCH 2/3] kdump.sh: Centralize the num-threads sub-option handling + +The handling of num-threads is duplicated in dump_fs() and dump_raw(). +Centralize them into get_kdump_confs() + +Signed-off-by: Pingfan Liu +--- + dracut/99kdumpbase/kdump.sh | 20 ++++---------------- + 1 file changed, 4 insertions(+), 16 deletions(-) + +diff --git a/dracut/99kdumpbase/kdump.sh b/dracut/99kdumpbase/kdump.sh +index 0fd94c0..656911f 100755 +--- a/dracut/99kdumpbase/kdump.sh ++++ b/dracut/99kdumpbase/kdump.sh +@@ -114,6 +114,10 @@ get_kdump_confs() { + if is_ssh_dump_target || is_raw_dump_target; then + CORE_COLLECTOR="$CORE_COLLECTOR -F" + fi ++ THREADS=$(nproc) ++ if [ "$THREADS" -gt 1 ]; then ++ CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" ++ fi + ;; + esac + +@@ -148,15 +152,6 @@ dump_fs() { + fi + fi + +- case $CORE_COLLECTOR in +- *makedumpfile*) +- THREADS=$(nproc) +- if [ "$THREADS" -gt 1 ]; then +- CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" +- fi +- ;; +- esac +- + if [ -z "$KDUMP_TEST_ID" ]; then + _dump_fs_path=$(echo "$1/$KDUMP_PATH/$HOST_IP-$DATEDIR/" | tr -s /) + else +@@ -385,13 +380,6 @@ dump_raw() { + /kdumpscripts/monitor_dd_progress.sh $_src_size_mb & + fi + +- if echo "$CORE_COLLECTOR" | grep -q makedumpfile; then +- THREADS=$(nproc) +- if [ "$THREADS" -gt 1 ]; then +- CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" +- fi +- fi +- + dinfo "saving vmcore" + $CORE_COLLECTOR /proc/vmcore | dd of="$1" bs=$DD_BLKSIZE >> /tmp/dd_progress_file 2>&1 || return 1 + sync +-- +2.49.0 + diff --git a/0011-kdump.sh-Skip-num-threads-when-E-and-F-option-is-pre.patch b/0011-kdump.sh-Skip-num-threads-when-E-and-F-option-is-pre.patch new file mode 100644 index 0000000..9e8aafd --- /dev/null +++ b/0011-kdump.sh-Skip-num-threads-when-E-and-F-option-is-pre.patch @@ -0,0 +1,49 @@ +From 9a51c4b4742b7bf778e2dc32cff24d94bb2a5cd1 Mon Sep 17 00:00:00 2001 +From: Pingfan Liu +Date: Fri, 28 Nov 2025 13:51:21 +0800 +Subject: [PATCH 3/3] kdump.sh: Skip num-threads when -E and -F option is + present + +Resolves: https://issues.redhat.com/browse/RHEL-75537 + +Configure "makedumpfile -E -d 31" in kdump.conf, and panic the system, kdump will fail with the error as: + +[ 41.891856] kdump.sh[724]: --num-threads cannot used with ELF format. +[ 41.897104] kdump.sh[724]: Commandline parameter is invalid. +[ 41.897290] kdump.sh[724]: Try `makedumpfile --help' for more information. +[ 41.897435] kdump.sh[724]: makedumpfile Failed. +[ 41.898804] kdump[726]: +saving vmcore failed, exitcode:1 + +Skip --num-threads when -E option is given. + +As for the -F option, it is meaningless to sequentially access linear +addresses with multiple threads Skip --num-threads too in that case. + +Signed-off-by: Pingfan Liu +--- + dracut/99kdumpbase/kdump.sh | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/dracut/99kdumpbase/kdump.sh b/dracut/99kdumpbase/kdump.sh +index 656911f..5155453 100755 +--- a/dracut/99kdumpbase/kdump.sh ++++ b/dracut/99kdumpbase/kdump.sh +@@ -116,7 +116,13 @@ get_kdump_confs() { + fi + THREADS=$(nproc) + if [ "$THREADS" -gt 1 ]; then +- CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" ++ case "$CORE_COLLECTOR" in ++ *-F* | *-E*) ;; ++ ++ *) ++ CORE_COLLECTOR="$CORE_COLLECTOR --num-threads=$THREADS" ++ ;; ++ esac + fi + ;; + esac +-- +2.49.0 + diff --git a/kdump-utils.spec b/kdump-utils.spec index f907e29..e5261bc 100644 --- a/kdump-utils.spec +++ b/kdump-utils.spec @@ -16,7 +16,9 @@ Patch05: 0005-Allow-sudo-kdumpctl-for-LUKS-dump-target.patch Patch06: 0006-Revert-Strip-surrounding-quotes-from-configuration-v.patch Patch07: 0007-kdump-lib-initramfs-rewrite-kdump_get_conf_val.patch Patch08: 0008-Add-persisent-device-if-FIPS-is-enabled.patch - +Patch09: 0009-kdump.sh-Centralize-the-F-suboption-handling.patch +Patch10: 0010-kdump.sh-Centralize-the-num-threads-sub-option-handl.patch +Patch11: 0011-kdump.sh-Skip-num-threads-when-E-and-F-option-is-pre.patch %ifarch ppc64 ppc64le Requires(post): servicelog