diff options
author | Cy Schubert <cy@FreeBSD.org> | 2020-08-26 13:13:57 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2020-08-26 13:13:57 +0000 |
commit | 74e2b24f2c369ffdff2f54fa9f96427cc45ef3a6 (patch) | |
tree | c9c703e3048da92a1e6f9ffa49771a72a47422f7 | |
parent | 1e9a0b391d88e0f9a9cb5b1d49aba61f80ae97f5 (diff) | |
download | src-74e2b24f2c369ffdff2f54fa9f96427cc45ef3a6.tar.gz src-74e2b24f2c369ffdff2f54fa9f96427cc45ef3a6.zip |
As of r364746 (OpenZFS import) existing ZPOOLs are not imported
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
Notes
Notes:
svn path=/head/; revision=364817
-rw-r--r-- | libexec/rc/rc.d/Makefile | 1 | ||||
-rwxr-xr-x | libexec/rc/rc.d/mountcritlocal | 2 | ||||
-rwxr-xr-x | libexec/rc/rc.d/zfs | 7 | ||||
-rwxr-xr-x | libexec/rc/rc.d/zpool | 31 | ||||
-rwxr-xr-x | libexec/rc/rc.d/zvol | 2 |
5 files changed, 34 insertions, 9 deletions
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index 77499e483f0d..7e0e63dae414 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -318,6 +318,7 @@ CONFGROUPS+= ZFS ZFS+= zfs ZFS+= zfsbe ZFS+= zfsd +ZFS+= zpool ZFS+= zvol .endif diff --git a/libexec/rc/rc.d/mountcritlocal b/libexec/rc/rc.d/mountcritlocal index f52c565d65c6..cfdc8041a8c7 100755 --- a/libexec/rc/rc.d/mountcritlocal +++ b/libexec/rc/rc.d/mountcritlocal @@ -4,7 +4,7 @@ # # PROVIDE: mountcritlocal -# REQUIRE: root hostid_save mdconfig +# REQUIRE: root hostid_save mdconfig zvol # KEYWORD: nojail shutdown . /etc/rc.subr diff --git a/libexec/rc/rc.d/zfs b/libexec/rc/rc.d/zfs index 69e3ad5ce671..2d35f9b54642 100755 --- a/libexec/rc/rc.d/zfs +++ b/libexec/rc/rc.d/zfs @@ -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 diff --git a/libexec/rc/rc.d/zpool b/libexec/rc/rc.d/zpool new file mode 100755 index 000000000000..01028f8633ea --- /dev/null +++ b/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" diff --git a/libexec/rc/rc.d/zvol b/libexec/rc/rc.d/zvol index 06530347946a..e8cfc203b481 100755 --- a/libexec/rc/rc.d/zvol +++ b/libexec/rc/rc.d/zvol @@ -4,7 +4,7 @@ # # PROVIDE: zvol -# REQUIRE: hostid +# REQUIRE: zpool # BEFORE: dumpon # KEYWORD: nojail |