summaryrefslogtreecommitdiffstats
path: root/dracut
diff options
context:
space:
mode:
authorZachary Bedell <[email protected]>2011-07-24 16:53:15 -0400
committerBrian Behlendorf <[email protected]>2011-07-25 10:43:44 -0700
commita4719e54e8628564ffda33cffee59812b61f273b (patch)
treeee591dd43648ca9cee98e1f676a6883e2b474af0 /dracut
parent1ef5e8296a07a0d208d0663ae966c8b0206f7e6a (diff)
Catch return errors from zpool commands
This fixes a bug that can effect first reboot after install using Dracut. The Dracut module didn't check the return value from several calls to z* functions. This resulted in "Using no pools available as root" on boot if the ZFS module didn't auto-import the pools. It's most likely to happen on initial restart after a fresh install & requires juggling in the Dracut emergency holographic shell to fix. This patch checks return codes & output from zpool list and related functions and correctly falls into the explicit zpool import code branch if the module didn't import the pool at load. Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'dracut')
-rwxr-xr-xdracut/90zfs/mount-zfs.sh5
1 files changed, 3 insertions, 2 deletions
diff --git a/dracut/90zfs/mount-zfs.sh b/dracut/90zfs/mount-zfs.sh
index a451bf9f5..52c55a68d 100755
--- a/dracut/90zfs/mount-zfs.sh
+++ b/dracut/90zfs/mount-zfs.sh
@@ -3,6 +3,7 @@
. /lib/dracut-lib.sh
ZPOOL_FORCE=""
+
if getargbool 0 zfs_force -y zfs.force -y zfsforce ; then
warn "ZFS: Will force-import pools if necessary."
ZPOOL_FORCE="-f"
@@ -18,12 +19,12 @@ case "$root" in
# Might be imported by the kernel module, so try searching before
# we import anything.
zfsbootfs=`zpool list -H -o bootfs | sed 'q'`
- if [ "$zfsbootfs" = "" ] ; then
+ if [ "$?" != "0" ] || [ "$zfsbootfs" = "" ] || [ "$zfsbootfs" = "no pools available" ] ; then
# Not there, so we need to import everything.
info "ZFS: Attempting to import additional pools."
zpool import -N -a ${ZPOOL_FORCE}
zfsbootfs=`zpool list -H -o bootfs | sed 'q'`
- if [ "$zfsbootfs" = "" ] ; then
+ if [ "$?" != "0" ] || [ "$zfsbootfs" = "" ] || [ "$zfsbootfs" = "no pools available" ] ; then
rootok=0
pool=""