#!/bin/bash
#
# chkconfig: 345 23 77
# description: Starts and stops clvmd
#
#	       
### BEGIN INIT INFO
# Provides: 
### END INIT INFO

. /etc/init.d/functions
[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster

LOCK_FILE="/var/lock/subsys/clvmd"

#
# FIXME -- the lvm2-cluster rpms put the lvm tools in a different location
#
lvdisplay=/usr/sbin/cluster/lvdisplay
vgchange=/usr/sbin/cluster/vgchange

start()
{
	modprobe dlm
	for rtrn in 0
	do
		if ! pidof clvmd > /dev/null 
		then 
			echo -n "Starting clvmd:"
			clvmd > /dev/null 2>&1
			rtrn=$?
			if [ $rtrn -eq 0 ]
			then
				success
				echo
			else
				failure
				echo
				break
			fi
		fi	
		
		if [ -n "$LVM_VGS" ]
		then
			for vg in $LVM_VGS
			do
				echo -n "Activating lvm $vg:"
				if $vgchange -ayl $vg > /dev/null 2>&1
				then
					success
					echo
				else
					rtrn=$?
					failure
					echo
				fi
			done
		else
			echo -n "Activating lvms:"
			if $vgchange -ayl > /dev/null 2>&1
			then
				success
				echo
			else
				rtrn=$?
				failure
				echo
			fi
		fi
	done

	return $rtrn
}

stop()
{
	for rtrn in 0
	do
		if [ -n "$LVM_VGS" ]
		then
			for vg in $LVM_VGS
			do
				echo -n "Deactivating lvm $vg:"
				if $vgchange -anl $vg > /dev/null 2>&1
				then
					success
					echo
				else
					rtrn=$?
					failure
					echo
				fi
			done
		else
			echo -n "Deactivating lvms:"
			if $vgchange -anl > /dev/null 2>&1
			then
				success
				echo
			else
				rtrn=$?
				failure
				echo
			fi
		fi

		[ $rtrn -ne 0 ] && break

		echo -n "Stopping clvm:"
		pid=$(pidof clvmd)
		if [ -n "$pid" ]
		then
			while kill $pid > /dev/null 2>&1
			do
				sleep 1
			done
		fi
		if [ $rtrn -eq 0 ]
		then
			success
			echo
		else
			failure
			echo
		fi
	done
	modprobe -r dlm > /dev/null 2>&1 
	
	return $rtrn
}

rtrn=1

# See how we were called.
case "$1" in
  start)
	start
	rtrn=$?
	[ $rtrn = 0 ] && touch $LOCK_FILE
	;;

  stop)
	stop
	rtrn=$?
	[ $rtrn = 0 ] && rm -f $LOCK_FILE
	;;

  restart)
	$0 stop
	$0 start 
	rtrn=$?
	;;

  status)
	status clvmd
	vols=$( $lvdisplay -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' )
	echo active volumes: ${vols:-"(none)"}
	rtrn=0
	;;

  *)
	echo $"Usage: $0 {start|stop|restart|status}"
	;;
esac

exit $rtrn
