From 185853d9f202b306d9c316b66b774c498ed6577c Mon Sep 17 00:00:00 2001 From: Jeremy Gill Date: Fri, 26 Aug 2011 13:55:26 -0400 Subject: [PATCH] Ensure FC15 boots when zfs isn't used for boot partition It seems that dracut version 009 through 013 won't boot correctly when the zfs-dracut rpm package has been installed, but 'root=zfs' isn't used on the boot commandline, for example when the package has been installed on a system that _doesn't_ boot from a zfs filesystem. Signed-off-by: Jeremy Gill Signed-off-by: Brian Behlendorf Closes #377 --- dracut/90zfs/parse-zfs.sh.in | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dracut/90zfs/parse-zfs.sh.in b/dracut/90zfs/parse-zfs.sh.in index 25f2dfb..eaa4524 100755 --- a/dracut/90zfs/parse-zfs.sh.in +++ b/dracut/90zfs/parse-zfs.sh.in @@ -17,18 +17,19 @@ fi case "$root" in ""|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. + # 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 + wait_for_zfs=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 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 @@ -39,6 +40,7 @@ case "$root" in root="${root#FILESYSTEM=}" root="zfs:${root#ZFS=}" rootok=1 + wait_for_zfs=1 info "ZFS: Set ${root} as bootfs." ;; @@ -46,5 +48,7 @@ esac # 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 +if [ "${wait_for_zfs}" == "1" ]; then + ln -s /dev/null /dev/root 2>/dev/null + echo '[ -e /dev/zfs ]' > $hookdir/initqueue/finished/zfs.sh +fi -- 1.8.3.1