From 93e13c118b0ed745e6b3d79a13801647c95af555 Mon Sep 17 00:00:00 2001 From: Dave Young Date: Mon, 6 Aug 2012 22:01:29 +0800 Subject: [PATCH] port force_rebuild kdump.conf option Add force_rebuild option in kdump.conf Some user need always force rebuild the dumprd, add an kdump.conf option force_rebuild here. If force_rebuild is set to 1 kdump initrd will be rebuilt every time then the service starts. Testing: Tested below cases: force_rebuild force_rebuild 0 force_rebuild 1 force_rebuild 2 Signed-off-by: Dave Young Acked-by: Vivek Goyal --- kdump.conf | 7 ++++++- kdump.conf.5 | 6 ++++++ kdumpctl | 15 ++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/kdump.conf b/kdump.conf index da47d00..8fd3f33 100644 --- a/kdump.conf +++ b/kdump.conf @@ -103,6 +103,11 @@ # where you can try to record the core manually. # Exiting this shell reboots the system. # Note: kdump uses bash as the default shell. +# +# force_rebuild <0 | 1> +# - By default, kdump initrd only will be rebuilt when +# necessary. Specify 1 to force rebuilding kdump +# initrd every time when kdump service starts. #raw /dev/sda5 #ext4 /dev/sda3 @@ -120,4 +125,4 @@ path /var/crash #extra_bins /usr/bin/lftp #extra_modules gfs2 #default shell - +#force_rebuild 1 diff --git a/kdump.conf.5 b/kdump.conf.5 index 2dfd041..7289ad4 100644 --- a/kdump.conf.5 +++ b/kdump.conf.5 @@ -156,6 +156,12 @@ poweroff: The system will be powered down. Note: kdump uses bash as the default shell. .RE +.B force_rebuild <0 | 1> +.RS +By default, kdump initrd only will be rebuilt when necessary. +Specify 1 to force rebuilding kdump initrd every time when kdump service starts. +.RE + .SH EXAMPLES Here is some examples for core_collector option: .PP diff --git a/kdumpctl b/kdumpctl index 5781da9..d1fef3d 100755 --- a/kdumpctl +++ b/kdumpctl @@ -78,7 +78,7 @@ function check_executable() function check_config() { local extra_modules modified_files="" - local force_rebuild=0 + local _force_rebuild force_rebuild="0" if [ -z "$KDUMP_KERNELVER" ]; then kdump_kver=`uname -r` @@ -89,9 +89,18 @@ function check_config() kdump_kernel="${KDUMP_BOOTDIR}/${KDUMP_IMG}-${kdump_kver}${KDUMP_IMG_EXT}" kdump_initrd="${KDUMP_BOOTDIR}/initramfs-${kdump_kver}kdump.img" + _force_rebuild=`grep ^force_rebuild $KDUMP_CONFIG_FILE 2>/dev/null` + if [ $? -eq 0 ]; then + force_rebuild=`echo $_force_rebuild | cut -d' ' -f2` + if [ "$force_rebuild" != "0" ] && [ "$force_rebuild" != "1" ];then + echo "Error: force_rebuild value is invalid" + return 1 + fi + fi + #will rebuild every time if extra_modules are specified extra_modules=`grep ^extra_modules $KDUMP_CONFIG_FILE` - [ -n "$extra_modules" ] && force_rebuild=1 + [ -n "$extra_modules" ] && force_rebuild="1" #check to see if dependent files has been modified #since last build of the image file @@ -120,7 +129,7 @@ function check_config() if [ $image_time -eq 0 ]; then echo -n "No kdump initial ramdisk found."; echo - elif [ "$force_rebuild" -ne 0 ]; then + elif [ "$force_rebuild" != "0" ]; then echo -n "Force rebuild $kdump_initrd"; echo elif [ -n "$modified_files" ]; then echo "Detected change(s) the following file(s):"