summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/clvm/files')
-rwxr-xr-xsys-fs/clvm/files/clvmd.rc116
-rwxr-xr-xsys-fs/clvm/files/lvm2-start.sh24
-rwxr-xr-xsys-fs/clvm/files/lvm2-stop.sh59
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