Start mcklogd before McKernel to avoid deadlock

McKernel blocks forever waiting for mcklogd to retrieve kmsg when
kmsg bufer is full with boot log and mcklogd isn't running.
This commit is contained in:
e29005
2016-10-19 16:40:32 +09:00
parent 9705a80c82
commit 0b0aa6c0e0
2 changed files with 26 additions and 6 deletions

View File

@ -126,6 +126,16 @@ if [ "${irqbalance_used}" == "yes" ]; then
if ! systemctl stop irqbalance.service 2>/dev/null ; then echo "error: stopping irqbalance" >&2; exit 1; fi;
fi
# Start mcklogd. Note that McKernel blocks when kmsg buffer is full
# with '-k 1' until mcklogd unblocks it so starting mcklogd must preceeds
# booting McKernel
if [ ${LOGMODE} -ne 0 ]
then
# Stop mcklogd which has survived McKernel shutdown because mcstop+release.sh is not used
pkill mcklogd
SBINDIR=${SBINDIR} ${SBINDIR}/mcklogd -i ${INTERVAL} -f ${facility}
fi
# Load IHK if not loaded
if [ "`lsmod | grep ihk`" == "" ]; then
if ! insmod ${KMODDIR}/ihk.ko; then echo "error: loading ihk" >&2; exit 1; fi;
@ -249,12 +259,6 @@ if [ "$enable_mcoverlay" == "yes" ]; then
fi
done
fi
if [ ${LOGMODE} -ne 0 ]
then
# mcklogd survives when McKernel isn't shut down by mcstop+release.sh
pkill mcklogd
SBINDIR=${SBINDIR} ${SBINDIR}/mcklogd -i ${INTERVAL} -f ${facility}
fi
# Start irqbalance with CPUs and IRQ for McKernel banned
if [ "${irqbalance_used}" == "yes" ]; then