This commit is contained in:
committed by
Git OBS Bridge
parent
0c7f273c50
commit
0ff96a3778
48
kdump
48
kdump
@@ -65,6 +65,12 @@ get_mem_size()
|
||||
expr \( $s + 1048575 \) / 1048576
|
||||
}
|
||||
|
||||
get_size_mb()
|
||||
{
|
||||
s=`stat -c '%s' $1 2> /dev/null || echo 0`
|
||||
expr \( $s + 1048575 \) / 1048576
|
||||
}
|
||||
|
||||
# The default dumper
|
||||
#
|
||||
# Clean up old stuff if necessary, check the free size
|
||||
@@ -75,10 +81,11 @@ save_core()
|
||||
purge_old_dumps
|
||||
fi
|
||||
|
||||
dumpsize=`get_mem_size`
|
||||
|
||||
if [ $KDUMP_FREE_DISK_SIZE -gt 0 ]; then
|
||||
restsize=`parse_rest_size "$KDUMP_SAVEDIR"`
|
||||
needsize=`get_mem_size`
|
||||
needsize=`expr $needsize + $KDUMP_FREE_DISK_SIZE`
|
||||
needsize=`expr $dumpsize + $KDUMP_FREE_DISK_SIZE`
|
||||
if [ $restsize -lt $needsize ]; then
|
||||
echo -n " No enough space left on dump device ($restsize MB)"
|
||||
rc_status -s
|
||||
@@ -89,8 +96,24 @@ save_core()
|
||||
|
||||
coredir="${KDUMP_SAVEDIR}/`date +"%Y-%m-%d-%H:%M"`"
|
||||
mkdir -p $coredir
|
||||
echo -n "Saving crash dump to $coredir"
|
||||
cp --sparse=always /proc/vmcore $coredir/vmcore
|
||||
|
||||
echo -n "Saving $dumpsize MB crash dump to $coredir"
|
||||
if [ $(($KDUMP_VERBOSE & 2)) -gt 0 ] ; then
|
||||
echo " ..."
|
||||
/bin/cp --sparse=always /proc/vmcore $coredir/vmcore &
|
||||
pid=$!
|
||||
sleep 5
|
||||
while true; do
|
||||
copied=`get_size_mb $coredir/vmcore`
|
||||
printf "Copied %'10llu (%3d%%) \r" \
|
||||
$copied $(($copied * 100 / $dumpsize))
|
||||
test -z "$pid" && break
|
||||
test -d "/proc/$pid" || pid=""
|
||||
sleep 15
|
||||
done
|
||||
else
|
||||
/bin/cp --sparse=always /proc/vmcore $coredir/vmcore
|
||||
fi
|
||||
rc_status -v
|
||||
}
|
||||
|
||||
@@ -197,10 +220,17 @@ load_kdump()
|
||||
|
||||
echo 1 > /proc/sys/kernel/panic_on_oops
|
||||
|
||||
$KEXEC -p $kdump_kernel \
|
||||
--append="$KDUMP_COMMANDLINE" \
|
||||
--initrd=$kdump_initrd \
|
||||
$KEXEC_OPTIONS
|
||||
KEXEC_CALL="$KEXEC -p $kdump_kernel --append=\"$KDUMP_COMMANDLINE\""
|
||||
KEXEC_CALL="$KEXEC_CALL --initrd=$kdump_initrd $KEXEC_OPTIONS"
|
||||
|
||||
if [ $(($KDUMP_VERBOSE & 1)) -gt 0 ] ; then
|
||||
logger -i -t kdump "Loading kdump kernel: $KEXEC_CALL"
|
||||
fi
|
||||
if [ $(($KDUMP_VERBOSE & 4)) -gt 0 ] ; then
|
||||
echo "Loading kdump kernel: $KEXEC_CALL"
|
||||
fi
|
||||
|
||||
eval "$KEXEC_CALL"
|
||||
|
||||
rc_status -v
|
||||
}
|
||||
@@ -325,3 +355,5 @@ case "$1" in
|
||||
esac
|
||||
|
||||
exit $?
|
||||
|
||||
# vim: set ts=8 sw=4 sts=4 noet:
|
||||
|
Reference in New Issue
Block a user