Activate LVM volume groups before looking for zpools.

Original-patch-by: @jgoerzen
Signed-off-by: Benjamin Albrecht <git@albrecht.io>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes zfsonlinux/pkg-zfs#102
Closes #4029
This commit is contained in:
Benjamin Albrecht 2015-11-20 17:48:54 +01:00 committed by Brian Behlendorf
parent 6b4e21c60e
commit 82dba185c8
2 changed files with 63 additions and 2 deletions

View File

@ -1,15 +1,16 @@
initrddir = $(datarootdir)/initramfs-tools initrddir = $(datarootdir)/initramfs-tools
initrd_SCRIPTS = conf-hooks.d/zfs hooks/zfs scripts/zfs initrd_SCRIPTS = conf-hooks.d/zfs hooks/zfs scripts/zfs scripts/local-top/zfs
EXTRA_DIST = \ EXTRA_DIST = \
$(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \ $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \
$(top_srcdir)/contrib/initramfs/hooks/zfs \ $(top_srcdir)/contrib/initramfs/hooks/zfs \
$(top_srcdir)/contrib/initramfs/scripts/zfs \ $(top_srcdir)/contrib/initramfs/scripts/zfs \
$(top_srcdir)/contrib/initramfs/scripts/local-top/zfs \
$(top_srcdir)/contrib/initramfs/README.initramfs.markdown $(top_srcdir)/contrib/initramfs/README.initramfs.markdown
install-initrdSCRIPTS: $(EXTRA_DIST) install-initrdSCRIPTS: $(EXTRA_DIST)
for d in conf-hooks.d hooks scripts; do \ for d in conf-hooks.d hooks scripts scripts/local-top; do \
$(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \
cp $(top_srcdir)/contrib/initramfs/$$d/zfs \ cp $(top_srcdir)/contrib/initramfs/$$d/zfs \
$(DESTDIR)$(initrddir)/$$d/; \ $(DESTDIR)$(initrddir)/$$d/; \

View File

@ -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
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