From 90a34f54c92466ad5e64cb70a35e06c5820c1ec5 Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Thu, 26 Apr 2018 15:06:53 +0900 Subject: [PATCH] mcreboot.sh,mcstop+release.sh: Disable irqbalance_mck forcefully --- arch/x86_64/tools/mcreboot-smp-x86.sh.in | 18 ++++++++++++++---- arch/x86_64/tools/mcstop+release-smp-x86.sh.in | 13 ++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) 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