diff options
author | Sage Weil <sage@newdream.net> | 2009-07-13 10:30:43 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2009-07-13 10:30:43 -0700 |
commit | 5bb296898591f6c3e7cced169b5c7e1d95669d20 (patch) | |
tree | e04fbffbf79f092a2c893e7429eefe62064b9ee9 /src/init-ceph.in | |
parent | 08a6fb733d9cebc884dc18692c6b1cd070fdcad4 (diff) | |
download | ceph-5bb296898591f6c3e7cced169b5c7e1d95669d20.tar.gz |
initscripts: substitute in proper autoconf paths
Based on
http://www.gnu.org/software/hello/manual/autoconf/Installation-Directory-Variables.html
Diffstat (limited to 'src/init-ceph.in')
-rw-r--r-- | src/init-ceph.in | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/src/init-ceph.in b/src/init-ceph.in new file mode 100644 index 00000000000..3218726f921 --- /dev/null +++ b/src/init-ceph.in @@ -0,0 +1,238 @@ +#!/bin/sh +# Start/stop ceph daemons + +### BEGIN INIT INFO +# Provides: ceph +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Required-Start: $local_fs $named $network $time +# Required-Stop: $local_fs $named $network $time +# Short-Description: Start Ceph distributed file system daemons at boot time +# Description: Enable Ceph distributed file system services. +### END INIT INFO + +# if we start up as ./mkcephfs, assume everything else is in the +# current directory too. +if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then + BINDIR=. + LIBDIR=. + ETCDIR=. +else + BINDIR=@bindir@ + LIBDIR=@libdir@/ceph + ETCDIR=@sysconfdir@/ceph +fi + +usage_exit() { + echo "usage: $0 [options] {start|stop|restart} [mon|osd|mds]..." + printf "\t-c ceph.conf\n" + printf "\t--valgrind\trun via valgrind\n" + exit +} + +. $LIBDIR/ceph_common.sh + + +stop_daemon() { + name=$1 + daemon=$2 + pidfile=$3 + signal=$4 + action=$5 + [ -z "$action" ] && action="Stopping" + echo -n "$action ceph $name on $host..." + do_cmd "while [ 1 ]; do + [ -e $pidfile ] || break + pid=\`cat $pidfile\` + while [ -e /proc/\$pid ] && grep -q $daemon /proc/\$pid/cmdline ; do + cmd=\"kill $signal \$pid\" + echo -n \$cmd... + \$cmd + sleep 1 + continue + done + break + done" + echo done +} + +## command line options +options= + +version=0 +dovalgrind= +docrun= +allhosts=0 +debug=0 +monaddr= +dobtrfs=1 +verbose=0 + +while echo $1 | grep -q '^-'; do # FIXME: why not '^-'? +case $1 in + -v | --verbose) + verbose=1 + ;; + --valgrind) + dovalgrind=1 + ;; + --novalgrind) + dovalgrind=0 + ;; + --allhosts | -a) + allhosts=1; + ;; + --restart) + docrun=1 + ;; + --norestart) + docrun=0 + ;; + -m ) + [ "$2" == "" ] && usage_exit + options="$options $1" + shift + MON_ADDR=$1 + ;; + --btrfs) + dobtrfs=1 + ;; + --nobtrfs) + dobtrfs=0 + ;; + --conf | -c) + [ "$2" == "" ] && usage_exit + options="$options $1" + shift + conf=$1 + ;; + *) + echo unrecognized option \'$1\' + usage_exit + ;; +esac +options="$options $1" +shift +done + +verify_conf + +command=$1 +shift + +get_name_list "$@" + +for name in $what; do + type=`echo $name | cut -c 1-3` # e.g. 'mon', if $item is 'mon1' + id=`echo $name | cut -c 4- | sed 's/\\.//'` + num=$id + + check_host || continue + + cmd="$BINDIR/c$type -i $id" + + # conf file + if [ "$host" = "$hostname" ]; then + cmd="$cmd -c $conf" + else + if echo $pushed_to | grep -v -q " $host "; then + scp -q $conf $host:/tmp/ceph.conf.$$ + pushed_to="$pushed_to $host " + fi + cmd="$cmd -c /tmp/ceph.conf.$$" + fi + + if echo $name | grep -q ^osd; then + get_conf osd_data "" "osd data" + get_conf btrfs_path "$osd_data" "btrfs path" # mount point defaults so osd data + get_conf btrfs_devs "" "btrfs devs" + first_dev=`echo $btrfs_devs | cut '-d ' -f 1` + fi + + get_conf pid_file "" "pid file" + + case "$command" in + start) + # build final command + wrap="" + runmode="" + runarg="" + + [ -z "$crun" ] && get_conf_bool crun "0" "restart on core dump" + [ "$crun" -eq 1 ] && wrap="$BINDIR/crun" + + [ -z "$dovalgrind" ] && get_conf_bool valgrind "" "valgrind" + [ -n "$valgrind" ] && wrap="$wrap valgrind $valgrind" + + [ -n "$wrap" ] && runmode="-f &" && runarg="-f" + + cmd="$wrap $cmd $runmode" + + echo Starting ceph $name on $host... + if [ $dobtrfs -eq 1 ] && [ -n "$btrfs_devs" ]; then + get_conf pre_mount "true" "pre mount command" + get_conf btrfs_opt "flushoncommit" "btrfs options" + [ -n "$btrfs_opt" ] && btrfs_opt="-o $btrfs_opt" + [ -n "$pre_mount" ] && do_cmd $pre_mount + do_root_cmd "modprobe btrfs ; btrfsctl -a ; egrep -q '^[^ ]+ $btrfs_path' /proc/mounts || mount -t btrfs $btrfs_opt $first_dev $btrfs_path" + fi + get_conf pre_start_eval "" "pre start eval" + [ -n "$pre_start_eval" ] && $pre_start_eval + get_conf pre_start "" "pre start command" + get_conf post_start "" "post start command" + [ -n "$pre_start" ] && do_cmd $pre_start + do_cmd "$cmd" $runarg + [ -n "$post_start" ] && do_cmd $post_start + ;; + + stop) + get_conf pre_stop "" "pre stop command" + get_conf post_stop "" "post stop command" + [ -n "$pre_stop" ] && do_cmd $pre_stop + stop_daemon $name c$type $pid_file + [ -n "$post_stop" ] && do_cmd $post_stop + ;; + + forcestop) + get_conf pre_forcestop "" "pre forcestop command" + get_conf post_forcestop "" "post forcestop command" + [ -n "$pre_forcestop" ] && do_cmd $pre_forcestop + stop_daemon $name c$type $pid_file -9 + [ -n "$post_forcestop" ] && do_cmd $post_forcestop + ;; + + killall) + echo "killall c$type on $host" + do_cmd "killall -9 c$type || true" + ;; + + force-reload | reload) + stop_daemon $name c$type $pid_file -1 "Reloading" + ;; + + restart) + $0 $options stop $name + $0 $options start $name + ;; + + cleanlogs) + echo removing logs + get_conf log_dir "/var/log/ceph" "log dir" + get_conf log_sym_dir "/var/log/ceph" "log sym dir" + do_cmd "for f in $log_sym_dir/$name*; do rm -f \`readlink \$f\` ; rm -f \$f ; done" + ;; + + cleanalllogs) + echo removing all logs + get_conf log_dir "/var/log/ceph" "log dir" + get_conf log_sym_dir "/var/log/ceph" "log sym dir" + do_cmd "rm -f $log_dir/* $log_sym_dir/* || true" + ;; + + *) + usage_exit + ;; + esac +done + +exit 0 |