diff --git a/arch/x86_64/tools/mcreboot-smp-x86.sh.in b/arch/x86_64/tools/mcreboot-smp-x86.sh.in index 084aab4a..a0d9fd11 100644 --- a/arch/x86_64/tools/mcreboot-smp-x86.sh.in +++ b/arch/x86_64/tools/mcreboot-smp-x86.sh.in @@ -90,6 +90,16 @@ fi if [ "${redirect_kmsg}" != "0" -o "${mon_interval}" != "-1" ]; then ${SBINDIR}/ihkmond -f ${facility} -k ${redirect_kmsg} -i ${mon_interval} fi + +disable_irqbalance_mck() { + if [ -f /etc/systemd/system/irqbalance_mck.service ]; then + systemctl disable irqbalance_mck.service >/dev/null 2>/dev/null + + # Invalid .service file persists so remove it + rm -f /etc/systemd/system/irqbalance_mck.service + fi +} + # # Revert any state that has been initialized before the error occured. # @@ -103,9 +113,7 @@ error_exit() { if ! systemctl stop irqbalance_mck.service 2>/dev/null; then echo "warning: failed to stop irqbalance_mck" >&2 fi - if ! systemctl disable irqbalance_mck.service >/dev/null 2>/dev/null; then - echo "warning: failed to disable irqbalance_mck" >&2 - fi + disable_irqbalance_mck fi fi ;& @@ -458,7 +466,9 @@ if [ "${irqbalance_used}" == "yes" ]; then banirq=`cat /proc/interrupts| perl -e 'while(<>) { if(/^\s*(\d+).*IHK\-SMP\s*$/) {print $1;}}'` sed "s/%mask%/$smp_affinity_mask/g" $ETCDIR/irqbalance_mck.in | sed "s/%banirq%/$banirq/g" > /tmp/irqbalance_mck - systemctl disable irqbalance_mck.service >/dev/null 2>/dev/null + + disable_irqbalance_mck + if ! systemctl link $ETCDIR/irqbalance_mck.service >/dev/null 2>/dev/null; then echo "error: linking irqbalance_mck" >&2 error_exit "mcos_sys_mounted" diff --git a/arch/x86_64/tools/mcstop+release-smp-x86.sh.in b/arch/x86_64/tools/mcstop+release-smp-x86.sh.in index b6748b3b..0386687f 100644 --- a/arch/x86_64/tools/mcstop+release-smp-x86.sh.in +++ b/arch/x86_64/tools/mcstop+release-smp-x86.sh.in @@ -18,6 +18,15 @@ mem="" cpus="" irqbalance_used="" +disable_irqbalance_mck() { + if [ -f /etc/systemd/system/irqbalance_mck.service ]; then + systemctl disable irqbalance_mck.service >/dev/null 2>/dev/null + + # Invalid .service file persists so remove it + rm -f /etc/systemd/system/irqbalance_mck.service + fi +} + # No SMP module? Exit. if ! grep ihk_smp_@ARCH@ /proc/modules &>/dev/null; then exit 0; fi @@ -26,9 +35,7 @@ if [ "`systemctl status irqbalance_mck.service 2> /dev/null |grep -E 'Active: ac if ! systemctl stop irqbalance_mck.service 2>/dev/null; then echo "warning: failed to stop irqbalance_mck" >&2 fi - if ! systemctl disable irqbalance_mck.service >/dev/null 2>/dev/null; then - echo "warning: failed to disable irqbalance_mck" >&2 - fi + disable_irqbalance_mck fi # Destroy all LWK instances