xref: /dflybsd-src/contrib/lvm2/dist/scripts/clvmd_init_red_hat.in (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino#!/bin/bash
286d7f5d3SJohn Marino#
386d7f5d3SJohn Marino# chkconfig: - 24 76
486d7f5d3SJohn Marino# description: Starts and stops clvmd
586d7f5d3SJohn Marino#
686d7f5d3SJohn Marino# For Red-Hat-based distributions such as Fedora, RHEL, CentOS.
786d7f5d3SJohn Marino#
886d7f5d3SJohn Marino### BEGIN INIT INFO
986d7f5d3SJohn Marino# Provides: clvmd
1086d7f5d3SJohn Marino# Required-Start: $local_fs
1186d7f5d3SJohn Marino# Required-Stop: $local_fs
1286d7f5d3SJohn Marino# Default-Start:
1386d7f5d3SJohn Marino# Default-Stop: 0 1 6
1486d7f5d3SJohn Marino# Short-Description: Clustered LVM Daemon
1586d7f5d3SJohn Marino### END INIT INFO
1686d7f5d3SJohn Marino
1786d7f5d3SJohn Marino. /etc/init.d/functions
1886d7f5d3SJohn Marino
1986d7f5d3SJohn MarinoDAEMON=clvmd
2086d7f5d3SJohn Marino
2186d7f5d3SJohn Marinoexec_prefix=@exec_prefix@
2286d7f5d3SJohn Marinosbindir=@sbindir@
2386d7f5d3SJohn Marino
2486d7f5d3SJohn MarinoLVDISPLAY=${sbindir}/lvdisplay
2586d7f5d3SJohn MarinoVGCHANGE=${sbindir}/vgchange
2686d7f5d3SJohn MarinoVGSCAN=${sbindir}/vgscan
2786d7f5d3SJohn MarinoVGDISPLAY=${sbindir}/vgdisplay
2886d7f5d3SJohn MarinoVGS=${sbindir}/vgs
2986d7f5d3SJohn Marino
3086d7f5d3SJohn MarinoCLVMDOPTS="-T20"
3186d7f5d3SJohn Marino
3286d7f5d3SJohn Marino[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster
3386d7f5d3SJohn Marino
3486d7f5d3SJohn Marino[ -n "$CLVMD_CLUSTER_IFACE" ] && CLVMDOPTS="$CLVMDOPTS -I $CLVMD_CLUSTER_IFACE"
3586d7f5d3SJohn Marino
3686d7f5d3SJohn MarinoLOCK_FILE="/var/lock/subsys/$DAEMON"
3786d7f5d3SJohn Marino
3886d7f5d3SJohn Marinostart()
3986d7f5d3SJohn Marino{
4086d7f5d3SJohn Marino	for rtrn in 0
4186d7f5d3SJohn Marino	do
4286d7f5d3SJohn Marino		if ! pidof $DAEMON > /dev/null
4386d7f5d3SJohn Marino		then
4486d7f5d3SJohn Marino			echo -n "Starting $DAEMON: "
4586d7f5d3SJohn Marino			daemon $DAEMON $CLVMDOPTS
4686d7f5d3SJohn Marino			rtrn=$?
4786d7f5d3SJohn Marino			echo
4886d7f5d3SJohn Marino			if [ $rtrn -ne 0 ]
4986d7f5d3SJohn Marino			then
5086d7f5d3SJohn Marino				break
5186d7f5d3SJohn Marino			fi
5286d7f5d3SJohn Marino 		fi
5386d7f5d3SJohn Marino		# refresh cache
5486d7f5d3SJohn Marino		$VGSCAN  > /dev/null 2>&1
5586d7f5d3SJohn Marino
5686d7f5d3SJohn Marino		if [ -n "$LVM_VGS" ]
5786d7f5d3SJohn Marino		then
5886d7f5d3SJohn Marino			for vg in $LVM_VGS
5986d7f5d3SJohn Marino			do
6086d7f5d3SJohn Marino				action "Activating VG $vg:" $VGCHANGE -ayl $vg || rtrn=$?
6186d7f5d3SJohn Marino			done
6286d7f5d3SJohn Marino		else
6386d7f5d3SJohn Marino			action "Activating VGs:" $VGCHANGE -ayl || rtrn=$?
6486d7f5d3SJohn Marino		fi
6586d7f5d3SJohn Marino	done
6686d7f5d3SJohn Marino
6786d7f5d3SJohn Marino	return $rtrn
6886d7f5d3SJohn Marino}
6986d7f5d3SJohn Marino
7086d7f5d3SJohn Marinostop()
7186d7f5d3SJohn Marino{
7286d7f5d3SJohn Marino	for rtrn in 0
7386d7f5d3SJohn Marino	do
7486d7f5d3SJohn Marino		if [ -n "$LVM_VGS" ]
7586d7f5d3SJohn Marino		then
7686d7f5d3SJohn Marino			for vg in $LVM_VGS
7786d7f5d3SJohn Marino			do
7886d7f5d3SJohn Marino				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
7986d7f5d3SJohn Marino			done
8086d7f5d3SJohn Marino		else
8186d7f5d3SJohn Marino			# Hack to only deactivate clustered volumes
8286d7f5d3SJohn Marino			clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
8386d7f5d3SJohn Marino			for vg in $clustervgs; do
8486d7f5d3SJohn Marino				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
8586d7f5d3SJohn Marino			done
8686d7f5d3SJohn Marino		fi
8786d7f5d3SJohn Marino
8886d7f5d3SJohn Marino		[ $rtrn -ne 0 ] && break
8986d7f5d3SJohn Marino
9086d7f5d3SJohn Marino		echo -n "Stopping clvm:"
9186d7f5d3SJohn Marino		killproc $DAEMON -TERM
9286d7f5d3SJohn Marino		rtrn=$?
9386d7f5d3SJohn Marino		echo
9486d7f5d3SJohn Marino	done
9586d7f5d3SJohn Marino
9686d7f5d3SJohn Marino	return $rtrn
9786d7f5d3SJohn Marino}
9886d7f5d3SJohn Marino
9986d7f5d3SJohn Marinowait_for_finish()
10086d7f5d3SJohn Marino{
10186d7f5d3SJohn Marino	count=0
10286d7f5d3SJohn Marino
10386d7f5d3SJohn Marino	while [ "$count" -le 10 -a -n "`pidof $DAEMON`" ]
10486d7f5d3SJohn Marino	do
10586d7f5d3SJohn Marino		sleep 1
10686d7f5d3SJohn Marino		count=$((count + 1))
10786d7f5d3SJohn Marino	done
10886d7f5d3SJohn Marino
10986d7f5d3SJohn Marino	if [ `pidof $DAEMON` ]
11086d7f5d3SJohn Marino	then
11186d7f5d3SJohn Marino		return 1
11286d7f5d3SJohn Marino	else
11386d7f5d3SJohn Marino		return 0
11486d7f5d3SJohn Marino	fi
11586d7f5d3SJohn Marino}
11686d7f5d3SJohn Marino
11786d7f5d3SJohn Marinoreload() {
11886d7f5d3SJohn Marino	$DAEMON -R
11986d7f5d3SJohn Marino}
12086d7f5d3SJohn Marino
12186d7f5d3SJohn Marinorh_status() {
12286d7f5d3SJohn Marino	status $DAEMON
12386d7f5d3SJohn Marino}
12486d7f5d3SJohn Marino
12586d7f5d3SJohn Marinorh_status_q() {
12686d7f5d3SJohn Marino	rh_status >/dev/null 2>&1
12786d7f5d3SJohn Marino}
12886d7f5d3SJohn Marino
12986d7f5d3SJohn Marino
13086d7f5d3SJohn Marinortrn=1
13186d7f5d3SJohn Marino
13286d7f5d3SJohn Marino# See how we were called.
13386d7f5d3SJohn Marinocase "$1" in
13486d7f5d3SJohn Marino  start)
13586d7f5d3SJohn Marino	start
13686d7f5d3SJohn Marino	rtrn=$?
13786d7f5d3SJohn Marino	[ $rtrn = 0 ] && touch $LOCK_FILE
13886d7f5d3SJohn Marino	;;
13986d7f5d3SJohn Marino
14086d7f5d3SJohn Marino  stop)
14186d7f5d3SJohn Marino	stop
14286d7f5d3SJohn Marino	rtrn=$?
14386d7f5d3SJohn Marino	[ $rtrn = 0 ] && rm -f $LOCK_FILE
14486d7f5d3SJohn Marino	;;
14586d7f5d3SJohn Marino
14686d7f5d3SJohn Marino  restart)
14786d7f5d3SJohn Marino	if stop
14886d7f5d3SJohn Marino	then
14986d7f5d3SJohn Marino		wait_for_finish
15086d7f5d3SJohn Marino		start
15186d7f5d3SJohn Marino	fi
15286d7f5d3SJohn Marino	rtrn=$?
15386d7f5d3SJohn Marino	;;
15486d7f5d3SJohn Marino
15586d7f5d3SJohn Marino  reload)
15686d7f5d3SJohn Marino	rh_status_q || exit 7
15786d7f5d3SJohn Marino	reload
15886d7f5d3SJohn Marino	;;
15986d7f5d3SJohn Marino
16086d7f5d3SJohn Marino  status)
16186d7f5d3SJohn Marino	rh_status
16286d7f5d3SJohn Marino	rtrn=$?
16386d7f5d3SJohn Marino	vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' )
16486d7f5d3SJohn Marino	echo active volumes: ${vols:-"(none)"}
16586d7f5d3SJohn Marino	;;
16686d7f5d3SJohn Marino
16786d7f5d3SJohn Marino  *)
16886d7f5d3SJohn Marino	echo $"Usage: $0 {start|stop|restart|reload|status}"
16986d7f5d3SJohn Marino	;;
17086d7f5d3SJohn Marinoesac
17186d7f5d3SJohn Marino
17286d7f5d3SJohn Marinoexit $rtrn
173