Hello community, here is the log from the commit of package kdump for openSUSE:Factory checked in at 2019-03-22 14:55:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdump (Old) and /work/SRC/openSUSE:Factory/.kdump.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdump" Fri Mar 22 14:55:12 2019 rev:103 rq:687014 version:0.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kdump/kdump.changes 2019-03-12 09:47:33.519608102 +0100 +++ /work/SRC/openSUSE:Factory/.kdump.new.25356/kdump.changes 2019-03-22 14:55:22.518024740 +0100 @@ -1,0 +2,49 @@ +Wed Mar 20 15:35:29 UTC 2019 - [email protected] + +- Use %license instead of %doc (bsc#1082318, bsc#1129947). + +------------------------------------------------------------------- +Wed Mar 20 13:34:40 UTC 2019 - [email protected] + +- kdump-fix-multipath-user_friendly_names.patch: Fix multipath + configuration with user_friendly_names and/or aliases + (bsc#1111207, LTC#171953, bsc#1125218, LTC#175465). + +------------------------------------------------------------------- +Wed Mar 20 13:34:16 UTC 2019 - [email protected] + +- kdump-recover-from-missing-CRASHTIME.patch: Recover from missing + CRASHTIME= in VMCOREINFO (bsc#1112387). + +------------------------------------------------------------------- +Wed Mar 20 13:26:08 UTC 2019 - [email protected] + +- kdump-fallback-re-register-fadump-from-userspace.patch: + Re-register FADUMP from userspace if the kernel cannot do it + (bsc#1108170, LTC#171288, bsc#1094016, LTC#168050) + +------------------------------------------------------------------- +Wed Mar 20 13:21:56 UTC 2019 - [email protected] + +- kdump-Restore-only-static-routes-in-kdump-initrd.patch: Restore + only static routes in kdump initrd (bsc#1093795). + +------------------------------------------------------------------- +Wed Mar 20 13:14:45 UTC 2019 - [email protected] + +- kdump-on-error-option-yesno.patch: Support yes/no style for + KDUMP_CONTINUE_ON_ERROR (bsc#1083155). + +------------------------------------------------------------------- +Wed Mar 20 13:06:26 UTC 2019 - [email protected] + +- kdump-use-pbl.patch: Replace obsolete perl-Bootloader library + with a simpler script (bsc#1050349). + +------------------------------------------------------------------- +Wed Mar 20 12:48:55 UTC 2019 - [email protected] + +- Ensure added kdump-early.service is enabled properly after update + (bsc#1021484). + +------------------------------------------------------------------- New: ---- kdump-Restore-only-static-routes-in-kdump-initrd.patch kdump-fallback-re-register-fadump-from-userspace.patch kdump-fix-multipath-user_friendly_names.patch kdump-on-error-option-yesno.patch kdump-recover-from-missing-CRASHTIME.patch kdump-use-pbl.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdump.spec ++++++ --- /var/tmp/diff_new_pack.uZ0Iv9/_old 2019-03-22 14:55:24.146023784 +0100 +++ /var/tmp/diff_new_pack.uZ0Iv9/_new 2019-03-22 14:55:24.146023784 +0100 @@ -54,6 +54,12 @@ Patch6: %{name}-fadump-add-udev-support.patch Patch7: %{name}-turn-off-NUMA-in-kdump-kernel.patch Patch8: %{name}-remove-noefi-and-acpi_rsdp-for-efi-firmware.patch +Patch9: %{name}-use-pbl.patch +Patch10: %{name}-on-error-option-yesno.patch +Patch11: %{name}-Restore-only-static-routes-in-kdump-initrd.patch +Patch12: %{name}-fallback-re-register-fadump-from-userspace.patch +Patch13: %{name}-recover-from-missing-CRASHTIME.patch +Patch14: %{name}-fix-multipath-user_friendly_names.patch BuildRequires: asciidoc BuildRequires: cmake BuildRequires: gcc-c++ @@ -119,6 +125,12 @@ %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 %build export CFLAGS="%{optflags}" @@ -172,6 +184,10 @@ %{fillup_only -n kdump} %service_add_post kdump.service %service_add_post kdump-early.service +# ensure newly added kdump-early.service is-enabled matches prior state +if [ -x /usr/bin/systemctl ] && /usr/bin/systemctl is-enabled kdump.service &>/dev/null ; then + /usr/bin/systemctl reenable kdump.service || : +fi %else %{fillup_and_insserv -n kdump boot.kdump} %endif @@ -206,12 +222,24 @@ %insserv_cleanup %endif +# Compatibility cruft +# there is no %license prior to SLE12 +%if %{undefined _defaultlicensedir} +%define license %doc +%else +# filesystem before SLE12 SP3 lacks /usr/share/licenses +%if 0%(test ! -d %{_defaultlicensedir} && echo 1) +%define _defaultlicensedir %_defaultdocdir +%endif +%endif +# End of compatibility cruft + %files %defattr(-,root,root) -%doc ChangeLog COPYING README NEWS +%license COPYING +%doc ChangeLog README NEWS %{_sbindir}/kdumptool %{_sbindir}/mkdumprd -%{_sbindir}/kdump-bootloader.pl %{_mandir}/man5/kdump.5%{ext_man} %{_mandir}/man7/kdump.7%{ext_man} %{_mandir}/man8/kdumptool.8%{ext_man} ++++++ kdump-Restore-only-static-routes-in-kdump-initrd.patch ++++++ From: Petr Tesarik <[email protected]> Date: Thu, 24 May 2018 06:54:28 +0200 Subject: Restore only static routes in kdump initrd References: bsc#1093795 Upstream: merged Git-commit: c4484c33a5b228d4a1ebe7c99f14c3b7f38f34ef All existing routes are now added through the rd.route= dracut parameter. However, this includes routes that need not or should not be added explicitly (e.g. installed automatically by the kernel or dynamically by a routing daemon). If possible, use wicked to get configured routes. If not, use the routing protocol identifier to limit the list. Signed-off-by: Petr Tesarik <[email protected]> --- init/setup-kdump.functions | 86 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 9 deletions(-) --- a/init/setup-kdump.functions +++ b/init/setup-kdump.functions @@ -518,6 +518,42 @@ kdump_prefix2netmask() { # {{{ } # }}} # +# Get the IPv4 rd.route= parameters for a given device +# +# Parameters: +# 1) iface current interface name +# 2) bootif interface name in initrd +# Output: +# string that can be used for the rd.route= initrd parameter +function kdump_ip_routes() # {{{ +{ + local _iface="$1" + local _bootif="$2" + + # remove default routes + local _rmdefault='/^default /d' + # transform the output of "ip route" into rd.route= + local _xform='s/\([^ ]*\)\( via \([^ ]*\)\)\?.*/rd.route=\1:\3/' + # add interface name and print + local _addintf="s/\$/:${_bootif}/p" + + # get configured routes using wicked if possible + if [ -n "$(type -P wicked)" ] + then + wicked show-config | \ + wicked xpath --reference \ + "/interface[name='$_iface']/ipv4:static/route" \ + "rd.route=%{destination}:%{?nexthop/gateway}:$_bootif" \ + 2>/dev/null + else + ip route show dev "$_iface" proto boot | \ + sed -ne "$_rmdefault;$_xform;$_addintf" + ip route show dev "$_iface" proto static | \ + sed -ne "$_rmdefault;$_xform;$_addintf" + fi +} # }}} + +# # Get the IPv4 ip= parameter for a given device # # Parameters: @@ -556,12 +592,47 @@ function kdump_ip_config() # {{{ if [ -n "$ipaddr" ] ; then echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none" + kdump_ip_routes "$iface" "$bootif" + fi +} # }}} + +# +# Get the IPv6 rd.route= parameters for a given device +# +# Parameters: +# 1) iface current interface name +# 2) bootif interface name in initrd +# Output: +# string that can be used for the rd.route= initrd parameter +function kdump_ip6_routes() # {{{ +{ + local _iface="$1" + local _bootif="$2" - routes=$(ip route show dev "$iface" | sed -n 's/\([0-9].*\) via \([^ ]*\).*/\1:\2/p') - for r in $routes ; do - echo "rd.route=$r:$bootif" - done - fi + # remove default routes + local _rmdefault='/^default /d' + # transform the output of "ip route" into rd.route= + local _xform='s/\([^ ]*\)\( via \([^ ]*\)\)\?.*/rd.route=[\1]:[\3]/' + # remove gateway if empty + local _rmgw='s/\[\]$//' + # add interface name and print + local _addintf="s/\$/:${_bootif}/p" + + # get configured routes using wicked if possible + if [ -n "$(type -P wicked)" ] + then + wicked show-config | \ + wicked xpath \ + --reference "/interface[name='$_iface']/ipv6:static/route" \ + "rd.route=[%{destination}]:[%{?nexthop/gateway}]" \ + 2>/dev/null | \ + sed -ne "$_rmgw;$_addintf" + else + ip -6 route show dev "$_iface" proto boot | \ + sed -ne "$_rmdefault;$_xform;$_rmgw;$_addintf" + ip -6 route show dev "$_iface" proto static | \ + sed -ne "$_rmdefault;$_xform;$_rmgw;$_addintf" + fi } # }}} # @@ -604,10 +675,7 @@ function kdump_ip6_config() # {{ echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none" done < <(ip -6 address show dev "$iface" permanent scope global) - routes=$(ip -6 route show dev "$iface" | sed -n 's/\([0-9a-fA-F:].*\) via \([^ ]*\).*/[\1]:[\2]/p') - for r in $routes ; do - echo "rd.route=$r:$bootif" - done + kdump_ip6_routes "$iface" "$bootif" } # }}} # ++++++ kdump-fallback-re-register-fadump-from-userspace.patch ++++++ >From 4084339bb6e7c605dab7a48a98b97510f555d343 Mon Sep 17 00:00:00 2001 From: Hari Bathini <[email protected]> Date: Thu, 27 Sep 2018 17:11:58 +0200 Subject: Re-register FADUMP from userspace if the kernel cannot do it Reference: bsc#1108170, LTC#171288, bsc#1094016, LTC#168050 Upstream: merged Git-commit: 4084339bb6e7c605dab7a48a98b97510f555d343 If the kernel does not allow writing a "1" to fadump_registered, unregister and register again from userspace. Signed-off-by: Hari Bathini <[email protected]> Acked-by: Petr Tesarik <[email protected]> --- init/load.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) --- a/init/load.sh +++ b/init/load.sh @@ -251,15 +251,20 @@ function load_kdump_fadump() if [ $? -eq 0 ] ; then msg="Registered fadump" else - # For backward compatibility on older kernel that - # returns -EEXIST/-EINVAL + msg="FAILED to register fadump: $output" + result=1 + + # For re-registering on an older kernel that returns -EEXIST/-EINVAL, + # if fadump was already registered. if [ "$(cat $FADUMP_REGISTERED)" == "1" ] ; then - # TODO: unregiser/register OR warn user to stop/start? - # Best bet is to update to latest kernel. - msg="fadump is already registered" - else - msg="FAILED to register fadump: $output" - result=1 + echo 0 > "$FADUMP_REGISTERED" + output=$( (echo 1 > "$FADUMP_REGISTERED") 2>&1) + if [ $? -eq 0 ] ; then + msg="Registered fadump" + result=0 + else + msg="FAILED to register fadump: $output" + fi fi fi ++++++ kdump-fix-multipath-user_friendly_names.patch ++++++ From: Petr Tesarik <[email protected]> Date: Thu, 25 Oct 2018 10:02:43 +0200 Subject: Fix multipath configuration with user_friendly_names and/or aliases References: bsc#1111207, LTC#171953, bsc#1125218, LTC#175465 Upstream: merged Git-commit: 4b4dacfddd456a51c04a878e31d4544223ea9701 The setup script incorrectly uses the name of the multipath device instead of its WWID (which can be retrieved from the device mapper UUID simply by removing the "mpath-" prefix). Signed-off-by: Petr Tesarik <[email protected]> --- init/setup-kdump.functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/init/setup-kdump.functions +++ b/init/setup-kdump.functions @@ -962,9 +962,9 @@ function kdump_map_mpath_wwid() local f _dir _uuid _wwid _dev for f in /sys/block/*/dm/uuid ; do eval "_uuid=\$(<$f)" 2>/dev/null - [[ "$_uuid" = mpath-* ]] || continue + _wwid="${_uuid#mpath-}" + [ "$_wwid" != "$_uuid" ] || continue _dir="${f%/dm/uuid}" - _wwid=$(<"$_dir"/dm/name) _dev=$(<"$_dir"/dev) eval kdump_mpath_wwid_${_dev/:/_}=\$_wwid done ++++++ kdump-on-error-option-yesno.patch ++++++ From: Lance Wang <[email protected]> Subject: Support yes/no style for KDUMP_CONTINUE_ON_ERROR References: bsc#1083155 Upstream: tbd The /etc/sysconfig/kdump in latest kdump initrd is generated by kdumptool. So the value of KDUMP_CONTINUE_ON_ERROR is yes instead of true. This patch make save_dump.sh support this value. Signed-off-by: Lance Wang <[email protected]> Acked-by: Petr Tesarik <[email protected]> --- init/save_dump.sh | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) --- a/init/save_dump.sh +++ b/init/save_dump.sh @@ -101,16 +101,20 @@ function continue_error() echo "Last command failed ($status)." - if ! [ "$KDUMP_CONTINUE_ON_ERROR" = "true" -o \ - "$KDUMP_CONTINUE_ON_ERROR" = "TRUE" ] ; then - echo - echo "Something failed. You can try to debug that here." - echo "Type 'reboot -f' to reboot the system or 'exit' to" - echo "boot in a normal system that still is running in the" - echo "kdump environment with restricted memory!" - bash - return 1 + if [ "$KDUMP_CONTINUE_ON_ERROR" = "yes" -o \ + "$KDUMP_CONTINUE_ON_ERROR" = "YES" -o \ + "$KDUMP_CONTINUE_ON_ERROR" = "true" -o \ + "$KDUMP_CONTINUE_ON_ERROR" = "TRUE" ]; then + return 0 fi + + echo + echo "Something failed. You can try to debug that here." + echo "Type 'reboot -f' to reboot the system or 'exit' to" + echo "boot in a normal system that still is running in the" + echo "kdump environment with restricted memory!" + bash + return 1 } function rw_fixup() ++++++ kdump-recover-from-missing-CRASHTIME.patch ++++++ From: Petr Tesarik <[email protected]> Subject: Recover from missing CRASHTIME= in VMCOREINFO References: bsc#1112387 Upstream: merged Git-commit: 0bc94943a1df4d923aa20b9bd1ff01ed2e49d70c CRASHTIME= may be missing in Xen Dom0 dumps. Vmcoreinfo::getLLongValue throws an exception in that case, but then OSRELEASE will not even be attempted. Consequently, kernel and system map files are not copied, producing the following message: INFO: Don't copy the kernel and System.map because of missing crash kernel release. Signed-off-by: Petr Tesarik <[email protected]> --- kdumptool/savedump.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) --- a/kdumptool/savedump.cc +++ b/kdumptool/savedump.cc @@ -469,13 +469,23 @@ void SaveDump::fillVmcoreinfo() { Vmcoreinfo vm; vm.readFromELF(m_dump.c_str()); - unsigned long long time = vm.getLLongValue("CRASHTIME"); + unsigned long long crashtime; - m_crashtime = Stringutil::formatUnixTime("%Y-%m-%d %H:%M (%z)", time); + try { + crashtime = vm.getLLongValue("CRASHTIME"); + } catch (const KError &error) { + Debug::debug()->dbg("Error getting CRASHTIME: %s", error.what()); + crashtime = time(NULL); + } + m_crashtime = Stringutil::formatUnixTime("%Y-%m-%d %H:%M (%z)", crashtime); - // don't overwrite m_crashrelease from command line - if (m_crashrelease.size() == 0) - m_crashrelease = vm.getStringValue("OSRELEASE"); + try { + // don't overwrite m_crashrelease from command line + if (m_crashrelease.size() == 0) + m_crashrelease = vm.getStringValue("OSRELEASE"); + } catch (const KError &error) { + Debug::debug()->dbg("Error getting OSRELEASE: %s", error.what()); + } Debug::debug()->dbg("Using crashtime: %s, crashrelease: %s", m_crashtime.c_str(), m_crashrelease.c_str()); ++++++ kdump-use-pbl.patch ++++++ Date: Mon Jul 2 18:12:34 2018 +0200 From: Michal Koutný <[email protected]> Subject: Replace obsolete perl-Bootloader library with a simpler script References: bsc#1050349 Upstream: tbd Signed-off-by: Michal Koutný <[email protected]> Acked-by: Petr Tesarik <[email protected]> --- init/CMakeLists.txt | 1 init/kdump-bootloader.pl | 48 ----------------------------------------------- init/load.sh | 14 ++----------- 3 files changed, 3 insertions(+), 60 deletions(-) --- a/init/CMakeLists.txt +++ b/init/CMakeLists.txt @@ -65,7 +65,6 @@ INSTALL( INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/mkdumprd - ${CMAKE_CURRENT_SOURCE_DIR}/kdump-bootloader.pl DESTINATION /usr/sbin PERMISSIONS --- a/init/load.sh +++ b/init/load.sh @@ -214,18 +214,10 @@ function fadump_bootloader() local newstate="$1" # check if the old configuration is still valid - boot_opts=$(kdump-bootloader.pl --get) - nofadump_opts=$(echo "$boot_opts" | remove_from_commandline 'fadump') - old_opts=$($KDUMPTOOL -F /dev/null -C <(echo "$boot_opts") \ - dump_config --usage dump --format kernel --nodefault) if [ "$newstate" = on ] ; then - curr_opts=$($KDUMPTOOL dump_config --usage dump --format kernel --nodefault) - if [ "$old_opts" != "$curr_opts" -o \ - "$boot_opts" = "$nofadump_opts" ] ; then - kdump-bootloader.pl --update fadump=on "$curr_opts" - fi - elif [ "$boot_opts" != "$nofadump_opts" ] ; then - kdump-bootloader.pl --update + pbl --add-option fadump=on --config + else + pbl --del-option fadump=on --config fi } --- a/init/kdump-bootloader.pl +++ /dev/null @@ -1,48 +0,0 @@ -#! /usr/bin/perl - -use Bootloader::Tools; - -Bootloader::Tools::InitLibrary(); - -my $grub2; -my $section; -if (Bootloader::Tools::GetBootloader() =~ /^(grub2|grub2-efi)$/) { - $grub2 = true; - $section = Bootloader::Tools::GetGlobals(); -} else { - $grub2 = false; - $section = Bootloader::Tools::GetDefaultSection(); -} - -if ($ARGV[0] eq "--get") { - print $section->{"append"}; -} elsif ($ARGV[0] eq "--update") { - my $input = $section->{"append"}; - my $result; - while (length($input)) { - $input =~ s/^[[:space:]]+//; - if ($input =~ s/^("[^"]*"?|[^"[:space:]]+)+//) { - my $rawparam = $&; - my $param = $rawparam; - $param =~ s/"//g; - $param =~ s/=(.*)//; - if (! ($param =~ /^KDUMP(TOOL)?_|^MAKEDUMPFILE_|^fadump$/)) { - $result .= " " if length($result); - $result .= $rawparam; - } - } - } - - shift @ARGV; - $result .= " " if length($result); - $result .= join(" ", @ARGV); - if ($grub2) { - Bootloader::Tools::SetGlobals("append" => $result); - } else { - $section->{"append"} = $result; - $section->{"__modified"} = 1; - Bootloader::Tools::SetGlobals(); - } -} else { - die "Need an action (--get or --update)"; -}
