#! /bin/sh # # Based on a example file to build /etc/init.d/ scripts, # written by Miquel van Smoorenburg # and later modified by Ian Murdock . # # Also based on init script mountnfs.sh from initscripts package. # # Modified for aoetools by David Martínez Moreno . # Copyright 2006-2014. Under GPLv2. # # Support for LVM and other mount points contributed by Glen W. Mabey. # ### BEGIN INIT INFO # Provides: aoe aoetools # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Should-Start: # Default-Start: S # Default-Stop: 0 6 # Short-Description: Begin AoE discovery and mount related filesystems. # Description: Begin AoE discovery and mount filesystems residing # on AoE volumes. ### END INIT INFO NAME=aoetools DESC="AoE devices discovery and mounting AoE filesystems" [ -f /etc/default/rcS ] && . /etc/default/rcS . /lib/lsb/init-functions # Include aoetools defaults if available if [ -f /etc/default/aoetools ] ; then . /etc/default/aoetools fi set -e create_fs_list() { # We start with a list from /etc/default/aoetools. waitaoe="$AOEMOUNTS" [ -f /etc/fstab ] || return # # Read through fstab line by line. If it contains /dev/etherd, set the flag # for mounting file systems over AoE. # exec 9<&0 /dev/null 2>&1 || true else modprobe aoe >/dev/null 2>&1 || true fi # Also, if udev is being used, the /dev/etherd devices # are not created until aoe module insertion, so... sleep 1 # ...we give udev a chance to populate /dev/etherd/. if [ ! -c /dev/etherd/discover ] then echo echo "Missing devices under /dev/etherd/. Please run" >&2 echo " aoe-mkdevs /dev/etherd" >&2 echo "and try again." >&2 exit 1 fi # Try to set up interfaces for discovery, if any. if [ -n "$INTERFACES" ] then aoe-interfaces $INTERFACES fi aoe-discover create_fs_list if [ -n "$waitaoe" ] then echo fi if [ ! -x "/sbin/vgchange" -a -n "$LVMGROUPS" ] then echo echo "The LVM2 tools are not present. Please install lvm2 package and try again." >&2 echo "We will not honour LVMGROUPS." >&2 LMVGROUPS='' fi if [ -n "$LVMGROUPS" ] then echo "Assembling LVM2 groups..." for vg in "$LVMGROUPS"; do vgchange --available=y $vg done fi if [ -n "$waitaoe" ] then for mountpt in $waitaoe; do echo "Mounting $mountpt..." mount $mountpt #log_action_begin_msg "Waiting for $mountpt." done else echo "Nothing to mount." fi } do_stop() { create_fs_list if [ -n "$waitaoe" ] then for mountpt in $waitaoe; do if [ -z "`awk '{print $2}' < /proc/mounts | grep -w $mountpt$`" ];then # It's already been unmounted. continue fi echo "Unmounting $mountpt..." umount $mountpt done fi if [ -n "$LVMGROUPS" ] then for vg in "$LVMGROUPS"; do vgchange --available=n $vg done fi # Removing the module prevents LVM's "Shutting down LVM Volume Groups..." # from hanging when an LVM has been setup on a device in /dev/etherd/. modprobe --remove aoe >/dev/null 2>&1 || true } case "$1" in start|restart|reload|force-reload) echo -n "Starting $DESC: " do_start ;; stop) echo "Stopping $DESC: " do_stop ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0