#!/bin/bash
# 
# vzballoon_bind	This unbinds virtio device from embedded virtio_balloon driver
#			(if any) and binds it to vzvirtio_balloon.
#
# chkconfig: - 50 50
# description: Rebind virtio device from virtio_balloon to vzvirtio_balloon

PATH=/sbin:/usr/sbin:$PATH
RETVAL=0

usage ()
{
	echo $"Usage: $0 {start|stop|status|restart}" 1>&2
	RETVAL=2
}

stop ()
{
	# Do nothing for now, though maybe it makes sense to unload
	# vzvirtio_balloon module and bind devices back to virtio_balloon
	modprobe -r vzvirtio_balloon
	[ "$?" != "0" ] && RETVAL=4
}

start ()
{
	modprobe vzvirtio_balloon
	[ "$?" != "0" ] && RETVAL=1

	if [ -d /sys/bus/virtio/drivers/virtio_balloon ]; then
	    ls /sys/bus/virtio/drivers/virtio_balloon | grep virtio | while read dev; do
		echo $dev > /sys/bus/virtio/drivers/virtio_balloon/unbind
		echo $dev > /sys/bus/virtio/drivers/vzvirtio_balloon/bind
	    done
	fi
}

status ()
{
	if /sbin/lsmod | grep vzvirtio_balloon >/dev/null 2>&1 ; then
		echo $"vzvirtio_balloon module loaded"
		RETVAL=0
	else
		echo $"vzvirtio_balloon module not loaded"
		RETVAL=3
	fi
}

restart ()
{
	stop
	start
}

case "$1" in
    stop) stop ;;
    status) status ;;
    start|restart|reload|force-reload) restart ;;
    *) usage ;;
esac

exit $RETVAL
