From owner-freebsd-current@freebsd.org Fri Apr 17 18:35:42 2020 Return-Path: Delivered-To: freebsd-current@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 486B82C4549; Fri, 17 Apr 2020 18:35:42 +0000 (UTC) (envelope-from freqlabs@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 493lCL1Fwdz4QnB; Fri, 17 Apr 2020 18:35:42 +0000 (UTC) (envelope-from freqlabs@FreeBSD.org) Received: from [IPv6:2600:1700:358a:c660:305b:9aa6:7c2d:c818] (unknown [IPv6:2600:1700:358a:c660:305b:9aa6:7c2d:c818]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: freqlabs/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 0A026FBFF; Fri, 17 Apr 2020 18:35:42 +0000 (UTC) (envelope-from freqlabs@FreeBSD.org) From: Ryan Moeller Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: OpenZFS port updated Message-Id: Date: Fri, 17 Apr 2020 14:35:41 -0400 To: freebsd-current@freebsd.org, freebsd-stable@freebsd.org X-Mailer: Apple Mail (2.3608.80.23.2.2) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Apr 2020 18:35:42 -0000 FreeBSD support has been merged into the master branch of the = openzfs/zfs repository, and the FreeBSD ports have been switched to this = branch. OpenZFS brings many exciting features to FreeBSD, including: * native encryption * improved TRIM implementation * most recently, persistent L2ARC Of course, avoid upgrading your pools if you want to keep the option to = go back to the base ZFS. OpenZFS can be installed alongside the base ZFS. Change your loader.conf = entry to openzfs_load=3D=E2=80=9CYES=E2=80=9D to load the OpenZFS module = at boot, and set PATH to find the tools in /usr/local/sbin before /sbin. = The base zfs tools are still basically functional with the OpenZFS = module, so changing PATH in rc is not strictly necessary. The FreeBSD loader can boot from pools with the encryption feature = enabled, but the root/bootenv datasets must not be encrypted themselves. The FreeBSD platform support in OpenZFS does not yet include all = features present in FreeBSD=E2=80=99s ZFS. Some notable changes/missing = features include: * many sysctl names have changed (legacy compat sysctls should be added = at some point)=20 * zfs send progress reporting in process title via setproctitle * extended 'zfs holds -r' = (https://svnweb.freebsd.org/base?view=3Drevision&revision=3D290015) * vdev ashift optimizations = (https://svnweb.freebsd.org/base?view=3Drevision&revision=3D254591) * pre-mountroot zpool.cache loading (for automatic pool imports) To the last point, this mainly effects the case where / is on ZFS and = /boot is not or is on a different pool. OpenZFS cannot handle this case = yet, but work is in progress to cover that use case. Booting directly = from ZFS does work. If there are pools that need to be imported at boot other than the boot = pool, OpenZFS does not automatically import yet, and it uses = /etc/zfs/zpool.cache rather than /boot/zfs/zpool.cache to keep track of = imported pools. To ensure all pool imports occur automatically, a = simple edit to /etc/rc.d/zfs will suffice: diff --git a/libexec/rc/rc.d/zfs b/libexec/rc/rc.d/zfs index 2d35f9b5464..8e4aef0b1b3 100755 --- a/libexec/rc/rc.d/zfs +++ b/libexec/rc/rc.d/zfs @@ -25,6 +25,13 @@ zfs_start_jail() =20 zfs_start_main() { + local cachefile + + for cachefile in /boot/zfs/zpool.cache /etc/zfs/zpool.cache; do + if [ -f $cachefile ]; then + zpool import -c $cachefile -a + fi + done zfs mount -va zfs share -a if [ ! -r /etc/zfs/exports ]; then This will probably not be needed long-term. It is not necessary if the = boot pool is the only pool. Happy testing :) - Ryan=