diff options
author | Richard Yao <ryao@gentoo.org> | 2015-09-20 15:29:35 -0400 |
---|---|---|
committer | Richard Yao <ryao@gentoo.org> | 2015-09-20 15:29:35 -0400 |
commit | 7b805055ce3b1f211ae64905d2ee7d8898e880fd (patch) | |
tree | e7e1469580247c9d73e9dc2dac894639cbdd01de | |
parent | Improve upon patch to read zpool.cache from the root pool at boot (diff) | |
download | genkernel-7b805055ce3b1f211ae64905d2ee7d8898e880fd.tar.gz genkernel-7b805055ce3b1f211ae64905d2ee7d8898e880fd.tar.bz2 genkernel-7b805055ce3b1f211ae64905d2ee7d8898e880fd.zip |
Further ZFS boot improvements
Signed-off-by: Richard Yao <ryao@gentoo.org>
-rw-r--r-- | defaults/initrd.scripts | 14 |
1 files changed, 13 insertions, 1 deletions
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 |