diff --git a/profiles/cpu-partitioning/script.sh b/profiles/cpu-partitioning/script.sh
index 0e94d3a..efe9bcb 100755
--- a/profiles/cpu-partitioning/script.sh
+++ b/profiles/cpu-partitioning/script.sh
@@ -54,8 +54,8 @@ stop() {
then
sed -i '/^IRQBALANCE_BANNED_CPUS=/d' /etc/sysconfig/irqbalance
teardown_kvm_mod_low_latency
+ enable_ksm
fi
- enable_ksm
enable_balance_domains
return "$?"
}
diff --git a/profiles/functions b/profiles/functions
index 2df8168..919409c 100644
--- a/profiles/functions
+++ b/profiles/functions
@@ -531,35 +531,30 @@ teardown_kvm_mod_low_latency()
KSM_SERVICES="ksm ksmtuned"
KSM_RUN_PATH=/sys/kernel/mm/ksm/run
+KSM_MASK_FILE="${STORAGE_PERSISTENT}/ksm-masked"
disable_ksm()
{
- for s in $KSM_SERVICES; do
- if systemctl is-enabled -q $s; then
- systemctl -q disable $s
+ if [ ! -f $KSM_MASK_FILE ]; then
+ # Always create $KSM_MASK_FILE, since we don't want to
+ # run any systemctl commands during boot
+ if ! touch $KSM_MASK_FILE; then
+ die "failed to create $KSM_MASK_FILE"
fi
-
- if systemctl is-active -q $s; then
- systemctl -q stop $s
- fi
- done
-
- if [ -f $KSM_RUN_PATH ]; then
+ systemctl --now --quiet mask $KSM_SERVICES
# Unmerge all shared pages
- echo 2 > $KSM_RUN_PATH
+ test -f $KSM_RUN_PATH && echo 2 > $KSM_RUN_PATH
fi
}
+# Should only be called when full_rollback == true
enable_ksm()
{
- for s in $KSM_SERVICES; do
- systemctl -q preset $s
-
- # Only start the service if it's enabled by defaut
- if systemctl is-enabled -q $s; then
- systemctl start $s
+ if [ -f $KSM_MASK_FILE ]; then
+ if systemctl --quiet unmask $KSM_SERVICES; then
+ rm -f $KSM_MASK_FILE
fi
- done
+ fi
}
die() {
diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh
index a9366cb..33a7996 100755
--- a/profiles/realtime-virtual-host/script.sh
+++ b/profiles/realtime-virtual-host/script.sh
@@ -93,8 +93,10 @@ start() {
}
stop() {
- [ "$1" = "full_rollback" ] && teardown_kvm_mod_low_latency
- enable_ksm
+ if [ "$1" = "full_rollback" ]; then
+ teardown_kvm_mod_low_latency
+ enable_ksm
+ fi
systemctl stop rt-entsk
return "$?"
}