From owner-svn-src-all@freebsd.org Fri Oct 2 00:04:00 2020 Return-Path: Delivered-To: svn-src-all@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 F0DC0437B6C; Fri, 2 Oct 2020 00:04:00 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from smtp-out-no.shaw.ca (smtp-out-no.shaw.ca [64.59.134.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4C2Vb41jgkz3ckc; Fri, 2 Oct 2020 00:03:59 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from spqr.komquats.com ([70.67.125.17]) by shaw.ca with ESMTPA id O8YFk9HWSs3D6O8YHkHnKg; Thu, 01 Oct 2020 18:03:58 -0600 X-Authority-Analysis: v=2.4 cv=bZHV7MDB c=1 sm=1 tr=0 ts=5f766e6e a=VFtTW3WuZNDh6VkGe7fA3g==:117 a=VFtTW3WuZNDh6VkGe7fA3g==:17 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=afefHYAZSVUA:10 a=YxBL1-UpAAAA:8 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=xNf9USuDAAAA:8 a=-thiqJL0Yk6kjFFnvVEA:9 a=brklk3DbOFoEJEYg:21 a=p41HoBhZ9IDMi7NH:21 a=OREZwpRKEbqmW-i2:21 a=CjuIK1q_8ugA:10 a=dDtS1yo4QMUA:10 a=C7gheeXg_rAA:10 a=Ia-lj3WSrqcvXOmTRaiG:22 a=IjZwj45LgO3ly-622nXo:22 a=LK5xJRSDVpKd5WXXoEvA:22 a=SEwjQc04WA-l_NiBhQ7s:22 Received: from slippy.cwsent.com (slippy [IPv6:fc00:1:1:1::5b]) by spqr.komquats.com (Postfix) with ESMTPS id A19BA14D; Thu, 1 Oct 2020 17:03:54 -0700 (PDT) Received: from slippy (localhost [127.0.0.1]) by slippy.cwsent.com (8.16.1/8.16.1) with ESMTP id 09203sL7028789; Thu, 1 Oct 2020 17:03:54 -0700 (PDT) (envelope-from Cy.Schubert@cschubert.com) Message-Id: <202010020003.09203sL7028789@slippy.cwsent.com> X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.7.1 Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Matt Macy cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r366350 - in head/sys/contrib/openzfs: . .github cmd/zfs config contrib/initramfs/scripts contrib/intel_qat include/os/freebsd/spl/sys include/os/linux/spl/sys include/sys include/sys/l... In-reply-to: <202010012328.091NSLq2085612@repo.freebsd.org> References: <202010012328.091NSLq2085612@repo.freebsd.org> Comments: In-reply-to Matt Macy message dated "Thu, 01 Oct 2020 23:28:21 -0000." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Thu, 01 Oct 2020 17:03:54 -0700 X-CMAE-Envelope: MS4xfLkfEzCpK1QHb/d/Gqd0TCV7L9MIB30FVi7XOvWPAKHZocIK4hboTu6f9uHwy3wNd7K8wGMOogzOTbLETkr5Bxo0pXQXxlfxp9Bl5jXvAxfaTT9554GG FBhsOmuihp09Ifa5iarwbsOR7G3+1IP38neAAKieMxdtZUxxROxNt5qeL9xg04GyuvH3VFTr5Lii+FwfPomUTblrwC8Sv1j8Ebi34XJnJ4CJoZNybwcOG2qM gRLI3n/WGzGjO+5eB0GvRoHuDdKsl/7JQR3rFi3EdNafvXgjovElcqhFFidbFFx5l+Ys1Ll/2+oj89i5KIZgUA== X-Rspamd-Queue-Id: 4C2Vb41jgkz3ckc X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; ASN(0.00)[asn:6327, ipnet:64.59.128.0/20, country:CA]; REPLY(-4.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Oct 2020 00:04:01 -0000 Time to deorbit i386 once and for all. What a pain. --- spl_taskq.o --- /opt/src/svn-current/sys/contrib/openzfs/module/os/freebsd/spl/spl_taskq.c:1 74:3: error: implicit declaration of function 'fpu_kern_thread' is invalid in C99 [-Werror,-Wimplicit-function-declaration] fpu_kern_thread(FPU_KERN_NORMAL); ^ /opt/src/svn-current/sys/contrib/openzfs/module/os/freebsd/spl/spl_taskq.c:1 74:19: error: use of undeclared identifier 'FPU_KERN_NORMAL' fpu_kern_thread(FPU_KERN_NORMAL); ^ 2 errors generated. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org The need of the many outweighs the greed of the few. In message <202010012328.091NSLq2085612@repo.freebsd.org>, Matt Macy writes: > Author: mmacy > Date: Thu Oct 1 23:28:21 2020 > New Revision: 366350 > URL: https://svnweb.freebsd.org/changeset/base/366350 > > Log: > OpenZFS: MFV 2.0-rc3-gfc5966 > > - Annotate FreeBSD sysctls with CTLFLAG_MPSAFE > - Reduce stack usage of Lua > - Don't save user FPU context in kernel threads > - Add support for procfs_list > - Code cleanup in zio_crypt > - Add DB_RF_NOPREFETCH to dbuf_read()s in dnode.c > - Drop references when skipping dmu_send due to EXDEV > - Eliminate gratuitous bzeroing in dbuf_stats_hash_table_data > - Fix legacy compat for platform IOCs > > Added: > head/sys/contrib/openzfs/.github/ > - copied from r366349, vendor-sys/openzfs/dist/.github/ > head/sys/contrib/openzfs/contrib/intel_qat/ > - copied from r366349, vendor-sys/openzfs/dist/contrib/intel_qat/ > head/sys/contrib/openzfs/tests/zfs-tests/cmd/badsend/ > - copied from r366349, vendor-sys/openzfs/dist/tests/zfs-tests/cmd/badse > nd/ > head/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/send_invali > d.ksh > - copied unchanged from r366349, vendor-sys/openzfs/dist/tests/zfs-tests > /tests/functional/rsend/send_invalid.ksh > Modified: > head/sys/contrib/openzfs/cmd/zfs/zfs_main.c > head/sys/contrib/openzfs/config/kernel-config-defined.m4 > head/sys/contrib/openzfs/config/kernel-objtool.m4 > head/sys/contrib/openzfs/configure.ac > head/sys/contrib/openzfs/contrib/initramfs/scripts/zfs > head/sys/contrib/openzfs/include/os/freebsd/spl/sys/kstat.h > head/sys/contrib/openzfs/include/os/freebsd/spl/sys/procfs_list.h > head/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_x86.h > head/sys/contrib/openzfs/include/os/linux/spl/sys/procfs_list.h > head/sys/contrib/openzfs/include/sys/frame.h > head/sys/contrib/openzfs/include/sys/lua/luaconf.h > head/sys/contrib/openzfs/include/sys/zfs_context.h > head/sys/contrib/openzfs/include/sys/zstd/zstd.h > head/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c > head/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c > head/sys/contrib/openzfs/lib/libzpool/kernel.c > head/sys/contrib/openzfs/man/man8/zfs-userspace.8 > head/sys/contrib/openzfs/man/man8/zpool-remove.8 > head/sys/contrib/openzfs/module/lua/llimits.h > head/sys/contrib/openzfs/module/os/freebsd/spl/spl_kstat.c > head/sys/contrib/openzfs/module/os/freebsd/spl/spl_procfs_list.c > head/sys/contrib/openzfs/module/os/freebsd/spl/spl_taskq.c > head/sys/contrib/openzfs/module/os/freebsd/zfs/kmod_core.c > head/sys/contrib/openzfs/module/os/freebsd/zfs/sysctl_os.c > head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_ioctl_compat.c > head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vfsops.c > head/sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c > head/sys/contrib/openzfs/module/os/linux/spl/spl-procfs-list.c > head/sys/contrib/openzfs/module/os/linux/zfs/vdev_disk.c > head/sys/contrib/openzfs/module/os/linux/zfs/zfs_debug.c > head/sys/contrib/openzfs/module/zfs/arc.c > head/sys/contrib/openzfs/module/zfs/dbuf_stats.c > head/sys/contrib/openzfs/module/zfs/dmu_send.c > head/sys/contrib/openzfs/module/zfs/dnode.c > head/sys/contrib/openzfs/module/zfs/dsl_crypt.c > head/sys/contrib/openzfs/module/zfs/spa_misc.c > head/sys/contrib/openzfs/module/zfs/spa_stats.c > head/sys/contrib/openzfs/module/zfs/zfs_log.c > head/sys/contrib/openzfs/module/zstd/zfs_zstd.c > head/sys/contrib/openzfs/tests/runfiles/common.run > head/sys/contrib/openzfs/tests/zfs-tests/cmd/Makefile.am > head/sys/contrib/openzfs/tests/zfs-tests/include/commands.cfg > head/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend/Makefile.am > Directory Properties: > head/sys/contrib/openzfs/ (props changed) > > Modified: head/sys/contrib/openzfs/cmd/zfs/zfs_main.c > ============================================================================= > = > --- head/sys/contrib/openzfs/cmd/zfs/zfs_main.c Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/cmd/zfs/zfs_main.c Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -363,16 +363,16 @@ get_usage(zfs_help_t idx) > return (gettext("\tuserspace [-Hinp] [-o field[,...]] " > "[-s field] ...\n" > "\t [-S field] ... [-t type[,...]] " > - "\n")); > + "\n")); > case HELP_GROUPSPACE: > return (gettext("\tgroupspace [-Hinp] [-o field[,...]] " > "[-s field] ...\n" > "\t [-S field] ... [-t type[,...]] " > - "\n")); > + "\n")); > case HELP_PROJECTSPACE: > return (gettext("\tprojectspace [-Hp] [-o field[,...]] " > "[-s field] ... \n" > - "\t [-S field] ... \n")); > + "\t [-S field] ... \n")); > case HELP_PROJECT: > return (gettext("\tproject [-d|-r] \n" > "\tproject -c [-0] [-d|-r] [-p id] \n" > @@ -2481,11 +2481,13 @@ zfs_do_upgrade(int argc, char **argv) > > /* > * zfs userspace [-Hinp] [-o field[,...]] [-s field [-s field]...] > - * [-S field [-S field]...] [-t type[,...]] filesystem | snaps > hot > + * [-S field [-S field]...] [-t type[,...]] > + * filesystem | snapshot | path > * zfs groupspace [-Hinp] [-o field[,...]] [-s field [-s field]...] > - * [-S field [-S field]...] [-t type[,...]] filesystem | snap > shot > + * [-S field [-S field]...] [-t type[,...]] > + * filesystem | snapshot | path > * zfs projectspace [-Hp] [-o field[,...]] [-s field [-s field]...] > - * [-S field [-S field]...] filesystem | snapshot > + * [-S field [-S field]...] filesystem | snapshot | path > * > * -H Scripted mode; elide headers and separate columns by tabs. > * -i Translate SID to POSIX ID. > @@ -3191,7 +3193,7 @@ zfs_do_userspace(int argc, char **argv) > } while (delim != NULL); > } > > - if ((zhp = zfs_open(g_zfs, argv[0], ZFS_TYPE_FILESYSTEM | > + if ((zhp = zfs_path_to_zhandle(g_zfs, argv[0], ZFS_TYPE_FILESYSTEM | > ZFS_TYPE_SNAPSHOT)) == NULL) > return (1); > if (zhp->zfs_head_type != ZFS_TYPE_FILESYSTEM) { > > Modified: head/sys/contrib/openzfs/config/kernel-config-defined.m4 > ============================================================================= > = > --- head/sys/contrib/openzfs/config/kernel-config-defined.m4 Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/config/kernel-config-defined.m4 Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -91,7 +91,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC], > > AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [ > AC_MSG_CHECKING([whether mutex_lock() is GPL-only]) > - ZFS_LINUX_TEST_RESULT([config_debug_lock_alloc], [ > + ZFS_LINUX_TEST_RESULT([config_debug_lock_alloc_license], [ > AC_MSG_RESULT(no) > ],[ > AC_MSG_RESULT(yes) > > Modified: head/sys/contrib/openzfs/config/kernel-objtool.m4 > ============================================================================= > = > --- head/sys/contrib/openzfs/config/kernel-objtool.m4 Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/config/kernel-objtool.m4 Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -6,10 +6,11 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [ > dnl # 4.6 API for compile-time stack validation > ZFS_LINUX_TEST_SRC([objtool], [ > #undef __ASSEMBLY__ > + #include > #include > ],[ > #if !defined(FRAME_BEGIN) > - CTASSERT(1); > + #error "FRAME_BEGIN is not defined" > #endif > ]) > > @@ -18,7 +19,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_OBJTOOL], [ > #include > ],[ > #if !defined(STACK_FRAME_NON_STANDARD) > - CTASSERT(1); > + #error "STACK_FRAME_NON_STANDARD is not defined." > #endif > ]) > ]) > > Modified: head/sys/contrib/openzfs/configure.ac > ============================================================================= > = > --- head/sys/contrib/openzfs/configure.ac Thu Oct 1 23:11:58 2020 > (r366349) > +++ head/sys/contrib/openzfs/configure.ac Thu Oct 1 23:28:21 2020 > (r366350) > @@ -204,6 +204,7 @@ AC_CONFIG_FILES([ > tests/zfs-tests/Makefile > tests/zfs-tests/callbacks/Makefile > tests/zfs-tests/cmd/Makefile > + tests/zfs-tests/cmd/badsend/Makefile > tests/zfs-tests/cmd/btree_test/Makefile > tests/zfs-tests/cmd/chg_usr_exec/Makefile > tests/zfs-tests/cmd/devname2devid/Makefile > > Modified: head/sys/contrib/openzfs/contrib/initramfs/scripts/zfs > ============================================================================= > = > --- head/sys/contrib/openzfs/contrib/initramfs/scripts/zfs Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/contrib/initramfs/scripts/zfs Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -15,8 +15,8 @@ > # See "4.5 Disable root prompt on the initramfs" of Securing Debian Manual: > # https://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html > shell() { > - if type panic > /dev/null 2>&1; then > - panic $@ > + if command -v panic > /dev/null 2>&1; then > + panic > else > /bin/sh > fi > @@ -26,22 +26,23 @@ shell() { > # pools and mounting any filesystems. > pre_mountroot() > { > - if type run_scripts > /dev/null 2>&1 && \ > - [ -f "/scripts/local-top" -o -d "/scripts/local-top" ] > + if command -v run_scripts > /dev/null 2>&1 > then > - [ "$quiet" != "y" ] && \ > - zfs_log_begin_msg "Running /scripts/local-top" > - run_scripts /scripts/local-top > - [ "$quiet" != "y" ] && zfs_log_end_msg > - fi > + if [ -f "/scripts/local-top" ] || [ -d "/scripts/local-top" ] > + then > + [ "$quiet" != "y" ] && \ > + zfs_log_begin_msg "Running /scripts/local-top" > + run_scripts /scripts/local-top > + [ "$quiet" != "y" ] && zfs_log_end_msg > + fi > > - if type run_scripts > /dev/null 2>&1 && \ > - [ -f "/scripts/local-premount" -o -d "/scripts/local-premount" ] > - then > - [ "$quiet" != "y" ] && \ > - zfs_log_begin_msg "Running /scripts/local-premount" > - run_scripts /scripts/local-premount > - [ "$quiet" != "y" ] && zfs_log_end_msg > + if [ -f "/scripts/local-premount" ] || [ -d "/scripts/local-premount" > ] > + then > + [ "$quiet" != "y" ] && \ > + zfs_log_begin_msg "Running /scripts/local-premount" > + run_scripts /scripts/local-premount > + [ "$quiet" != "y" ] && zfs_log_end_msg > + fi > fi > } > > @@ -57,10 +58,10 @@ disable_plymouth() > # Get a ZFS filesystem property value. > get_fs_value() > { > - local fs="$1" > - local value=$2 > + fs="$1" > + value=$2 > > - "${ZFS}" get -H -ovalue $value "$fs" 2> /dev/null > + "${ZFS}" get -H -ovalue "$value" "$fs" 2> /dev/null > } > > # Find the 'bootfs' property on pool $1. > @@ -68,7 +69,7 @@ get_fs_value() > # pool by exporting it again. > find_rootfs() > { > - local pool="$1" > + pool="$1" > > # If 'POOL_IMPORTED' isn't set, no pool imported and therefore > # we won't be able to find a root fs. > @@ -84,7 +85,7 @@ find_rootfs() > > # Make sure it's not '-' and that it starts with /. > if [ "${ZFS_BOOTFS}" != "-" ] && \ > - $(get_fs_value "${ZFS_BOOTFS}" mountpoint | grep -q '^/$') > + get_fs_value "${ZFS_BOOTFS}" mountpoint | grep -q '^/$' > then > # Keep it mounted > POOL_IMPORTED=1 > @@ -101,14 +102,13 @@ find_rootfs() > # Support function to get a list of all pools, separated with ';' > find_pools() > { > - local CMD="$*" > - local pools pool > + CMD="$*" > > pools=$($CMD 2> /dev/null | \ > grep -E "pool:|^[a-zA-Z0-9]" | \ > sed 's@.*: @@' | \ > - while read pool; do \ > - echo -n "$pool;" > + while read -r pool; do \ > + printf "%s" "$pool;" > done) > > echo "${pools%%;}" # Return without the last ';'. > @@ -117,8 +117,6 @@ find_pools() > # Get a list of all available pools > get_pools() > { > - local available_pools npools > - > if [ -n "${ZFS_POOL_IMPORT}" ]; then > echo "$ZFS_POOL_IMPORT" > return 0 > @@ -159,9 +157,8 @@ get_pools() > # Filter out any exceptions... > if [ -n "$ZFS_POOL_EXCEPTIONS" ] > then > - local found="" > - local apools="" > - local pool exception > + found="" > + apools="" > OLD_IFS="$IFS" ; IFS=";" > > for pool in $available_pools > @@ -194,8 +191,7 @@ get_pools() > # Import given pool $1 > import_pool() > { > - local pool="$1" > - local dirs dir > + pool="$1" > > # Verify that the pool isn't already imported > # Make as sure as we can to not require '-f' to import. > @@ -205,7 +201,7 @@ import_pool() > # to something we can use later with the real import(s). We want to > # make sure we find all by* dirs, BUT by-vdev should be first (if it > # exists). > - if [ -n "$USE_DISK_BY_ID" -a -z "$ZPOOL_IMPORT_PATH" ] > + if [ -n "$USE_DISK_BY_ID" ] && [ -z "$ZPOOL_IMPORT_PATH" ] > then > dirs="$(for dir in $(echo /dev/disk/by-*) > do > @@ -213,7 +209,7 @@ import_pool() > echo "$dir" | grep -q /by-vdev && continue > [ ! -d "$dir" ] && continue > > - echo -n "$dir:" > + printf "%s" "$dir:" > done | sed 's,:$,,g')" > > if [ -d "/dev/disk/by-vdev" ] > @@ -277,7 +273,7 @@ import_pool() > # with more logging etc. > load_module_initrd() > { > - if [ "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" > 0 ] > + if [ "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" -gt 0 ] 2>/dev/null > then > if [ "$quiet" != "y" ]; then > zfs_log_begin_msg "Sleeping for" \ > @@ -288,9 +284,9 @@ load_module_initrd() > fi > > # Wait for all of the /dev/{hd,sd}[a-z] device nodes to appear. > - if type wait_for_udev > /dev/null 2>&1 ; then > + if command -v wait_for_udev > /dev/null 2>&1 ; then > wait_for_udev 10 > - elif type wait_for_dev > /dev/null 2>&1 ; then > + elif command -v wait_for_dev > /dev/null 2>&1 ; then > wait_for_dev > fi > > @@ -300,7 +296,7 @@ load_module_initrd() > # Load the module > load_module "zfs" || return 1 > > - if [ "$ZFS_INITRD_POST_MODPROBE_SLEEP" > 0 ] > + if [ "$ZFS_INITRD_POST_MODPROBE_SLEEP" -gt 0 ] 2>/dev/null > then > if [ "$quiet" != "y" ]; then > zfs_log_begin_msg "Sleeping for" \ > @@ -316,12 +312,10 @@ load_module_initrd() > # Mount a given filesystem > mount_fs() > { > - local fs="$1" > - local mountpoint > + fs="$1" > > # Check that the filesystem exists > - "${ZFS}" list -oname -tfilesystem -H "${fs}" > /dev/null 2>&1 > - [ "$?" -ne 0 ] && return 1 > + "${ZFS}" list -oname -tfilesystem -H "${fs}" > /dev/null 2>&1 || retur > n 1 > > # Skip filesystems with canmount=off. The root fs should not have > # canmount=off, but ignore it for backwards compatibility just in case. > @@ -333,14 +327,14 @@ mount_fs() > > # Need the _original_ datasets mountpoint! > mountpoint=$(get_fs_value "$fs" mountpoint) > - if [ "$mountpoint" = "legacy" -o "$mountpoint" = "none" ]; then > + if [ "$mountpoint" = "legacy" ] || [ "$mountpoint" = "none" ]; then > # Can't use the mountpoint property. Might be one of our > # clones. Check the 'org.zol:mountpoint' property set in > # clone_snap() if that's usable. > mountpoint=$(get_fs_value "$fs" org.zol:mountpoint) > - if [ "$mountpoint" = "legacy" -o \ > - "$mountpoint" = "none" -o \ > - "$mountpoint" = "-" ] > + if [ "$mountpoint" = "legacy" ] || > + [ "$mountpoint" = "none" ] || > + [ "$mountpoint" = "-" ] > then > if [ "$fs" != "${ZFS_BOOTFS}" ]; then > # We don't have a proper mountpoint and this > @@ -396,10 +390,10 @@ mount_fs() > # Unlock a ZFS native encrypted filesystem. > decrypt_fs() > { > - local fs="$1" > - > + fs="$1" > + > # If pool encryption is active and the zfs command understands '-o encr > yption' > - if [ "$(zpool list -H -o feature@encryption $(echo "${fs}" | awk -F\/ ' > {print $1}'))" = 'active' ]; then > + if [ "$(zpool list -H -o feature@encryption "$(echo "${fs}" | awk -F/ ' > {print $1}')")" = 'active' ]; then > > # Determine dataset that holds key for root dataset > ENCRYPTIONROOT="$(get_fs_value "${fs}" encryptionroot)" > @@ -427,7 +421,7 @@ decrypt_fs() > TRY_COUNT=$((TRY_COUNT - 1)) > done > > - # Prompt with systemd, if active > + # Prompt with systemd, if active > elif [ -e /run/systemd/system ]; then > echo "systemd-ask-password" > /run/zfs_console_ > askpwd_cmd > while [ $TRY_COUNT -gt 0 ]; do > @@ -454,7 +448,7 @@ decrypt_fs() > # Destroy a given filesystem. > destroy_fs() > { > - local fs="$1" > + fs="$1" > > [ "$quiet" != "y" ] && \ > zfs_log_begin_msg "Destroying '$fs'" > @@ -489,9 +483,9 @@ destroy_fs() > # mounted with a 'zfs mount -a' in the init/systemd scripts). > clone_snap() > { > - local snap="$1" > - local destfs="$2" > - local mountpoint="$3" > + snap="$1" > + destfs="$2" > + mountpoint="$3" > > [ "$quiet" != "y" ] && zfs_log_begin_msg "Cloning '$snap' to '$destfs'" > > @@ -529,7 +523,7 @@ clone_snap() > # Rollback a given snapshot. > rollback_snap() > { > - local snap="$1" > + snap="$1" > > [ "$quiet" != "y" ] && zfs_log_begin_msg "Rollback $snap" > > @@ -559,9 +553,8 @@ rollback_snap() > # to the user to choose from. > ask_user_snap() > { > - local fs="$1" > - local i=1 > - local SNAP snapnr snap debug > + fs="$1" > + i=1 > > # We need to temporarily disable debugging. Set 'debug' so we > # remember to enabled it again. > @@ -574,16 +567,16 @@ ask_user_snap() > # Because we need the resulting snapshot, which is sent on > # stdout to the caller, we use stderr for our questions. > echo "What snapshot do you want to boot from?" > /dev/stderr > - while read snap; do > + while read -r snap; do > echo " $i: ${snap}" > /dev/stderr > - eval `echo SNAP_$i=$snap` > + eval "$(echo SNAP_$i=$snap)" > i=$((i + 1)) > done < $("${ZFS}" list -H -oname -tsnapshot -r "${fs}") > EOT > > - echo -n " Snap nr [1-$((i-1))]? " > /dev/stderr > - read snapnr > + echo "%s" " Snap nr [1-$((i-1))]? " > /dev/stderr > + read -r snapnr > > # Re-enable debugging. > if [ -n "${debug}" ]; then > @@ -591,16 +584,16 @@ EOT > set -x > fi > > - echo "$(eval echo "$"SNAP_$snapnr)" > + echo "$(eval echo '$SNAP_'$snapnr)" > } > > setup_snapshot_booting() > { > - local snap="$1" > - local s destfs subfs mountpoint retval=0 filesystems fs > + snap="$1" > + retval=0 > > - # Make sure that the snapshot specified actually exist. > - if [ ! $(get_fs_value "${snap}" type) ] > + # Make sure that the snapshot specified actually exists. > + if [ ! "$(get_fs_value "${snap}" type)" ] > then > # Snapshot does not exist (...@ ?) > # ask the user for a snapshot to use. > @@ -617,7 +610,7 @@ setup_snapshot_booting() > then > # If the destination dataset for the clone > # already exists, destroy it. Recursively > - if [ $(get_fs_value "${rootfs}_${snapname}" type) ]; then > + if [ "$(get_fs_value "${rootfs}_${snapname}" type)" ]; then > filesystems=$("${ZFS}" list -oname -tfilesystem -H \ > -r -Sname "${ZFS_BOOTFS}") > for fs in $filesystems; do > @@ -652,8 +645,8 @@ setup_snapshot_booting() > # with clone_snap(). If legacy or none, then use > # the sub fs value. > mountpoint=$(get_fs_value "${s%%@*}" mountpoint) > - if [ "$mountpoint" = "legacy" -o \ > - "$mountpoint" = "none" ] > + if [ "$mountpoint" = "legacy" ] || \ > + [ "$mountpoint" = "none" ] > then > if [ -n "${subfs}" ]; then > mountpoint="${subfs}" > @@ -678,8 +671,6 @@ setup_snapshot_booting() > # This is the main function. > mountroot() > { > - local snaporig snapsub destfs pool POOLS > - > # ---------------------------------------------------------------- > # I N I T I A L S E T U P > > @@ -742,7 +733,7 @@ mountroot() > # No longer set in the defaults file, but it could have been set in > # get_pools() in some circumstances. If it's something, but not 'yes', > # it's no good to us. > - [ -n "$USE_DISK_BY_ID" -a "$USE_DISK_BY_ID" != 'yes' ] && \ > + [ -n "$USE_DISK_BY_ID" ] && [ "$USE_DISK_BY_ID" != 'yes' ] && \ > unset USE_DISK_BY_ID > > # ---------------------------------------------------------------- > @@ -788,12 +779,12 @@ mountroot() > # ------------ > # If we have 'ROOT' (see above), but not 'ZFS_BOOTFS', then use > # 'ROOT' > - [ -n "$ROOT" -a -z "${ZFS_BOOTFS}" ] && ZFS_BOOTFS="$ROOT" > + [ -n "$ROOT" ] && [ -z "${ZFS_BOOTFS}" ] && ZFS_BOOTFS="$ROOT" > > # ------------ > # Check for the `-B zfs-bootfs=%s/%u,...` kind of parameter. > # NOTE: Only use the pool name and dataset. The rest is not > - # supported by ZoL (whatever it's for). > + # supported by OpenZFS (whatever it's for). > if [ -z "$ZFS_RPOOL" ] > then > # The ${zfs-bootfs} variable is set at the kernel command > @@ -809,11 +800,11 @@ mountroot() > > # ------------ > # No root fs or pool specified - do auto detect. > - if [ -z "$ZFS_RPOOL" -a -z "${ZFS_BOOTFS}" ] > + if [ -z "$ZFS_RPOOL" ] && [ -z "${ZFS_BOOTFS}" ] > then > # Do auto detect. Do this by 'cheating' - set 'root=zfs:AUTO' > # which will be caught later > - ROOT=zfs:AUTO > + ROOT='zfs:AUTO' > fi > > # ---------------------------------------------------------------- > @@ -858,7 +849,7 @@ mountroot() > fi > > # Import the pool (if not already done so in the AUTO check above). > - if [ -n "$ZFS_RPOOL" -a -z "${POOL_IMPORTED}" ] > + if [ -n "$ZFS_RPOOL" ] && [ -z "${POOL_IMPORTED}" ] > then > [ "$quiet" != "y" ] && \ > zfs_log_begin_msg "Importing ZFS root pool '$ZFS_RPOOL'" > @@ -971,7 +962,7 @@ mountroot() > > touch /run/zfs_unlock_complete > if [ -e /run/zfs_unlock_complete_notify ]; then > - read zfs_unlock_complete_notify < /run/zfs_unlock_complete_noti > fy > + read -r zfs_unlock_complete_notify < /run/zfs_unlock_complete_n > otify > fi > > # ------------ > @@ -989,8 +980,8 @@ mountroot() > echo > > echo "=> waiting for ENTER before continuing because of 'zfsdeb > ug=1'. " > - echo -n " 'c' for shell, 'r' for reboot, 'ENTER' to continue. > " > - read b > + printf "%s" " 'c' for shell, 'r' for reboot, 'ENTER' to conti > nue. " > + read -r b > > [ "$b" = "c" ] && /bin/sh > [ "$b" = "r" ] && reboot -f > @@ -1000,12 +991,14 @@ mountroot() > > # ------------ > # Run local bottom script > - if type run_scripts > /dev/null 2>&1 && \ > - [ -f "/scripts/local-bottom" -o -d "/scripts/local-bottom" ] > + if command -v run_scripts > /dev/null 2>&1 > then > - [ "$quiet" != "y" ] && \ > - zfs_log_begin_msg "Running /scripts/local-bottom" > - run_scripts /scripts/local-bottom > - [ "$quiet" != "y" ] && zfs_log_end_msg > + if [ -f "/scripts/local-bottom" ] || [ -d "/scripts/local-botto > m" ] > + then > + [ "$quiet" != "y" ] && \ > + zfs_log_begin_msg "Running /scripts/local-bottom" > + run_scripts /scripts/local-bottom > + [ "$quiet" != "y" ] && zfs_log_end_msg > + fi > fi > } > > Modified: head/sys/contrib/openzfs/include/os/freebsd/spl/sys/kstat.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/os/freebsd/spl/sys/kstat.h Thu Oct > 1 23:11:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/os/freebsd/spl/sys/kstat.h Thu Oct > 1 23:28:21 2020 (r366350) > @@ -83,6 +83,14 @@ typedef struct kstat_s kstat_t; > typedef int kid_t; /* unique kstat id */ > typedef int kstat_update_t(struct kstat_s *, int); /* dynamic update cb */ > > +struct seq_file { > + char *sf_buf; > + size_t sf_size; > +}; > + > +void seq_printf(struct seq_file *m, const char *fmt, ...); > + > + > typedef struct kstat_module { > char ksm_name[KSTAT_STRLEN+1]; /* module name */ > struct list_head ksm_module_list; /* module linkage */ > @@ -92,6 +100,7 @@ typedef struct kstat_module { > > typedef struct kstat_raw_ops { > int (*headers)(char *buf, size_t size); > + int (*seq_headers)(struct seq_file *); > int (*data)(char *buf, size_t size, void *data); > void *(*addr)(kstat_t *ksp, loff_t index); > } kstat_raw_ops_t; > @@ -112,6 +121,7 @@ struct kstat_s { > size_t ks_data_size; /* size of kstat data section * > / > kstat_update_t *ks_update; /* dynamic updates */ > void *ks_private; /* private data */ > + void *ks_private1; /* private data */ > kmutex_t ks_private_lock; /* kstat private data lock */ > kmutex_t *ks_lock; /* kstat data lock */ > struct list_head ks_list; /* kstat linkage */ > @@ -185,6 +195,12 @@ extern void __kstat_set_raw_ops(kstat_t *ksp, > int (*data)(char *buf, size_t size, void *data), > void* (*addr)(kstat_t *ksp, loff_t index)); > > +extern void __kstat_set_seq_raw_ops(kstat_t *ksp, > + int (*headers)(struct seq_file *), > + int (*data)(char *buf, size_t size, void *data), > + void* (*addr)(kstat_t *ksp, loff_t index)); > + > + > extern kstat_t *__kstat_create(const char *ks_module, int ks_instance, > const char *ks_name, const char *ks_class, uchar_t ks_type, > uint_t ks_ndata, uchar_t ks_flags); > @@ -196,6 +212,8 @@ extern void kstat_waitq_exit(kstat_io_t *); > extern void kstat_runq_enter(kstat_io_t *); > extern void kstat_runq_exit(kstat_io_t *); > > +#define kstat_set_seq_raw_ops(k, h, d, a) \ > + __kstat_set_seq_raw_ops(k, h, d, a) > #define kstat_set_raw_ops(k, h, d, a) \ > __kstat_set_raw_ops(k, h, d, a) > #define kstat_create(m, i, n, c, t, s, f) \ > > Modified: head/sys/contrib/openzfs/include/os/freebsd/spl/sys/procfs_list.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/os/freebsd/spl/sys/procfs_list.h Thu Oct > 1 23:11:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/os/freebsd/spl/sys/procfs_list.h Thu Oct > 1 23:28:21 2020 (r366350) > @@ -33,16 +33,18 @@ > * procfs list manipulation > */ > > -struct seq_file { }; > -void seq_printf(struct seq_file *m, const char *fmt, ...); > - > -typedef struct procfs_list { > +typedef struct procfs_list procfs_list_t; > +struct procfs_list { > void *pl_private; > + void *pl_next_data; > kmutex_t pl_lock; > list_t pl_list; > uint64_t pl_next_id; > + int (*pl_show)(struct seq_file *f, void *p); > + int (*pl_show_header)(struct seq_file *f); > + int (*pl_clear)(procfs_list_t *procfs_list); > size_t pl_node_offset; > -} procfs_list_t; > +}; > > typedef struct procfs_list_node { > list_node_t pln_link; > @@ -50,6 +52,7 @@ typedef struct procfs_list_node { > } procfs_list_node_t; > > void procfs_list_install(const char *module, > + const char *submodule, > const char *name, > mode_t mode, > procfs_list_t *procfs_list, > > Modified: head/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_x86.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_x86.h Thu Oct > 1 23:11:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/os/freebsd/spl/sys/simd_x86.h Thu Oct > 1 23:28:21 2020 (r366350) > @@ -29,6 +29,7 @@ > #include > #include > #include > +#include > #ifdef __i386__ > #include > #else > @@ -42,16 +43,15 @@ > #define kfpu_allowed() 1 > #define kfpu_initialize(tsk) do {} while (0) > > -#define kfpu_begin() { > \ > - critical_enter(); \ > - fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX); \ > +#define kfpu_begin() { \ > + if (__predict_false(!is_fpu_kern_thread(0))) \ > + fpu_kern_enter(curthread, NULL, FPU_KERN_NOCTX);\ > } > > -#define kfpu_end() \ > - { \ > - fpu_kern_leave(curthread, NULL); \ > - critical_exit(); \ > - } > +#define kfpu_end() { \ > + if (__predict_false(curpcb->pcb_flags & PCB_FPUNOSAVE)) \ > + fpu_kern_leave(curthread, NULL); \ > +} > > /* > * Check if OS supports AVX and AVX2 by checking XCR0 > > Modified: head/sys/contrib/openzfs/include/os/linux/spl/sys/procfs_list.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/os/linux/spl/sys/procfs_list.h Thu Oct > 1 23:11:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/os/linux/spl/sys/procfs_list.h Thu Oct > 1 23:28:21 2020 (r366350) > @@ -57,6 +57,7 @@ typedef struct procfs_list_node { > } procfs_list_node_t; > > void procfs_list_install(const char *module, > + const char *submodule, > const char *name, > mode_t mode, > procfs_list_t *procfs_list, > > Modified: head/sys/contrib/openzfs/include/sys/frame.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/sys/frame.h Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/include/sys/frame.h Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -23,7 +23,8 @@ > extern "C" { > #endif > > -#if defined(__KERNEL__) && defined(HAVE_STACK_FRAME_NON_STANDARD) > +#if defined(__KERNEL__) && defined(HAVE_KERNEL_OBJTOOL) && \ > + defined(HAVE_STACK_FRAME_NON_STANDARD) > #include > #else > #define STACK_FRAME_NON_STANDARD(func) > > Modified: head/sys/contrib/openzfs/include/sys/lua/luaconf.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/sys/lua/luaconf.h Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/sys/lua/luaconf.h Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -368,11 +368,7 @@ extern int lcompat_hashnum(int64_t); > @@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. > ** CHANGE it if it uses too much C-stack space. > */ > -#ifdef __linux__ > #define LUAL_BUFFERSIZE 512 > -#else > -#define LUAL_BUFFERSIZE 1024 > -#endif > > > /* > > Modified: head/sys/contrib/openzfs/include/sys/zfs_context.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/sys/zfs_context.h Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/include/sys/zfs_context.h Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -386,6 +386,7 @@ typedef struct procfs_list_node { > } procfs_list_node_t; > > void procfs_list_install(const char *module, > + const char *submodule, > const char *name, > mode_t mode, > procfs_list_t *procfs_list, > > Modified: head/sys/contrib/openzfs/include/sys/zstd/zstd.h > ============================================================================= > = > --- head/sys/contrib/openzfs/include/sys/zstd/zstd.h Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/include/sys/zstd/zstd.h Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -90,6 +90,7 @@ int zfs_zstd_decompress_level(void *s_start, void *d_s > size_t d_len, uint8_t *level); > int zfs_zstd_decompress(void *s_start, void *d_start, size_t s_len, > size_t d_len, int n); > +void zfs_zstd_cache_reap_now(void); > > #ifdef __cplusplus > } > > Modified: head/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c > ============================================================================= > = > --- head/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/lib/libshare/os/freebsd/nfs.c Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -228,21 +228,33 @@ nfs_copy_entries(char *filename, const char *mountpoin > int error = SA_OK; > char *line; > > - /* > - * If the file doesn't exist then there is nothing more > - * we need to do. > - */ > FILE *oldfp = fopen(ZFS_EXPORTS_FILE, "r"); > - if (oldfp == NULL) > - return (SA_OK); > - > FILE *newfp = fopen(filename, "w+"); > + if (newfp == NULL) { > + fprintf(stderr, "failed to open %s file: %s", filename, > + strerror(errno)); > + fclose(oldfp); > + return (SA_SYSTEM_ERR); > + } > fputs(FILE_HEADER, newfp); > - while ((line = zgetline(oldfp, mountpoint)) != NULL) > - fprintf(newfp, "%s\n", line); > - if (ferror(oldfp) != 0) { > - error = ferror(oldfp); > + > + /* > + * The ZFS_EXPORTS_FILE may not exist yet. If that's the > + * case then just write out the new file. > + */ > + if (oldfp != NULL) { > + while ((line = zgetline(oldfp, mountpoint)) != NULL) > + fprintf(newfp, "%s\n", line); > + if (ferror(oldfp) != 0) { > + error = ferror(oldfp); > + } > + if (fclose(oldfp) != 0) { > + fprintf(stderr, "Unable to close file %s: %s\n", > + filename, strerror(errno)); > + error = error != 0 ? error : SA_SYSTEM_ERR; > + } > } > + > if (error == 0 && ferror(newfp) != 0) { > error = ferror(newfp); > } > @@ -252,8 +264,6 @@ nfs_copy_entries(char *filename, const char *mountpoin > filename, strerror(errno)); > error = error != 0 ? error : SA_SYSTEM_ERR; > } > - fclose(oldfp); > - > return (error); > } > > > Modified: head/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c > ============================================================================= > = > --- head/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c Thu Oct 1 23:1 > 1:58 2020 (r366349) > +++ head/sys/contrib/openzfs/lib/libshare/os/linux/nfs.c Thu Oct 1 23:2 > 8:21 2020 (r366350) > @@ -393,7 +393,15 @@ static char * > nfs_init_tmpfile(void) > { > char *tmpfile = NULL; > + struct stat sb; > > + if (stat(ZFS_EXPORTS_DIR, &sb) < 0 && > + mkdir(ZFS_EXPORTS_DIR, 0755) < 0) { > + fprintf(stderr, "failed to create %s: %s\n", > + ZFS_EXPORTS_DIR, strerror(errno)); > + return (NULL); > + } > + > if (asprintf(&tmpfile, "%s%s", ZFS_EXPORTS_FILE, ".XXXXXXXX") == -1) { > fprintf(stderr, "Unable to allocate temporary file\n"); > return (NULL); > @@ -481,36 +489,49 @@ nfs_copy_entries(char *filename, const char *mountpoin > size_t buflen = 0; > int error = SA_OK; > > - /* > - * If the file doesn't exist then there is nothing more > - * we need to do. > - */ > FILE *oldfp = fopen(ZFS_EXPORTS_FILE, "r"); > - if (oldfp == NULL) > - return (SA_OK); > - > FILE *newfp = fopen(filename, "w+"); > + if (newfp == NULL) { > + fprintf(stderr, "failed to open %s file: %s", filename, > + strerror(errno)); > + fclose(oldfp); > + return (SA_SYSTEM_ERR); > + } > fputs(FILE_HEADER, newfp); > - while ((getline(&buf, &buflen, oldfp)) != -1) { > - char *space = NULL; > > - if (buf[0] == '\n' || buf[0] == '#') > - continue; > + /* > + * The ZFS_EXPORTS_FILE may not exist yet. If that's the > + * case then just write out the new file. > + */ > + if (oldfp != NULL) { > + while (getline(&buf, &buflen, oldfp) != -1) { > + char *space = NULL; > > - if ((space = strchr(buf, ' ')) != NULL) { > - int mountpoint_len = strlen(mountpoint); > - > - if (space - buf == mountpoint_len && > - strncmp(mountpoint, buf, mountpoint_len) == 0) { > + if (buf[0] == '\n' || buf[0] == '#') > continue; > + > + if ((space = strchr(buf, ' ')) != NULL) { > + int mountpoint_len = strlen(mountpoint); > + > + if (space - buf == mountpoint_len && > + strncmp(mountpoint, buf, > + mountpoint_len) == 0) { > + continue; > + } > } > + fputs(buf, newfp); > } > - fputs(buf, newfp); > - } > > - if (oldfp != NULL && ferror(oldfp) != 0) { > - error = ferror(oldfp); > + if (ferror(oldfp) != 0) { > + error = ferror(oldfp); > + } > + if (fclose(oldfp) != 0) { > + fprintf(stderr, "Unable to close file %s: %s\n", > + filename, strerror(errno)); > + error = error != 0 ? error : SA_SYSTEM_ERR; > + } > } > + > if (error == 0 && ferror(newfp) != 0) { > error = ferror(newfp); > } > @@ -521,8 +542,6 @@ nfs_copy_entries(char *filename, const char *mountpoin > filename, strerror(errno)); > error = error != 0 ? error : SA_SYSTEM_ERR; > } > - fclose(oldfp); > - > return (error); > } > > @@ -701,13 +720,5 @@ static const sa_share_ops_t nfs_shareops = { > void > libshare_nfs_init(void) > { > - struct stat sb; > - > nfs_fstype = register_fstype("nfs", &nfs_shareops); > - > - if (stat(ZFS_EXPORTS_DIR, &sb) < 0 && > - mkdir(ZFS_EXPORTS_DIR, 0755) < 0) { > - fprintf(stderr, "failed to create %s: %s\n", > - ZFS_EXPORTS_DIR, strerror(errno)); > - } > } > > Modified: head/sys/contrib/openzfs/lib/libzpool/kernel.c > ============================================================================= > = > --- head/sys/contrib/openzfs/lib/libzpool/kernel.c Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/lib/libzpool/kernel.c Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -444,6 +444,7 @@ seq_printf(struct seq_file *m, const char *fmt, ...) > > void > procfs_list_install(const char *module, > + const char *submodule, > const char *name, > mode_t mode, > procfs_list_t *procfs_list, > > Modified: head/sys/contrib/openzfs/man/man8/zfs-userspace.8 > ============================================================================= > = > --- head/sys/contrib/openzfs/man/man8/zfs-userspace.8 Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/man/man8/zfs-userspace.8 Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -44,7 +44,7 @@ > .Oo Fl s Ar field Oc Ns ... > .Oo Fl S Ar field Oc Ns ... > .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc > -.Ar filesystem Ns | Ns Ar snapshot > +.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path > .Nm > .Cm groupspace > .Op Fl Hinp > @@ -52,14 +52,14 @@ > .Oo Fl s Ar field Oc Ns ... > .Oo Fl S Ar field Oc Ns ... > .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc > -.Ar filesystem Ns | Ns Ar snapshot > +.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path > .Nm > .Cm projectspace > .Op Fl Hp > .Oo Fl o Ar field Ns Oo , Ns Ar field Oc Ns ... Oc > .Oo Fl s Ar field Oc Ns ... > .Oo Fl S Ar field Oc Ns ... > -.Ar filesystem Ns | Ns Ar snapshot > +.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path > .Sh DESCRIPTION > .Bl -tag -width "" > .It Xo > @@ -70,10 +70,11 @@ > .Oo Fl s Ar field Oc Ns ... > .Oo Fl S Ar field Oc Ns ... > .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc > -.Ar filesystem Ns | Ns Ar snapshot > +.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path > .Xc > -Displays space consumed by, and quotas on, each user in the specified filesy > stem > -or snapshot. > +Displays space consumed by, and quotas on, each user in the specified filesy > stem, > +snapshot, or path. > +If a path is given, the filesystem that contains that path will be used. > This corresponds to the > .Sy userused@ Ns Em user , > .Sy userobjused@ Ns Em user , > @@ -167,7 +168,7 @@ except that the default types to display are > .Oo Fl o Ar field Ns Oo , Ns Ar field Oc Ns ... Oc > .Oo Fl s Ar field Oc Ns ... > .Oo Fl S Ar field Oc Ns ... > -.Ar filesystem Ns | Ns Ar snapshot > +.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path > .Xc > Displays space consumed by, and quotas on, each project in the specified > filesystem or snapshot. This subcommand is identical to > > Modified: head/sys/contrib/openzfs/man/man8/zpool-remove.8 > ============================================================================= > = > --- head/sys/contrib/openzfs/man/man8/zpool-remove.8 Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/man/man8/zpool-remove.8 Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -55,6 +55,8 @@ This command supports removing hot spare, cache, log, > non-redundant primary top-level vdevs, including dedup and special vdevs. > When the primary pool storage includes a top-level raidz vdev only hot spare > , > cache, and log devices can be removed. > +Note that keys for all encrypted datasets must be loaded for top-level vdevs > +to be removed. > .sp > Removing a top-level vdev reduces the total amount of space in the storage p > ool. > The specified device will be evacuated by copying all allocated space from i > t to > > Modified: head/sys/contrib/openzfs/module/lua/llimits.h > ============================================================================= > = > --- head/sys/contrib/openzfs/module/lua/llimits.h Thu Oct 1 23:11:58 202 > 0 (r366349) > +++ head/sys/contrib/openzfs/module/lua/llimits.h Thu Oct 1 23:28:21 202 > 0 (r366350) > @@ -126,16 +126,7 @@ typedef LUAI_UACNUMBER l_uacNumber; > * Minimum amount of available stack space (in bytes) to make a C call. Wit > h > * gsub() recursion, the stack space between each luaD_call() is 1256 bytes. > */ > -#if defined(__FreeBSD__) > -/* > - * FreeBSD needs a few extra bytes in unoptimized debug builds to avoid a > - * double-fault handling the error when the max call depth is exceeded just > - * before the C stack runs out. 64 bytes seems to do the trick. > - */ > -#define LUAI_MINCSTACK 4160 > -#else > #define LUAI_MINCSTACK 4096 > -#endif > > /* > ** maximum number of upvalues in a closure (both C and Lua). (Value > > Modified: head/sys/contrib/openzfs/module/os/freebsd/spl/spl_kstat.c > ============================================================================= > = > --- head/sys/contrib/openzfs/module/os/freebsd/spl/spl_kstat.c Thu Oct > 1 23:11:58 2020 (r366349) > +++ head/sys/contrib/openzfs/module/os/freebsd/spl/spl_kstat.c Thu Oct > 1 23:28:21 2020 (r366350) > @@ -55,6 +55,17 @@ __kstat_set_raw_ops(kstat_t *ksp, > ksp->ks_raw_ops.addr = addr; > } > > +void > +__kstat_set_seq_raw_ops(kstat_t *ksp, > + int (*headers)(struct seq_file *f), > + int (*data)(char *buf, size_t size, void *data), > + void *(*addr)(kstat_t *ksp, loff_t index)) > +{ > + ksp->ks_raw_ops.seq_headers = headers; > + ksp->ks_raw_ops.data = data; > + ksp->ks_raw_ops.addr = addr; > +} > + > static int > kstat_default_update(kstat_t *ksp, int rw) > { > @@ -160,7 +171,7 @@ kstat_sysctl_raw(SYSCTL_HANDLER_ARGS) > void *data; > kstat_t *ksp = arg1; > void *(*addr_op)(kstat_t *ksp, loff_t index); > - int n, rc = 0; > + int n, has_header, rc = 0; > > sb = sbuf_new_auto(); > if (sb == NULL) > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** >