diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-03-23 11:58:01 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-03-23 11:58:01 -0300 |
commit | 1988c77fae4e3c3e762d1d361249e21622f548cf (patch) | |
tree | 5c0b658d83f23533b7c43758468b5282cd1ead68 /pcr/openrc-base/lvm.rc-2.02.105-r2 | |
parent | 5333f9d3db9e5e7a174d4028107246338c1094eb (diff) | |
parent | 63dda12e2f3cdba9df1605f8ca845bf3ffcf416f (diff) | |
download | abslibre-1988c77fae4e3c3e762d1d361249e21622f548cf.tar.gz abslibre-1988c77fae4e3c3e762d1d361249e21622f548cf.tar.bz2 abslibre-1988c77fae4e3c3e762d1d361249e21622f548cf.zip |
Merge branch 'master' of ssh://projects.parabola.nu/~git/abslibre
Diffstat (limited to 'pcr/openrc-base/lvm.rc-2.02.105-r2')
-rw-r--r-- | pcr/openrc-base/lvm.rc-2.02.105-r2 | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/pcr/openrc-base/lvm.rc-2.02.105-r2 b/pcr/openrc-base/lvm.rc-2.02.105-r2 new file mode 100644 index 000000000..7fdf50e18 --- /dev/null +++ b/pcr/openrc-base/lvm.rc-2.02.105-r2 @@ -0,0 +1,97 @@ +#!/sbin/runscript +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/lvm.rc-2.02.105-r2,v 1.1 2014/02/02 19:52:34 robbat2 Exp $ + +depend() { + before checkfs fsck + after modules device-mapper + need lvmetad sysfs +} + +config='global { locking_dir = "/run/lock/lvm" }' + +dm_in_proc() { + local retval=0 + for x in devices misc ; do + grep -qs 'device-mapper' /proc/${x} + retval=$((${retval} + $?)) + done + return ${retval} +} + +start() { + # 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 + for lvm_path in /bin/lvm /sbin/lvm ; do + [ -x "$lvm_path" ] && break + done + if [ ! -x "$lvm_path" ]; then + eerror "Cannot find lvm binary in /sbin or /bin!" + return 1 + fi + if [ -z "${CDBOOT}" ] ; then + if [ -e /proc/modules ] && ! dm_in_proc ; then + modprobe dm-mod 2>/dev/null + fi + if [ -d /proc/lvm ] || dm_in_proc ; then + ebegin "Setting up the Logical Volume Manager" + #still echo stderr for debugging + lvm_commands="#! ${lvm_path} --config '${config}'\n" + # Extra PV find pass because some devices might not have been available until very recently + lvm_commands="${lvm_commands}pvscan\n" + # Now make the nodes + lvm_commands="${lvm_commands}vgscan --mknodes\n" + # And turn them on! + lvm_commands="${lvm_commands}vgchange --sysinit -a ly\n" + # Order of this is important, have to work around dash and LVM readline + printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null + eend $? "Failed to setup the LVM" + fi + fi +} + +stop() { + for lvm_path in /bin/lvm /sbin/lvm ; do + [ -x "$lvm_path" ] && break + done + if [ ! -x "$lvm_path" ]; then + eerror "Cannot find lvm binary in /sbin or /bin!" + return 1 + fi +# Stop LVM2 +if [ -x /sbin/vgs ] && \ + [ -x /sbin/vgchange ] && \ + [ -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" + + + VGS=$($lvm_path vgs --config "${config}" -o vg_name --noheadings --nosuffix --rows 2> /dev/null) + + if [ "$VGS" ] + then + ebegin " Shutting Down LVs & VGs" + #still echo stderr for debugging + lvm_commands="#! ${lvm_path} --config '${config}'\n" + # Extra PV find pass because some devices might not have been available until very recently + lvm_commands="${lvm_commands}lvchange --sysinit -a ln ${VGS}\n" + # Now make the nodes + lvm_commands="${lvm_commands}vgchange --sysinit -a ln ${VGS}\n" + # Order of this is important, have to work around dash and LVM readline + printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null + eend $? "Failed (possibly some LVs still needed for /usr or root)" + fi + + einfo "Finished shutting down the Logical Volume Manager" + return 0 +fi +} + +# vim:ts=4 |