diff --git a/libexec/rc/rc.d/dumpon b/libexec/rc/rc.d/dumpon --- a/libexec/rc/rc.d/dumpon +++ b/libexec/rc/rc.d/dumpon @@ -42,6 +42,7 @@ [Nn][Oo] | '') ;; [Aa][Uu][Tt][Oo]) + root_hold_wait dev=$(/bin/kenv -q dumpdev) if [ -n "${dev}" ] ; then dumpon_try "${dev}" @@ -56,6 +57,7 @@ return 1 ;; *) + root_hold_wait dumpon_try "${dumpdev}" ;; esac diff --git a/libexec/rc/rc.d/zpool b/libexec/rc/rc.d/zpool --- a/libexec/rc/rc.d/zpool +++ b/libexec/rc/rc.d/zpool @@ -22,7 +22,14 @@ for cachefile in /etc/zfs/zpool.cache /boot/zfs/zpool.cache; do if [ -r $cachefile ]; then - zpool import -c $cachefile -a -N && break + zpool import -c $cachefile -a -N + if [ $? -ne 0 ]; then + echo "Import of zpool cache ${cachefile} failed," \ + "will retry after root mount hold release" + root_hold_wait + zpool import -c $cachefile -a -N + fi + break fi done }