diff options
Diffstat (limited to 'sys-fs/clvm/files')
-rwxr-xr-x | sys-fs/clvm/files/clvmd.rc | 116 | ||||
-rwxr-xr-x | sys-fs/clvm/files/lvm2-start.sh | 24 | ||||
-rwxr-xr-x | sys-fs/clvm/files/lvm2-stop.sh | 59 |
3 files changed, 98 insertions, 101 deletions
diff --git a/sys-fs/clvm/files/clvmd.rc b/sys-fs/clvm/files/clvmd.rc index c2e640e30c7f..7f677e705573 100755 --- a/sys-fs/clvm/files/clvmd.rc +++ b/sys-fs/clvm/files/clvmd.rc @@ -1,29 +1,41 @@ #!/sbin/runscript # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/clvm/files/clvmd.rc,v 1.1 2005/03/25 02:32:08 xmerlin Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/clvm/files/clvmd.rc,v 1.2 2005/03/25 15:45:29 xmerlin Exp $ depend() { use dns logger use net need cluster-manager cluster-locking-manager fenced } + exefile=/sbin/clvmd -start() { - ebegin "Activating LVM volumes (locally)" - /sbin/vgchange -aly - eend $? +load_modules() { + local module modules + modules=$1 - ebegin "Starting clvmd" - start-stop-daemon --start --quiet \ - --exec ${exefile} - eend $? + for module in ${modules}; do + ebegin "Loading ${module} kernel module" + modprobe ${module} + eend $? "Failed to load ${module} kernel module" + done +} + +unload_modules() { + local module modules + modules=$1 + + for module in ${modules}; do + ebegin "Unloading ${module} kernel module" + modprobe -r ${module} + eend $? "Failed to unload ${module} kernel module" + done } umount_gfs_filesystems() { local sig retry - local remaining="$(awk '$3 ~ /gfs/ { print $2 }' /proc/mounts | sort -r)" + local remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts | sort -r)" if [ -n "${remaining}" ] then @@ -41,7 +53,7 @@ umount_gfs_filesystems() { umount ${remaining} &>/dev/null eend $? "Failed to unmount GFS filesystems" fi - remaining="$(awk '$3 ~ /gfs/ { if ($2 != "/") print $2 }' /proc/mounts | sort -r)" + remaining="$(awk '$3 == "gfs" { print $2 }' /proc/mounts | sort -r)" [ -z "${remaining}" ] && break /bin/fuser -k -m ${sig} ${remaining} &>/dev/null sleep 5 @@ -51,18 +63,86 @@ umount_gfs_filesystems() { fi } + + +start() { + + local module=$(awk '$1 == "dm_mod" { print $1 }' /proc/modules) + if [ -z "${module}" ]; then + load_modules dm-mod + sleep 1s + fi + + ebegin "Scanning LVM volumes" + /sbin/vgscan &>/dev/null + eend $? + + if [ "$?" -eq 0 ] && [ -x /sbin/vgchange ] && [ -f /etc/lvmtab -o -d /etc/lvm ] + then + ebegin "Setting up the Logical Volume Manager" + /sbin/vgchange -aly >/dev/null + eend $? "Failed to setup the LVM" + + if [ "$?" -eq 0 ]; then + ebegin "Starting clvmd" + start-stop-daemon --start --quiet --exec ${exefile} + eend $? + fi + fi + +} + stop() { # umount GFS filesystems umount_gfs_filesystems - ebegin "Deactivating LVM volumes (locally)" - /sbin/vgchange -aln - eend $? - + einfo "Shutting down the Logical Volume Manager" + + LOGICAL_VOLUMES=`lvdisplay |grep "LV Name"|awk '{print $3}'|sort|xargs echo` + VOLUME_GROUPS=`vgdisplay |grep "VG Name"|awk '{print $3}'|sort|xargs echo` + for x in ${LOGICAL_VOLUMES} + do + LV_IS_ACTIVE=`lvdisplay ${x}|grep "# open"|awk '{print $3}'` + if [ "${LV_IS_ACTIVE}" = 0 ] + then + ebegin " Shutting Down logical volume: ${x} " + lvchange -an --ignorelockingfailure -P ${x} >/dev/null + eend $? + fi + done + + for x in ${VOLUME_GROUPS} + do + VG_HAS_ACTIVE_LV=`vgdisplay ${x}|grep "Open LV"|awk '{print $3}'|xargs echo` + if [ "${VG_HAS_ACTIVE_LV}" = 0 ] + then + ebegin " Shutting Down volume group: ${x} " + vgchange -an --ignorelockingfailure -P ${x} >/dev/null + eend + fi + done + + for x in ${LOGICAL_VOLUMES} + do + LV_IS_ACTIVE=`lvdisplay ${x}|grep "# open"|awk '{print $3}'` + if [ "${LV_IS_ACTIVE}" = 1 ] + then + + ROOT_DEVICE=`mount|grep " / "|awk '{print $1}'` + if [ ! ${ROOT_DEVICE} = ${x} ] + then + ewarn " Unable to shutdown: ${x} " + fi + fi + done + einfo "Finished Shutting down the Logical Volume Manager" + ebegin "Stopping clvmd" - start-stop-daemon --stop --quiet \ - --exec ${exefile} - + start-stop-daemon --stop --quiet --exec ${exefile} eend $? + + if [ "$?" -eq 0 ]; then + unload_modules dm-mod + fi } diff --git a/sys-fs/clvm/files/lvm2-start.sh b/sys-fs/clvm/files/lvm2-start.sh deleted file mode 100755 index 8d52509da475..000000000000 --- a/sys-fs/clvm/files/lvm2-start.sh +++ /dev/null @@ -1,24 +0,0 @@ -# /lib/rcscripts/addons/lvm2-start.sh -# $Header: /var/cvsroot/gentoo-x86/sys-fs/clvm/files/lvm2-start.sh,v 1.1 2005/03/25 02:32:08 xmerlin Exp $ - -# LVM support for /usr, /home, /opt .... -# This should be done *before* checking local -# volumes, or they never get checked. - -# NOTE: Add needed modules for LVM or RAID, etc -# to /etc/modules.autoload if needed -if [ -z "${CDBOOT}" -a -x /sbin/vgscan ] && \ - [ -d /proc/lvm -o "$(grep device-mapper /proc/misc 2>/dev/null)" ] -then - ebegin "Setting up the Logical Volume Manager" - #still echo stderr for debugging - /sbin/vgscan >/dev/null - if [ "$?" -eq 0 ] && [ -x /sbin/vgchange ] && \ - [ -f /etc/lvmtab -o -d /etc/lvm ] - then - /sbin/vgchange -a y >/dev/null - fi - eend $? "Failed to setup the LVM" -fi - -# vim:ts=4 diff --git a/sys-fs/clvm/files/lvm2-stop.sh b/sys-fs/clvm/files/lvm2-stop.sh deleted file mode 100755 index 7ffab6dc2a86..000000000000 --- a/sys-fs/clvm/files/lvm2-stop.sh +++ /dev/null @@ -1,59 +0,0 @@ -# /lib/rcscripts/addons/lvm2-stop.sh -# $Header: /var/cvsroot/gentoo-x86/sys-fs/clvm/files/lvm2-stop.sh,v 1.1 2005/03/25 02:32:08 xmerlin Exp $ - -# Stop LVM2 - -if [ -x /sbin/vgchange ] && \ - [ -x /sbin/lvdisplay ] && \ - [ -x /sbin/vgdisplay ] && \ - [ -x /sbin/lvchange ] && \ - [ -f /etc/lvmtab -o -d /etc/lvm ] && \ - [ -d /proc/lvm -o "`grep device-mapper /proc/misc 2>/dev/null`" ] -then - einfo "Shutting down the Logical Volume Manager" - # If these commands fail it is not currently an issue - # as the system is going down anyway based on the current LVM - # functionality as described in this forum thread - #https://www.redhat.com/archives/linux-lvm/2001-May/msg00523.html - - LOGICAL_VOLUMES=`lvdisplay |grep "LV Name"|awk '{print $3}'|sort|xargs echo` - VOLUME_GROUPS=`vgdisplay |grep "VG Name"|awk '{print $3}'|sort|xargs echo` - for x in ${LOGICAL_VOLUMES} - do - LV_IS_ACTIVE=`lvdisplay ${x}|grep "# open"|awk '{print $3}'` - if [ "${LV_IS_ACTIVE}" = 0 ] - then - ebegin " Shutting Down logical volume: ${x} " - lvchange -an --ignorelockingfailure -P ${x} >/dev/null - eend $? - fi - done - - for x in ${VOLUME_GROUPS} - do - VG_HAS_ACTIVE_LV=`vgdisplay ${x}|grep "Open LV"|awk '{print $3}'|xargs echo` - if [ "${VG_HAS_ACTIVE_LV}" = 0 ] - then - ebegin " Shutting Down volume group: ${x} " - vgchange -an --ignorelockingfailure -P ${x} >/dev/null - eend - fi - done - - for x in ${LOGICAL_VOLUMES} - do - LV_IS_ACTIVE=`lvdisplay ${x}|grep "# open"|awk '{print $3}'` - if [ "${LV_IS_ACTIVE}" = 1 ] - then - - ROOT_DEVICE=`mount|grep " / "|awk '{print $1}'` - if [ ! ${ROOT_DEVICE} = ${x} ] - then - ewarn " Unable to shutdown: ${x} " - fi - fi - done - einfo "Finished Shutting down the Logical Volume Manager" -fi - -# vim:ts=4 |