From d40fed016ff584045a2dc995b7b3a463a6cedf40 Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Wed, 19 Nov 2008 20:14:24 +0000 Subject: [PATCH] generate init script --- scripts/clvmd_init_red_hat.in | 147 ++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 scripts/clvmd_init_red_hat.in diff --git a/scripts/clvmd_init_red_hat.in b/scripts/clvmd_init_red_hat.in new file mode 100644 index 000000000..9756bd186 --- /dev/null +++ b/scripts/clvmd_init_red_hat.in @@ -0,0 +1,147 @@ +#!/bin/bash +# +# chkconfig: - 24 76 +# description: Starts and stops clvmd +# +# For Red-Hat-based distributions such as Fedora, RHEL, CentOS. +# +### BEGIN INIT INFO +# Provides: +### END INIT INFO + +. /etc/init.d/functions + +DAEMON=clvmd + +exec_prefix=@exec_prefix@ +sbindir=@sbindir@ + +LVDISPLAY=${sbindir}/lvdisplay +VGCHANGE=${sbindir}/vgchange +VGSCAN=${sbindir}/vgscan +VGDISPLAY=${sbindir}/vgdisplay +VGS=${sbindir}/vgs + +CLVMDOPTS="-T20" + +[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster + +LOCK_FILE="/var/lock/subsys/$DAEMON" + +start() +{ + for rtrn in 0 + do + if ! pidof $DAEMON > /dev/null + then + echo -n "Starting $DAEMON: " + daemon $DAEMON $CLVMDOPTS + rtrn=$? + echo + if [ $rtrn -ne 0 ] + then + break + fi + fi + # refresh cache + $VGSCAN > /dev/null 2>&1 + + if [ -n "$LVM_VGS" ] + then + for vg in $LVM_VGS + do + action "Activating VG $vg:" $VGCHANGE -ayl $vg || rtrn=$? + done + else + action "Activating VGs:" $VGCHANGE -ayl || rtrn=$? + fi + done + + return $rtrn +} + +stop() +{ + for rtrn in 0 + do + if [ -n "$LVM_VGS" ] + then + for vg in $LVM_VGS + do + action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$? + done + else + # Hack to only deactivate clustered volumes + clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'` + for vg in $clustervgs; do + action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$? + done + fi + + [ $rtrn -ne 0 ] && break + + echo -n "Stopping clvm:" + killproc $DAEMON -TERM + rtrn=$? + echo + done + + return $rtrn +} + +wait_for_finish() +{ + count=0 + + while [ "$count" -le 10 -a -n "`pidof $DAEMON`" ] + do + sleep 1 + count=$((count + 1)) + done + + if [ `pidof $DAEMON` ] + then + return 1 + else + return 0 + fi +} + +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) + if stop + then + wait_for_finish + start + fi + rtrn=$? + ;; + + status) + status $DAEMON + rtrn=$? + vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' ) + echo active volumes: ${vols:-"(none)"} + ;; + + *) + echo $"Usage: $0 {start|stop|restart|status}" + ;; +esac + +exit $rtrn