xref: /freebsd/sys/contrib/openzfs/contrib/initramfs/scripts/local-top/zfs (revision 071ab5a1f3cbfd29c8fbec27f7e619418adaf074)
1#!/bin/sh
2# shellcheck disable=SC2154
3
4
5if [ "$1" = "prereqs" ]; then
6        echo mdadm mdrun multipath
7        exit 0
8fi
9
10
11#
12# Helper functions
13#
14message()
15{
16        if plymouth --ping 2>/dev/null; then
17                plymouth message --text="$*"
18        else
19                echo "$*" >&2
20        fi
21        return 0
22}
23
24udev_settle()
25{
26        # Wait for udev to be ready, see https://launchpad.net/bugs/85640
27        if [ -x /sbin/udevadm ]; then
28                /sbin/udevadm settle --timeout=30
29        elif [ -x /sbin/udevsettle ]; then
30                /sbin/udevsettle --timeout=30
31        fi
32        return 0
33}
34
35
36activate_vg()
37{
38        # Sanity checks
39        if [ ! -x /sbin/lvm ]; then
40                [ "$quiet" != "y" ] && message "lvm is not available"
41                return 1
42        fi
43
44        # Detect and auto-activate available volume groups
45        /sbin/lvm vgscan
46        /sbin/lvm vgchange -aay --sysinit
47        return $?
48}
49
50udev_settle
51activate_vg
52
53exit 0
54