-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Dracut module for Dracut-010 & fix race conditions that caused…
… boot to fail on MP systems. Add support for zfs_force flag & parsing of spl_hostid from kernel command line.
- Loading branch information
Showing
10 changed files
with
154 additions
and
87 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#!/bin/sh | ||
|
||
check() { | ||
# We depend on udev-rules being loaded | ||
[ "$1" = "-d" ] && return 0 | ||
|
||
# Verify the zfs tool chain | ||
which zpool >/dev/null 2>&1 || return 1 | ||
which zfs >/dev/null 2>&1 || return 1 | ||
|
||
return 0 | ||
} | ||
|
||
depends() { | ||
echo udev-rules | ||
return 0 | ||
} | ||
|
||
installkernel() { | ||
instmods zfs | ||
instmods zcommon | ||
instmods znvpair | ||
instmods zavl | ||
instmods zunicode | ||
instmods spl | ||
instmods zlib_deflate | ||
instmods zlib_inflate | ||
} | ||
|
||
install() { | ||
inst_rules "$moddir/90-zfs.rules" | ||
inst_rules /etc/udev/rules.d/60-zpool.rules | ||
inst_rules /etc/udev/rules.d/60-zvol.rules | ||
inst /etc/zfs/zdev.conf | ||
inst /etc/zfs/zpool.cache | ||
inst /etc/hostid | ||
dracut_install zfs | ||
dracut_install zpool | ||
dracut_install zpool_layout | ||
dracut_install zpool_id | ||
dracut_install zvol_id | ||
dracut_install mount.zfs | ||
dracut_install hostid | ||
inst_hook cmdline 95 "$moddir/parse-zfs.sh" | ||
inst_hook mount 98 "$moddir/mount-zfs.sh" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,47 @@ | ||
#!/bin/sh | ||
|
||
. /lib/dracut-lib.sh | ||
|
||
# Let the command line override our host id. | ||
spl_hostid=`getarg spl_hostid=` | ||
if [ "${spl_hostid}" != "" ] ; then | ||
info "ZFS: Using hostid from command line: ${spl_hostid}" | ||
echo "${spl_hostid}" > /etc/hostid | ||
elif [ -f /etc/hostid ] ; then | ||
info "ZFS: Using hostid from /etc/hostid: `cat /etc/hostid`" | ||
else | ||
warn "ZFS: No hostid found on kernel command line or /etc/hostid. ZFS pools may not import correctly." | ||
fi | ||
|
||
case "$root" in | ||
zfs:FILESYSTEM=*|FILESYSTEM=*) | ||
root="${root#zfs:}" | ||
root="zfs:${root#FILESYSTEM=}" | ||
rootfs="zfs" | ||
rootok=1 ;; | ||
zfs:ZFS=*|ZFS=*) | ||
root="${root#zfs:}" | ||
root="zfs:${root#ZFS=}" | ||
rootfs="zfs" | ||
rootok=1 ;; | ||
""|zfs|zfs:) | ||
# We'll take root unset, root=zfs, or root=zfs: | ||
# No root set, so we want to read the bootfs attribute. We can't do that until udev settles, | ||
# so we'll set dummy values and hope for the best later on. | ||
root="zfs:AUTO" | ||
rootok=1 | ||
|
||
info "ZFS: Enabling autodetection of bootfs after udev settles." | ||
;; | ||
|
||
ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*) | ||
# root is explicit ZFS root. Parse it now. | ||
# We can handle a root=... param in any of the following formats: | ||
# root=ZFS=rpool/ROOT | ||
# root=zfs:rpool/ROOT | ||
# root=zfs:FILESYSTEM=rpool/ROOT | ||
# root=FILESYSTEM=rpool/ROOT | ||
|
||
# Strip down to just the pool/fs | ||
root="${root#zfs:}" | ||
root="${root#FILESYSTEM=}" | ||
root="zfs:${root#ZFS=}" | ||
rootok=1 | ||
|
||
info "ZFS: Set ${root} as bootfs." | ||
;; | ||
esac | ||
|
||
if [ "$rootok" != "1" ] ; then | ||
zpool import -aN | ||
zfsbootfs=`zpool list -H -o bootfs | grep -v ^-$ -m 1` | ||
if [ -n "$zfsbootfs" ] ; then | ||
root="zfs:$zfsbootfs" | ||
rootfs="zfs" | ||
rootok=1 | ||
fi | ||
zpool list -H | while read fs rest ; do zpool export "$fs" ; done | ||
fi | ||
# Make sure Dracut is happy that we have a root and will wait for ZFS modules to settle before mounting. | ||
ln -s /dev/null /dev/root 2>/dev/null | ||
echo '[ -e /dev/zfs ]' > $hookdir/initqueue/finished/zfs.sh |
This file was deleted.
Oops, something went wrong.