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 <cy.schub...@cschubert.com>
FreeBSD UNIX:  <c...@freebsd.org>   Web:  https://FreeBSD.org
NTP:           <c...@nwtime.org>    Web:  https://nwtime.org

        The need of the many outweighs the greed of the few.



In message <202010012328.091nslq2085...@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[,...]] "
> -                 "<filesystem|snapshot>\n"));
> +                 "<filesystem|snapshot|path>\n"));
>       case HELP_GROUPSPACE:
>               return (gettext("\tgroupspace [-Hinp] [-o field[,...]] "
>                   "[-s field] ...\n"
>                   "\t    [-S field] ... [-t type[,...]] "
> -                 "<filesystem|snapshot>\n"));
> +                 "<filesystem|snapshot|path>\n"));
>       case HELP_PROJECTSPACE:
>               return (gettext("\tprojectspace [-Hp] [-o field[,...]] "
>                   "[-s field] ... \n"
> -                 "\t    [-S field] ... <filesystem|snapshot>\n"));
> +                 "\t    [-S field] ... <filesystem|snapshot|path>\n"));
>       case HELP_PROJECT:
>               return (gettext("\tproject [-d|-r] <directory|file ...>\n"
>                   "\tproject -c [-0] [-d|-r] [-p id] <directory|file ...>\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 <asm/ptrace.h>
>               #include <asm/frame.h>
>       ],[
>               #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 <linux/frame.h>
>       ],[
>               #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 <<EOT
>  $("${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 (...@<null> ?)
>               # 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 <sys/cdefs.h>
>  #include <sys/types.h>
>  #include <sys/systm.h>
> +#include <sys/proc.h>
>  #ifdef __i386__
>  #include <x86/fpu.h>
>  #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 <linux/frame.h>
>  #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 ***
>


_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to