diff --git a/0001-multipath-Write-proper-regex-into-multipath-conf.patch b/0001-multipath-Write-proper-regex-into-multipath-conf.patch deleted file mode 100644 index c256592..0000000 --- a/0001-multipath-Write-proper-regex-into-multipath-conf.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 4ce21a05fdfa91cb894d140c1962b29fb4b1431a Mon Sep 17 00:00:00 2001 -From: Julian Wolf -Date: Mon, 1 Sep 2014 15:46:21 +0200 -Subject: multipath: Write proper regex into multipath.conf - -Signed-off-by: Julian Wolf ---- - kdumptool/multipath.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kdumptool/multipath.cc b/kdumptool/multipath.cc -index 4ffe493..a9acafc 100644 ---- a/kdumptool/multipath.cc -+++ b/kdumptool/multipath.cc -@@ -206,7 +206,7 @@ void AddBlacklistHandler::outputLine(const string &raw) - // ----------------------------------------------------------------------------- - void AddBlacklistHandler::doBlacklist(lineHandler handler) - { -- (this->*handler)("\twwid \"*\"\n"); -+ (this->*handler)("\twwid \".*\"\n"); - m_blacklist_done = true; - } - --- -1.8.1.4 - diff --git a/kdump-0.8.15-fix-shebang.patch b/kdump-0.8.15-fix-shebang.patch deleted file mode 100644 index 9e7cdfc..0000000 --- a/kdump-0.8.15-fix-shebang.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -Ndur kdump-0.8.15/init/rc.kdump.functions kdump-0.8.15-fix-shebang/init/rc.kdump.functions ---- kdump-0.8.15/init/rc.kdump.functions 2014-06-23 18:47:39.000000000 +0300 -+++ kdump-0.8.15-fix-shebang/init/rc.kdump.functions 2014-11-23 07:28:42.856444929 +0200 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/bin/bash - # - # Copyright 2005 Red Hat, Inc. - # Author: Jeff Moyer diff --git a/kdump-0.8.15.tar.bz2 b/kdump-0.8.15.tar.bz2 deleted file mode 100644 index 23d508b..0000000 --- a/kdump-0.8.15.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2d492a9b833e571b32721d949ca140889a48aae38ae2288d7988f6c4e3aa5185 -size 3336592 diff --git a/kdump-0.8.16.tar.bz2 b/kdump-0.8.16.tar.bz2 new file mode 100644 index 0000000..7870ef6 --- /dev/null +++ b/kdump-0.8.16.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00e4ba5d9b424c7051e28b4014a0d341670ba1f3969226452d52007649e521fc +size 3336777 diff --git a/kdump-add-IPv6-KDUMP_NETCONFIG-modes.patch b/kdump-add-IPv6-KDUMP_NETCONFIG-modes.patch deleted file mode 100644 index 1ec585e..0000000 --- a/kdump-add-IPv6-KDUMP_NETCONFIG-modes.patch +++ /dev/null @@ -1,200 +0,0 @@ -From: Petr Tesarik -Date: Tue Sep 23 16:12:34 2014 +0200 -Subject: Add KDUMP_NETCONFIG modes to support IPv6 -References: bnc#885897 -Patch-mainline: v0.8.16 -Git-commit: ffd6542ed47a41be1f1d9f8df95781b6d94123d4 - -KDUMP_NETCONFIG had only two modes: static and dhcp, where dhcp -actually only means DHCP4. New modes are needed to get an IPv6 -address on the interface. - -Note that automatic configuration (KDUMP_NETCONFIG=auto) still uses -only IPv4, because dracut does not implement multiple alternative -ip configurations, and there's no way to determine in advance -which stack should be used. - -Signed-off-by: Petr Tesarik - ---- - doc/man/kdump.5.txt.in | 35 ++++++++++++++++++++++++++++++----- - init/module-setup.sh | 42 ++++++++++++++++++++++++++++++++++-------- - init/setup-kdump.functions | 39 ++++++++++++++++++++++++++++++++++++++- - sysconfig.kdump.in | 4 ++-- - 4 files changed, 104 insertions(+), 16 deletions(-) - ---- a/doc/man/kdump.5.txt.in -+++ b/doc/man/kdump.5.txt.in -@@ -513,13 +513,38 @@ KDUMP_NETCONFIG - - Network configuration for kdump. Because the dump process runs in initrd, the - network configuration is different from the normal network configuration. Use --_auto_ to auto-detect the network configuration, this is also the default. -+_auto_ to auto-detect the network configuration (see *auto* mode below). The -+interface with the default route will be used. This is the default. -+ -+Auto-detection cannot be used to set up dual-stack (IPv4 and IPv6) hosts -+because of limitations in the implementation of the _ip=_ initrd command line -+option. - - Use a _netdevice:mode_ string to force a specific network device to be used. A --_netdevice_ is for example "eth0". The _mode_ can be either "dhcp" or "static". --If you use "static", you have to set the IP address with _ip=ipspec_. _ipspec_ --is ::::::. See --*mkinitrd*(8) for details. -+_netdevice_ is for example "eth0". The _mode_ can be: -+ -+*static*:: -+ Always re-use the current configuration of _netdevice_ (both IPv4 and IPv6). -+ Note that only permanent global IPv6 addresses are stored, because temporary -+ addresses are likely to expire before the system crashes, and link-local -+ addresses are set up automatically. -+ -+*auto6*:: -+ Use IPv6 autoconfiguration to get an address on the interface. -+ -+*dhcp*:: -+*dhcp4*:: -+ Use DHCP to configure an IPv4 address on the interface. -+ -+*dhcp6*:: -+ Use DHCP6 to configure an IPv6 address on the interface. -+ -+*auto*:: -+ Select the mode depending on the current state of the interface: -+ -+ * use DHCP4 if it has an IPv4 address (IPv6 not set up), -+ * use DHCP6 if it has a permanent IPv6 address (IPv4 not set up), -+ * use IPv6 auto-configuration if it has neither (IPv4 not set up). - - You can set KDUMP_NETCONFIG to "" if you want no network in initrd, i.e. you use - disk dumping. ---- a/init/module-setup.sh -+++ b/init/module-setup.sh -@@ -65,24 +65,50 @@ kdump_cmdline_ip() { - [ "$kdump_neednet" = y ] || return 0 - - echo -n "rd.neednet=1" -+ -+ local _if _mode - if [ "$KDUMP_NETCONFIG" = "auto" ] ; then -- echo -n " ip=any" -+ _if=default -+ _mode=auto - else - set -- ${KDUMP_NETCONFIG//:/ } - local _if=$1 - local _mode=$2 -+ fi - -- if [ "$_if" = "default" ] ; then -- _if=$(kdump_default_netdev) -- fi -- printf " %s" $(kdump_ifname_config "$_if") -+ [ "$_if" = "default" ] && _if=$(kdump_default_netdev) - -- if [ "$_mode" = "static" ] ; then -- printf " %s" $(kdump_ip_config "$_if") -+ printf " %s" $(kdump_ifname_config "$_if") -+ -+ if [ "$_mode" = "auto" ] ; then -+ if [ -n $(kdump_ip_config "$_if") ] ; then -+ _mode=dhcp4 -+ elif [ -n $(kdump_ip6_config "$_if") ] ; then -+ _mode=dhcp6 - else -- echo -n " ip=${_if}:dhcp" -+ _mode=auto6 - fi - fi -+ -+ case "$_mode" in -+ static) -+ printf " %s" \ -+ $(kdump_ip_config "$_if") \ -+ $(kdump_ip6_config "$_if") -+ ;; -+ dhcp|dhcp4) -+ echo " ip=${_if}:dhcp" -+ ;; -+ dhcp6) -+ echo " ip=${_if}:dhcp6" -+ ;; -+ auto6) -+ echo " ip=${_if}:auto6" -+ ;; -+ *) -+ derror "Wrong KDUMP_NETCONFIG mode: $_mode" -+ ;; -+ esac - } - - cmdline() { ---- a/init/setup-kdump.functions -+++ b/init/setup-kdump.functions -@@ -230,7 +230,7 @@ kdump_prefix2netmask() { # {{{ - } # }}} - - # --# Get the ip= parameter for a given device -+# Get the IPv4 ip= parameter for a given device - # - # Parameters: - # 1) device device name -@@ -267,6 +267,43 @@ function kdump_ip_config() # {{{ - } # }}} - - # -+# Get the IPv6 ip= parameter for a given device -+# -+# Parameters: -+# 1) device device name -+# Output: -+# ip configuration string that can be used for the ip= initrd parameter -+function kdump_ip6_config() # {{{ -+{ -+ local iface="$1" -+ local ipaddr peeraddr gwaddr hostname -+ local family cidr rest prefix -+ -+ hostname=$(hostname) -+ gwaddr=$(ip -6 route show ::/0 | sed -n 's/.* via \([^ ]*\).*/[\1]/p') -+ -+ while read family cidr rest -+ do -+ [ "$family" = "inet6" ] || continue -+ -+ ipaddr="${cidr%/*}" -+ prefix="${cidr:${#ipaddr}}" -+ ipaddr="[$ipaddr]$prefix" -+ set -- $rest -+ -+ if [ "$1" == "peer" ] ; then -+ peeraddr="${2%/*}" -+ prefix="${2:${#peeraddr}}" -+ peeraddr="[$peeraddr]" -+ else -+ peeraddr= -+ fi -+ -+ echo "ip=$ipaddr:$peeraddr:$gwaddr::$hostname:$iface:none" -+ done < <(ip -6 address show dev "$iface" permanent scope global) -+} # }}} -+ -+# - # Get the save directory and protocol. - # - # Output variables: ---- a/sysconfig.kdump.in -+++ b/sysconfig.kdump.in -@@ -279,8 +279,8 @@ KDUMPTOOL_FLAGS="" - ## ServiceRestart: kdump - # - # Network configuration. Use "auto" for auto-detection in initrd, or a string --# that contains the network device and the mode (dhcp,static), separated by --# a colon. Example: "eth0:static" or "eth1:dhcp". -+# that contains the network device and the mode (static, dhcp, dhcp6, auto6), -+# separated by a colon. Example: "eth0:static" or "eth1:dhcp". - # - # For static configuration, you have to add the configuration to - # KDUMP_COMMANDLINE_APPEND. diff --git a/kdump-bootloader-grub2.patch b/kdump-bootloader-grub2.patch deleted file mode 100644 index ad9f110..0000000 --- a/kdump-bootloader-grub2.patch +++ /dev/null @@ -1,59 +0,0 @@ -Date: Fri Sep 26 11:43:33 2014 +0200 -From: Petr Tesarik -Subject: kdump-Bootloader: add support for GRUB2 -References: bsc#889192 -Patch-mainline: v0.8.16 -Git-commit: 30d4271c72251c5f1c995d0580b19aa000ade1d6 - -GRUB2 is very different from the other bootloader, because the final -configuration file is generated by an external utility. This means -that the command line must be modified in the global settings instead -of the individual section. - -Signed-off-by: Petr Tesarik - ---- - init/kdump-bootloader.pl | 22 +++++++++++++++++----- - 1 file changed, 17 insertions(+), 5 deletions(-) - ---- a/init/kdump-bootloader.pl -+++ b/init/kdump-bootloader.pl -@@ -4,11 +4,19 @@ 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") { -- my $section = Bootloader::Tools::GetDefaultSection (); - print $section->{"append"}; - } elsif ($ARGV[0] eq "--update") { -- my $section = Bootloader::Tools::GetDefaultSection (); - my $input = $section->{"append"}; - my $result; - while (length($input)) { -@@ -28,9 +36,13 @@ if ($ARGV[0] eq "--get") { - shift @ARGV; - $result .= " " if length($result); - $result .= join(" ", @ARGV); -- $section->{"append"} = $result; -- $section->{"__modified"} = 1; -- Bootloader::Tools::SetGlobals(); -+ 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)"; - } diff --git a/kdump-calibrate-systemd-initramfs.patch b/kdump-calibrate-systemd-initramfs.patch deleted file mode 100644 index e0a5590..0000000 --- a/kdump-calibrate-systemd-initramfs.patch +++ /dev/null @@ -1,99 +0,0 @@ -From: Petr Tesarik -Date: Thu Sep 18 17:03:46 2014 +0200 -Subject: Calibrate: update the initramfs size -References: bnc#883883 -Patch-mainline: v0.8.16 -Git-commit: b2ab003f54da780cc1ca8ebfe47f39ddd936b34a - -Yes, systemd also needs some space in the initramfs, causing approx. -20% increase. Let's account for it... - -Signed-off-by: Petr Tesarik - ---- - kdumptool/calibrate.cc | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - ---- a/kdumptool/calibrate.cc -+++ b/kdumptool/calibrate.cc -@@ -59,7 +59,7 @@ - #if defined(__x86_64__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(16) --# define INIT_KB MB(28) -+# define INIT_KB MB(34) - # define INIT_NET_KB MB(3) - # define SIZE_STRUCT_PAGE 56 - # define KDUMP_PHYS_LOAD 0 -@@ -69,7 +69,7 @@ - #elif defined(__i386__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(14) --# define INIT_KB MB(24) -+# define INIT_KB MB(29) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 32 - # define KDUMP_PHYS_LOAD 0 -@@ -79,7 +79,7 @@ - #elif defined(__powerpc64__) - # define DEF_RESERVE_KB MB(256) - # define KERNEL_KB MB(16) --# define INIT_KB MB(48) -+# define INIT_KB MB(58) - # define INIT_NET_KB MB(4) - # define SIZE_STRUCT_PAGE 64 - # define KDUMP_PHYS_LOAD MB(128) -@@ -89,7 +89,7 @@ - #elif defined(__powerpc__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(12) --# define INIT_KB MB(28) -+# define INIT_KB MB(34) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 32 - # define KDUMP_PHYS_LOAD MB(128) -@@ -99,7 +99,7 @@ - #elif defined(__s390x__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(13) --# define INIT_KB MB(28) -+# define INIT_KB MB(34) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 56 - # define KDUMP_PHYS_LOAD 0 -@@ -111,7 +111,7 @@ - #elif defined(__s390__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(12) --# define INIT_KB MB(24) -+# define INIT_KB MB(29) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 32 - # define KDUMP_PHYS_LOAD 0 -@@ -123,7 +123,7 @@ - #elif defined(__ia64__) - # define DEF_RESERVE_KB MB(512) - # define KERNEL_KB MB(32) --# define INIT_KB MB(36) -+# define INIT_KB MB(44) - # define INIT_NET_KB MB(4) - # define SIZE_STRUCT_PAGE 56 - # define KDUMP_PHYS_LOAD 0 -@@ -133,7 +133,7 @@ - #elif defined(__aarch64__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(10) --# define INIT_KB MB(24) -+# define INIT_KB MB(29) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 56 - # define KDUMP_PHYS_LOAD 0 -@@ -143,7 +143,7 @@ - #elif defined(__arm__) - # define DEF_RESERVE_KB MB(128) - # define KERNEL_KB MB(12) --# define INIT_KB MB(24) -+# define INIT_KB MB(29) - # define INIT_NET_KB MB(2) - # define SIZE_STRUCT_PAGE 32 - # define KDUMP_PHYS_LOAD 0 diff --git a/kdump-calibrate-systemd-runtime.patch b/kdump-calibrate-systemd-runtime.patch deleted file mode 100644 index c288f21..0000000 --- a/kdump-calibrate-systemd-runtime.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Petr Tesarik -Date: Thu Sep 18 17:01:08 2014 +0200 -Subject: Calibrate: update user-space run-time requirements for systemd -References: bnc#883883 -Patch-mainline: v0.8.16 -Git-commit: 04bc6fa91a88e7ff91acb6d2924774bf28463c6b - -If systemd is included, journald is also started, so the estimate -must add: - -1. the process -2. the journal, which is stored in ramfs - -I would love to reduce the size of the journal, but systemd hard-codes -the minimum to 4M, see src/journal/journal-file.c: - -/* This is the minimum journal file size */ -#define JOURNAL_FILE_SIZE_MIN (4ULL*1024ULL*1024ULL) /* 4 MiB */ - -Strictly speaking, journald is allowed to use at least twice as much, -but let's hope it doesn't in practice. - -Signed-off-by: Petr Tesarik - ---- - kdumptool/calibrate.cc | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - ---- a/kdumptool/calibrate.cc -+++ b/kdumptool/calibrate.cc -@@ -203,13 +203,15 @@ static inline unsigned long s390x_align_ - #define DIRTY_RATIO 20 - - // Userspace base requirements: --// bash (PID 1) 3 M -+// systemd (PID 1) 3 M -+// journald 2 M -+// the journal itself 4 M - // 10 * udevd 12 M - // kdumptool 4 M - // makedumpfile 1 M - // ------------------------- --// TOTAL: 20 M --#define USER_BASE_KB MB(20) -+// TOTAL: 26 M -+#define USER_BASE_KB MB(26) - - // Additional requirements when network is configured - // dhclient 7 M diff --git a/kdump-cmake-compat.patch b/kdump-cmake-compat.patch new file mode 100644 index 0000000..f7ee354 --- /dev/null +++ b/kdump-cmake-compat.patch @@ -0,0 +1,28 @@ +From: Petr Tesarik +Date: Wed Oct 5 08:48:38 2016 +0200 +Subject: Avoid using TARGET_* cmake directives +Upstream: never; compatibility with older SUSE distros + +The TARGET_INCLUDE_DIRECTORIES directive was added in cmake 3.0.2. +It is not recognized by older versions. + +This patch can be removed when we stop caring about SLES11... + +Signed-off-by: Petr Tesarik +--- + init/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/init/CMakeLists.txt ++++ b/init/CMakeLists.txt +@@ -20,8 +20,8 @@ + ADD_EXECUTABLE(device-timeout-generator + device-timeout-generator.c + ) +-TARGET_INCLUDE_DIRECTORIES(device-timeout-generator +- PUBLIC ${BLKID_INCLUDE_DIRS}) ++INCLUDE_DIRECTORIES( ++ ${BLKID_INCLUDE_DIRS}) + TARGET_LINK_LIBRARIES(device-timeout-generator + ${BLKID_LIBRARIES}) + diff --git a/kdump-count-const-slabs.patch b/kdump-count-const-slabs.patch deleted file mode 100644 index a604639..0000000 --- a/kdump-count-const-slabs.patch +++ /dev/null @@ -1,252 +0,0 @@ -From: Petr Tesarik -Date: Mon Sep 8 17:33:38 2014 +0200 -Subject: Take constant-size slabs into account for "kdump calibrate" -References: bnc#879460 -Patch-mainline: v0.8.16 -Git-commit: 3a7c9b3a02893ab9ac39e23cae5ead9e42716927 -Git-commit: 8c0a42e80a89100addc09d584253f1c8accde500 - -Some slabs do not depend on available memory or system utilization. -Their size can be taken directly from the running kernel. - -Note that the size of the ACPI slab cache may vary widely across -machines (e.g. mine has only a few hundred kilobytes, while another -one I saw had over 10 megabytes). - -Signed-off-by: Petr Tesarik - ---- - kdumptool/calibrate.cc | 215 +++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 215 insertions(+) - ---- a/kdumptool/calibrate.cc -+++ b/kdumptool/calibrate.cc -@@ -448,6 +448,201 @@ unsigned long Framebuffers::size(void) c - } - - //}}} -+//{{{ SlabInfo ----------------------------------------------------------------- -+ -+class SlabInfo { -+ -+ public: -+ /** -+ * Initialize a new SlabInfo object. -+ * -+ * @param[in] line Line from /proc/slabinfo -+ */ -+ SlabInfo(const KString &line); -+ -+ protected: -+ bool m_comment; -+ KString m_name; -+ unsigned long m_active_objs; -+ unsigned long m_num_objs; -+ unsigned long m_obj_size; -+ unsigned long m_obj_per_slab; -+ unsigned long m_pages_per_slab; -+ unsigned long m_active_slabs; -+ unsigned long m_num_slabs; -+ -+ public: -+ bool isComment(void) const -+ throw () -+ { return m_comment; } -+ -+ const KString &name(void) const -+ throw () -+ { return m_name; } -+ -+ unsigned long activeObjs(void) const -+ throw () -+ { return m_active_objs; } -+ -+ unsigned long numObjs(void) const -+ throw () -+ { return m_num_objs; } -+ -+ unsigned long objSize(void) const -+ throw () -+ { return m_obj_size; } -+ -+ unsigned long objPerSlab(void) const -+ throw () -+ { return m_obj_per_slab; } -+ -+ unsigned long pagesPerSlab(void) const -+ throw () -+ { return m_pages_per_slab; } -+ -+ unsigned long activeSlabs(void) const -+ throw () -+ { return m_active_slabs; } -+ -+ unsigned long numSlabs(void) const -+ throw () -+ { return m_num_slabs; } -+}; -+ -+// ----------------------------------------------------------------------------- -+SlabInfo::SlabInfo(const KString &line) -+{ -+ static const char slabdata_mark[] = " : slabdata "; -+ -+ std::istringstream ss(line); -+ ss >> m_name; -+ if (!ss) -+ throw KError("Invalid slabinfo line: " + line); -+ -+ if (m_name[0] == '#') { -+ m_comment = true; -+ return; -+ } -+ m_comment = false; -+ -+ ss >> m_active_objs >> m_num_objs >> m_obj_size -+ >> m_obj_per_slab >> m_pages_per_slab; -+ if (!ss) -+ throw KError("Invalid slabinfo line: " + line); -+ -+ size_t sdpos = line.find(slabdata_mark, ss.tellg()); -+ if (sdpos == KString::npos) -+ throw KError("Invalid slabinfo line: " + line); -+ -+ ss.seekg(sdpos + sizeof(slabdata_mark) - 1, ss.beg); -+ ss >> m_active_slabs >> m_num_slabs; -+ if (!ss) -+ throw KError("Invalid slabinfo line: " + line); -+} -+ -+//}}} -+//{{{ SlabInfos ---------------------------------------------------------------- -+ -+// Taken from procps: -+#define SLABINFO_LINE_LEN 2048 -+#define SLABINFO_VER_LEN 100 -+ -+class SlabInfos { -+ -+ public: -+ typedef std::map Map; -+ -+ /** -+ * Initialize a new SlabInfos object. -+ * -+ * @param[in] procdir Mount point for procfs -+ */ -+ SlabInfos(const char *procdir = "/proc") -+ throw () -+ : m_path(FilePath(procdir).appendPath("slabinfo")) -+ {} -+ -+ ~SlabInfos() -+ { destroyInfo(); } -+ -+ protected: -+ /** -+ * Path to the slabinfo file -+ */ -+ const FilePath m_path; -+ -+ /** -+ * SlabInfo for each slab -+ */ -+ Map m_info; -+ -+ private: -+ /** -+ * Destroy SlabInfo objects in m_info. -+ */ -+ void destroyInfo(void) -+ throw(); -+ -+ public: -+ /** -+ * Read the information about each slab. -+ */ -+ const Map& getInfo(void); -+}; -+ -+// ----------------------------------------------------------------------------- -+void SlabInfos::destroyInfo(void) -+ throw() -+{ -+ Map::iterator it; -+ for (it = m_info.begin(); it != m_info.end(); ++it) -+ delete it->second; -+ m_info.clear(); -+} -+ -+// ----------------------------------------------------------------------------- -+const SlabInfos::Map& SlabInfos::getInfo(void) -+{ -+ static const char verhdr[] = "slabinfo - version: "; -+ char buf[SLABINFO_VER_LEN], *p, *end; -+ unsigned long major, minor; -+ -+ std::ifstream f(m_path.c_str()); -+ if (!f) -+ throw KError(m_path + ": Open failed"); -+ f.getline(buf, sizeof buf); -+ if (f.bad()) -+ throw KError(m_path + ": Read failed"); -+ else if (!f || strncmp(buf, verhdr, sizeof(verhdr)-1)) -+ throw KError(m_path + ": Invalid version"); -+ p = buf + sizeof(verhdr) - 1; -+ -+ major = strtoul(p, &end, 10); -+ if (end == p || *end != '.') -+ throw KError(m_path + ": Invalid version"); -+ p = end + 1; -+ minor = strtoul(p, &end, 10); -+ if (end == p || *end != '\0') -+ throw KError(m_path + ": Invalid version"); -+ Debug::debug()->dbg("Found slabinfo version %lu.%lu", major, minor); -+ -+ if (major != 2) -+ throw KError(m_path + ": Unsupported slabinfo version"); -+ -+ char line[SLABINFO_LINE_LEN]; -+ while(f.getline(line, SLABINFO_LINE_LEN)) { -+ SlabInfo *si = new SlabInfo(line); -+ if (si->isComment()) { -+ delete si; -+ continue; -+ } -+ m_info[si->name()] = si; -+ } -+ -+ return m_info; -+} -+ -+//}}} - //{{{ Calibrate ---------------------------------------------------------------- - - // ----------------------------------------------------------------------------- -@@ -498,6 +693,26 @@ void Calibrate::execute() - required += DEF_FRAMEBUFFER_KB; - } - -+ // Add space for constant slabs -+ try { -+ SlabInfos slab; -+ SlabInfos::Map info = slab.getInfo(); -+ SlabInfos::Map::iterator it; -+ for (it = info.begin(); it != info.end(); ++it) { -+ if (it->first.startsWith("Acpi-") || -+ it->first.startsWith("ftrace_") ) { -+ unsigned long slabsize = it->second->numSlabs() * -+ it->second->pagesPerSlab() * pagesize / 1024; -+ required += slabsize; -+ -+ Debug::debug()->dbg("Adding %ld KiB for %s slab cache", -+ slabsize, it->second->name().c_str()); -+ } -+ } -+ } catch (KError e) { -+ Debug::debug()->dbg("Cannot get slab sizes: %s", e.what()); -+ } -+ - // Add memory based on CPU count - unsigned long cpus; - if (CAN_REDUCE_CPUS) { diff --git a/kdump-count-framebuffer.patch b/kdump-count-framebuffer.patch deleted file mode 100644 index 888005c..0000000 --- a/kdump-count-framebuffer.patch +++ /dev/null @@ -1,228 +0,0 @@ -From: Petr Tesarik -Date: Mon Sep 8 09:28:04 2014 +0200 -Subject: Take framebuffer size into account for "kdumptool calibrate" -References: bnc#879460 -Patch-mainline: v0.8.16 -Git-commit: 77ad2fff73fc6dd2dd0615e56967721ba9b96d83 -Git-commit: 7cd4e826671ded8fe36a4b4bdeef1223ce8397ca - -Depending on the resolution, framebuffer(s) may considerably influence -kdump kernel requirements. - -Note that there is no framebuffer on z/Series, so after reading sysfs -fails, the default size for s390(x) is zero. - -Signed-off-by: Petr Tesarik - ---- - kdumptool/calibrate.cc | 153 +++++++++++++++++++++++++++++++++++++++++++++++++ - kdumptool/fileutil.cc | 2 - kdumptool/fileutil.h | 2 - 3 files changed, 155 insertions(+), 2 deletions(-) - ---- a/kdumptool/fileutil.cc -+++ b/kdumptool/fileutil.cc -@@ -295,7 +295,7 @@ FilePath FilePath::getCanonicalPath(cons - } - - // ----------------------------------------------------------------------------- --StringVector FilePath::listDir(const ListDirFilter &filter) -+StringVector FilePath::listDir(const ListDirFilter &filter) const - throw (KError) - { - StringVector v; ---- a/kdumptool/fileutil.h -+++ b/kdumptool/fileutil.h -@@ -224,7 +224,7 @@ class FilePath : public KString { - * list, @c false if all files should be included - * @exception KError if something went wrong - */ -- StringVector listDir(const ListDirFilter &filter) -+ StringVector listDir(const ListDirFilter &filter) const - throw (KError); - - /** ---- a/kdumptool/calibrate.cc -+++ b/kdumptool/calibrate.cc -@@ -19,7 +19,10 @@ - #include - #include - #include -+#include -+#include - #include -+#include - - #include "subcommand.h" - #include "debug.h" -@@ -173,6 +176,13 @@ static inline unsigned long s390x_align_ - // Estimated non-changing dynamic data (sysfs, procfs, etc.) - #define KERNEL_DYNAMIC_KB MB(4) - -+// Default framebuffer size: 1024x768 @ 32bpp, except on mainframe -+#if defined(__s390__) || defined(__s390x__) -+# define DEF_FRAMEBUFFER_KB 0 -+#else -+# define DEF_FRAMEBUFFER_KB (768UL*4) -+#endif -+ - // large hashes, default settings: -> per MiB - // PID: sizeof(void*) for each 256 KiB 4 - // Dentry cache: sizeof(void*) for each 8 KiB 128 -@@ -303,6 +313,141 @@ unsigned long SystemCPU::count(const cha - } - - //}}} -+//{{{ Framebuffer -------------------------------------------------------------- -+ -+class Framebuffer { -+ -+ public: -+ /** -+ * Initialize a new Framebuffer object. -+ * -+ * @param[in] fbpath Framebuffer sysfs directory path -+ */ -+ Framebuffer(const char *fbpath) -+ throw () -+ : m_dir(fbpath) -+ {} -+ -+ protected: -+ /** -+ * Path to the framebuffer device base directory -+ */ -+ const FilePath m_dir; -+ -+ public: -+ /** -+ * Get length of the framebuffer [in bytes]. -+ */ -+ unsigned long size(void) const; -+}; -+ -+// ----------------------------------------------------------------------------- -+unsigned long Framebuffer::size(void) const -+{ -+ FilePath fp; -+ std::ifstream f; -+ unsigned long width, height, stride; -+ char sep; -+ -+ fp.assign(m_dir); -+ fp.appendPath("virtual_size"); -+ f.open(fp.c_str()); -+ if (!f) -+ throw KError(fp + ": Open failed"); -+ f >> width >> sep >> height; -+ f.close(); -+ if (f.bad()) -+ throw KError(fp + ": Read failed"); -+ else if (!f || sep != ',') -+ throw KError(fp + ": Invalid content!"); -+ Debug::debug()->dbg("Framebuffer virtual size: %lux%lu", width, height); -+ -+ fp.assign(m_dir); -+ fp.appendPath("stride"); -+ f.open(fp.c_str()); -+ if (!f) -+ throw KError(fp + ": Open failed"); -+ f >> stride; -+ f.close(); -+ if (f.bad()) -+ throw KError(fp + ": Read failed"); -+ else if (!f || sep != ',') -+ throw KError(fp + ": Invalid content!"); -+ Debug::debug()->dbg("Framebuffer stride: %lu bytes", stride); -+ -+ return stride * height; -+} -+ -+//}}} -+//{{{ Framebuffers ------------------------------------------------------------- -+ -+class Framebuffers { -+ -+ public: -+ /** -+ * Initialize a new Framebuffer object. -+ * -+ * @param[in] sysdir Mount point for sysfs -+ */ -+ Framebuffers(const char *sysdir = "/sys") -+ throw () -+ : m_fbdir(FilePath(sysdir).appendPath("class/graphics")) -+ {} -+ -+ protected: -+ /** -+ * Path to the base directory with links to framebuffer devices -+ */ -+ const FilePath m_fbdir; -+ -+ /** -+ * Filter only valid framebuffer device name -+ */ -+ class DirFilter : public ListDirFilter { -+ -+ public: -+ virtual ~DirFilter() -+ {} -+ -+ bool test(const struct dirent *d) const -+ { -+ char *end; -+ if (strncmp(d->d_name, "fb", 2)) -+ return false; -+ strtoul(d->d_name + 2, &end, 10); -+ return (*end == '\0' && end != d->d_name + 2); -+ } -+ }; -+ -+ public: -+ /** -+ * Get size of all framebuffers [in bytes]. -+ */ -+ unsigned long size(void) const; -+}; -+ -+// ----------------------------------------------------------------------------- -+unsigned long Framebuffers::size(void) const -+{ -+ Debug::debug()->trace("Framebuffers::size()"); -+ -+ unsigned long ret = 0UL; -+ -+ StringVector v = m_fbdir.listDir(DirFilter()); -+ for (StringVector::const_iterator it = v.begin(); it != v.end(); ++it) { -+ Debug::debug()->dbg("Found framebuffer: %s", it->c_str()); -+ -+ FilePath fp(m_fbdir); -+ fp.appendPath(*it); -+ Framebuffer fb(fp.c_str()); -+ ret += fb.size(); -+ } -+ -+ Debug::debug()->dbg("Total size of all framebuffers: %lu bytes", ret); -+ return ret; -+} -+ -+//}}} - //{{{ Calibrate ---------------------------------------------------------------- - - // ----------------------------------------------------------------------------- -@@ -345,6 +490,14 @@ void Calibrate::execute() - // Run-time kernel requirements - required = KERNEL_KB + ramfs + KERNEL_DYNAMIC_KB; - -+ try { -+ Framebuffers fb; -+ required += fb.size() / 1024UL; -+ } catch(KError e) { -+ Debug::debug()->dbg("Cannot get framebuffer size: %s", e.what()); -+ required += DEF_FRAMEBUFFER_KB; -+ } -+ - // Add memory based on CPU count - unsigned long cpus; - if (CAN_REDUCE_CPUS) { diff --git a/kdump-enable-fadump-ppc64le.patch b/kdump-enable-fadump-ppc64le.patch deleted file mode 100644 index f6bf448..0000000 --- a/kdump-enable-fadump-ppc64le.patch +++ /dev/null @@ -1,33 +0,0 @@ -Date: Wed Sep 24 13:56:42 2014 +0200 -From: Petr Tesarik -Subject: Enable FADUMP on ppc64le -References: bsc#889192 -Patch-mainline: v0.8.16 -Git-commit: 69bce53e9a02145e857bd4c36effcaf560a8f8cf - -The FADUMP feature is only available on IBM POWER systems, but the -new little-endian variant has a new CMAKE_SYSTEM_PROCESSOR value. - -Signed-off-by: Petr Tesarik - ---- - CMakeLists.txt | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -144,11 +144,11 @@ ENDIF(NOT LIBSSL_FOUND) - # Check for FADUMP - # - --IF(“${CMAKE_SYSTEM_PROCESSOR}” STREQUAL “ppc64”) -+IF("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "ppc64(le)?") - SET(HAVE_FADUMP TRUE) --ELSE(“${CMAKE_SYSTEM_PROCESSOR}” STREQUAL “ppc64”) -+ELSE() - SET(HAVE_FADUMP FALSE) --ENDIF(“${CMAKE_SYSTEM_PROCESSOR}” STREQUAL “ppc64”) -+ENDIF() - - # - # Configure file diff --git a/kdump-fadump-bootloader-always.patch b/kdump-fadump-bootloader-always.patch deleted file mode 100644 index 8dda0dd..0000000 --- a/kdump-fadump-bootloader-always.patch +++ /dev/null @@ -1,44 +0,0 @@ -Date: Fri Sep 26 08:10:38 2014 +0200 -From: Petr Tesarik -Subject: Always turn on fadump if KDUMP_FADUMP is true -References: bsc#889192 -Patch-mainline: v0.8.16 -Git-commit: 1f7e52d908f0ad2b2a33cdd374a8888bcf6f8234 - -The problem is that fadump-related files under /sys/kernel are -created only if the kernel is booted with fadump=on. So, this -is a chicken-and-egg problem, and a reboot is always necessary if -the current kernel is loaded without fadump=on. - -However, if the command line is not modified here, the admin must -first add fadump=on to the bootloader command line, and then enable -KDUMP_FADUMP, i.e. enable it in two different places. If the command -line is modified unconditionally, there is only one "big switch" for -FADUMP. - -Signed-off-by: Petr Tesarik - ---- - init/rc.kdump.functions | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/init/rc.kdump.functions -+++ b/init/rc.kdump.functions -@@ -259,6 +259,8 @@ function fadump_bootloader() - # Update fadump configuration - function load_kdump_fadump() - { -+ fadump_bootloader on -+ - if ! fadump_enabled; then - echo ": fadump is not enabled in the kernel." - rc_status -s -@@ -266,8 +268,6 @@ function load_kdump_fadump() - rc_exit - fi - -- fadump_bootloader on -- - # The kernel fails with EINVAL if registered already - # (see bnc#814780) - if [ "$(cat $FADUMP_REGISTERED)" != "1" ]; then diff --git a/kdump-fadump-keep-sysroot.patch b/kdump-fadump-keep-sysroot.patch deleted file mode 100644 index 308497f..0000000 --- a/kdump-fadump-keep-sysroot.patch +++ /dev/null @@ -1,59 +0,0 @@ -Date: Fri Sep 26 15:50:05 2014 +0200 -From: Petr Tesarik -Subject: Keep /sysroot mount point if fadump is on -References: bsc#889192 -Patch-mainline: v0.8.16 -Git-commit: 4c1a5aac3df1e4ea2f0509c5b653083a02c1d4dc - -As FADUMP uses the normal initrd, the system must be able to boot up -eventually, so normal mount points are required. - -But mounting the same device twice may not be possible because of -conflicting mount options, so system root may not be mountable under -/kdump. In order to keep the kdump-specific mount point hierarchy, -convert any such mount to a bind mount from /sysroot. - -Signed-off-by: Petr Tesarik - ---- - init/module-setup.sh | 20 ++++++++++++++++++-- - 1 file changed, 18 insertions(+), 2 deletions(-) - ---- a/init/module-setup.sh -+++ b/init/module-setup.sh -@@ -126,17 +126,33 @@ install() { - kdump_map_mpath_wwid - for_each_host_dev_and_slaves_all kdump_add_mpath_dev - -+ # Convert system root mounts to bind mounts -+ if [ "$KDUMP_FADUMP" = "yes" ] ; then -+ local i line -+ for i in "${!fstab_lines[@]}" -+ do -+ line=( ${fstab_lines[i]} ) -+ if [ "${line[1]%/*}" = "/kdump" ] ; then -+ fstab_lines[i]="/sysroot ${line[1]} none bind" -+ fi -+ done -+ fi -+ - kdump_setup_files "$initdir" "$kdump_mpath_wwids" - - if dracut_module_included "systemd" ; then -- rm -f "${initdir}/$systemdutildir"/system-generators/dracut-rootfs-generator -+ [ "$KDUMP_FADUMP" != yes ] && \ -+ rm -f "${initdir}/$systemdutildir"/system-generators/dracut-rootfs-generator -+ - inst_simple /lib/kdump/save_dump.sh - inst_simple "$moddir/kdump-save.service" \ - "$systemdsystemunitdir"/kdump-save.service - ln_r "$systemdsystemunitdir"/kdump-save.service \ - "$systemdsystemunitdir"/initrd.target.wants/kdump-save.service - else -- inst_hook mount 30 "$moddir/mount-kdump.sh" -+ [ "$KDUMP_FADUMP" != yes ] && \ -+ inst_hook mount 30 "$moddir/mount-kdump.sh" -+ - inst_hook pre-pivot 90 /lib/kdump/save_dump.sh - fi - diff --git a/kdump-get-multipath-wwid-from-sysfs.patch b/kdump-get-multipath-wwid-from-sysfs.patch deleted file mode 100644 index c0ac282..0000000 --- a/kdump-get-multipath-wwid-from-sysfs.patch +++ /dev/null @@ -1,164 +0,0 @@ -From: Petr Tesarik -Date: Mon Sep 22 17:23:49 2014 +0200 -Subject: Get required multipath wwids from sysfs -References: bnc#883883 -Patch-mainline: v0.8.16 -Git-commit: 4aa46801a53070dc0b0c27f4247cdc8e2b678694 -Git-commit: bb073caafcecfe667fba528c170f89bb29447a1d - -The dracut code path must use for_each_host_dev_and_slaves_all to -find multipath devices that are "hidden" beneath e.g. an LVM volume. -That will iterate over all devices in the chain down to each physical -device. Note that /lib/udev/scsi_id sends a low-level SCSI command to -the device to find out the WWID. If it sends it to an unreachable -device in an active-passive multipath setup, it may hang indefinitely. - -But the WWID is already available as the name of the multipath device, -so we can get it from the kernel via sysfs. - -Signed-off-by: Petr Tesarik - ---- - init/module-setup.sh | 18 +++++++++++++++++- - init/setup-kdump.functions | 41 +++++++++++++++++++++++++++-------------- - init/setup-kdump.sh | 16 +++++++++++++++- - 3 files changed, 59 insertions(+), 16 deletions(-) - ---- a/init/module-setup.sh -+++ b/init/module-setup.sh -@@ -11,12 +11,28 @@ depends() { - echo drm - } - -+kdump_add_mpath_dev() { -+ local _major=${1%:*} -+ local _minor=${1#*:} -+ local _wwid -+ -+ eval _wwid=\$kdump_mpath_wwid_${_major}_${_minor} -+ if [ -n "$_wwid" ] ; then -+ kdump_mpath_wwids+=$(printf "%q " "wwid $_wwid") -+ fi -+} -+ - install() { - # Get configuration - kdump_get_config || return 1 - kdump_import_targets - -- kdump_setup_files "$initdir" "${!host_fs_types[*]}" -+ # Get a list of required multipath devices -+ local kdump_mpath_wwids -+ kdump_map_mpath_wwid -+ for_each_host_dev_and_slaves_all kdump_add_mpath_dev -+ -+ kdump_setup_files "$initdir" "$kdump_mpath_wwids" - - if dracut_module_included "systemd" ; then - rm -f "${initdir}/$systemdutildir"/system-generators/dracut-rootfs-generator ---- a/init/setup-kdump.functions -+++ b/init/setup-kdump.functions -@@ -542,24 +542,36 @@ function kdump_modify_config() # - } # }}} - - # -+# Build a mapping between multipath devices and their wwid -+# This map would be best stored in an associative array, but -+# then bash 4.0+ would be needed (and SLES11 has bash 3.2). -+# -+# Output variables: -+# kdump_mpath_wwid_$major_$minor wwid of the given major/minor device -+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 -+ _dir="${f%/dm/uuid}" -+ _wwid=$(<"$_dir"/dm/name) -+ _dev=$(<"$_dir"/dev) -+ eval kdump_mpath_wwid_${_dev/:/_}=\$_wwid -+ done -+} # }}} -+ -+# - # Keep only required devices in multipath.conf - # - # Parameters: --# 1) devices: list of all required block devices -+# 1) devices: list of all required devices (multipath.conf syntax) - # Output: - # filtered multipath.conf - function kdump_modify_multipath() # {{{ - { -- local devices="$1" -- local i bd scsi_id - local -a wwids -- -- i=0 -- for bd in $devices ; do -- scsi_id=$(/lib/udev/scsi_id --whitelisted --device="$bd") -- [ -z "$scsi_id" ] && continue -- wwids[i++]="wwid "\""$scsi_id"\" -- done -+ eval wwids="($1)" - kdumptool multipath "${wwids[@]}" \ - < /etc/multipath.conf - } # }}} -@@ -633,8 +645,9 @@ function kdump_init_dirs() # {{{ - # - # Set up or create all necessary files - # Parameters: --# 1) outdir: initrd temporary root --# 2) dumpdevs: space-separated list of all block devices required by kdump -+# 1) outdir: initrd temporary root -+# 2) mpathdevs: space-separated list of all multipath devices required -+# by kdump (using multipath.conf syntax) - # Input variables: - # KDUMP_* see kdump_get_config - # kdump_mnt[] mountpoints in kdump environment -@@ -643,7 +656,7 @@ function kdump_init_dirs() # {{{ - function kdump_setup_files() # {{{ - { - local outdir="${1%/}" -- local dumpdevs="$2" -+ local mpathdevs="$2" - local kdump_over_ssh - - # -@@ -673,7 +686,7 @@ function kdump_setup_files() # { - # create modified multipath.conf - # - if [ -e /etc/multipath.conf ] ; then -- kdump_modify_multipath "$dumpdevs" > "${outdir}/etc/multipath.conf" -+ kdump_modify_multipath "$mpathdevs" > "${outdir}/etc/multipath.conf" - fi - - return 0 ---- a/init/setup-kdump.sh -+++ b/init/setup-kdump.sh -@@ -28,9 +28,23 @@ fi - # /lib/kdump/setup-kdump.functions was sourced from setup-kdumpfs.sh already - - # -+# Get a list of required multipath devices -+# -+mpath_wwids= -+kdump_map_mpath_wwid -+for bd in $blockdev ; do -+ update_blockdev $bd -+ [ $blockmajor -ge 0 -a $blockminor -ge 0 ] || continue -+ eval _wwid=\$kdump_mpath_wwid_${blockmajor}_${blockminor} -+ if [ -n "$_wwid" ] ; then -+ mpath_wwids="$mpath_wwids"$(printf "%q " "wwid $_wwid") -+ fi -+done -+ -+# - # Copy or create all necessary files for the initrd - # --kdump_setup_files "$tmp_mnt" "$blockdev" -+kdump_setup_files "$tmp_mnt" "$mpath_wwids" - - # - # check if extra modules are needed diff --git a/kdump-move-network-setup-to-module-setup.patch b/kdump-move-network-setup-to-module-setup.patch deleted file mode 100644 index b7c53af..0000000 --- a/kdump-move-network-setup-to-module-setup.patch +++ /dev/null @@ -1,238 +0,0 @@ -From: Petr Tesarik -Date: Tue Sep 23 11:02:22 2014 +0200 -Subject: Move dracut network command line to module-setup.sh -References: bnc#885897 -Patch-mainline: v0.8.16 -Git-commit: 16e3640c2bcbb08fb31c7c3da03a8fb726d7686a - -This is mostly a cleanup to allow adding more code to module-setup.sh -without too much duplication. - -Signed-off-by: Petr Tesarik - ---- - init/mkdumprd | 54 ------------------------------- - init/module-setup.sh | 76 ++++++++++++++++++++++++++++++++++++++++++--- - init/setup-kdump.functions | 19 ++++++++++- - 3 files changed, 90 insertions(+), 59 deletions(-) - ---- a/init/mkdumprd -+++ b/init/mkdumprd -@@ -120,8 +120,6 @@ function run_mkinitrd() - # Create a new initrd using dracut {{{ - function run_dracut() - { -- local modules="kdump" -- - DRACUT_ARGS="--force --hostonly --omit 'plymouth resume usrmount'" - DRACUT_ARGS="$DRACUT_ARGS --compress='xz -0 --check=crc32'" - -@@ -136,60 +134,10 @@ function run_dracut() - i=$((i+1)) - done - -- # Check for additional modules -- neednet= -- for protocol in "${kdump_Protocol[@]}" ; do -- if [ "$protocol" = "nfs" ]; then -- modules="$modules nfs" -- fi -- if [ "$protocol" = "cifs" -o "$protocol" = "smb" ]; then -- modules="$modules cifs" -- fi -- if [ "$protocol" != "file" ]; then -- neednet=y -- fi -- done -- -- # network configuration -- if [ -n "$KDUMP_SMTP_SERVER" -a -n "$KDUMP_NOTIFICATION_TO" ]; then -- neednet=y -- fi -- if [ "$KDUMP_NETCONFIG" = "auto" ] ; then -- status_message "Network: auto" -- if [ -n "$neednet" ]; then -- DRACUT_ARGS+=" --kernel-cmdline 'rd.neednet=1 ip=any'" -- modules="$modules network" -- fi -- elif [ -z "$KDUMP_NETCONFIG" ] ; then -- status_message "Network: none" -- else -- interface=$(echo "$KDUMP_NETCONFIG" | cut -d ':' -f 1) -- mode=$(echo "$KDUMP_NETCONFIG" | cut -d ':' -f 2) -- -- if [ "$interface" = "default" ] ; then -- interface=$( kdump_default_netdev ) -- status_message "Network interface: $interface (default)" -- else -- status_message "Network interface: $interface" -- fi -- -- if [ "$mode" = "static" ] ; then -- ipcfg="$(kdump_ip_config "$interface")" -- hwaddr=$(cat "/sys/class/net/$interface/address") -- status_message "Network mode: Static IP" -- DRACUT_ARGS+=" --kernel-cmdline 'rd.neednet=1 ip=$ipcfg::$hwaddr'" -- else -- status_message "Network mode: Automatic IP (DHCP)" -- DRACUT_ARGS+=" --kernel-cmdline 'rd.neednet=1 ip=${interface}:dhcp'" -- fi -- modules="$modules network" -- fi -- - # Make resolved variables visible to the dracut module - kdump_export_targets - -- DRACUT_ARGS="$DRACUT_ARGS --add '$modules' $INITRD $KERNELVERSION" -- status_message "Calling dracut $DRACUT_ARGS" -+ DRACUT_ARGS="$DRACUT_ARGS --add 'kdump' $INITRD $KERNELVERSION" - echo "Regenerating kdump initrd ..." >&2 - eval "bash -$- dracut $DRACUT_ARGS" - } # }}} ---- a/init/module-setup.sh -+++ b/init/module-setup.sh -@@ -3,12 +3,51 @@ - - . /lib/kdump/setup-kdump.functions - -+kdump_check_net() { -+ kdump_neednet= -+ for protocol in "${kdump_Protocol[@]}" ; do -+ if [ "$protocol" != "file" ]; then -+ kdump_neednet=y -+ fi -+ done -+ -+ # network configuration -+ if [ -n "$KDUMP_SMTP_SERVER" -a -n "$KDUMP_NOTIFICATION_TO" ]; then -+ kdump_neednet=y -+ fi -+ -+ # network explicitly disabled in configuration? -+ [ -z "$KDUMP_NETCONFIG" ] && kdump_neednet= -+} -+ - check() { -+ # Get configuration -+ kdump_import_targets || return 1 -+ kdump_get_config || return 1 -+ kdump_check_net -+ - return 255 - } - - depends() { -- echo drm -+ local -A _modules -+ -+ # drm is needed to get console output, but it is not included -+ # automatically, because kdump does not use plymouth -+ _modules[drm]= -+ -+ [ "$kdump_neednet" = y ] && _modules[network]= -+ -+ for protocol in "${kdump_Protocol[@]}" ; do -+ if [ "$protocol" = "nfs" ]; then -+ _modules[nfs]= -+ fi -+ if [ "$protocol" = "cifs" -o "$protocol" = "smb" ]; then -+ _modules[cifs]= -+ fi -+ done -+ -+ echo ${!_modules[@]} - } - - kdump_add_mpath_dev() { -@@ -22,10 +61,39 @@ kdump_add_mpath_dev() { - fi - } - -+kdump_cmdline_ip() { -+ [ "$kdump_neednet" = y ] || return 0 -+ -+ echo -n "rd.neednet=1" -+ if [ "$KDUMP_NETCONFIG" = "auto" ] ; then -+ echo -n " ip=any" -+ else -+ set -- ${KDUMP_NETCONFIG//:/ } -+ local _if=$1 -+ local _mode=$2 -+ -+ if [ "$_if" = "default" ] ; then -+ _if=$(kdump_default_netdev) -+ fi -+ printf " %s" $(kdump_ifname_config "$_if") -+ -+ if [ "$_mode" = "static" ] ; then -+ printf " %s" $(kdump_ip_config "$_if") -+ else -+ echo -n " ip=${_if}:dhcp" -+ fi -+ fi -+} -+ -+cmdline() { -+ kdump_cmdline_ip -+} -+ - install() { -- # Get configuration -- kdump_get_config || return 1 -- kdump_import_targets -+ if [[ $hostonly_cmdline == "yes" ]] ; then -+ local _cmdline=$(cmdline) -+ [ -n "$_cmdline" ] && printf "%s\n" "$_cmdline" >> "${initdir}/etc/cmdline.d/99kdump.conf" -+ fi - - # Get a list of required multipath devices - local kdump_mpath_wwids ---- a/init/setup-kdump.functions -+++ b/init/setup-kdump.functions -@@ -193,6 +193,20 @@ function kdump_netdev_mode() # { - } # }}} - - # -+# Get the ifname parameter for a given device -+# -+# Parameters: -+# 1) device device name -+# Output: -+# ifname corresponding ifname= initrd parameter (or empty) -+function kdump_ifname_config() # {{{ -+{ -+ local iface="$1" -+ local hwaddr=$(<"/sys/class/net/$iface/address") -+ [ -n "$hwaddr" ] && echo "ifname=$iface:$hwaddr" -+} # }}} -+ -+# - # Convert a CIDR prefix to IPv4 netmask - # - # Parameters: -@@ -219,7 +233,7 @@ kdump_prefix2netmask() { # {{{ - # Get the ip= parameter for a given device - # - # Parameters: --# 1) device device name (use default if empty) -+# 1) device device name - # Output: - # ip configuration string that can be used for the ip= initrd parameter - function kdump_ip_config() # {{{ -@@ -249,7 +263,7 @@ function kdump_ip_config() # {{{ - gwaddr=$(ip route show 0/0 | sed -n 's/.* via \([^ ]*\).*/\1/p') - hostname=$(hostname) - -- echo "$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$iface:none" -+ echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$iface:none" - } # }}} - - # -@@ -311,6 +325,7 @@ function kdump_import_targets() - eval "kdump_Host=( $KDUMP_x_Host )" - eval "kdump_Realpath=( $KDUMP_x_Realpath )" - eval "kdump_mnt=( $KDUMP_x_mnt )" -+ test ${#kdump_URL[@]} -gt 0 - } # }}} - - # diff --git a/kdump-remove-root-and-resume.patch b/kdump-remove-root-and-resume.patch deleted file mode 100644 index 4cacdd6..0000000 --- a/kdump-remove-root-and-resume.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Petr Tesarik -Date: Thu Sep 18 10:15:59 2014 +0200 -Subject: Remove root= and resume= from the kdump kernel command line -References: bnc#883883 -Patch-mainline: v0.8.16 -Git-commit: 8caaba657548133d476b2a13fd5abb68314927c7 - -Resume from hibernation should never be even attempted in kdump. -If using dracut, the module is even omitted from the initrd, so -passing the command line option only consumes command line space. - -The default root device is not needed either, because all required -filesystems are handled by the mount dracut module. In fact, if the -root filesystem is also mounted, it may be mounted twice. - -Signed-off-by: Petr Tesarik - ---- - init/rc.kdump.functions | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/init/rc.kdump.functions -+++ b/init/rc.kdump.functions -@@ -108,7 +108,7 @@ function build_kdump_commandline() - local nr_cpus=$(cpus_param "$kdump_kernel") - commandline=$( - remove_from_commandline \ -- 'crashkernel|splash|mem|BOOT_IMAGE|showopts|zfcp\.allow_lun_scan|hugepages|acpi_no_memhotplug|cgroup_disable' \ -+ 'root|resume|crashkernel|splash|mem|BOOT_IMAGE|showopts|zfcp\.allow_lun_scan|hugepages|acpi_no_memhotplug|cgroup_disable' \ - < /proc/cmdline) - # Use deadline for saving the memory footprint - commandline="$commandline elevator=deadline sysrq=yes reset_devices acpi_no_memhotplug cgroup_disable=memory" diff --git a/kdump-split-kdump_default_netdev.patch b/kdump-split-kdump_default_netdev.patch deleted file mode 100644 index cec5729..0000000 --- a/kdump-split-kdump_default_netdev.patch +++ /dev/null @@ -1,178 +0,0 @@ -From: Petr Tesarik -Date: Tue Sep 23 07:09:44 2014 +0200 -Subject: Split kdump_default_netdev() -References: bnc#885897 -Patch-mainline: v0.8.16 -Git-commit: 4da0601f2edcef642da502db6f4299204365c631 - -This function did too many things, which are now split thus: - -1. determine the default network interface - -> kept in kdump_default_netdev - -2. get the underlying physical devices of a bridge - -> kdump_bridge_phys_dev - -3. determine network interface operating mode - -> kdump_netdev_mode - -Signed-off-by: Petr Tesarik - ---- - init/mkdumprd | 1 - init/setup-kdump.functions | 94 +++++++++++++++++++++++++-------------------- - 2 files changed, 54 insertions(+), 41 deletions(-) - ---- a/init/mkdumprd -+++ b/init/mkdumprd -@@ -168,7 +168,6 @@ function run_dracut() - - if [ "$interface" = "default" ] ; then - interface=$( kdump_default_netdev ) -- interface="${interface% *}" - status_message "Network interface: $interface (default)" - else - status_message "Network interface: $interface" ---- a/init/setup-kdump.functions -+++ b/init/setup-kdump.functions -@@ -77,12 +77,10 @@ function kdump_wicked_conf() # { - # Determine the default network device. - # - # Output: --# "$ifname $mode" --# ifname default network interface name (or empty if none) --# mode initialization mode ("static" or "dhcp") -+# ifname default network interface name (or empty if none) - function kdump_default_netdev() # {{{ - { -- local ifname BOOTPROTO -+ local ifname - local inffile="/etc/install.inf" - - # check current default routes -@@ -95,7 +93,6 @@ function kdump_default_netdev() - if [ -z "$ifname" -a -f "$inffile" ] ; then - local dev hwaddr hwaddr2 - eval $( sed -ne ' -- s/^NetConfig: \(.*\)/BOOTPROTO=\1/p; - s/^Netdevice: \(.*\)/ifname=\1/p; - s/HWAddr: \(.*\)/hwaddr=\1/p' \ - "$inffile" ) -@@ -108,12 +105,53 @@ function kdump_default_netdev() - done - fi - fi -+ echo "$ifname" -+} # }}} - -- # if still not found, there is no network -- if [ -z "$ifname" ] ; then -- return 0 -+# Get the underlying physical devices of a bridge. -+# -+# Virtual devices (tap or vif) are ignored. -+# -+# Parameters: -+# 1) ifname bridge interface name -+# Output: -+# ifnames list of underlying physical interfaces; -+function kdump_bridge_phys_dev() # {{{ -+{ -+ local ifname="$1" -+ -+ if [ -d "/sys/class/net/$ifname/bridge" -a \ -+ -d "/sys/class/net/$ifname/brif" ] ; then -+ -+ local ifname2 count=0 -+ local -a res -+ for ifname2 in "/sys/class/net/$ifname/brif"/*; do -+ case "$(readlink -f "$ifname2")" in -+ /sys/devices/virtual/*) -+ continue -+ esac -+ res[count]="${ifname2##*/}" -+ count=$(( count+1 )) -+ done -+ ifname=${res[@]} - fi - -+ echo "$ifname" -+} # }}} -+ -+# -+# Determine the default network mode of a given device. -+# -+# Parameters: -+# 1) ifname network interface name -+# Output: -+# mode initialization mode ("static" or "dhcp") -+function kdump_netdev_mode() # {{{ -+{ -+ local ifname="$1" -+ local inffile="/etc/install.inf" -+ local BOOTPROTO -+ - # get mode using wicked if possible - if [ -n "$(type -P wicked)" -a \ - "$(kdump_wicked_conf "$ifname" name)" = "$ifname" ] -@@ -135,6 +173,12 @@ function kdump_default_netdev() - fi - fi - -+ # try install.conf -+ if [ -z "$BOOTPROTO" ] ; then -+ eval $( sed -ne 's/^NetConfig: \(.*\)/BOOTPROTO=\1/p;' \ -+ "$inffile" ) -+ fi -+ - # if not found, look if there is a dhcp daemon for the interface - if [ -z "$BOOTPROTO" ] ; then - if [ -n "$(ps -C dhclient,dhclient6,dhcpcd -o cmd= | -@@ -145,31 +189,7 @@ function kdump_default_netdev() - fi - fi - -- # if the interface is a bridge, then try to use the underlying interface -- # if it is the only non-virtual interface (not tap or vif) -- if [ -d "/sys/class/net/$ifname/bridge" -a \ -- -d "/sys/class/net/$ifname/brif" ] ; then -- -- local ifname2 res count=0 -- for ifname2 in "/sys/class/net/$ifname/brif"/*; do -- case "$(readlink -f "$ifname2")" in -- /sys/devices/virtual/*) -- continue -- esac -- res="${ifname2##*/}" -- count=$(( count+1 )) -- done -- -- if [ "$count" -ne 1 ] ; then -- echo >&2 ">>> WARNING: $ifname is a bridge with more than one" -- echo >&2 ">>> underlying interface. Please specify the device" -- echo >&2 ">>> in KDUMP_NETCONFIG manually." -- else -- ifname="$res" -- fi -- fi -- -- echo "$ifname $BOOTPROTO" -+ echo "$BOOTPROTO" - } # }}} - - # -@@ -205,13 +225,7 @@ kdump_prefix2netmask() { # {{{ - function kdump_ip_config() # {{{ - { - local iface="$1" -- if [ -z "$iface" ] ; then -- iface=$( kdump_default_netdev ) -- iface="${iface% *}" -- fi -- [ -z "$iface" ] && return 1 -- -- local ipaddr peeraddr gwaddr netmask hostname iface -+ local ipaddr peeraddr gwaddr netmask hostname - local family cidr rest - local prefix - while read family cidr rest diff --git a/kdump-systemd-support.patch b/kdump-systemd-support.patch deleted file mode 100644 index b0ef4ba..0000000 --- a/kdump-systemd-support.patch +++ /dev/null @@ -1,131 +0,0 @@ -From: Petr Tesarik -Date: Thu Sep 18 15:40:37 2014 +0200 -Subject: Dracut-systemd support -References: bnc#883883 -Patch-mainline: v0.8.16 -Git-commit: 9940475e501273ddac4a13fa2f4284b4121415de - -Adjust the dracut module to work with the systemd module. - -A new service is added to the initrd. I could not use a pre-pivot -hook, because dracut-pre-pivot.service does not send the output -to the terminal, so dump progress was not visible. - -It is also necessary to avoid mounting the root filesystem. All -filesystems needed by kdump are mounted under /kdump and set up -with the --mount dracut option. - -The system root mount can be generated in two ways: - -a. by initrd-fstab-generator (if "root=" is passed on the kernel - command line) - -b. by dracut-rootfs-generator (if the root option is stored in - /etc/cmdline.d/*) - -The root= parameter is already removed from the command line, but -it is always saved to /etc/cmdline.d/95root-dev.conf if dracut is -called with --hostonly-cmdline. This is the default in SLES (cf. -/etc/dracut.conf.d/01-dist.conf) and it is required to get correct -configuration for many setups. - -So, the only way to avoid mounting /sysroot is to remove the -appropriate systemd generator from the initrd. - -Signed-off-by: Petr Tesarik - -diff --git a/init/CMakeLists.txt b/init/CMakeLists.txt -index 662197c..9cc8b71 100644 ---- a/init/CMakeLists.txt -+++ b/init/CMakeLists.txt -@@ -79,4 +79,15 @@ INSTALL( - WORLD_READ WORLD_EXECUTE - ) - -+INSTALL( -+ FILES -+ ${CMAKE_CURRENT_SOURCE_DIR}/kdump-save.service -+ DESTINATION -+ /usr/lib/dracut/modules.d/99kdump -+ PERMISSIONS -+ OWNER_READ OWNER_WRITE -+ GROUP_READ -+ WORLD_READ -+) -+ - # vim: set sw=4 ts=4 et: -diff --git a/init/kdump-save.service b/init/kdump-save.service -new file mode 100644 -index 0000000..ac527f4 ---- /dev/null -+++ b/init/kdump-save.service -@@ -0,0 +1,31 @@ -+# This file is part of systemd. -+# -+# systemd is free software; you can redistribute it and/or modify it -+# under the terms of the GNU Lesser General Public License as published by -+# the Free Software Foundation; either version 2.1 of the License, or -+# (at your option) any later version. -+ -+# See systemd.special(7) for details -+ -+[Unit] -+Description=save kernel crash dump -+Documentation=man:kdump(7) -+Wants=dracut-mount.service dracut-pre-pivot.service -+After=dracut-mount.service dracut-pre-pivot.service -+After=initrd.target -+Before=initrd-cleanup.service -+ConditionPathExists=/etc/initrd-release -+ConditionPathExists=/proc/vmcore -+ -+[Service] -+Type=oneshot -+ExecStart=/lib/kdump/save_dump.sh -+StandardInput=tty -+StandardOutput=tty -+StandardError=tty -+KillMode=process -+RemainAfterExit=yes -+ -+# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash -+# terminates cleanly. -+KillSignal=SIGHUP -diff --git a/init/mkdumprd b/init/mkdumprd -index 334786f..bb818d2 100755 ---- a/init/mkdumprd -+++ b/init/mkdumprd -@@ -122,7 +122,7 @@ function run_dracut() - { - local modules="kdump" - -- DRACUT_ARGS="--force --hostonly --omit 'systemd plymouth resume usrmount'" -+ DRACUT_ARGS="--force --hostonly --omit 'plymouth resume usrmount'" - DRACUT_ARGS="$DRACUT_ARGS --compress='xz -0 --check=crc32'" - - # add mount points -diff --git a/init/module-setup.sh b/init/module-setup.sh -index 06f9775..690de38 100644 ---- a/init/module-setup.sh -+++ b/init/module-setup.sh -@@ -18,8 +18,18 @@ install() { - - kdump_setup_files "$initdir" "${!host_fs_types[*]}" - -- inst_hook mount 30 "$moddir/mount-kdump.sh" -- inst_hook pre-pivot 90 /lib/kdump/save_dump.sh -+ if dracut_module_included "systemd" ; then -+ rm -f "${initdir}/$systemdutildir"/system-generators/dracut-rootfs-generator -+ inst_simple /lib/kdump/save_dump.sh -+ inst_simple "$moddir/kdump-save.service" \ -+ "$systemdsystemunitdir"/kdump-save.service -+ ln_r "$systemdsystemunitdir"/kdump-save.service \ -+ "$systemdsystemunitdir"/initrd.target.wants/kdump-save.service -+ else -+ inst_hook mount 30 "$moddir/mount-kdump.sh" -+ inst_hook pre-pivot 90 /lib/kdump/save_dump.sh -+ fi -+ - inst_multiple makedumpfile makedumpfile-R.pl kdumptool \ - $KDUMP_REQUIRED_PROGRAMS - inst_simple /etc/resolv.conf diff --git a/kdump-use-fstab-device.patch b/kdump-use-fstab-device.patch deleted file mode 100644 index 67c6d7e..0000000 --- a/kdump-use-fstab-device.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Petr Tesarik -Date: Fri Sep 5 12:26:36 2014 +0200 -Subject: Use device from /etc/fstab to mount / and /boot -References: bnc#892451 -Patch-mainline: v0.8.16 -Git-commit: 2895d4a8d24dd9b0a83e64cd58e464a3eaf7fe96 - -Since kdump_read_mounts() falls back to /proc/mounts, the root/boot -mount points must not be changed if they were found in /etc/fstab -previously. - -Signed-off-by: Petr Tesarik - -diff --git a/init/setup-kdump.functions b/init/setup-kdump.functions -index a676a82..2b96f8e 100644 ---- a/init/setup-kdump.functions -+++ b/init/setup-kdump.functions -@@ -388,12 +388,14 @@ function kdump_get_mountpoints() # {{{ - kdump_opts=( ) - - while read device mountpoint filesystem opts dummy ; do -- if [ "$mountpoint" = "/" ] ; then -+ if [ "$mountpoint" = "/" -a \ -+ -z "$rootmnt" ] ; then - rootdev="$device" - rootmnt="$mountpoint" - rootfstype="$filesystem" - rootopts="$opts" -- elif [ "$mountpoint" = "/boot" ] ; then -+ elif [ "$mountpoint" = "/boot" -a \ -+ -z "$bootmnt" ] ; then - bootdev="$device" - bootmnt="$mountpoint" - bootfstype="$filesystem" diff --git a/kdump.changes b/kdump.changes index ee7182e..bc88841 100644 --- a/kdump.changes +++ b/kdump.changes @@ -1,3 +1,38 @@ +------------------------------------------------------------------- +Wed Oct 5 13:12:53 UTC 2016 - ptesarik@suse.com + +- Remove kdump-helpers from Provides. This was needed to allow + upgrading in SLE10, but this distribution is discontinued now. + +------------------------------------------------------------------- +Wed Oct 5 10:55:39 UTC 2016 - ptesarik@suse.com + +- kdump-cmake-compat.patch: Build fix for pre-3.0.2 cmake. + +------------------------------------------------------------------- +Wed Oct 5 07:53:00 UTC 2016 - ptesarik@suse.com + +- Update to 0.8.16 +- Drop patches now in mainline: + o 0001-multipath-Write-proper-regex-into-multipath-conf.patch + o kdump-add-IPv6-KDUMP_NETCONFIG-modes.patch + o kdump-bootloader-grub2.patch + o kdump-calibrate-systemd-initramfs.patch + o kdump-calibrate-systemd-runtime.patch + o kdump-count-const-slabs.patch + o kdump-count-framebuffer.patch + o kdump-enable-fadump-ppc64le.patch + o kdump-fadump-bootloader-always.patch + o kdump-fadump-keep-sysroot.patch + o kdump-get-multipath-wwid-from-sysfs.patch + o kdump-move-network-setup-to-module-setup.patch + o kdump-remove-root-and-resume.patch + o kdump-split-kdump_default_netdev.patch + o kdump-systemd-support.patch + o kdump-use-fstab-device.patch +- Drop obsolete patches: + o kdump-0.8.15-fix-shebang.patch + ------------------------------------------------------------------- Thu Feb 11 14:54:58 UTC 2016 - rguenther@suse.com diff --git a/kdump.service b/kdump.service deleted file mode 100644 index d6466ef..0000000 --- a/kdump.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Load kdump kernel on startup -After=local-fs.target - -[Service] -Type=oneshot -ExecStart=/etc/init.d/boot.kdump start -ExecStop=/etc/init.d/boot.kdump stop -RemainAfterExit=true - -[Install] -WantedBy=multi-user.target diff --git a/kdump.spec b/kdump.spec index 0238279..b036c07 100644 --- a/kdump.spec +++ b/kdump.spec @@ -16,6 +16,10 @@ # +# on systemd distros, rpm-build requires systemd-rpm-macros, +# which in turn defines %systemd_requires +%define systemd_present %{defined systemd_requires} + %define dracutlibdir %{_prefix}/lib/dracut %{!?_udevdir: %global _udevdir %(pkg-config --variable=udevdir udev)} @@ -28,76 +32,57 @@ %endif %define _udevrulesdir %{_udevdir}/rules.d -Url: https://github.com/ptesarik/kdump - Name: kdump -Version: 0.8.15 +Version: 0.8.16 Release: 0 -Requires: curl -Requires: makedumpfile -Requires: openssh Summary: Script for kdump License: GPL-2.0+ Group: System/Kernel +Url: https://github.com/ptesarik/kdump +Source: %{name}-%{version}.tar.bz2 +Source2: %{name}-rpmlintrc +Patch1: %{name}-cmake-compat.patch BuildRequires: asciidoc BuildRequires: cmake BuildRequires: gcc-c++ +BuildRequires: libblkid-devel BuildRequires: libcurl-devel BuildRequires: libelf-devel BuildRequires: libesmtp-devel BuildRequires: libopenssl-devel -BuildRequires: libssh2-devel BuildRequires: libxslt -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: udev BuildRequires: zlib-devel +Requires: curl +Requires: kexec-tools +Requires: makedumpfile +Requires: openssh +PreReq: %insserv_prereq %fillup_prereq +PreReq: coreutils +PreReq: sed +Recommends: cifs-utils +Recommends: nfs-client #!BuildIgnore: fop -%if 0%{?suse_version} > 1220 +# update should detect the split-off from kexec-tools +Provides: kexec-tools:%{_initddir}/kdump +BuildRoot: %{_tmppath}/%{name}-%{version}-build +ExcludeArch: s390 ppc +%if %{systemd_present} BuildRequires: systemd %endif -PreReq: %insserv_prereq %fillup_prereq %if 0%{?suse_version} > 1310 PreReq: dracut %else PreReq: mkinitrd %endif -Source: %{name}-%{version}.tar.bz2 -Source2: %{name}-rpmlintrc -Source3: kdump.service -Patch0: 0001-multipath-Write-proper-regex-into-multipath-conf.patch -Patch1: %{name}-use-fstab-device.patch -Patch2: %{name}-count-framebuffer.patch -Patch3: %{name}-count-const-slabs.patch -Patch4: %{name}-remove-root-and-resume.patch -Patch5: %{name}-systemd-support.patch -Patch6: %{name}-calibrate-systemd-runtime.patch -Patch7: %{name}-calibrate-systemd-initramfs.patch -Patch8: %{name}-get-multipath-wwid-from-sysfs.patch -Patch9: %{name}-split-kdump_default_netdev.patch -Patch10: %{name}-move-network-setup-to-module-setup.patch -Patch11: %{name}-add-IPv6-KDUMP_NETCONFIG-modes.patch -Patch12: %{name}-enable-fadump-ppc64le.patch -Patch13: %{name}-fadump-bootloader-always.patch -Patch14: %{name}-bootloader-grub2.patch -Patch15: %{name}-fadump-keep-sysroot.patch -Patch16: %{name}-0.8.15-fix-shebang.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build -# rename "kdump-helpers" (10.3) -> "kdump" (11.0/SP2) -Provides: kdump-helpers = %{version} -Obsoletes: kdump-helpers < %{version} -# update should detect the split-off from kexec-tools -Provides: kexec-tools:/etc/init.d/kdump -Requires: kexec-tools -%if 0%{?suse_version} > 1220 +%if %{systemd_present} %systemd_requires %endif -Recommends: nfs-client cifs-utils -PreReq: coreutils sed -ExcludeArch: s390 ppc %description kdump is a package that includes several scripts for kdump, including -the init script /etc/init.d/kdump and the configuration file for kdump. +the kdump service and configuration files The kernel package and this package are all that are required for a crash dump to occur. However, if you wish to debug the crash dump @@ -112,125 +97,110 @@ For example, if you are debugging kernel-default, you will need: These packages are not needed to create the dump and can be installed after a crash dump has occured. -Authors: --------- - Bernhard Walle - %prep -%setup -%patch0 -p1 +%setup -q %patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 %build -export CFLAGS="%optflags" -export CXXFLAGS="%optflags -std=gnu++98" +export CFLAGS="%{optflags}" +export CXXFLAGS="%{optflags} -std=gnu++98" mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} .. -make +make %{?_smp_mflags} cd - %check cd build -make test +make %{?_smp_mflags} test %install cd build -make DESTDIR=$RPM_BUILD_ROOT install +make %{?_smp_mflags} DESTDIR=%{buildroot} install cd - # move udev rules -mkdir -p $RPM_BUILD_ROOT/%{_udevrulesdir} -mv $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/* $RPM_BUILD_ROOT/%{_udevrulesdir}/ +mkdir -p %{buildroot}/%{_udevrulesdir} +mv %{buildroot}/%{_sysconfdir}/udev/rules.d/* %{buildroot}/%{_udevrulesdir}/ # remove executable bit from non-binaries -chmod -x $RPM_BUILD_ROOT/lib/kdump/setup-kdump.functions -# symlink for init script -mkdir -p $RPM_BUILD_ROOT/sbin -ln -s /etc/init.d/boot.kdump $RPM_BUILD_ROOT/sbin/rckdump +chmod -x %{buildroot}/lib/kdump/setup-kdump.functions # empty directory -mkdir $RPM_BUILD_ROOT/var/crash +mkdir %{buildroot}/var/crash %if 0%{?suse_version} > 1310 -rm -r $RPM_BUILD_ROOT/lib/mkinitrd +rm -r %{buildroot}/lib/mkinitrd %endif -%if 0%{?suse_version} > 1220 -mkdir -p $RPM_BUILD_ROOT%{_unitdir} -install -m644 %{S:3} $RPM_BUILD_ROOT%{_unitdir} +# symlink for init script +%if %{systemd_present} +rm %{buildroot}%{_initddir}/boot.kdump +ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rckdump +%else +rm %{buildroot}/usr/lib/systemd/system/kdump.service +rm %{buildroot}/usr/lib/systemd/system/kdump-rebuild-initrd.service +ln -s ../..%{_initddir}/boot.kdump %{buildroot}%{_sbindir}/rckdump %endif -%if 0%{?suse_version} > 1220 +%if %{systemd_present} %pre %service_add_pre kdump.service +%service_add_pre kdump-rebuild-initrd.service %endif %post # change only permission if the file exists before /etc/sysconfig/kdump # has been created from /var/adm/fillup-templates/sysconfig.kdump change_permission=0 -if [ ! -f /etc/sysconfig/kdump ] ; then +if [ ! -f %{_sysconfdir}/sysconfig/kdump ] ; then change_permission=1 fi +%if %{systemd_present} +%{fillup_only -n kdump} +%service_add_post kdump.service +%service_add_post kdump-rebuild-initrd.service +%else %{fillup_and_insserv -n kdump boot.kdump} +%endif if [ "$change_permission" = 1 ]; then - chmod 0600 /etc/sysconfig/kdump + chmod 0600 %{_sysconfdir}/sysconfig/kdump fi # if /var/log/dump is empty, make it a symlink to /var/crash if test -d /var/log/dump && rmdir /var/log/dump >/dev/null 2>&1 || ! test -d /var/log/dump ; then ln -snf /var/crash /var/log/dump fi -%if 0%{?suse_version} > 1220 -%service_add_post kdump.service -%endif %preun echo "Stopping kdump ..." -%stop_on_removal boot.kdump -%if 0%{?suse_version} > 1220 +%if %{systemd_present} %service_del_preun kdump.service +%service_del_preun kdump-rebuild-initrd.service +%else +%stop_on_removal boot.kdump %endif %postun # force regeneration of kdumprd -touch /etc/sysconfig/kdump +touch %{_sysconfdir}/sysconfig/kdump # delete symbolic link rm /var/log/dump >/dev/null 2>&1 || true +%if %{systemd_present} +%service_del_postun kdump.service +%service_del_postun kdump-rebuild-initrd.service +%else %restart_on_update boot.kdump %insserv_cleanup -%if 0%{?suse_version} > 1220 -%service_del_postun kdump.service %endif -%clean -rm -rf $RPM_BUILD_ROOT - %files %defattr(-,root,root) %doc ChangeLog COPYING README NEWS %{_sbindir}/kdumptool %{_sbindir}/mkdumprd %{_sbindir}/kdump-bootloader.pl -%{_mandir}/man5/kdump.5.gz -%{_mandir}/man7/kdump.7.gz -%{_mandir}/man8/kdumptool.8.gz -%{_mandir}/man8/mkdumprd.8.gz -/sbin/rckdump -%{_sysconfdir}/init.d/boot.kdump -/var/adm/fillup-templates/sysconfig.kdump +%{_mandir}/man5/kdump.5%{ext_man} +%{_mandir}/man7/kdump.7%{ext_man} +%{_mandir}/man8/kdumptool.8%{ext_man} +%{_mandir}/man8/mkdumprd.8%{ext_man} +%{_localstatedir}/adm/fillup-templates/sysconfig.kdump %if 0%{?suse_version} <= 1310 /lib/mkinitrd/scripts/*-kdump.sh /lib/mkinitrd/scripts/setup-kdumpfs.sh @@ -242,8 +212,12 @@ rm -rf $RPM_BUILD_ROOT %dir /lib/kdump /lib/kdump/* %{_udevrulesdir}/70-kdump.rules -%if 0%{?suse_version} > 1220 +%if %{systemd_present} %{_unitdir}/kdump.service +%{_unitdir}/kdump-rebuild-initrd.service +%else +%{_sysconfdir}/init.d/boot.kdump %endif +%{_sbindir}/rckdump %changelog