summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThadeu Lima de Souza Cascardo <cascardo@debian.org>2019-12-17 12:50:32 -0300
committerThadeu Lima de Souza Cascardo <cascardo@debian.org>2019-12-17 12:50:32 -0300
commitde1d1c7b723752d36a2f119bed804ad78fe981ba (patch)
tree65089f4c59221bdcaad9a9fd5a81ab6895c4f210
parent88c35672e6f3e3b8f635b8bde7a7e3ac2e6ac550 (diff)
kdump-config: implement try-reload
Use a lock file to allow try-reload to be run concurrently, and verify that kdump is loaded before trying to unload and load again. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@debian.org>
-rwxr-xr-xdebian/kdump-config.in26
1 files changed, 24 insertions, 2 deletions
diff --git a/debian/kdump-config.in b/debian/kdump-config.in
index c5df75a..0493c26 100755
--- a/debian/kdump-config.in
+++ b/debian/kdump-config.in
@@ -65,6 +65,7 @@ sys_kexec_crash=/sys/kernel/kexec_crash_loaded
sys_fadump_enabled=/sys/kernel/fadump_enabled
sys_fadump_registered=/sys/kernel/fadump_registered
kexec_cmd_file=$KDUMP_COREDIR/kexec_cmd
+lock_file=$KDUMP_COREDIR/kdump_lock
# DUMP_MODE = kdump/fadump
# The default dump mode is kdump.
@@ -914,6 +915,25 @@ unload()
fi
}
+reload()
+{
+ unload
+ load
+}
+
+condreload()
+{
+ local sys_loaded="$sys_kexec_crash"
+ if [ "$DUMP_MODE" == "fadump" ] ; then
+ check_fadump_support
+ sys_loaded="$sys_fadump_registered"
+ fi
+ flock 9
+ if [ -e $sys_loaded -a `cat $sys_loaded` -eq 1 ] ; then
+ reload
+ fi
+}
+
case "$1" in
test)
DRY_RUN="true"
@@ -943,8 +963,10 @@ case "$1" in
unload
;;
reload)
- unload
- load
+ reload
+ ;;
+ condreload|try-reload)
+ condreload 9>$lock_file
;;
status)
if [ "$DUMP_MODE" == "fadump" ]; then