Since the logger was introduced into kdump, let's enable it for kdump
so that we can output kdump messages according the log level and save
these messages for debugging.
Signed-off-by: Lianbo Jiang <lijiang(a)redhat.com>
---
dracut-early-kdump-module-setup.sh | 3 +
dracut-early-kdump.sh | 24 +++-
kdump-lib.sh | 23 +--
kdumpctl | 224 ++++++++++++++++-------------
kexec-tools.spec | 2 +
mkdumprd | 12 +-
6 files changed, 165 insertions(+), 123 deletions(-)
diff --git a/dracut-early-kdump-module-setup.sh b/dracut-early-kdump-module-setup.sh
index f30bd6790fda..3b233839e24b 100755
--- a/dracut-early-kdump-module-setup.sh
+++ b/dracut-early-kdump-module-setup.sh
@@ -48,7 +48,10 @@ install() {
inst_simple "/etc/sysconfig/kdump"
inst_binary "/usr/sbin/kexec"
inst_binary "/usr/bin/gawk" "/usr/bin/awk"
+ inst_binary "/usr/bin/logger" "/usr/bin/logger"
+ inst_binary "/usr/bin/printf" "/usr/bin/printf"
inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh"
+ inst_script "/lib/kdump/kdump-logger.sh" "/lib/kdump-logger.sh"
inst_hook cmdline 00 "$moddir/early-kdump.sh"
inst_binary "$KDUMP_KERNEL"
inst_binary "$KDUMP_INITRD"
diff --git a/dracut-early-kdump.sh b/dracut-early-kdump.sh
index 92913fbab116..add9cc1bfacd 100755
--- a/dracut-early-kdump.sh
+++ b/dracut-early-kdump.sh
@@ -12,6 +12,14 @@ EARLY_KEXEC_ARGS=""
. /etc/sysconfig/kdump
. /lib/dracut-lib.sh
. /lib/kdump-lib.sh
+. /lib/kdump-logger.sh
+
+#initiate the kdump logger
+dlog_init
+if [ $? -ne 0 ]; then
+ echo "failed to initiate the kdump logger."
+ exit 1
+fi
prepare_parameters()
{
@@ -28,7 +36,7 @@ early_kdump_load()
fi
if is_fadump_capable; then
- echo "WARNING: early kdump doesn't support fadump."
+ dwarn "WARNING: early kdump doesn't support fadump."
return 1
fi
@@ -42,18 +50,22 @@ early_kdump_load()
EARLY_KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")
if is_secure_boot_enforced; then
- echo "Secure Boot is enabled. Using kexec file based syscall."
+ dinfo "Secure Boot is enabled. Using kexec file based syscall."
EARLY_KEXEC_ARGS="$EARLY_KEXEC_ARGS -s"
fi
+ ddebug "earlykdump: $KEXEC ${EARLY_KEXEC_ARGS} $standard_kexec_args \
+ --command-line=$EARLY_KDUMP_CMDLINE --initrd=$EARLY_KDUMP_INITRD \
+ $EARLY_KDUMP_KERNEL"
+
$KEXEC ${EARLY_KEXEC_ARGS} $standard_kexec_args \
--command-line="$EARLY_KDUMP_CMDLINE" \
--initrd=$EARLY_KDUMP_INITRD $EARLY_KDUMP_KERNEL
if [ $? == 0 ]; then
- echo "kexec: loaded early-kdump kernel"
+ dinfo "kexec: loaded early-kdump kernel"
return 0
else
- echo "kexec: failed to load early-kdump kernel"
+ derror "kexec: failed to load early-kdump kernel"
return 1
fi
}
@@ -61,10 +73,10 @@ early_kdump_load()
set_early_kdump()
{
if getargbool 0 rd.earlykdump; then
- echo "early-kdump is enabled."
+ dinfo "early-kdump is enabled."
early_kdump_load
else
- echo "early-kdump is disabled."
+ dinfo "early-kdump is disabled."
fi
return 0
diff --git a/kdump-lib.sh b/kdump-lib.sh
index e18c47333b17..abbb1ab5e3f4 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -8,6 +8,12 @@ FENCE_KDUMP_CONFIG_FILE="/etc/sysconfig/fence_kdump"
FENCE_KDUMP_SEND="/usr/libexec/fence_kdump_send"
FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump_enabled"
+if [ -f /lib/kdump/kdump-logger.sh ]; then
+ . /lib/kdump/kdump-logger.sh
+elif [ -f /lib/kdump-logger.sh ]; then
+ . /lib/kdump-logger.sh
+fi
+
is_fadump_capable()
{
# Check if firmware-assisted dump is enabled
@@ -20,14 +26,10 @@ is_fadump_capable()
}
perror_exit() {
- echo $@ >&2
+ derror "$@"
exit 1
}
-perror() {
- echo $@ >&2
-}
-
is_fs_type_nfs()
{
[ "$1" = "nfs" ] || [ "$1" = "nfs4" ]
@@ -503,7 +505,7 @@ check_crash_mem_reserved()
mem_reserved=$(cat /sys/kernel/kexec_crash_size)
if [ $mem_reserved -eq 0 ]; then
- echo "No memory reserved for crash kernel"
+ derror "No memory reserved for crash kernel"
return 1
fi
@@ -513,7 +515,7 @@ check_crash_mem_reserved()
check_kdump_feasibility()
{
if [ ! -e /sys/kernel/kexec_crash_loaded ]; then
- echo "Kdump is not supported on this kernel"
+ derror "Kdump is not supported on this kernel"
return 1
fi
check_crash_mem_reserved
@@ -523,7 +525,7 @@ check_kdump_feasibility()
check_current_kdump_status()
{
if [ ! -f /sys/kernel/kexec_crash_loaded ];then
- echo "Perhaps CONFIG_CRASH_DUMP is not enabled in kernel"
+ derror "Perhaps CONFIG_CRASH_DUMP is not enabled in kernel"
return 1
fi
@@ -645,8 +647,7 @@ prepare_kexec_args()
found_elf_args=`echo $kexec_args | grep elf32-core-headers`
if [ -n "$found_elf_args" ]
then
- echo -n "Warning: elf32-core-headers overrides correct elf64
setting"
- echo
+ dwarn "Warning: elf32-core-headers overrides correct elf64
setting"
else
kexec_args="$kexec_args --elf64-core-headers"
fi
@@ -697,7 +698,7 @@ prepare_kdump_bootinfo()
done
if ! [ -e "$KDUMP_KERNEL" ]; then
- echo "Failed to detect kdump kernel location"
+ derror "Failed to detect kdump kernel location"
return 1
fi
diff --git a/kdumpctl b/kdumpctl
index 2248da48da2b..c61774364709 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -21,10 +21,6 @@ FADUMP_REGISTER_SYS_NODE="/sys/kernel/fadump_registered"
DEFAULT_DUMP_MODE="kdump"
image_time=0
-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
-. $dracutbasedir/dracut-functions.sh
-. /lib/kdump/kdump-lib.sh
-
standard_kexec_args="-p"
# Some default values in case /etc/sysconfig/kdump doesn't include
@@ -34,13 +30,25 @@ if [ -f /etc/sysconfig/kdump ]; then
. /etc/sysconfig/kdump
fi
+[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
+. $dracutbasedir/dracut-functions.sh
+. /lib/kdump/kdump-lib.sh
+. /lib/kdump/kdump-logger.sh
+
+#initiate the kdump logger
+dlog_init
+if [ $? -ne 0 ]; then
+ echo "failed to initiate the kdump logger."
+ exit 1
+fi
+
single_instance_lock()
{
local rc timeout=5
exec 9>/var/lock/kdump
if [ $? -ne 0 ]; then
- echo "Create file lock failed"
+ derror "Create file lock failed"
exit 1
fi
@@ -48,7 +56,7 @@ single_instance_lock()
rc=$?
while [ $rc -ne 0 ]; do
- echo "Another app is currently holding the kdump lock; waiting for it to
exit..."
+ dinfo "Another app is currently holding the kdump lock; waiting for it to
exit..."
flock -w $timeout 9
rc=$?
done
@@ -59,9 +67,10 @@ determine_dump_mode()
# Check if firmware-assisted dump is enabled
# if yes, set the dump mode as fadump
if is_fadump_capable; then
- echo "Dump mode is fadump"
+ dinfo "Dump mode is fadump"
DEFAULT_DUMP_MODE="fadump"
fi
+ ddebug "DEFAULT_DUMP_MODE=$DEFAULT_DUMP_MODE"
}
save_core()
@@ -69,22 +78,25 @@ save_core()
coredir="/var/crash/`date +"%Y-%m-%d-%H:%M"`"
mkdir -p $coredir
+ ddebug "cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete"
cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete
if [ $? == 0 ]; then
mv $coredir/vmcore-incomplete $coredir/vmcore
- echo "saved a vmcore to $coredir"
+ dinfo "saved a vmcore to $coredir"
else
- echo "failed to save a vmcore to $coredir" >&2
+ derror "failed to save a vmcore to $coredir"
fi
# pass the dmesg to Abrt tool if exists, in order
# to collect the kernel oops message.
#
https://fedorahosted.org/abrt/
if [ -x /usr/bin/dumpoops ]; then
+ ddebug "makedumpfile --dump-dmesg $coredir/vmcore $coredir/dmesg"
makedumpfile --dump-dmesg $coredir/vmcore $coredir/dmesg >/dev/null 2>&1
+ ddebug "dumpoops -d $coredir/dmesg"
dumpoops -d $coredir/dmesg >/dev/null 2>&1
if [ $? == 0 ]; then
- echo "kernel oops has been collected by abrt tool"
+ dinfo "kernel oops has been collected by abrt tool"
fi
fi
}
@@ -96,16 +108,18 @@ rebuild_fadump_initrd()
# this file tells the initrd is fadump enabled
touch /tmp/fadump.initramfs
target_initrd_tmp="$TARGET_INITRD.tmp"
+ ddebug "rebuild fadump initrd: $target_initrd_tmp $DEFAULT_INITRD_BAK
$KDUMP_KERNELVER"
$MKDUMPRD $target_initrd_tmp --rebuild $DEFAULT_INITRD_BAK --kver $KDUMP_KERNELVER \
-i /tmp/fadump.initramfs /etc/fadump.initramfs
if [ $? != 0 ]; then
- echo "mkdumprd: failed to rebuild initrd with fadump support" >&2
+ derror "mkdumprd: failed to rebuild initrd with fadump support"
rm -f /tmp/fadump.initramfs
return 1
fi
rm -f /tmp/fadump.initramfs
# updating fadump initrd
+ ddebug "updating fadump initrd: $target_initrd_tmp $TARGET_INITRD"
mv $target_initrd_tmp $TARGET_INITRD
sync
@@ -120,14 +134,15 @@ check_earlykdump_is_enabled()
rebuild_kdump_initrd()
{
+ ddebug "rebuild kdump initrd: $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER"
$MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER
if [ $? != 0 ]; then
- echo "mkdumprd: failed to make kdump initrd" >&2
+ derror "mkdumprd: failed to make kdump initrd"
return 1
fi
if check_earlykdump_is_enabled; then
- echo "Tips: If early kdump is enabled, also require rebuilding the system
initramfs to make the changes take effect for early kdump."
+ dwarn "Tips: If early kdump is enabled, also require rebuilding the system
initramfs to make the changes take effect for early kdump."
fi
return 0
@@ -136,7 +151,7 @@ rebuild_kdump_initrd()
rebuild_initrd()
{
if [[ ! -w "$KDUMP_BOOTDIR" ]];then
- echo "$KDUMP_BOOTDIR does not have write permission. Can not rebuild
$TARGET_INITRD"
+ derror "$KDUMP_BOOTDIR does not have write permission. Can not rebuild
$TARGET_INITRD"
return 1
fi
@@ -154,7 +169,7 @@ check_exist()
{
for file in $1; do
if [ ! -e "$file" ]; then
- echo -n "Error: $file not found."; echo
+ derror "Error: $file not found."
return 1
fi
done
@@ -165,7 +180,7 @@ check_executable()
{
for file in $1; do
if [ ! -x "$file" ]; then
- echo -n "Error: $file is not executable."; echo
+ derror "Error: $file is not executable."
return 1
fi
done
@@ -173,17 +188,19 @@ check_executable()
backup_default_initrd()
{
+ ddebug "backup default initrd: $DEFAULT_INITRD"
+
if [ ! -f "$DEFAULT_INITRD" ]; then
return
fi
if [ ! -e $DEFAULT_INITRD_BAK ]; then
- echo "Backing up $DEFAULT_INITRD before rebuild."
+ dinfo "Backing up $DEFAULT_INITRD before rebuild."
# save checksum to verify before restoring
sha1sum $DEFAULT_INITRD > $INITRD_CHECKSUM_LOCATION
cp $DEFAULT_INITRD $DEFAULT_INITRD_BAK
if [ $? -ne 0 ]; then
- echo "WARNING: failed to backup $DEFAULT_INITRD."
+ dwarn "WARNING: failed to backup $DEFAULT_INITRD."
rm -f $DEFAULT_INITRD_BAK
fi
fi
@@ -191,6 +208,8 @@ backup_default_initrd()
restore_default_initrd()
{
+ ddebug "restore default initrd: $DEFAULT_INITRD"
+
if [ ! -f "$DEFAULT_INITRD" ]; then
return
fi
@@ -202,13 +221,12 @@ restore_default_initrd()
backup_checksum=`sha1sum $DEFAULT_INITRD_BAK | awk '{ print $1 }'`
default_checksum=`cat $INITRD_CHECKSUM_LOCATION | awk '{ print $1 }'`
if [ "$default_checksum" != "$backup_checksum" ]; then
- echo "WARNING: checksum mismatch! Can't restore original initrd.."
+ dwarn "WARNING: checksum mismatch! Can't restore original initrd.."
else
rm -f $INITRD_CHECKSUM_LOCATION
mv $DEFAULT_INITRD_BAK $DEFAULT_INITRD
if [[ $? -eq 0 ]]; then
- echo -n "Restoring original initrd as fadump mode "
- echo "is disabled."
+ derror "Restoring original initrd as fadump mode is disabled."
sync
fi
fi
@@ -221,27 +239,27 @@ check_config()
nr=$(awk 'BEGIN{cnt=0}
/^raw|^ssh[[:blank:]]|^nfs|^ext[234]|^xfs|^btrfs|^minix|^dracut_args .*\-\-mount/{cnt++}
END{print cnt}' $KDUMP_CONFIG_FILE)
[ $nr -gt 1 ] && {
- echo "More than one dump targets specified."
+ derror "More than one dump targets specified."
return 1
}
# Check if path option is set more than once.
nr=$(awk 'BEGIN{cnt=0} /^path /{cnt++} END{print cnt}'
$KDUMP_CONFIG_FILE)
[ $nr -gt 1 ] && {
- echo "Mutiple paths specifed in $KDUMP_CONFIG_FILE"
+ derror "Mutiple paths specifed in $KDUMP_CONFIG_FILE"
return 1
}
nr=$(grep "^dracut_args .*\-\-mount" $KDUMP_CONFIG_FILE | grep -o
"\-\-mount" | wc -l)
[ $nr -gt 1 ] && {
- echo "Multiple mount targets specified in one \"dracut_args\"."
+ derror "Multiple mount targets specified in one \"dracut_args\"."
return 1
}
# Check if we have any leading spaces (or tabs) before the
# variable name in the kdump conf file
if grep -E -q '^[[:blank:]]+[a-z]' $KDUMP_CONFIG_FILE; then
- echo "No whitespaces are allowed before a kdump option name in
$KDUMP_CONFIG_FILE"
+ derror "No whitespaces are allowed before a kdump option name in
$KDUMP_CONFIG_FILE"
return 1
fi
@@ -252,19 +270,19 @@ check_config()
raw|ext2|ext3|ext4|minix|btrfs|xfs|nfs|ssh|sshkey|path|core_collector|kdump_post|kdump_pre|extra_bins|extra_modules|failure_action|default|final_action|force_rebuild|force_no_rebuild|dracut_args|fence_kdump_args|fence_kdump_nodes)
# remove inline comments after the end of a directive.
[ -z "$config_val" ] && {
- echo "Invalid kdump config value for option $config_opt."
+ derror "Invalid kdump config value for option $config_opt."
return 1;
}
if [ -d "/proc/device-tree/ibm,opal/dump" ] && [
"$config_opt" == "raw" ]; then
- echo "WARNING: Won't capture opalcore when 'raw' dump target is
used."
+ dwarn "WARNING: Won't capture opalcore when 'raw' dump target is
used."
fi
;;
net|options|link_delay|disk_timeout|debug_mem_level|blacklist)
- echo "Deprecated kdump config option: $config_opt. Refer to kdump.conf manpage
for alternatives."
+ derror "Deprecated kdump config option: $config_opt. Refer to kdump.conf manpage
for alternatives."
return 1
;;
*)
- echo "Invalid kdump config option $config_opt"
+ derror "Invalid kdump config option $config_opt"
return 1;
;;
esac
@@ -309,6 +327,7 @@ setup_initrd()
{
prepare_kdump_bootinfo
if [ $? -ne 0 ]; then
+ derror "failed to prepare for kdump bootinfo."
return 1
fi
@@ -379,7 +398,7 @@ check_files_modified()
else
# If it's not a module nor builtin, give an error
if ! ( modprobe --set-version "$KDUMP_KERNELVER" --dry-run
"$_module" &>/dev/null ); then
- echo "Module $_module not found"
+ dwarn "Module $_module not found"
fi
fi
done
@@ -404,13 +423,12 @@ check_files_modified()
fi
fi
else
- echo "$file doesn't exist"
+ dwarn "$file doesn't exist"
fi
done
if [ -n "$modified_files" ]; then
- echo "Detected change(s) in the following file(s):"
- echo -n " "; echo "$modified_files" | sed 's/\s/\n /g'
+ dinfo "Detected change(s) in the following file(s): $modified_files"
return 1
fi
@@ -448,13 +466,16 @@ check_dump_fs_modified()
_target=$(to_dev_name $_target)
_new_fstype=$(get_fs_type_from_target $_target)
if [[ -z "$_target" || -z "$_new_fstype" ]];then
- echo "Dump path $_path does not exist"
+ derror "Dump path $_path does not exist"
return 2
fi
fi
+ ddebug "_target=$_target _path=$_path _new_fstype=$_new_fstype"
+
_record_block_drivers() {
local _drivers
+
if [[ -b /dev/block/$1 ]]; then
_drivers=$(udevadm info -a "/dev/block/$1" | sed -n
's/\s*DRIVERS=="\(\S\+\)"/\1/p')
fi
@@ -466,6 +487,7 @@ check_dump_fs_modified()
_target_drivers="$_target_drivers $_driver"
fi
done
+ ddebug "MAJ:MIN=$1 _drivers=$_drivers _target_drivers=$_targer_drivers"
return 1
}
@@ -478,7 +500,7 @@ check_dump_fs_modified()
continue
fi
if ! [[ " $_old_drivers " == *" $_module_name "* ]]; then
- echo "Detected change in block device driver, new loaded module:
$_module_name"
+ dinfo "Detected change in block device driver, new loaded module:
$_module_name"
return 1
fi
done
@@ -488,7 +510,7 @@ check_dump_fs_modified()
else
_new_dev=$(kdump_get_persistent_dev $_target)
if [ -z "$_new_dev" ]; then
- echo "Get persistent device name failed"
+ derror "Get persistent device name failed"
return 2
fi
fi
@@ -496,7 +518,7 @@ check_dump_fs_modified()
_new_mntpoint="$(get_kdump_mntpoint_from_target $_target)"
_dracut_args=$(lsinitrd $TARGET_INITRD -f usr/lib/dracut/build-parameter.txt)
if [[ -z "$_dracut_args" ]];then
- echo "Warning: No dracut arguments found in initrd"
+ dwarn "Warning: No dracut arguments found in initrd"
return 0
fi
@@ -514,7 +536,7 @@ check_dump_fs_modified()
[[ "$_target" = "$(get_root_fs_device)" ]] && return 0
fi
- echo "Detected change in File System"
+ dinfo "Detected change in File System"
return 1
}
@@ -597,7 +619,7 @@ check_system_modified()
check_wdt_modified
if [ $? -ne 0 ]; then
- echo "Detected change in watchdog state"
+ dinfo "Detected change in watchdog state"
return 1
fi
@@ -621,7 +643,7 @@ check_rebuild()
if [ $? -eq 0 ]; then
force_no_rebuild=`echo $_force_no_rebuild | cut -d' ' -f2`
if [ "$force_no_rebuild" != "0" ] && [
"$force_no_rebuild" != "1" ];then
- echo "Error: force_no_rebuild value is invalid"
+ derror "Error: force_no_rebuild value is invalid"
return 1
fi
fi
@@ -630,13 +652,13 @@ check_rebuild()
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"
+ derror "Error: force_rebuild value is invalid"
return 1
fi
fi
if [[ "$force_no_rebuild" == "1" &&
"$force_rebuild" == "1" ]]; then
- echo "Error: force_rebuild and force_no_rebuild are enabled simultaneously in
kdump.conf"
+ derror "Error: force_rebuild and force_no_rebuild are enabled simultaneously in
kdump.conf"
return 1
fi
@@ -666,18 +688,18 @@ check_rebuild()
fi
if [ $image_time -eq 0 ]; then
- echo -n "No kdump initial ramdisk found."; echo
+ dinfo "No kdump initial ramdisk found."
elif [ "$capture_capable_initrd" == "0" ]; then
- echo -n "Rebuild $TARGET_INITRD with dump capture support"; echo
+ dinfo "Rebuild $TARGET_INITRD with dump capture support"
elif [ "$force_rebuild" != "0" ]; then
- echo -n "Force rebuild $TARGET_INITRD"; echo
+ dinfo "Force rebuild $TARGET_INITRD"
elif [ "$system_modified" != "0" ]; then
:
else
return 0
fi
- echo "Rebuilding $TARGET_INITRD"
+ dinfo "Rebuilding $TARGET_INITRD"
rebuild_initrd
return $?
}
@@ -694,18 +716,20 @@ load_kdump()
# Old syscall will always fail as it does not have capability to
# to kernel signature verification.
if is_secure_boot_enforced; then
- echo "Secure Boot is enabled. Using kexec file based syscall."
+ dinfo "Secure Boot is enabled. Using kexec file based syscall."
KEXEC_ARGS="$KEXEC_ARGS -s"
fi
+ ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE
--initrd=$TARGET_INITRD $KDUMP_KERNEL"
+
$KEXEC $KEXEC_ARGS $standard_kexec_args \
--command-line="$KDUMP_COMMANDLINE" \
--initrd=$TARGET_INITRD $KDUMP_KERNEL
if [ $? == 0 ]; then
- echo "kexec: loaded kdump kernel"
+ dinfo "kexec: loaded kdump kernel"
return 0
else
- echo "kexec: failed to load kdump kernel" >&2
+ derror "kexec: failed to load kdump kernel"
return 1
fi
}
@@ -720,7 +744,7 @@ check_ssh_config()
# canonicalize the path
SSH_KEY_LOCATION=$(/usr/bin/readlink -m $config_val)
else
- echo "WARNING: '$config_val' doesn't exist, using default value
'$SSH_KEY_LOCATION'"
+ dwarn "WARNING: '$config_val' doesn't exist, using default value
'$SSH_KEY_LOCATION'"
fi
;;
path)
@@ -762,22 +786,22 @@ check_and_wait_network_ready()
if [ $retval -eq 0 ]; then
return 0
elif [ $retval -ne 255 ]; then
- echo "Could not create $DUMP_TARGET:$SAVE_PATH, you should check the privilege on
server side" >&2
+ derror "Could not create $DUMP_TARGET:$SAVE_PATH, you should check the privilege
on server side"
return 1
fi
# if server removes the authorized_keys or, no /root/.ssh/kdump_id_rsa
- echo $errmsg | grep -q "Permission denied\|No such file or directory\|Host key
verification failed"
+ ddebug "$errmsg"
+ echo $errmsg | grep -q "Permission denied\|No such file or directory\|Host key
verification failed" &> /dev/null
if [ $? -eq 0 ]; then
- echo "Could not create $DUMP_TARGET:$SAVE_PATH, you probably need to run
\"kdumpctl propagate\"" >&2
+ derror "Could not create $DUMP_TARGET:$SAVE_PATH, you probably need to run
\"kdumpctl propagate\""
return 1
fi
if [ $warn_once -eq 1 ]; then
- echo "Network dump target is not usable, waiting for it to be ready"
+ dwarn "Network dump target is not usable, waiting for it to be ready..."
warn_once=0
fi
- echo -n .
cur=$(date +%s)
let "diff = $cur - $start_time"
@@ -788,7 +812,7 @@ check_and_wait_network_ready()
sleep 1
done
- echo "Could not create $DUMP_TARGET:$SAVE_PATH, ipaddr is not ready yet. You should
check network connection" >&2
+ dinfo "Could not create $DUMP_TARGET:$SAVE_PATH, ipaddr is not ready yet. You
should check network connection"
return 1
}
@@ -805,7 +829,7 @@ propagate_ssh_key()
{
check_ssh_config
if [ $? -ne 0 ]; then
- echo "No ssh config specified in $KDUMP_CONFIG_FILE. Can't propagate"
>&2
+ derror "No ssh config specified in $KDUMP_CONFIG_FILE. Can't propagate"
exit 1
fi
@@ -814,11 +838,11 @@ propagate_ssh_key()
#Check to see if we already created key, if not, create it.
if [ -f $KEYFILE ]; then
- echo "Using existing keys..."
+ dinfo "Using existing keys..."
else
- echo -n "Generating new ssh keys... "
+ dinfo "Generating new ssh keys... "
/usr/bin/ssh-keygen -t rsa -f $KEYFILE -N "" 2>&1 > /dev/null
- echo "done."
+ dinfo "done."
fi
#now find the target ssh user and server to contact.
@@ -829,10 +853,10 @@ propagate_ssh_key()
ssh-copy-id -i $KEYFILE $SSH_USER@$SSH_SERVER
RET=$?
if [ $RET == 0 ]; then
- echo $KEYFILE has been added to ~$SSH_USER/.ssh/authorized_keys on $SSH_SERVER
+ dinfo "$KEYFILE has been added to ~$SSH_USER/.ssh/authorized_keys on
$SSH_SERVER"
return 0
else
- echo $errmsg, $KEYFILE failed in transfer to $SSH_SERVER >&2
+ derror "$errmsg, $KEYFILE failed in transfer to $SSH_SERVER"
exit 1
fi
}
@@ -842,7 +866,7 @@ show_reserved_mem()
local mem=$(cat /sys/kernel/kexec_crash_size)
local mem_mb=$(expr $mem / 1024 / 1024)
- echo "Reserved "$mem_mb"MB memory for crash kernel"
+ dinfo "Reserved "$mem_mb"MB memory for crash kernel"
}
check_current_fadump_status()
@@ -872,12 +896,12 @@ save_raw()
raw_target=$(awk '$1 ~ /^raw$/ { print $2; }' $KDUMP_CONFIG_FILE)
[ -z "$raw_target" ] && return 0
[ -b "$raw_target" ] || {
- echo "raw partition $raw_target not found"
+ derror "raw partition $raw_target not found"
return 1
}
check_fs=$(lsblk --nodeps -npo FSTYPE $raw_target)
if [[ $(echo $check_fs | wc -w) -ne 0 ]]; then
- echo "Warning: Detected '$check_fs' signature on $raw_target, data loss is
expected."
+ dwarn "Warning: Detected '$check_fs' signature on $raw_target, data loss
is expected."
return 0
fi
kdump_dir=`grep ^path $KDUMP_CONFIG_FILE | cut -d' ' -f2-`
@@ -889,12 +913,12 @@ save_raw()
mkdir -p "$coredir"
[ -d "$coredir" ] || {
- echo "failed to create $coredir"
+ derror "failed to create $coredir"
return 1
}
if makedumpfile -R $coredir/vmcore <$raw_target >/dev/null 2>&1; then
# dump found
- echo "Dump saved to $coredir/vmcore"
+ dinfo "Dump saved to $coredir/vmcore"
# wipe makedumpfile header
dd if=/dev/zero of=$raw_target bs=1b count=1 2>/dev/null
else
@@ -967,13 +991,13 @@ check_fence_kdump_config()
for node in $nodes; do
if [ "$node" = "$hostname" ]; then
- echo "Option fence_kdump_nodes cannot contain $hostname"
+ derror "Option fence_kdump_nodes cannot contain $hostname"
return 1
fi
# node can be ipaddr
echo $ipaddrs | grep $node > /dev/null
if [ $? -eq 0 ]; then
- echo "Option fence_kdump_nodes cannot contain $node"
+ derror "Option fence_kdump_nodes cannot contain $node"
return 1
fi
done
@@ -995,11 +1019,11 @@ start_fadump()
{
echo 1 > $FADUMP_REGISTER_SYS_NODE
if ! check_current_fadump_status; then
- echo "fadump: failed to register"
+ derror "fadump: failed to register"
return 1
fi
- echo "fadump: registered successfully"
+ dinfo "fadump: registered successfully"
return 0
}
@@ -1026,7 +1050,7 @@ check_failure_action_config()
if [ -z "$failure_action" -a -z "$default_option" ]; then
return 0
elif [ -n "$failure_action" -a -n "$default_option" ]; then
- echo "Cannot specify 'failure_action' and 'default' option
together"
+ derror "Cannot specify 'failure_action' and 'default' option
together"
return 1
fi
@@ -1040,7 +1064,7 @@ check_failure_action_config()
return 0
;;
*)
- echo $"Usage kdump.conf: $option
{reboot|halt|poweroff|shell|dump_to_rootfs}"
+ dinfo $"Usage kdump.conf: $option
{reboot|halt|poweroff|shell|dump_to_rootfs}"
return 1
esac
}
@@ -1058,7 +1082,7 @@ check_final_action_config()
return 0
;;
*)
- echo $"Usage kdump.conf: final_action {reboot|halt|poweroff}"
+ dinfo $"Usage kdump.conf: final_action {reboot|halt|poweroff}"
return 1
esac
fi
@@ -1068,13 +1092,13 @@ start()
{
check_dump_feasibility
if [ $? -ne 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
check_config
if [ $? -ne 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
@@ -1084,43 +1108,43 @@ start()
save_raw
if [ $? -ne 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
check_current_status
if [ $? == 0 ]; then
- echo "Kdump already running: [WARNING]"
+ dwarn "Kdump already running: [WARNING]"
return 0
fi
if check_ssh_config; then
if ! check_ssh_target; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
fi
check_rebuild
if [ $? != 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
start_dump
if [ $? != 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
- echo "Starting kdump: [OK]"
+ dinfo "Starting kdump: [OK]"
}
reload()
{
check_current_status
if [ $? -ne 0 ]; then
- echo "Kdump was not running: [WARNING]"
+ dwarn "Kdump was not running: [WARNING]"
fi
if [ $DEFAULT_DUMP_MODE == "fadump" ]; then
@@ -1131,36 +1155,36 @@ reload()
fi
if [ $? -ne 0 ]; then
- echo "Stopping kdump: [FAILED]"
+ derror "Stopping kdump: [FAILED]"
return 1
fi
- echo "Stopping kdump: [OK]"
+ dinfo "Stopping kdump: [OK]"
setup_initrd
if [ $? -ne 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
start_dump
if [ $? -ne 0 ]; then
- echo "Starting kdump: [FAILED]"
+ derror "Starting kdump: [FAILED]"
return 1
fi
- echo "Starting kdump: [OK]"
+ dinfo "Starting kdump: [OK]"
}
stop_fadump()
{
echo 0 > $FADUMP_REGISTER_SYS_NODE
if check_current_fadump_status; then
- echo "fadump: failed to unregister"
+ derror "fadump: failed to unregister"
return 1
fi
- echo "fadump: unregistered successfully"
+ dinfo "fadump: unregistered successfully"
return 0
}
@@ -1173,11 +1197,11 @@ stop_kdump()
fi
if [ $? != 0 ]; then
- echo "kexec: failed to unload kdump kernel"
+ derror "kexec: failed to unload kdump kernel"
return 1
fi
- echo "kexec: unloaded kdump kernel"
+ dinfo "kexec: unloaded kdump kernel"
return 0
}
@@ -1185,7 +1209,7 @@ reload_fadump()
{
echo 1 > $FADUMP_REGISTER_SYS_NODE
if [ $? == 0 ]; then
- echo "fadump: re-registered successfully"
+ dinfo "fadump: re-registered successfully"
return 0
else
# FADump could fail on older kernel where re-register
@@ -1210,11 +1234,11 @@ stop()
fi
if [ $? != 0 ]; then
- echo "Stopping kdump: [FAILED]"
+ derror "Stopping kdump: [FAILED]"
return 1
fi
- echo "Stopping kdump: [OK]"
+ dinfo "Stopping kdump: [OK]"
return 0
}
@@ -1235,13 +1259,13 @@ rebuild() {
return 1
fi
- echo "Rebuilding $TARGET_INITRD"
+ dinfo "Rebuilding $TARGET_INITRD"
rebuild_initrd
return $?
}
if [ ! -f "$KDUMP_CONFIG_FILE" ]; then
- echo "Error: No kdump config file found!" >&2
+ derror "Error: No kdump config file found!"
exit 1
fi
@@ -1267,11 +1291,11 @@ main ()
check_current_status
case "$?" in
0)
- echo "Kdump is operational"
+ dinfo "Kdump is operational"
EXIT_CODE=0
;;
1)
- echo "Kdump is not operational"
+ dinfo "Kdump is not operational"
EXIT_CODE=3
;;
esac
@@ -1296,7 +1320,7 @@ main ()
show_reserved_mem
;;
*)
- echo $"Usage: $0
{start|stop|status|restart|reload|rebuild|propagate|showmem}"
+ dinfo $"Usage: $0
{start|stop|status|restart|reload|rebuild|propagate|showmem}"
exit 1
esac
}
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 669fd6cf4022..f6c012984f9b 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -37,6 +37,7 @@ Source27: early-kdump-howto.txt
Source28: kdump-udev-throttler
Source29: kdump.sysconfig.aarch64
Source30: 60-kdump.install
+Source31: kdump-logger.sh
#######################################
# These are sources for mkdumpramfs
@@ -190,6 +191,7 @@ install -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_mandir}/man8/mkdumprd.8
install -m 644 %{SOURCE25} $RPM_BUILD_ROOT%{_mandir}/man8/kdumpctl.8
install -m 755 %{SOURCE20} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib.sh
install -m 755 %{SOURCE23} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib-initramfs.sh
+install -m 755 %{SOURCE31} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-logger.sh
%ifnarch s390x
install -m 755 %{SOURCE28} $RPM_BUILD_ROOT%{_udevrulesdir}/../kdump-udev-throttler
%endif
diff --git a/mkdumprd b/mkdumprd
index 36f71b7056c2..5f32a00382ce 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -180,8 +180,8 @@ check_size() {
fi
if [ $avail -lt $memtotal ]; then
- echo "Warning: There might not be enough space to save a vmcore."
- echo " The size of $2 should be greater than $memtotal kilo
bytes."
+ dwarn "Warning: There might not be enough space to save a vmcore."
+ dwarn " The size of $2 should be greater than $memtotal kilo
bytes."
fi
}
@@ -253,7 +253,7 @@ verify_core_collector() {
if [ "$_cmd" != "makedumpfile" ]; then
if is_raw_dump_target; then
- echo "Warning: specifying a non-makedumpfile core collector, you will
have to recover the vmcore manually."
+ dwarn "Warning: specifying a non-makedumpfile core collector, you will
have to recover the vmcore manually."
fi
return
fi
@@ -343,7 +343,7 @@ is_unresettable()
resettable="$(cat $path)"
[ $resettable -eq 0 -a "$OVERRIDE_RESETTABLE" -eq 0 ] && {
local device=$(udevadm info --query=all --path=/sys/dev/block/$1 | awk -F=
'/DEVNAME/{print $2}')
- echo "Error: Can not save vmcore because device $device is
unresettable"
+ derror "Error: Can not save vmcore because device $device is
unresettable"
return 0
}
fi
@@ -377,7 +377,7 @@ is_crypt()
eval "$line"
[[ "$ID_FS_TYPE" = "crypto_LUKS" ]] && {
dev=$(udevadm info --query=all --path=/sys/dev/block/$majmin | awk -F=
'/DEVNAME/{print $2}')
- echo "Device $dev is encrypted."
+ derror "Device $dev is encrypted."
return 0
}
return 1
@@ -400,7 +400,7 @@ if ! check_resettable; then
fi
if ! check_crypt; then
- echo "Warning: Encrypted device is in dump path, which is not recommended, see
kexec-kdump-howto.txt for more details."
+ dwarn "Warning: Encrypted device is in dump path, which is not recommended, see
kexec-kdump-howto.txt for more details."
fi
# firstly get right SSH_KEY_LOCATION
--
2.17.1