commit: 7b805055ce3b1f211ae64905d2ee7d8898e880fd Author: Richard Yao <ryao <AT> gentoo <DOT> org> AuthorDate: Sun Sep 20 19:29:35 2015 +0000 Commit: Richard Yao <ryao <AT> gentoo <DOT> org> CommitDate: Sun Sep 20 19:29:35 2015 +0000 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=7b805055
Further ZFS boot improvements Signed-off-by: Richard Yao <ryao <AT> gentoo.org> defaults/initrd.scripts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts index 9c0c290..d1bb0bc 100644 --- a/defaults/initrd.scripts +++ b/defaults/initrd.scripts @@ -1034,10 +1034,22 @@ startVolumes() { elif [ -z "${ZFS_POOL}" ] then bad_msg "Please boot with root=ZFS=\$DATASET" + # startVolumes is called twice for LUKS assembly. + # Devices are not accessed until mount, so become a no-op. + # We fall through from the waitForZFS call rather than stopping + # sooner so that initramfs archives where the zpool.cache file + # has been included are protected against races. + elif [ -f /etc/zfs/zpool.cache ] + then + : elif /sbin/zpool import -f -N -o readonly=on "${ZFS_POOL}" 2>&1 >/dev/null then mkdir -p /tmp/zfs - mount -o ro,zfsutil -t zfs "${REAL_ROOT#*=}" /tmp/zfs + /sbin/mount.zfs -o ro,zfsutil "${REAL_ROOT#*=}" /tmp/zfs 2>&1 >/dev/null + if [ $? -ne 0 ] + bad_msg "Failed to mount ${REAL_ROOT#*=}" + return 1 + fi # Copy important files to /etc/zfs for i in zpool.cache zdev.conf