OBS User unknown
2007-02-15 17:13:06 +00:00
committed by Git OBS Bridge
parent 0c7f273c50
commit 0ff96a3778
5 changed files with 96 additions and 14 deletions

48
kdump
View File

@@ -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: