forked from pool/kdump
- kdump-fix-udev-rules.patch: Avoid entering failed state on CPU
hotplug (bnc#874992, bnc#809209). OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=88
This commit is contained in:
parent
0f56f29fa5
commit
882971ae45
145
kdump-fix-udev-rules.patch
Normal file
145
kdump-fix-udev-rules.patch
Normal file
@ -0,0 +1,145 @@
|
||||
From: Petr Tesarik <ptesarik@suse.cz>
|
||||
Subject: Avoid entering failed state on CPU hotplug
|
||||
References: bnc#874992, bnc#809209
|
||||
Patch-mainline: scheduled for v0.8.13
|
||||
|
||||
When more than 5 CPUs are quickly offlined or onlined, the kdump
|
||||
service enters and remains in a "failed state".
|
||||
|
||||
This issue appears to be caused by systemd's service start rate
|
||||
limit default [more than 5 times within 10 seconds per
|
||||
systemd.service(5) man page] being exceeded due to the udev
|
||||
initiated kdump service restart for every CPU offline or online
|
||||
operation.
|
||||
|
||||
Avoid the problem by preventing the systemd rate limit threshold
|
||||
encounter by flushing the reset rate counter prior to each CPU
|
||||
offline and online related kdump service restart.
|
||||
|
||||
Additionally, limit the restart to IBM POWER, because other
|
||||
systems do not appear to be affected by bnc 389658.
|
||||
|
||||
And the z/Architecture do not need a restart on memory hotplug
|
||||
either, so the udev rules are not needed at all.
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
||||
diff --git a/70-kdump.rules b/70-kdump.rules
|
||||
deleted file mode 100644
|
||||
index c215f23..0000000
|
||||
--- a/70-kdump.rules
|
||||
+++ /dev/null
|
||||
@@ -1,12 +0,0 @@
|
||||
-#
|
||||
-# Kdump core headers needs to be regnerated if the CPUs or memory changes.
|
||||
-# For this, reload kdump.
|
||||
-#
|
||||
-# Novell Bug #389658
|
||||
-#
|
||||
-
|
||||
-SUBSYSTEM=="cpu", ACTION=="online", PROGRAM="/etc/init.d/boot.kdump try-restart"
|
||||
-SUBSYSTEM=="cpu", ACTION=="offline", PROGRAM="/etc/init.d/boot.kdump try-restart"
|
||||
-SUBSYSTEM=="memory", ACTION=="add", PROGRAM="/etc/init.d/boot.kdump try-restart"
|
||||
-SUBSYSTEM=="memory", ACTION=="remove", PROGRAM="/etc/init.d/boot.kdump try-restart"
|
||||
-
|
||||
diff --git a/70-kdump.rules.in b/70-kdump.rules.in
|
||||
new file mode 100644
|
||||
index 0000000..0ec2127
|
||||
--- /dev/null
|
||||
+++ b/70-kdump.rules.in
|
||||
@@ -0,0 +1,37 @@
|
||||
+@if @ARCH@ s390 s390x
|
||||
+#
|
||||
+# For s390x the ELF header is created in the kdump kernel and therefore
|
||||
+# no kdump udev rules are required.
|
||||
+#
|
||||
+@else
|
||||
+#
|
||||
+# Kdump core headers needs to be regnerated if the CPUs or memory changes.
|
||||
+# For this, reload kdump.
|
||||
+#
|
||||
+# Novell Bug #389658
|
||||
+#
|
||||
+
|
||||
+TEST="/usr/bin/systemctl", GOTO="kdump_systemd"
|
||||
+
|
||||
+@if @ARCH@ ppc ppc64 ppc64le
|
||||
+SUBSYSTEM=="cpu", ACTION=="online", RUN+="/etc/init.d/boot.kdump try-restart"
|
||||
+SUBSYSTEM=="cpu", ACTION=="offline", RUN+="/etc/init.d/boot.kdump try-restart"
|
||||
+@endif
|
||||
+SUBSYSTEM=="memory", ACTION=="add", RUN+="/etc/init.d/boot.kdump try-restart"
|
||||
+SUBSYSTEM=="memory", ACTION=="remove", RUN+="/etc/init.d/boot.kdump try-restart"
|
||||
+
|
||||
+GOTO="kdump_end"
|
||||
+
|
||||
+# Systemd limits service start rate, so if udev events are emitted too
|
||||
+# often, kdump will enter failed state, unless the counter is reset here.
|
||||
+LABEL="kdump_systemd"
|
||||
+
|
||||
+@if @ARCH@ ppc ppc64 ppc64le
|
||||
+SUBSYSTEM=="cpu", ACTION=="online", RUN+="/usr/bin/systemctl reset-failed kdump", RUN+="/usr/bin/systemctl try-restart kdump"
|
||||
+SUBSYSTEM=="cpu", ACTION=="offline", RUN+="/usr/bin/systemctl reset-failed kdump", RUN+="/usr/bin/systemctl try-restart kdump"
|
||||
+@endif
|
||||
+SUBSYSTEM=="memory", ACTION=="add", RUN+="/usr/bin/systemctl reset-failed kdump", RUN+="/usr/bin/systemctl try-restart kdump"
|
||||
+SUBSYSTEM=="memory", ACTION=="remove", RUN+="/usr/bin/systemctl reset-failed kdump", RUN+="/usr/bin/systemctl try-restart kdump"
|
||||
+
|
||||
+LABEL="kdump_end"
|
||||
+@endif
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 59c4607..e10afa9 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -26,7 +26,7 @@ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
cmake_minimum_required(VERSION 2.6.2)
|
||||
set (PACKAGE_STRING "kdump")
|
||||
-set (PACKAGE_VERSION "0.8.12")
|
||||
+set (PACKAGE_VERSION "0.8.13")
|
||||
|
||||
include_directories("${PROJECT_BINARY_DIR}")
|
||||
|
||||
@@ -195,8 +195,26 @@ INSTALL(FILES
|
||||
/var/adm/fillup-templates/
|
||||
)
|
||||
|
||||
+ADD_CUSTOM_COMMAND(
|
||||
+ OUTPUT
|
||||
+ 70-kdump.rules
|
||||
+ COMMAND
|
||||
+ ARCH=${CMAKE_SYSTEM_PROCESSOR}
|
||||
+ awk -f ${CMAKE_CURRENT_SOURCE_DIR}/process_cond.awk
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/70-kdump.rules.in
|
||||
+ > ${CMAKE_CURRENT_BINARY_DIR}/70-kdump.rules
|
||||
+ DEPENDS
|
||||
+ 70-kdump.rules.in
|
||||
+)
|
||||
+ADD_CUSTOM_TARGET(
|
||||
+ kdump.rules
|
||||
+ ALL
|
||||
+ DEPENDS
|
||||
+ 70-kdump.rules
|
||||
+)
|
||||
+
|
||||
INSTALL(FILES
|
||||
- ${CMAKE_CURRENT_SOURCE_DIR}/70-kdump.rules
|
||||
+ ${CMAKE_CURRENT_BINARY_DIR}/70-kdump.rules
|
||||
DESTINATION
|
||||
/etc/udev/rules.d
|
||||
)
|
||||
diff --git a/process_cond.awk b/process_cond.awk
|
||||
index 82ffe92..d6f966b 100755
|
||||
--- a/process_cond.awk
|
||||
+++ b/process_cond.awk
|
||||
@@ -5,7 +5,12 @@
|
||||
ENVIRON[var[1]] \
|
||||
substr($0, RSTART + RLENGTH)
|
||||
stack[sp++] = remove
|
||||
- remove = remove || ($2 != $3)
|
||||
+ condition = 0
|
||||
+ for (i = 3; i <= NF; i++) {
|
||||
+ if ($2 == $i)
|
||||
+ condition = 1
|
||||
+ }
|
||||
+ remove = remove || !condition
|
||||
skip = 1
|
||||
}
|
||||
/^@else\>/ {
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon May 19 14:18:27 UTC 2014 - ptesarik@suse.cz
|
||||
|
||||
- kdump-fix-udev-rules.patch: Avoid entering failed state on CPU
|
||||
hotplug (bnc#874992, bnc#809209).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 16 17:42:37 UTC 2014 - ptesarik@suse.cz
|
||||
|
||||
|
@ -59,6 +59,7 @@ PreReq: %insserv_prereq %fillup_prereq mkinitrd
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
Source2: %{name}-%{version}-rpmlintrc
|
||||
Source3: kdump.service
|
||||
Patch1: %{name}-fix-udev-rules.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
# rename "kdump-helpers" (10.3) -> "kdump" (11.0/SP2)
|
||||
Provides: kdump-helpers = %{version}
|
||||
@ -96,6 +97,7 @@ Authors:
|
||||
|
||||
%prep
|
||||
%setup
|
||||
%patch1 -p1
|
||||
|
||||
%build
|
||||
export CFLAGS="%optflags"
|
||||
|
Loading…
x
Reference in New Issue
Block a user