2011-07-28 14:50:43 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2013-05-24 05:30:28 +00:00
|
|
|
exec >&2
|
2011-07-28 14:50:43 +00:00
|
|
|
. /lib/dracut-lib.sh
|
|
|
|
|
2012-12-19 07:45:05 +00:00
|
|
|
set -o pipefail
|
2011-07-28 14:50:43 +00:00
|
|
|
KDUMP_PATH="/var/crash"
|
2012-06-14 01:56:10 +00:00
|
|
|
CORE_COLLECTOR=""
|
|
|
|
DEFAULT_CORE_COLLECTOR="makedumpfile -c --message-level 1 -d 31"
|
2013-05-13 03:13:27 +00:00
|
|
|
DMESG_COLLECTOR="/sbin/vmcore-dmesg"
|
Change dump_to_rootfs to be a default option and reboot to be default action
Firstly rename dump_rootfs to dump_to_rootfs to remove the ambiguity
about dump_rootfs. Then add it as one of default options. That means
user can specify dump_to_rootfs to be default action manually, then
it will take action when specified target dump failed.
Secondly, in rhel7 and fedora, when default action is not specified,
the default 'default' is dump_to_rootfs. Namely when specified target
dump failed, the kdump initrd will mount root and save kdump from
initramfs context. However in rhel6, the default 'default' is 'reboot'.
That means when specified target dump failed, the kdump initrd will
reboot systems. For being consistent with rhel6, change the default
'default' back to 'reboot'. And this can also keep logic simple, easier
to understand. Primarily, Our default dump target is root filesystem.
So keeping "default" as "dump_to_rootfs" and trying to dump to root
filesystem again when first attempt fails does not make much sense.
Meanwhile add the relevant description into kdump.conf,kdump.conf.5
and kexec-kdump-howto.txt.
Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
2013-03-01 07:14:19 +00:00
|
|
|
DEFAULT_ACTION="reboot -f"
|
2012-12-13 05:47:56 +00:00
|
|
|
DATEDIR=`date +%Y.%m.%d-%T`
|
|
|
|
HOST_IP='127.0.0.1'
|
2011-07-28 14:50:43 +00:00
|
|
|
DUMP_INSTRUCTION=""
|
2012-02-22 03:16:09 +00:00
|
|
|
SSH_KEY_LOCATION="/root/.ssh/kdump_id_rsa"
|
2012-04-28 10:01:18 +00:00
|
|
|
KDUMP_SCRIPT_DIR="/kdumpscripts"
|
|
|
|
DD_BLKSIZE=512
|
2012-06-12 01:42:39 +00:00
|
|
|
FINAL_ACTION="reboot -f"
|
|
|
|
DUMP_RETVAL=0
|
2012-06-14 01:55:54 +00:00
|
|
|
conf_file="/etc/kdump.conf"
|
2012-06-14 01:57:30 +00:00
|
|
|
KDUMP_PRE=""
|
|
|
|
KDUMP_POST=""
|
2012-04-28 10:01:18 +00:00
|
|
|
|
|
|
|
export PATH=$PATH:$KDUMP_SCRIPT_DIR
|
2012-02-22 03:16:09 +00:00
|
|
|
|
2011-07-28 14:50:43 +00:00
|
|
|
do_default_action()
|
|
|
|
{
|
|
|
|
wait_for_loginit
|
|
|
|
$DEFAULT_ACTION
|
|
|
|
}
|
|
|
|
|
2012-06-14 01:57:30 +00:00
|
|
|
do_kdump_pre()
|
|
|
|
{
|
|
|
|
if [ -n "$KDUMP_PRE" ]; then
|
|
|
|
"$KDUMP_PRE"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
do_kdump_post()
|
|
|
|
{
|
|
|
|
if [ -n "$KDUMP_POST" ]; then
|
|
|
|
"$KDUMP_POST" "$1"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2011-08-01 12:01:31 +00:00
|
|
|
add_dump_code()
|
2011-07-28 14:50:43 +00:00
|
|
|
{
|
2012-06-12 01:42:39 +00:00
|
|
|
DUMP_INSTRUCTION=$1
|
2011-07-28 14:50:43 +00:00
|
|
|
}
|
|
|
|
|
2012-07-23 07:31:15 +00:00
|
|
|
dump_fs()
|
2011-08-01 12:01:31 +00:00
|
|
|
{
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: dump target is $1"
|
|
|
|
|
2012-09-20 03:03:19 +00:00
|
|
|
local _mp=$(findmnt -k -f -n -r -o TARGET $1)
|
2012-07-23 07:31:08 +00:00
|
|
|
|
|
|
|
if [ -z "$_mp" ]; then
|
|
|
|
echo "kdump: error: Dump target $1 is not mounted."
|
|
|
|
return 1
|
|
|
|
fi
|
2013-06-21 03:23:56 +00:00
|
|
|
|
|
|
|
echo "kdump: saving to $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/"
|
|
|
|
|
2012-01-25 07:25:39 +00:00
|
|
|
if [ "$_mp" = "$NEWROOT/" ] || [ "$_mp" = "$NEWROOT" ]
|
2011-08-02 10:10:16 +00:00
|
|
|
then
|
|
|
|
mount -o remount,rw $_mp || return 1
|
|
|
|
fi
|
2013-02-01 03:00:12 +00:00
|
|
|
mkdir -p $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR || return 1
|
2013-05-13 03:13:27 +00:00
|
|
|
|
|
|
|
save_vmcore_dmesg_fs ${DMESG_COLLECTOR} "$_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/"
|
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore"
|
2013-06-21 03:23:57 +00:00
|
|
|
$CORE_COLLECTOR /proc/vmcore $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete || return 1
|
|
|
|
mv $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete $_mp/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore
|
2013-06-21 03:23:56 +00:00
|
|
|
|
|
|
|
echo "kdump: saving vmcore complete"
|
2013-06-21 03:23:59 +00:00
|
|
|
umount -R $_mp || return 1
|
2011-08-01 12:01:31 +00:00
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
dump_raw()
|
|
|
|
{
|
2013-06-21 03:23:58 +00:00
|
|
|
local _raw=$1
|
2012-04-28 10:01:18 +00:00
|
|
|
|
2013-06-21 03:23:58 +00:00
|
|
|
[ -b "$_raw" ] || return 1
|
|
|
|
|
|
|
|
echo "kdump: saving to raw disk $_raw"
|
2013-06-21 03:23:56 +00:00
|
|
|
|
2012-04-28 10:01:18 +00:00
|
|
|
if $(echo -n $CORE_COLLECTOR|grep -q makedumpfile); then
|
|
|
|
_src_size_mb="Unknown"
|
|
|
|
else
|
|
|
|
_src_size=`ls -l /proc/vmcore | cut -d' ' -f5`
|
|
|
|
_src_size_mb=$(($_src_size / 1048576))
|
|
|
|
fi
|
|
|
|
|
|
|
|
monitor_dd_progress $_src_size_mb &
|
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore"
|
2013-06-21 03:23:58 +00:00
|
|
|
$CORE_COLLECTOR /proc/vmcore | dd of=$_raw bs=$DD_BLKSIZE >> /tmp/dd_progress_file 2>&1 || return 1
|
2013-06-21 03:23:56 +00:00
|
|
|
|
|
|
|
echo "kdump: saving vmcore complete"
|
2012-12-19 09:27:40 +00:00
|
|
|
return 0
|
2011-08-01 12:01:31 +00:00
|
|
|
}
|
|
|
|
|
Change dump_to_rootfs to be a default option and reboot to be default action
Firstly rename dump_rootfs to dump_to_rootfs to remove the ambiguity
about dump_rootfs. Then add it as one of default options. That means
user can specify dump_to_rootfs to be default action manually, then
it will take action when specified target dump failed.
Secondly, in rhel7 and fedora, when default action is not specified,
the default 'default' is dump_to_rootfs. Namely when specified target
dump failed, the kdump initrd will mount root and save kdump from
initramfs context. However in rhel6, the default 'default' is 'reboot'.
That means when specified target dump failed, the kdump initrd will
reboot systems. For being consistent with rhel6, change the default
'default' back to 'reboot'. And this can also keep logic simple, easier
to understand. Primarily, Our default dump target is root filesystem.
So keeping "default" as "dump_to_rootfs" and trying to dump to root
filesystem again when first attempt fails does not make much sense.
Meanwhile add the relevant description into kdump.conf,kdump.conf.5
and kexec-kdump-howto.txt.
Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
2013-03-01 07:14:19 +00:00
|
|
|
dump_to_rootfs()
|
2011-07-28 14:50:43 +00:00
|
|
|
{
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: dump target is root fs"
|
|
|
|
echo "kdump: saving to $NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR/"
|
|
|
|
|
2013-03-01 07:14:20 +00:00
|
|
|
#For dumping to rootfs, "-F" need be removed. Surely only available for makedumpfile case.
|
|
|
|
[[ $CORE_COLLECTOR = *makedumpfile* ]] && CORE_COLLECTOR=`echo $CORE_COLLECTOR | sed -e s/-F//g`
|
|
|
|
|
2011-07-28 14:50:43 +00:00
|
|
|
mount -o remount,rw $NEWROOT/ || return 1
|
2013-02-01 03:00:12 +00:00
|
|
|
mkdir -p $NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR
|
2013-05-13 03:13:27 +00:00
|
|
|
|
|
|
|
save_vmcore_dmesg_fs ${DMESG_COLLECTOR} "$NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR/"
|
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore"
|
2013-06-21 03:23:57 +00:00
|
|
|
$CORE_COLLECTOR /proc/vmcore $NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete || return 1
|
|
|
|
mv $NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore-incomplete $NEWROOT/$KDUMP_PATH/$HOST_IP-$DATEDIR/vmcore
|
2013-06-21 03:23:56 +00:00
|
|
|
|
|
|
|
echo "kdump: saving vmcore complete"
|
2011-07-28 14:50:43 +00:00
|
|
|
sync
|
2013-06-21 03:23:59 +00:00
|
|
|
umount -R $NEWROOT || return 1
|
2013-06-06 06:56:50 +00:00
|
|
|
return 0
|
2011-07-28 14:50:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
dump_ssh()
|
|
|
|
{
|
2012-06-14 01:56:10 +00:00
|
|
|
local _opt="-i $1 -o BatchMode=yes -o StrictHostKeyChecking=yes"
|
2013-02-01 03:00:12 +00:00
|
|
|
local _dir="$KDUMP_PATH/$HOST_IP-$DATEDIR"
|
2013-06-21 03:23:58 +00:00
|
|
|
local _host=$2
|
2012-06-14 01:56:10 +00:00
|
|
|
|
2013-06-21 03:23:58 +00:00
|
|
|
echo "kdump: saving to $_host:$_dir"
|
2013-06-21 03:23:56 +00:00
|
|
|
|
2012-11-14 05:58:37 +00:00
|
|
|
cat /var/lib/random-seed > /dev/urandom
|
2013-06-21 03:23:58 +00:00
|
|
|
ssh -q $_opt $_host mkdir -p $_dir || return 1
|
2012-06-14 01:56:10 +00:00
|
|
|
|
2013-06-21 03:23:58 +00:00
|
|
|
save_vmcore_dmesg_ssh ${DMESG_COLLECTOR} ${_dir} "${_opt}" $_host
|
2013-05-13 03:13:27 +00:00
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore"
|
|
|
|
|
2013-05-28 09:53:59 +00:00
|
|
|
if [ "${CORE_COLLECTOR%%[[:blank:]]*}" = "scp" ]; then
|
2013-06-21 03:23:58 +00:00
|
|
|
scp -q $_opt /proc/vmcore "$_host:$_dir/vmcore-incomplete" || return 1
|
|
|
|
ssh $_opt $_host "mv $_dir/vmcore-incomplete $_dir/vmcore" || return 1
|
2012-06-14 01:56:10 +00:00
|
|
|
else
|
2013-06-21 03:23:58 +00:00
|
|
|
$CORE_COLLECTOR /proc/vmcore | ssh $_opt $_host "dd bs=512 of=$_dir/vmcore-incomplete" || return 1
|
|
|
|
ssh $_opt $_host "mv $_dir/vmcore-incomplete $_dir/vmcore.flat" || return 1
|
2012-06-14 01:56:10 +00:00
|
|
|
fi
|
2013-06-21 03:23:56 +00:00
|
|
|
|
|
|
|
echo "kdump: saving vmcore complete"
|
|
|
|
return 0
|
2012-06-14 01:56:10 +00:00
|
|
|
}
|
|
|
|
|
2013-05-13 03:13:27 +00:00
|
|
|
save_vmcore_dmesg_fs() {
|
|
|
|
local _dmesg_collector=$1
|
|
|
|
local _path=$2
|
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt"
|
2013-05-13 03:13:27 +00:00
|
|
|
$_dmesg_collector /proc/vmcore > ${_path}/vmcore-dmesg-incomplete.txt
|
|
|
|
_exitcode=$?
|
|
|
|
if [ $_exitcode -eq 0 ]; then
|
|
|
|
mv ${_path}/vmcore-dmesg-incomplete.txt ${_path}/vmcore-dmesg.txt
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt complete"
|
2013-05-13 03:13:27 +00:00
|
|
|
else
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt failed"
|
2013-05-13 03:13:27 +00:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
save_vmcore_dmesg_ssh() {
|
|
|
|
local _dmesg_collector=$1
|
|
|
|
local _path=$2
|
|
|
|
local _opts="$3"
|
|
|
|
local _location=$4
|
|
|
|
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt"
|
2013-05-13 03:13:27 +00:00
|
|
|
$_dmesg_collector /proc/vmcore | ssh $_opts $_location "dd of=$_path/vmcore-dmesg-incomplete.txt"
|
|
|
|
_exitcode=$?
|
|
|
|
|
|
|
|
if [ $_exitcode -eq 0 ]; then
|
|
|
|
ssh -q $_opts $_location mv $_path/vmcore-dmesg-incomplete.txt $_path/vmcore-dmesg.txt
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt complete"
|
2013-05-13 03:13:27 +00:00
|
|
|
else
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: saving vmcore-dmesg.txt failed"
|
2013-05-13 03:13:27 +00:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-14 01:56:10 +00:00
|
|
|
is_ssh_dump_target()
|
|
|
|
{
|
2012-11-14 05:56:50 +00:00
|
|
|
grep -q "^ssh[[:blank:]].*@" $conf_file
|
2011-07-28 14:50:43 +00:00
|
|
|
}
|
|
|
|
|
2012-12-13 05:47:56 +00:00
|
|
|
is_nfs_dump_target()
|
|
|
|
{
|
|
|
|
grep -q "^nfs.*:" $conf_file
|
|
|
|
}
|
|
|
|
|
2012-06-14 01:57:07 +00:00
|
|
|
is_raw_dump_target()
|
|
|
|
{
|
|
|
|
grep -q "^raw" $conf_file
|
|
|
|
}
|
|
|
|
|
2012-12-13 05:47:56 +00:00
|
|
|
get_host_ip()
|
|
|
|
{
|
2013-02-01 07:40:26 +00:00
|
|
|
local _host
|
2012-12-13 05:47:56 +00:00
|
|
|
if is_nfs_dump_target || is_ssh_dump_target
|
|
|
|
then
|
|
|
|
kdumpnic=$(getarg kdumpnic=)
|
2013-06-21 03:23:56 +00:00
|
|
|
[ -z "$kdumpnic" ] && echo "kdump: failed to get kdumpnic!" && return 1
|
2013-02-01 07:40:26 +00:00
|
|
|
_host=`ip addr show dev $kdumpnic|grep 'inet '`
|
2013-06-21 03:23:56 +00:00
|
|
|
[ $? -ne 0 ] && echo "kdump: wrong kdumpnic: $kdumpnic" && return 1
|
2013-02-01 07:40:26 +00:00
|
|
|
_host="${_host##*inet }"
|
|
|
|
_host="${_host%%/*}"
|
2013-06-21 03:23:56 +00:00
|
|
|
[ -z "$_host" ] && echo "kdump: wrong kdumpnic: $kdumpnic" && return 1
|
2013-02-01 07:40:26 +00:00
|
|
|
HOST_IP=$_host
|
2012-12-13 05:47:56 +00:00
|
|
|
fi
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2011-07-28 14:50:43 +00:00
|
|
|
read_kdump_conf()
|
|
|
|
{
|
2012-06-14 01:55:54 +00:00
|
|
|
if [ ! -f "$conf_file" ]; then
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: $conf_file not found"
|
2012-06-14 01:55:54 +00:00
|
|
|
return
|
2011-07-28 14:50:43 +00:00
|
|
|
fi
|
2012-06-14 01:55:54 +00:00
|
|
|
|
|
|
|
# first get the necessary variables
|
|
|
|
while read config_opt config_val;
|
|
|
|
do
|
|
|
|
case "$config_opt" in
|
|
|
|
path)
|
|
|
|
KDUMP_PATH="$config_val"
|
|
|
|
;;
|
|
|
|
core_collector)
|
|
|
|
[ -n "$config_val" ] && CORE_COLLECTOR="$config_val"
|
|
|
|
;;
|
|
|
|
sshkey)
|
|
|
|
if [ -f "$config_val" ]; then
|
|
|
|
SSH_KEY_LOCATION=$config_val
|
|
|
|
fi
|
|
|
|
;;
|
2012-06-14 01:57:30 +00:00
|
|
|
kdump_pre)
|
|
|
|
KDUMP_PRE="$config_val"
|
|
|
|
;;
|
|
|
|
kdump_post)
|
|
|
|
KDUMP_POST="$config_val"
|
|
|
|
;;
|
2012-06-14 01:55:54 +00:00
|
|
|
default)
|
|
|
|
case $config_val in
|
|
|
|
shell)
|
2012-08-01 10:14:42 +00:00
|
|
|
DEFAULT_ACTION="_emergency_shell kdump"
|
2012-06-14 01:55:54 +00:00
|
|
|
;;
|
|
|
|
reboot)
|
|
|
|
DEFAULT_ACTION="reboot -f"
|
|
|
|
;;
|
|
|
|
halt)
|
|
|
|
DEFAULT_ACTION="halt -f"
|
|
|
|
;;
|
|
|
|
poweroff)
|
|
|
|
DEFAULT_ACTION="poweroff -f"
|
|
|
|
;;
|
Change dump_to_rootfs to be a default option and reboot to be default action
Firstly rename dump_rootfs to dump_to_rootfs to remove the ambiguity
about dump_rootfs. Then add it as one of default options. That means
user can specify dump_to_rootfs to be default action manually, then
it will take action when specified target dump failed.
Secondly, in rhel7 and fedora, when default action is not specified,
the default 'default' is dump_to_rootfs. Namely when specified target
dump failed, the kdump initrd will mount root and save kdump from
initramfs context. However in rhel6, the default 'default' is 'reboot'.
That means when specified target dump failed, the kdump initrd will
reboot systems. For being consistent with rhel6, change the default
'default' back to 'reboot'. And this can also keep logic simple, easier
to understand. Primarily, Our default dump target is root filesystem.
So keeping "default" as "dump_to_rootfs" and trying to dump to root
filesystem again when first attempt fails does not make much sense.
Meanwhile add the relevant description into kdump.conf,kdump.conf.5
and kexec-kdump-howto.txt.
Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
2013-03-01 07:14:19 +00:00
|
|
|
dump_to_rootfs)
|
|
|
|
DEFAULT_ACTION="dump_to_rootfs"
|
|
|
|
;;
|
2012-06-14 01:55:54 +00:00
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done < $conf_file
|
|
|
|
|
|
|
|
# rescan for add code for dump target
|
|
|
|
while read config_opt config_val;
|
|
|
|
do
|
|
|
|
case "$config_opt" in
|
2012-07-23 07:31:28 +00:00
|
|
|
ext[234]|xfs|btrfs|minix|nfs)
|
2012-07-23 07:31:15 +00:00
|
|
|
add_dump_code "dump_fs $config_val"
|
2012-06-14 01:55:54 +00:00
|
|
|
;;
|
|
|
|
raw)
|
|
|
|
add_dump_code "dump_raw $config_val"
|
|
|
|
;;
|
2012-07-23 07:31:28 +00:00
|
|
|
ssh)
|
|
|
|
add_dump_code "dump_ssh $SSH_KEY_LOCATION $config_val"
|
2012-06-14 01:55:54 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done < $conf_file
|
2011-07-28 14:50:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
read_kdump_conf
|
|
|
|
|
2012-06-14 01:56:10 +00:00
|
|
|
if [ -z "$CORE_COLLECTOR" ];then
|
|
|
|
CORE_COLLECTOR=$DEFAULT_CORE_COLLECTOR
|
2012-06-14 01:57:07 +00:00
|
|
|
if is_ssh_dump_target || is_raw_dump_target; then
|
|
|
|
CORE_COLLECTOR="$CORE_COLLECTOR -F"
|
|
|
|
fi
|
2012-06-14 01:56:10 +00:00
|
|
|
fi
|
|
|
|
|
2012-12-13 05:47:56 +00:00
|
|
|
get_host_ip
|
|
|
|
if [ $? -ne 0 ]; then
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: get_host_ip exited with non-zero status!"
|
2012-12-13 05:47:56 +00:00
|
|
|
do_default_action
|
2013-02-01 03:00:12 +00:00
|
|
|
$FINAL_ACTION
|
2012-12-13 05:47:56 +00:00
|
|
|
fi
|
|
|
|
|
2012-06-12 01:42:29 +00:00
|
|
|
if [ -z "$DUMP_INSTRUCTION" ]; then
|
Change dump_to_rootfs to be a default option and reboot to be default action
Firstly rename dump_rootfs to dump_to_rootfs to remove the ambiguity
about dump_rootfs. Then add it as one of default options. That means
user can specify dump_to_rootfs to be default action manually, then
it will take action when specified target dump failed.
Secondly, in rhel7 and fedora, when default action is not specified,
the default 'default' is dump_to_rootfs. Namely when specified target
dump failed, the kdump initrd will mount root and save kdump from
initramfs context. However in rhel6, the default 'default' is 'reboot'.
That means when specified target dump failed, the kdump initrd will
reboot systems. For being consistent with rhel6, change the default
'default' back to 'reboot'. And this can also keep logic simple, easier
to understand. Primarily, Our default dump target is root filesystem.
So keeping "default" as "dump_to_rootfs" and trying to dump to root
filesystem again when first attempt fails does not make much sense.
Meanwhile add the relevant description into kdump.conf,kdump.conf.5
and kexec-kdump-howto.txt.
Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
2013-03-01 07:14:19 +00:00
|
|
|
add_dump_code "dump_to_rootfs"
|
2011-07-28 14:50:43 +00:00
|
|
|
fi
|
|
|
|
|
2012-06-14 01:57:30 +00:00
|
|
|
do_kdump_pre
|
|
|
|
if [ $? -ne 0 ]; then
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: kdump_pre script exited with non-zero status!"
|
2012-06-14 01:57:30 +00:00
|
|
|
$FINAL_ACTION
|
|
|
|
fi
|
|
|
|
|
2012-06-12 01:42:39 +00:00
|
|
|
$DUMP_INSTRUCTION
|
|
|
|
DUMP_RETVAL=$?
|
2012-06-14 01:57:30 +00:00
|
|
|
|
|
|
|
do_kdump_post $DUMP_RETVAL
|
|
|
|
if [ $? -ne 0 ]; then
|
2013-06-21 03:23:56 +00:00
|
|
|
echo "kdump: kdump_post script exited with non-zero status!"
|
2012-06-14 01:57:30 +00:00
|
|
|
fi
|
|
|
|
|
2012-06-12 01:42:39 +00:00
|
|
|
if [ $DUMP_RETVAL -ne 0 ]; then
|
|
|
|
do_default_action
|
|
|
|
fi
|
|
|
|
|
|
|
|
$FINAL_ACTION
|