Search
j0ke.net Open Build Service
>
Projects
>
GFS
>
multipath-tools
> multipath-tools-install-init-scripts
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File multipath-tools-install-init-scripts of Package multipath-tools
commit 4c053e70b6ad22c5a425e0df5e44bc6e1d6df1f3 Author: Hannes Reinecke <hare@suse.de> Date: Mon Mar 3 10:07:24 2008 +0100 Add init scripts Install SUSE-specific init scripts. Signed-off-by: Hannes Reinecke <hare@suse.de> diff --git a/multipath/Makefile b/multipath/Makefile index 440dce4..2330051 100644 --- a/multipath/Makefile +++ b/multipath/Makefile @@ -41,18 +41,18 @@ $(MULTIPATHLIB)-$(BUILD).a: install: install -d $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/ - install -d $(DESTDIR)/etc/udev/rules.d - install -m 644 multipath.rules $(DESTDIR)/etc/udev/rules.d/ install -d $(DESTDIR)$(mandir) install -m 644 $(EXEC).8 $(DESTDIR)$(mandir) install -d $(DESTDIR)$(man5dir) install -m 644 $(EXEC).conf.5 $(DESTDIR)$(man5dir) + install -d $(DESTDIR)$(rcdir) + install -m 755 multipath.init.suse $(DESTDIR)$(rcdir)/boot.multipath uninstall: - rm $(DESTDIR)/etc/udev/rules.d/multipath.rules rm $(DESTDIR)$(bindir)/$(EXEC) rm $(DESTDIR)$(mandir)/$(EXEC).8 rm $(DESTDIR)$(man5dir)/$(EXEC).conf.5 + rm $(DESTDIR)$(rcdir)/boot.multipath clean: rm -f core *.o $(EXEC) diff --git a/multipath/multipath.init.suse b/multipath/multipath.init.suse new file mode 100755 index 0000000..da767fa --- /dev/null +++ b/multipath/multipath.init.suse @@ -0,0 +1,127 @@ +#! /bin/sh +# Copyright (c) 2005 SuSE GmbH Nuernberg, Germany. +# +# Author: Hannes Reinecke <feedback@suse.de> +# +# init.d/boot.multipath +# +### BEGIN INIT INFO +# Provides: boot.multipath +# Required-Start: boot.device-mapper boot.udev +# Required-Stop: +# Default-Start: B +# Default-Stop: +# Description: Create multipath device targets +### END INIT INFO + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +PROGRAM=/sbin/multipath + +# Set the maximum number of open files +MAX_OPEN_FDS=4096 + +test -x $PROGRAM || exit 5 + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status +. /etc/rc.status + +# First reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - misc error +# 2 - invalid or excess args +# 3 - unimplemented feature (e.g. reload) +# 4 - insufficient privilege +# 5 - program not installed +# 6 - program not configured +# 7 - program is not running +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signalling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Creating multipath targets" + # Check whether multipath daemon is already running + if /sbin/multipathd -k"list paths" > /dev/null 2>&1 ; then + echo -n " (multipathd running)" + rc_status -v + rc_exit + fi + + # Load prerequisite module + modprobe dm-multipath + + # Be a chicken and flush all existing maps + $PROGRAM -F + + # Clear /dev/disk/by-name/ prior to start-up; multipath will + # recreate them. + rm -f /dev/disk/by-name/* 2>&1 >/dev/null + + # Set the maximum number of open files + if [ -n "$MAX_OPEN_FDS" ] ; then + ulimit -n $MAX_OPEN_FDS + fi + + # Start the program directly as checkproc doesn't work here + $PROGRAM -v 0 + + # Create all partitions which might have been missing + for map in $(/sbin/dmsetup ls --target multipath | sed '/No devices/d' | sort +1 | sed -n 's/.*, \(.*\))/\1/p' ) ; do + wait=5 + while [ $wait -gt 0 ] ; do + [ -e /dev/dm-$map ] && break + wait=$((wait - 1)) + sleep 1; + done + if [ $wait -le 0 ] ; then + echo -n "timeout waiting for devices" + rc_failed 1 + break; + fi + /sbin/kpartx -a -p -part /dev/dm-$map + done + + # Remember status and be verbose + rc_status -v + sleep 1 + ;; + stop) + echo -n "Removing multipath targets:" + + # Flush all existing maps + $PROGRAM -F + + rc_failed 0 + rc_status -v + ;; + status) + echo -n "Checking multipath targets: " + # Display active multipath tables + tblnum=$(/sbin/dmsetup ls --target multipath | sed '/No devices/d' | wc --lines) + if [ "$tblnum" ] && [ $tblnum -gt 0 ] ; then + echo -n "($tblnum multipath devices) " + rc_failed 0 + else + rc_failed 3 + fi + rc_status -v + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac +rc_exit diff --git a/multipathd/Makefile b/multipathd/Makefile index 42e1edd..e11c926 100644 --- a/multipathd/Makefile +++ b/multipathd/Makefile @@ -50,6 +50,7 @@ install: install -d $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir) install -d $(DESTDIR)$(rcdir) + install -m 755 multipathd.init.suse $(DESTDIR)$(rcdir)/multipathd install -d $(DESTDIR)$(mandir) install -m 644 $(EXEC).8 $(DESTDIR)$(mandir) install -d $(DESTDIR)$(udevdir) @@ -66,6 +67,7 @@ uninstall: rm -f $(DESTDIR)$(udevdir)/72-multipath-compat.rules rm -f $(DESTDIR)$(udevdir)/96-multipath-late.rules rm -f $(DESTDIR)$(udevdir)/mpath_id + rm -f $(DESTDIR)$(rcdir)/multipathd clean: $(MAKE) -C $(multipathdir) prepare DAEMON=1