Skip to content

Commit

Permalink
As of r364746 (OpenZFS import) existing ZPOOLs are not imported
Browse files Browse the repository at this point in the history
prior to zvol and mountcritlocal resulting in ZVOLs (swap and
virtual machine UFS filesystems) being unavailable, leading to
boot failures.

We move the zpool import from zfs to a new zpool script, with the
-N option to avoid mounting datasets while making the ZPOOL's
datasets available for "legacy" mount (mountpoint=legacy) and ZVOLs
available for subsequent use for swap (in the zvol rc sript) or
for UFS or other filesystems in fstab(5), mounted by mountcritlocal.

Reviewed by:		freqlabs (previous version)
Differential Revision:	https://reviews.freebsd.org/D26185
  • Loading branch information
cschuber committed Aug 26, 2020
1 parent 1e9a0b3 commit 74e2b24
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 9 deletions.
1 change: 1 addition & 0 deletions libexec/rc/rc.d/Makefile
Expand Up @@ -318,6 +318,7 @@ CONFGROUPS+= ZFS
ZFS+= zfs
ZFS+= zfsbe
ZFS+= zfsd
ZFS+= zpool
ZFS+= zvol
.endif

Expand Down
2 changes: 1 addition & 1 deletion libexec/rc/rc.d/mountcritlocal
Expand Up @@ -4,7 +4,7 @@
#

# PROVIDE: mountcritlocal
# REQUIRE: root hostid_save mdconfig
# REQUIRE: root hostid_save mdconfig zvol
# KEYWORD: nojail shutdown

. /etc/rc.subr
Expand Down
7 changes: 0 additions & 7 deletions libexec/rc/rc.d/zfs
Expand Up @@ -25,13 +25,6 @@ zfs_start_jail()

zfs_start_main()
{
local cachefile

for cachefile in /boot/zfs/zpool.cache /etc/zfs/zpool.cache; do
if [ -r $cachefile ]; then
zpool import -c $cachefile -a
fi
done
zfs mount -va
zfs share -a
if [ ! -r /etc/zfs/exports ]; then
Expand Down
31 changes: 31 additions & 0 deletions libexec/rc/rc.d/zpool
@@ -0,0 +1,31 @@
#!/bin/sh
#
# $FreeBSD$
#

# PROVIDE: zpool
# REQUIRE: hostid
# BEFORE: zvol mountcritlocal
# KEYWORD: nojail

. /etc/rc.subr

name="zpool"
desc="Import ZPOOLs"
rcvar="zfs_enable"
start_cmd="zpool_start"
required_modules="zfs"

zpool_start()
{
local cachefile

for cachefile in /boot/zfs/zpool.cache /etc/zfs/zpool.cache; do
if [ -r $cachefile ]; then
zpool import -c $cachefile -a -N
fi
done
}

load_rc_config $name
run_rc_command "$1"
2 changes: 1 addition & 1 deletion libexec/rc/rc.d/zvol
Expand Up @@ -4,7 +4,7 @@
#

# PROVIDE: zvol
# REQUIRE: hostid
# REQUIRE: zpool
# BEFORE: dumpon
# KEYWORD: nojail

Expand Down

0 comments on commit 74e2b24

Please sign in to comment.