summaryrefslogtreecommitdiff
path: root/scripts/local-top
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/local-top')
-rwxr-xr-xscripts/local-top/lvm74
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/local-top/lvm b/scripts/local-top/lvm
new file mode 100755
index 0000000..4cf48ad
--- /dev/null
+++ b/scripts/local-top/lvm
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+PREREQ="mdadm mdrun lvm2"
+
+prereqs()
+{
+ echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+activate_vg()
+{
+ local vg="$1"
+
+ # Make sure that we have a non-empty argument
+ if [ -z "${vg}" ]; then
+ return 1
+ fi
+
+ # Take care of lilo boot arg, risky activating of all vg
+ case $vg in
+ fe[0-9]*)
+ vgchange -ay
+ exit 0
+ ;;
+ # FIXME: check major
+ /dev/root)
+ vgchange -ay
+ exit 0
+ ;;
+ esac
+
+ # Make sure that we have a d-m path
+ vg=${vg#/dev/mapper/}
+ if [ "$vg" = "$1" ]; then
+ return 1
+ fi
+
+ # Make sure that the device includes at least one dash
+ if [ "$(echo -n "$vg" | tr -d -)" = "$vg" ]; then
+ return 1
+ fi
+
+ # Split volume group from logical volume.
+ vg=$(echo ${vg} | sed -e 's#\(.*\)\([^-]\)-[^-].*#\1\2#')
+ # Reduce padded --'s to -'s
+ vg=$(echo ${vg} | sed -e 's#--#-#g')
+
+ vgchange -ay ${vg}
+}
+
+if [ -e /scripts/local-top/lvm2 ]; then
+ exit 0
+fi
+
+if [ ! -e /sbin/vgchange ]; then
+ exit 0
+fi
+
+modprobe dm-mod
+modprobe dm-snapshot
+modprobe dm-mirror
+
+activate_vg "$ROOT"
+activate_vg "$resume"
+
+exit 0