aboutsummaryrefslogtreecommitdiff
path: root/contrib/initramfs/scripts/local-top/zfs
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/initramfs/scripts/local-top/zfs')
-rwxr-xr-xcontrib/initramfs/scripts/local-top/zfs60
1 files changed, 60 insertions, 0 deletions
diff --git a/contrib/initramfs/scripts/local-top/zfs b/contrib/initramfs/scripts/local-top/zfs
new file mode 100755
index 000000000000..e8e5cd26451c
--- /dev/null
+++ b/contrib/initramfs/scripts/local-top/zfs
@@ -0,0 +1,60 @@
+#!/bin/sh
+PREREQ="mdadm mdrun multipath"
+
+prereqs()
+{
+ echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+
+#
+# Helper functions
+#
+message()
+{
+ if [ -x /bin/plymouth ] && plymouth --ping; then
+ plymouth message --text="$@"
+ else
+ echo "$@" >&2
+ fi
+ return 0
+}
+
+udev_settle()
+{
+ # Wait for udev to be ready, see https://launchpad.net/bugs/85640
+ if [ -x /sbin/udevadm ]; then
+ /sbin/udevadm settle --timeout=30
+ elif [ -x /sbin/udevsettle ]; then
+ /sbin/udevsettle --timeout=30
+ fi
+ return 0
+}
+
+
+activate_vg()
+{
+ # Sanity checks
+ if [ ! -x /sbin/lvm ]; then
+ [ "$quiet" != "y" ] && message "lvm is not available"
+ return 1
+ fi
+
+ # Detect and activate available volume groups
+ /sbin/lvm vgscan
+ /sbin/lvm vgchange -a y --sysinit
+ return $?
+}
+
+udev_settle
+activate_vg
+
+exit 0