kdumpctl: rebuild kdump initramfs if cluster or fence_kdump config is changed.
If the system is configured fence kdump, we need to update kdump initramfs if cluster or fence_kdump config is newer. In RHEL7, cluster config is no longer keeping locally but stored remotely. Fortunately we can use a pcs tool to retrieve the xml based config and parse the last changed time from that. /etc/sysconfig/fence_kdump is used to configure runtime arguments to fence_kdump_send. So We have to pass the arguments to 2nd kernel. When cluster config or /etc/sysconfig/fence_kdump is newer than local kdump initramfs, we must rebuild initramfs to adapt changes in cluster. For example: Detected change(s) the following file(s): cluster-cib /etc/sysconfig/fence_kdump Rebuilding /boot/initramfs-xxxkdump.img [..] Signed-off-by: WANG Chao <chaowang@redhat.com> Tested-by: Zhi Zou <zzou@redhat.com> Tested-by: Marek Grac <mgrac@redhat.com> Acked-by: Vivek Goyal <vgoyal@redhat.com>
This commit is contained in:
parent
b0535afe2d
commit
590a0c21ab
26
kdumpctl
26
kdumpctl
@ -132,6 +132,25 @@ function check_config()
|
||||
return 0
|
||||
}
|
||||
|
||||
# check_fence_kdump <image timestamp>
|
||||
# return 0 if fence_kdump is configured and kdump initrd needs to be rebuilt
|
||||
function check_fence_kdump()
|
||||
{
|
||||
local image_time=$1
|
||||
local cib_time
|
||||
|
||||
is_fence_kdump || return 1
|
||||
|
||||
cib_time=`pcs cluster cib | xmllint --xpath 'string(/cib/@cib-last-written)' - | \
|
||||
xargs -0 date +%s --date`
|
||||
|
||||
if [ -z $cib_time -o $cib_time -le $image_time ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function check_rebuild()
|
||||
{
|
||||
local extra_modules modified_files=""
|
||||
@ -167,6 +186,9 @@ function check_rebuild()
|
||||
image_time=0
|
||||
fi
|
||||
|
||||
#also rebuild when cluster conf is changed and fence kdump is enabled.
|
||||
check_fence_kdump $image_time && modified_files="cluster-cib"
|
||||
|
||||
EXTRA_BINS=`grep ^kdump_post $KDUMP_CONFIG_FILE | cut -d\ -f2`
|
||||
CHECK_FILES=`grep ^kdump_pre $KDUMP_CONFIG_FILE | cut -d\ -f2`
|
||||
EXTRA_BINS="$EXTRA_BINS $CHECK_FILES"
|
||||
@ -174,6 +196,10 @@ function check_rebuild()
|
||||
EXTRA_BINS="$EXTRA_BINS $CHECK_FILES"
|
||||
files="$KDUMP_CONFIG_FILE $kdump_kernel $EXTRA_BINS"
|
||||
|
||||
if [ -f $FENCE_KDUMP_CONFIG ]; then
|
||||
files="$files $FENCE_KDUMP_CONFIG"
|
||||
fi
|
||||
|
||||
check_exist "$files" && check_executable "$EXTRA_BINS"
|
||||
[ $? -ne 0 ] && return 1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user