#!/bin/sh
#
# Author: 	    Marin Atanasov Nikolov <dnaeon@gmail.com>
#
### BEGIN INIT INFO
# Provides:          ksm
# Required-Start:    
# Required-Stop:
# X-Start-Before:    
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6 
# Short-Description: Enable and disable KVM KSM
# Description:       Enables and disables the KVM  Kernel Samepage Merging
#		     feature of the kernel
### END INIT INFO

set -e

. /lib/lsb/init-functions

do_start() {
    echo 1 > /sys/kernel/mm/ksm/run
    log_success_msg "Enabling Kernel Samepage Merging"
}
 
do_stop() {
    echo 0 > /sys/kernel/mm/ksm/run
    log_success_msg "Disabling Kernel Samepage Merging"
}

do_status() {
    local ksm_status
    ksm_status=$( cat /sys/kernel/mm/ksm/run )

    if [ ${ksm_status} -eq 1 ]; then
	log_success_msg "Kernel Samepage Merging is enabled"
    else
	log_success_msg "Kernel Samepage Merging is disabled"
    fi
}

case "${1}" in
    start)
        do_start
        ;;
    reset|stop)
        do_stop
        ;;
    status)
	do_status
	;;
    reload|restart|force-reload)
	do_stop
        do_start
        ;;
    *)
        log_success_msg "usage: ${0} {start|stop|status|reload|restart|force-reload|reset}" >&2
        ;;
esac
