Add reload support to kdumpctl, reload will simply unload current
loaded kexec crash kernel and initramfs, and load it again.
Changes in /etc/sysconfig/kdump will take effect with kdumpctl
reload, but reloading will not check the content of
/etc/kdump.conf and won't rebuild anything. reload is fast, the only
time-consuming part of kdumpctl reload is loading kernel and initramfs
with kexec which is always necessary.
Signed-off-by: Kairui Song <kasong(a)redhat.com>
---
kdump.service | 1 +
kdumpctl | 59 +++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/kdump.service b/kdump.service
index 5144597..f888dd6 100644
--- a/kdump.service
+++ b/kdump.service
@@ -7,6 +7,7 @@ DefaultDependencies=no
Type=oneshot
ExecStart=/usr/bin/kdumpctl start
ExecStop=/usr/bin/kdumpctl stop
+ExecReload=/usr/bin/kdumpctl reload
RemainAfterExit=yes
StartLimitInterval=0
diff --git a/kdumpctl b/kdumpctl
index ece406f..5e139e9 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -283,6 +283,16 @@ get_pcs_cluster_modified_files()
setup_initrd()
{
+ KDUMP_BOOTDIR=$(check_boot_dir "${KDUMP_BOOTDIR}")
+
+ if [ -z "$KDUMP_KERNELVER" ]; then
+ kdump_kver=`uname -r`
+ else
+ kdump_kver=$KDUMP_KERNELVER
+ fi
+
+ kdump_kernel="${KDUMP_BOOTDIR}/${KDUMP_IMG}-${kdump_kver}${KDUMP_IMG_EXT}"
+
DEFAULT_INITRD="${KDUMP_BOOTDIR}/initramfs-`uname -r`.img"
DEFAULT_INITRD_BAK="${KDUMP_BOOTDIR}/.initramfs-`uname -r`.img.default"
if [ $DEFAULT_DUMP_MODE == "fadump" ]; then
@@ -533,16 +543,8 @@ check_rebuild()
local _force_no_rebuild force_no_rebuild="0"
local ret system_modified="0"
- KDUMP_BOOTDIR=$(check_boot_dir "${KDUMP_BOOTDIR}")
-
- if [ -z "$KDUMP_KERNELVER" ]; then
- kdump_kver=`uname -r`
- else
- kdump_kver=$KDUMP_KERNELVER
- fi
-
- kdump_kernel="${KDUMP_BOOTDIR}/${KDUMP_IMG}-${kdump_kver}${KDUMP_IMG_EXT}"
setup_initrd
+
if [ $? -ne 0 ]; then
return 1
fi
@@ -1004,6 +1006,42 @@ start()
echo "Starting kdump: [OK]"
}
+reload()
+{
+ check_current_status
+ if [ $? == 1 ]; then
+ echo "Kdump is not running: [WARNING]"
+ return 0
+ fi
+
+ if [ $DEFAULT_DUMP_MODE == "fadump" ]; then
+ stop_fadump
+ else
+ stop_kdump
+ fi
+
+ if [ $? != 0 ]; then
+ echo "Stopping kdump: [FAILED]"
+ return 1
+ fi
+
+ echo "Stopping kdump: [OK]"
+
+ setup_initrd
+ if [ $? != 0 ]; then
+ echo "Starting kdump: [FAILED]"
+ return 1
+ fi
+
+ start_dump
+ if [ $? != 0 ]; then
+ echo "Starting kdump: [FAILED]"
+ return 1
+ fi
+
+ echo "Starting kdump: [OK]"
+}
+
stop_fadump()
{
echo 0 > $FADUMP_REGISTER_SYS_NODE
@@ -1087,6 +1125,9 @@ main ()
esac
exit $EXIT_CODE
;;
+ reload)
+ reload
+ ;;
restart)
stop
start
--
2.17.1