commit: 6b7db809b530eee3052f73377c5b0aad13a0b963
parent f70b4bb807afbdaccc1daab13b8ff24459c8dfa5
Author: Michael Forney <mforney@mforney.org>
Date: Tue, 17 Jan 2023 13:10:48 -0800
Add zfs 2.1.7
Diffstat:
18 files changed, 2070 insertions(+), 0 deletions(-)
diff --git a/pkg/gen.lua b/pkg/gen.lua
@@ -138,5 +138,6 @@ subgen 'x509cert'
subgen 'xkeyboard-config'
subgen 'xz'
subgen 'yt-dlp'
+subgen 'zfs'
subgen 'zlib'
subgen 'zstd'
diff --git a/pkg/zfs/.gitignore b/pkg/zfs/.gitignore
@@ -0,0 +1,2 @@
+/src
+/zfs-2.1.7.tar.gz
diff --git a/pkg/zfs/config.h b/pkg/zfs/config.h
@@ -0,0 +1,325 @@
+/* #undef ENABLE_NLS */
+/* #undef HAVE_1ARG_BIO_END_IO_T */
+/* #undef HAVE_1ARG_LOOKUP_BDEV */
+/* #undef HAVE_1ARG_SUBMIT_BIO */
+/* #undef HAVE_2ARGS_BDI_SETUP_AND_REGISTER */
+/* #undef HAVE_2ARGS_VFS_GETATTR */
+/* #undef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE */
+/* #undef HAVE_3ARGS_BDI_SETUP_AND_REGISTER */
+/* #undef HAVE_3ARGS_VFS_GETATTR */
+/* #undef HAVE_4ARGS_VFS_GETATTR */
+/* #undef HAVE_ACCESS_OK_TYPE */
+/* #undef HAVE_ACL_REFCOUNT */
+/* #undef HAVE_ADD_DISK_RET */
+/* #undef HAVE_AES */
+/* #undef HAVE_AVX */
+/* #undef HAVE_AVX2 */
+/* #undef HAVE_AVX512BW */
+/* #undef HAVE_AVX512CD */
+/* #undef HAVE_AVX512DQ */
+/* #undef HAVE_AVX512ER */
+/* #undef HAVE_AVX512F */
+/* #undef HAVE_AVX512IFMA */
+/* #undef HAVE_AVX512PF */
+/* #undef HAVE_AVX512VBMI */
+/* #undef HAVE_AVX512VL */
+/* #undef HAVE_BDEVNAME */
+/* #undef HAVE_BDEV_CHECK_MEDIA_CHANGE */
+/* #undef HAVE_BDEV_IO_ACCT */
+/* #undef HAVE_BDEV_MAX_DISCARD_SECTORS */
+/* #undef HAVE_BDEV_MAX_SECURE_ERASE_SECTORS */
+/* #undef HAVE_BDEV_SUBMIT_BIO_RETURNS_VOID */
+/* #undef HAVE_BDEV_WHOLE */
+/* #undef HAVE_BIO_ALLOC_4ARG */
+/* #undef HAVE_BIO_BDEV_DISK */
+/* #undef HAVE_BIO_BI_OPF */
+/* #undef HAVE_BIO_BI_STATUS */
+/* #undef HAVE_BIO_BVEC_ITER */
+/* #undef HAVE_BIO_IO_ACCT */
+/* #undef HAVE_BIO_MAX_SEGS */
+/* #undef HAVE_BIO_SET_DEV */
+/* #undef HAVE_BIO_SET_DEV_GPL_ONLY */
+/* #undef HAVE_BIO_SET_DEV_MACRO */
+/* #undef HAVE_BIO_SET_OP_ATTRS */
+/* #undef HAVE_BLKDEV_GET_ERESTARTSYS */
+/* #undef HAVE_BLKDEV_ISSUE_DISCARD */
+/* #undef HAVE_BLKDEV_ISSUE_SECURE_ERASE */
+/* #undef HAVE_BLKDEV_REREAD_PART */
+/* #undef HAVE_BLKG_TRYGET */
+/* #undef HAVE_BLKG_TRYGET_GPL_ONLY */
+/* #undef HAVE_BLK_ALLOC_DISK */
+/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN */
+/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN_RH */
+/* #undef HAVE_BLK_CLEANUP_DISK */
+/* #undef HAVE_BLK_QUEUE_BDI_DYNAMIC */
+/* #undef HAVE_BLK_QUEUE_DISCARD */
+/* #undef HAVE_BLK_QUEUE_FLAG_CLEAR */
+/* #undef HAVE_BLK_QUEUE_FLAG_SET */
+/* #undef HAVE_BLK_QUEUE_FLUSH */
+/* #undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY */
+/* #undef HAVE_BLK_QUEUE_SECDISCARD */
+/* #undef HAVE_BLK_QUEUE_SECURE_ERASE */
+/* #undef HAVE_BLK_QUEUE_UPDATE_READAHEAD */
+/* #undef HAVE_BLK_QUEUE_WRITE_CACHE */
+/* #undef HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY */
+/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK */
+/* #undef HAVE_CFLOCALECOPYCURRENT */
+/* #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES */
+/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
+/* #undef HAVE_CHECK_DISK_CHANGE */
+/* #undef HAVE_CLEAR_INODE */
+/* #undef HAVE_CONST_DENTRY_OPERATIONS */
+/* #undef HAVE_COPY_FROM_ITER */
+/* #undef HAVE_COPY_TO_ITER */
+/* #undef HAVE_CPU_HOTPLUG */
+/* #undef HAVE_CURRENT_TIME */
+/* #undef HAVE_DCGETTEXT */
+/* #undef HAVE_DECLARE_EVENT_CLASS */
+/* #undef HAVE_DENTRY_D_U_ALIASES */
+/* #undef HAVE_DEQUEUE_SIGNAL_4ARG */
+/* #undef HAVE_DEVT_LOOKUP_BDEV */
+/* #undef HAVE_DIRTY_INODE_WITH_FLAGS */
+/* #undef HAVE_DISK_IO_ACCT */
+/* #undef HAVE_DISK_UPDATE_READAHEAD */
+#define HAVE_DLFCN_H 1
+/* #undef HAVE_D_MAKE_ROOT */
+/* #undef HAVE_D_PRUNE_ALIASES */
+/* #undef HAVE_D_REVALIDATE_NAMEIDATA */
+/* #undef HAVE_ENCODE_FH_WITH_INODE */
+/* #undef HAVE_EVICT_INODE */
+/* #undef HAVE_FALLOC_FL_ZERO_RANGE */
+/* #undef HAVE_FAULT_IN_IOV_ITER_READABLE */
+/* #undef HAVE_FILE_AIO_FSYNC */
+/* #undef HAVE_FILE_DENTRY */
+/* #undef HAVE_FILE_INODE */
+/* #undef HAVE_FOLLOW_LINK_COOKIE */
+/* #undef HAVE_FOLLOW_LINK_NAMEIDATA */
+/* #undef HAVE_FSYNC_RANGE */
+/* #undef HAVE_FSYNC_WITHOUT_DENTRY */
+/* #undef HAVE_GENERIC_FILLATTR_USERNS */
+/* #undef HAVE_GENERIC_IO_ACCT_3ARG */
+/* #undef HAVE_GENERIC_IO_ACCT_4ARG */
+/* #undef HAVE_GENERIC_READLINK */
+/* #undef HAVE_GENERIC_SETXATTR */
+/* #undef HAVE_GENERIC_WRITE_CHECKS_KIOCB */
+/* #undef HAVE_GETTEXT */
+/* #undef HAVE_GET_ACL */
+/* #undef HAVE_GET_ACL_RCU */
+/* #undef HAVE_GET_LINK_COOKIE */
+/* #undef HAVE_GET_LINK_DELAYED */
+/* #undef HAVE_GROUP_INFO_GID */
+/* #undef HAVE_HAS_CAPABILITY */
+/* #undef HAVE_ICONV */
+#define HAVE_IMPLICIT_FALLTHROUGH 1
+#define HAVE_INFINITE_RECURSION 1
+/* #undef HAVE_INODE_LOCK_SHARED */
+/* #undef HAVE_INODE_OWNER_OR_CAPABLE */
+/* #undef HAVE_INODE_OWNER_OR_CAPABLE_IDMAPPED */
+/* #undef HAVE_INODE_SET_FLAGS */
+/* #undef HAVE_INODE_SET_IVERSION */
+/* #undef HAVE_INODE_TIMESPEC64_TIMES */
+/* #undef HAVE_INODE_TIMESTAMP_TRUNCATE */
+#define HAVE_INTTYPES_H 1
+/* #undef HAVE_IN_COMPAT_SYSCALL */
+/* #undef HAVE_IOPS_CREATE_USERNS */
+/* #undef HAVE_IOPS_MKDIR_USERNS */
+/* #undef HAVE_IOPS_MKNOD_USERNS */
+/* #undef HAVE_IOPS_RENAME_USERNS */
+/* #undef HAVE_IOPS_SYMLINK_USERNS */
+/* #undef HAVE_IOV_ITER_ADVANCE */
+/* #undef HAVE_IOV_ITER_COUNT */
+/* #undef HAVE_IOV_ITER_FAULT_IN_READABLE */
+/* #undef HAVE_IOV_ITER_REVERT */
+/* #undef HAVE_IOV_ITER_TYPE */
+/* #undef HAVE_IOV_ITER_TYPES */
+/* #undef HAVE_IO_SCHEDULE_TIMEOUT */
+#define HAVE_ISSETUGID 1
+/* #undef HAVE_KERNEL_FPU */
+/* #undef HAVE_KERNEL_FPU_API_HEADER */
+/* #undef HAVE_KERNEL_FPU_INTERNAL */
+/* #undef HAVE_KERNEL_FPU_INTERNAL_HEADER */
+/* #undef HAVE_KERNEL_FPU_XCR_HEADER */
+/* #undef HAVE_KERNEL_FPU_XSAVE_INTERNAL */
+/* #undef HAVE_KERNEL_GET_ACL_HANDLE_CACHE */
+/* #undef HAVE_KERNEL_OBJTOOL */
+/* #undef HAVE_KERNEL_OBJTOOL_HEADER */
+/* #undef HAVE_KERNEL_READ_PPOS */
+/* #undef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST */
+/* #undef HAVE_KERNEL_TIMER_LIST_FLAGS */
+/* #undef HAVE_KERNEL_TIMER_SETUP */
+/* #undef HAVE_KERNEL_WRITE_PPOS */
+/* #undef HAVE_KMEM_CACHE_CREATE_USERCOPY */
+/* #undef HAVE_KSTRTOUL */
+/* #undef HAVE_KTIME_GET_COARSE_REAL_TS64 */
+/* #undef HAVE_KTIME_GET_RAW_TS64 */
+/* #undef HAVE_KVMALLOC */
+/* #undef HAVE_LIBAIO */
+#define HAVE_LIBBLKID 1
+#define HAVE_LIBCRYPTO 1
+#define HAVE_LIBTIRPC 1
+/* #undef HAVE_LIBUDEV */
+#define HAVE_LIBUUID 1
+/* #undef HAVE_LINUX_BLK_CGROUP_HEADER */
+/* #undef HAVE_LSEEK_EXECUTE */
+/* #undef HAVE_MAKEDEV_IN_MKDEV */
+#define HAVE_MAKEDEV_IN_SYSMACROS 1
+/* #undef HAVE_MAKE_REQUEST_FN_RET_QC */
+/* #undef HAVE_MAKE_REQUEST_FN_RET_VOID */
+/* #undef HAVE_MKDIR_UMODE_T */
+#define HAVE_MLOCKALL 1
+/* #undef HAVE_MODE_LOOKUP_BDEV */
+#define HAVE_MOVBE 1
+/* #undef HAVE_NEW_SYNC_READ */
+/* #undef HAVE_PAGEMAP_FOLIO_WAIT_BIT */
+/* #undef HAVE_PATH_IOPS_GETATTR */
+#define HAVE_PCLMULQDQ 1
+/* #undef HAVE_PERCPU_COUNTER_ADD_BATCH */
+/* #undef HAVE_PERCPU_COUNTER_INIT_WITH_GFP */
+/* #undef HAVE_POSIX_ACL_CHMOD */
+/* #undef HAVE_POSIX_ACL_FROM_XATTR_USERNS */
+/* #undef HAVE_POSIX_ACL_RELEASE */
+/* #undef HAVE_POSIX_ACL_RELEASE_GPL_ONLY */
+/* #undef HAVE_POSIX_ACL_VALID_WITH_NS */
+/* #undef HAVE_PROC_OPS_STRUCT */
+/* #undef HAVE_PUT_LINK_COOKIE */
+/* #undef HAVE_PUT_LINK_DELAYED */
+/* #undef HAVE_PUT_LINK_NAMEIDATA */
+/* #undef HAVE_PYTHON */
+/* #undef HAVE_QAT */
+/* #undef HAVE_REGISTER_SHRINKER_VARARG */
+/* #undef HAVE_RENAME_WANTS_FLAGS */
+/* #undef HAVE_REQ_DISCARD */
+/* #undef HAVE_REQ_FLUSH */
+/* #undef HAVE_REQ_OP_DISCARD */
+/* #undef HAVE_REQ_OP_FLUSH */
+/* #undef HAVE_REQ_OP_SECURE_ERASE */
+/* #undef HAVE_REQ_PREFLUSH */
+/* #undef HAVE_REVALIDATE_DISK */
+/* #undef HAVE_REVALIDATE_DISK_SIZE */
+/* #undef HAVE_RWSEM_ACTIVITY */
+/* #undef HAVE_RWSEM_ATOMIC_LONG_COUNT */
+/* #undef HAVE_SCHED_SIGNAL_HEADER */
+/* #undef HAVE_SECURITY_PAM_MODULES_H */
+/* #undef HAVE_SETATTR_PREPARE_NO_USERNS */
+/* #undef HAVE_SETATTR_PREPARE_USERNS */
+/* #undef HAVE_SET_ACL */
+/* #undef HAVE_SET_ACL_USERNS */
+/* #undef HAVE_SET_CACHED_ACL_USABLE */
+/* #undef HAVE_SET_SPECIAL_STATE */
+/* #undef HAVE_SHRINK_CONTROL_STRUCT */
+/* #undef HAVE_SIGINFO */
+/* #undef HAVE_SIGNAL_STOP */
+/* #undef HAVE_SINGLE_SHRINKER_CALLBACK */
+/* #undef HAVE_SPLIT_SHRINKER_CALLBACK */
+/* #undef HAVE_SSE */
+/* #undef HAVE_SSE2 */
+/* #undef HAVE_SSE3 */
+/* #undef HAVE_SSE4_1 */
+/* #undef HAVE_SSE4_2 */
+/* #undef HAVE_SSSE3 */
+/* #undef HAVE_STACK_FRAME_NON_STANDARD */
+/* #undef HAVE_STANDALONE_LINUX_STDARG */
+#define HAVE_STDINT_H 1
+#define HAVE_STDIO_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STRLCAT 1
+#define HAVE_STRLCPY 1
+/* #undef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS */
+/* #undef HAVE_SUPER_SETUP_BDI_NAME */
+/* #undef HAVE_SUPER_USER_NS */
+/* #undef HAVE_SYSFS_DEFAULT_GROUPS */
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+/* #undef HAVE_TMPFILE */
+/* #undef HAVE_TMPFILE_USERNS */
+/* #undef HAVE_TOTALHIGH_PAGES */
+/* #undef HAVE_TOTALRAM_PAGES_FUNC */
+/* #undef HAVE_UDEV_DEVICE_GET_IS_INITIALIZED */
+/* #undef HAVE_UNDERSCORE_KERNEL_FPU */
+#define HAVE_UNISTD_H 1
+/* #undef HAVE_USERNS_IOPS_GETATTR */
+/* #undef HAVE_VFSMOUNT_IOPS_GETATTR */
+/* #undef HAVE_VFS_DIRECT_IO_IOVEC */
+/* #undef HAVE_VFS_DIRECT_IO_ITER */
+/* #undef HAVE_VFS_DIRECT_IO_ITER_OFFSET */
+/* #undef HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET */
+/* #undef HAVE_VFS_FILEMAP_DIRTY_FOLIO */
+/* #undef HAVE_VFS_IOV_ITER */
+/* #undef HAVE_VFS_ITERATE */
+/* #undef HAVE_VFS_ITERATE_SHARED */
+/* #undef HAVE_VFS_READDIR */
+/* #undef HAVE_VFS_READPAGES */
+/* #undef HAVE_VFS_READ_FOLIO */
+/* #undef HAVE_VFS_RW_ITERATE */
+/* #undef HAVE_VFS_SET_PAGE_DIRTY_NOBUFFERS */
+/* #undef HAVE_VMALLOC_PAGE_KERNEL */
+/* #undef HAVE_WAIT_ON_BIT_ACTION */
+/* #undef HAVE_WAIT_QUEUE_ENTRY_T */
+/* #undef HAVE_WAIT_QUEUE_HEAD_ENTRY */
+/* #undef HAVE_XATTR_GET_DENTRY */
+/* #undef HAVE_XATTR_GET_DENTRY_INODE */
+/* #undef HAVE_XATTR_GET_DENTRY_INODE_FLAGS */
+/* #undef HAVE_XATTR_GET_HANDLER */
+/* #undef HAVE_XATTR_HANDLER_NAME */
+/* #undef HAVE_XATTR_LIST_DENTRY */
+/* #undef HAVE_XATTR_LIST_HANDLER */
+/* #undef HAVE_XATTR_LIST_SIMPLE */
+/* #undef HAVE_XATTR_SET_DENTRY */
+/* #undef HAVE_XATTR_SET_DENTRY_INODE */
+/* #undef HAVE_XATTR_SET_HANDLER */
+/* #undef HAVE_XATTR_SET_USERNS */
+#define HAVE_XSAVE 1
+#define HAVE_XSAVEOPT 1
+#define HAVE_XSAVES 1
+/* #undef HAVE_ZERO_PAGE_GPL_ONLY */
+#define HAVE_ZLIB 1
+/* #undef HAVE___POSIX_ACL_CHMOD */
+/* #undef KERNEL_EXPORTS_X86_FPU */
+/* #undef LIBFETCH_DYNAMIC */
+/* #undef LIBFETCH_IS_FETCH */
+/* #undef LIBFETCH_IS_LIBCURL */
+/* #undef LIBFETCH_SONAME */
+#define LT_OBJDIR ".libs/"
+/* #undef MAKE_REQUEST_FN_RET */
+/* #undef SHRINK_CONTROL_HAS_NID */
+/* #undef SPL_KTHREAD_COMPLETE_AND_EXIT */
+#define SPL_META_ALIAS ZFS_META_ALIAS
+#define SPL_META_RELEASE ZFS_META_RELEASE
+#define SPL_META_VERSION ZFS_META_VERSION
+/* #undef SPL_PDE_DATA */
+/* #undef SYSTEM_FREEBSD */
+#define SYSTEM_LINUX 1
+/* #undef ZFS_DEBUG */
+/* #undef ZFS_DEVICE_MINOR */
+/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES */
+/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON */
+/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE */
+/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES */
+/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON */
+/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE */
+/* #undef ZFS_GENHD_FL_EXT_DEVT */
+/* #undef ZFS_GENHD_FL_NO_PART */
+/* #undef ZFS_GLOBAL_NODE_PAGE_STATE */
+/* #undef ZFS_GLOBAL_ZONE_PAGE_STATE */
+/* #undef ZFS_IS_GPL_COMPATIBLE */
+#define ZFS_META_ALIAS "zfs-2.1.7-1"
+#define ZFS_META_AUTHOR "OpenZFS"
+/* #undef ZFS_META_DATA */
+#define ZFS_META_KVER_MAX "6.0"
+#define ZFS_META_KVER_MIN "3.10"
+#define ZFS_META_LICENSE "CDDL"
+/* #undef ZFS_META_LT_AGE */
+/* #undef ZFS_META_LT_CURRENT */
+/* #undef ZFS_META_LT_REVISION */
+#define ZFS_META_NAME "zfs"
+#define ZFS_META_RELEASE "1"
+#define ZFS_META_VERSION "2.1.7"
+/* #undef ZFS_PERCPU_REF_COUNT_IN_DATA */
+
+#define RUNSTATEDIR "/run"
+#define SBINDIR "/bin"
+#define SYSCONFDIR "/etc"
+#define PKGDATADIR "/share/zfs"
+#define TEXT_DOMAIN "zfs-linux-user"
diff --git a/pkg/zfs/gen.lua b/pkg/zfs/gen.lua
@@ -0,0 +1,313 @@
+cflags{
+ '-std=c99 -Wall',
+ '-include $dir/config.h',
+ '-D _GNU_SOURCE',
+ '-D _LARGEFILE64_SOURCE',
+ '-I $srcdir/include',
+ '-I $srcdir/module/icp/include',
+ '-I $srcdir/lib/libspl/include',
+ '-I $srcdir/lib/libspl/include/os/linux',
+ '-I $srcdir/lib/libzutil',
+ '-I $srcdir/lib/libshare',
+ '-I $srcdir/cmd/zpool',
+ '-isystem $builddir/pkg/bearssl/include',
+ '-isystem $builddir/pkg/libtirpc/include',
+ '-isystem $builddir/pkg/linux-headers/include',
+ '-isystem $builddir/pkg/util-linux/include',
+ '-isystem $builddir/pkg/zlib/include',
+}
+
+pkg.deps = {
+ 'pkg/bearssl/headers',
+ 'pkg/libtirpc/headers',
+ 'pkg/linux-headers/headers',
+ 'pkg/util-linux/headers',
+ 'pkg/zlib/headers',
+}
+
+lib('libavl.a', {'module/avl/avl.c'})
+
+lib('libshare.a', [[
+ lib/libshare/(
+ libshare.c
+ os/linux/(nfs.c smb.c)
+ )
+]])
+
+lib('libspl.a', [[
+ lib/libspl/(
+ assert.c
+ atomic.c
+ list.c
+ mkdirp.c
+ page.c
+ strlcat.c
+ strlcpy.c
+ timestamp.c
+ os/linux/(
+ getexecname.c
+ gethostid.c
+ getmntany.c
+ zone.c
+ )
+ )
+]])
+
+lib('libtpool.a', {'lib/libtpool/thread_pool.c'})
+
+lib('libefi.a', [[
+ lib/libefi/rdwr_efi.c
+ $builddir/pkg/util-linux/libuuid.a.d
+]])
+
+lib('libnvpair.a', [[
+ lib/libnvpair/(
+ libnvpair.c
+ libnvpair_json.c
+ nvpair_alloc_system.c
+ )
+ module/nvpair/(
+ nvpair_alloc_fixed.c
+ nvpair.c
+ fnvpair.c
+ )
+ $builddir/pkg/libtirpc/libtirpc.a
+]])
+
+lib('libzutil.a', [[
+ lib/libzutil/(
+ zutil_device_path.c
+ zutil_import.c
+ zutil_nicenum.c
+ zutil_pool.c
+ os/linux/(
+ zutil_device_path_os.c
+ zutil_import_os.c
+ zutil_compat.c
+ )
+ )
+ libefi.a.d
+ libspl.a
+ libtpool.a
+ $builddir/pkg/util-linux/libblkid.a.d
+]])
+
+lib('libuutil.a', [[
+ lib/libuutil/(
+ uu_alloc.c
+ uu_avl.c
+ uu_dprintf.c
+ uu_ident.c
+ uu_list.c
+ uu_misc.c
+ uu_open.c
+ uu_pname.c
+ uu_string.c
+ )
+ libavl.a
+ libspl.a
+]])
+
+lib('libzfs_core.a', [[
+ lib/libzfs_core/(
+ libzfs_core.c
+ )
+ libzutil.a.d
+]])
+
+lib('libzfs.a', [[
+ lib/libzfs/(
+ libzfs_changelist.c
+ libzfs_config.c
+ libzfs_crypto.c
+ libzfs_dataset.c
+ libzfs_diff.c
+ libzfs_import.c
+ libzfs_iter.c
+ libzfs_mount.c
+ libzfs_pool.c
+ libzfs_sendrecv.c
+ libzfs_status.c
+ libzfs_util.c
+ os/linux/(
+ libzfs_mount_os.c
+ libzfs_pool_os.c
+ libzfs_sendrecv_os.c
+ libzfs_util_os.c
+ )
+ )
+ module/(
+ zcommon/(
+ cityhash.c
+ zfeature_common.c
+ zfs_comutil.c
+ zfs_fletcher.c
+ zfs_fletcher_superscalar.c
+ zfs_fletcher_superscalar4.c
+ zfs_namecheck.c
+ zfs_prop.c
+ zpool_prop.c
+ zprop_common.c
+ )
+ )
+ libnvpair.a.d
+ libuutil.a.d
+ libshare.a.d
+ libzfs_core.a.d
+ $builddir/pkg/bearssl/libbearssl.a
+ $builddir/pkg/zlib/libz.a
+]])
+
+exe('zed', [[
+ cmd/zed/(
+ zed.c
+ zed_conf.c
+ zed_disk_event.c
+ zed_event.c
+ zed_exec.c
+ zed_file.c
+ zed_log.c
+ zed_strings.c
+ agents/(
+ zfs_agents.c
+ zfs_diagnosis.c
+ zfs_mod.c
+ zfs_retire.c
+ fmd_api.c
+ fmd_serd.c
+ )
+ )
+ libzfs.a.d
+]])
+file('bin/zed', '755', '$outdir/zed')
+build('sed', '$outdir/zed.8', '$srcdir/man/man8/zed.8.in', {
+ expr={
+ '-e s,@sysconfdir@,/etc,',
+ '-e s,@zfsexecdir@,/libexec/zfs,',
+ '-e s,@runstatedir@,/run,',
+ },
+})
+
+exe('zfs', [[
+ cmd/zfs/(
+ zfs_iter.c
+ zfs_main.c
+ zfs_project.c
+ )
+ libzfs.a.d
+ libuutil.a.d
+]])
+file('bin/zfs', '755', '$outdir/zfs')
+
+exe('zpool', [[
+ cmd/zpool/(
+ zpool_iter.c
+ zpool_main.c
+ zpool_util.c
+ zpool_vdev.c
+ os/linux/zpool_vdev_os.c
+ )
+ libzfs.a.d
+]])
+file('bin/zpool', '755', '$outdir/zpool')
+
+exe('zstream', [[
+ cmd/zstream/(
+ zstream.c
+ zstream_dump.c
+ zstream_redup.c
+ zstream_token.c
+ )
+ libzfs.a.d
+]])
+file('bin/zstream', '755', '$outdir/zstream')
+sym('bin/zstreamdump', 'zstream')
+
+man(paths[[
+ man/(
+ man4/zfs.4
+ man8/(
+ zfs.8
+ zfs-allow.8
+ zfs-bookmark.8
+ zfs-change-key.8
+ zfs-clone.8
+ zfs-create.8
+ zfs-destroy.8
+ zfs-diff.8
+ zfs-get.8
+ zfs-groupspace.8
+ zfs-hold.8
+ zfs-inherit.8
+ zfs-jail.8
+ zfs-list.8
+ zfs-load-key.8
+ zfs-mount.8
+ zfs-program.8
+ zfs-project.8
+ zfs-projectspace.8
+ zfs-promote.8
+ zfs-receive.8
+ zfs-recv.8
+ zfs-redact.8
+ zfs-release.8
+ zfs-rename.8
+ zfs-rollback.8
+ zfs-send.8
+ zfs-set.8
+ zfs-share.8
+ zfs-snapshot.8
+ zfs-unallow.8
+ zfs-unjail.8
+ zfs-unload-key.8
+ zfs-unmount.8
+ zfs-upgrade.8
+ zfs-userspace.8
+ zfs-wait.8
+ zpool.8
+ zpool-add.8
+ zpool-attach.8
+ zpool-checkpoint.8
+ zpool-clear.8
+ zpool-create.8
+ zpool-destroy.8
+ zpool-detach.8
+ zpool-events.8
+ zpool-export.8
+ zpool-get.8
+ zpool-history.8
+ zpool-import.8
+ zpool-initialize.8
+ zpool-iostat.8
+ zpool-labelclear.8
+ zpool-list.8
+ zpool-offline.8
+ zpool-online.8
+ zpool-reguid.8
+ zpool-remove.8
+ zpool-reopen.8
+ zpool-replace.8
+ zpool-resilver.8
+ zpool-scrub.8
+ zpool-set.8
+ zpool-split.8
+ zpool-status.8
+ zpool-sync.8
+ zpool-trim.8
+ zpool-upgrade.8
+ zpool-wait.8
+ zstream.8
+ zstreamdump.8
+ )
+ man7/(
+ zfsconcepts.7
+ zfsprops.7
+ zpool-features.7
+ zpoolconcepts.7
+ zpoolprops.7
+ )
+ )
+ $outdir/zed.8
+]])
+
+fetch 'curl'
diff --git a/pkg/zfs/patch/0001-Port-to-BearSSL.patch b/pkg/zfs/patch/0001-Port-to-BearSSL.patch
@@ -0,0 +1,89 @@
+From ec03405d2ba8eee8e95ec94e09888eaff82ad6ac Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 17 Jan 2023 12:01:13 -0800
+Subject: [PATCH] Port to BearSSL
+
+---
+ lib/libzfs/libzfs_crypto.c | 52 ++++++++++++++++++++++++++++++--------
+ 1 file changed, 42 insertions(+), 10 deletions(-)
+
+diff --git a/lib/libzfs/libzfs_crypto.c b/lib/libzfs/libzfs_crypto.c
+index f77becd6a..5eed592a4 100644
+--- a/lib/libzfs/libzfs_crypto.c
++++ b/lib/libzfs/libzfs_crypto.c
+@@ -25,7 +25,7 @@
+ #include <termios.h>
+ #include <signal.h>
+ #include <errno.h>
+-#include <openssl/evp.h>
++#include <bearssl.h>
+ #if LIBFETCH_DYNAMIC
+ #include <dlfcn.h>
+ #endif
+@@ -763,6 +763,44 @@ error:
+ return (ret);
+ }
+
++static void
++pbkdf2_hmac_sha1(unsigned char *DK, size_t DKlen, const char *P, size_t Plen, const char *S, size_t Slen, int c)
++{
++ br_hmac_key_context kc;
++ br_hmac_context hmac;
++ unsigned char F[br_sha1_SIZE], U[64];
++ int j, k;
++ unsigned long i;
++
++ assert(Slen <= sizeof U - 4);
++ br_hmac_key_init(&kc, &br_sha1_vtable, P, Plen);
++ for (i = 1;; ++i) {
++ memcpy(U, S, Slen);
++ U[Slen] = i >> 24;
++ U[Slen + 1] = i >> 16;
++ U[Slen + 2] = i >> 8;
++ U[Slen + 3] = i;
++ br_hmac_init(&hmac, &kc, 0);
++ br_hmac_update(&hmac, U, Slen + 4);
++ br_hmac_out(&hmac, U);
++ memcpy(F, U, br_sha1_SIZE);
++ for (j = 1; j < c; ++j) {
++ br_hmac_init(&hmac, &kc, 0);
++ br_hmac_update(&hmac, U, br_sha1_SIZE);
++ br_hmac_out(&hmac, U);
++ for (k = 0; k < br_sha1_SIZE; k++)
++ F[k] ^= U[k];
++ }
++ if (DKlen < sizeof F) {
++ memcpy(DK, F, DKlen);
++ break;
++ }
++ memcpy(DK, F, sizeof F);
++ DK += sizeof F;
++ DKlen -= sizeof F;
++ }
++}
++
+ static int
+ derive_key(libzfs_handle_t *hdl, zfs_keyformat_t format, uint64_t iters,
+ uint8_t *key_material, size_t key_material_len, uint64_t salt,
+@@ -793,15 +831,9 @@ derive_key(libzfs_handle_t *hdl, zfs_keyformat_t format, uint64_t iters,
+ case ZFS_KEYFORMAT_PASSPHRASE:
+ salt = LE_64(salt);
+
+- ret = PKCS5_PBKDF2_HMAC_SHA1((char *)key_material,
+- strlen((char *)key_material), ((uint8_t *)&salt),
+- sizeof (uint64_t), iters, WRAPPING_KEY_LEN, key);
+- if (ret != 1) {
+- ret = EIO;
+- zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
+- "Failed to generate key from passphrase."));
+- goto error;
+- }
++ pbkdf2_hmac_sha1((unsigned char *)key, WRAPPING_KEY_LEN,
++ (char *)key_material, strlen((char *)key_material),
++ (char *)&salt, sizeof salt, iters);
+ break;
+ default:
+ ret = EINVAL;
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0002-Use-find-exec-rm-instead-of-non-portable-delete.patch b/pkg/zfs/patch/0002-Use-find-exec-rm-instead-of-non-portable-delete.patch
@@ -0,0 +1,90 @@
+From 8da3e065051442982e255786a45fd5eea01321a9 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 17 Jan 2023 12:56:34 -0800
+Subject: [PATCH] Use find -exec rm instead of non-portable -delete
+
+---
+ config/ax_code_coverage.m4 | 2 +-
+ module/Makefile.in | 4 ++--
+ .../tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh | 2 +-
+ .../tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh | 2 +-
+ .../tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib | 2 +-
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/config/ax_code_coverage.m4 b/config/ax_code_coverage.m4
+index 3e3c666f3..fbe46db1f 100644
+--- a/config/ax_code_coverage.m4
++++ b/config/ax_code_coverage.m4
+@@ -153,7 +153,7 @@ distclean: code-coverage-clean
+ code-coverage-clean:
+ -$(LCOV) --directory $(top_builddir) -z
+ -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+- -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
++ -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -exec rm -- {} +
+ ']
+ ], [
+ [CODE_COVERAGE_RULES_CHECK='
+diff --git a/module/Makefile.in b/module/Makefile.in
+index b6338430e..d87fb729d 100644
+--- a/module/Makefile.in
++++ b/module/Makefile.in
+@@ -70,7 +70,7 @@ clean-Linux:
+ @CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ M="$$PWD" @KERNEL_MAKE@ clean
+
+ $(RM) @LINUX_SYMBOLS@ Module.markers
+- find . -name '*.ur-safe' -type f -delete
++ find . -name '*.ur-safe' -type f -exec $(RM) -- {} +
+
+ clean-FreeBSD:
+ +$(FMAKE) clean
+@@ -86,7 +86,7 @@ modules_install-Linux:
+ @# Remove extraneous build products when packaging
+ kmoddir=$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
+ if [ -n "$(DESTDIR)" ]; then \
+- find $$kmoddir -name 'modules.*' -delete; \
++ find $$kmoddir -name 'modules.*' -exec $(RM) -- {} +; \
+ fi
+ @# Debian ships tiny fake System.map files that are
+ @# syntactically valid but just say
+diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh
+index 0d08cf629..7714d02cd 100755
+--- a/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh
++++ b/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh
+@@ -33,7 +33,7 @@ function cleanup
+ for snap in $TESTSNAP1 $TESTSNAP2; do
+ snapexists "$snap" && destroy_dataset "$snap"
+ done
+- find "$MNTPOINT" -type f -delete
++ find "$MNTPOINT" -type f -exec rm -- {} +
+ rm -f "$FILEDIFF"
+ }
+
+diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh
+index da0aebe6b..7d5242ee0 100755
+--- a/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh
++++ b/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh
+@@ -61,7 +61,7 @@ test_pool ()
+ object=$(ls -i $mntpnt | awk '{print $1}')
+ log_must zfs snapshot $POOL/fs@a
+ while true; do
+- log_must find $mntpnt/ -type f -delete
++ log_must find $mntpnt/ -type f -exec rm -- {} +
+ sync
+ log_must mkfiles "$mntpnt/" 4000
+ sync
+diff --git a/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib b/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib
+index b69d2ce02..54f3e459e 100644
+--- a/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib
++++ b/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_common.kshlib
+@@ -60,7 +60,7 @@ function udev_cleanup
+
+ udevadm settle
+ # find all dangling links and delete them
+- find -L "${ZVOL_DEVDIR}" -type l -print -delete
++ find -L "${ZVOL_DEVDIR}" -type l -print -exec rm -- {} +
+ # purge those links from udev database
+ udevadm info --cleanup-db
+ }
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0003-Use-AC_PROG_FGREP-to-detect-fgrep.patch b/pkg/zfs/patch/0003-Use-AC_PROG_FGREP-to-detect-fgrep.patch
@@ -0,0 +1,41 @@
+From 4f4a44f8c83179ee98397faa773f2e4c1faa066b Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 17 Jan 2023 12:57:13 -0800
+Subject: [PATCH] Use AC_PROG_FGREP to detect fgrep
+
+fgrep is not standard, so use AC_PROG_FGREP to detect the appropriate
+command.
+---
+ config/kernel.m4 | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/config/kernel.m4 b/config/kernel.m4
+index 3a059b73a..3f535fdb3 100644
+--- a/config/kernel.m4
++++ b/config/kernel.m4
+@@ -324,6 +324,7 @@ dnl # and `/usr/src/linux-*` with the highest version number according
+ dnl # to `sort -V` is assumed to be both source and build directory.
+ dnl #
+ AC_DEFUN([ZFS_AC_KERNEL], [
++ AC_REQUIRE([AC_PROG_FGREP])
+ AC_ARG_WITH([linux],
+ AS_HELP_STRING([--with-linux=PATH],
+ [Path to kernel source]),
+@@ -404,11 +405,11 @@ AC_DEFUN([ZFS_AC_KERNEL], [
+ utsrelease1=$kernelbuild/include/linux/version.h
+ utsrelease2=$kernelbuild/include/linux/utsrelease.h
+ utsrelease3=$kernelbuild/include/generated/utsrelease.h
+- AS_IF([test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1], [
++ AS_IF([test -r $utsrelease1 && $FGREP -q UTS_RELEASE $utsrelease1], [
+ utsrelease=$utsrelease1
+- ], [test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2], [
++ ], [test -r $utsrelease2 && $FGREP -q UTS_RELEASE $utsrelease2], [
+ utsrelease=$utsrelease2
+- ], [test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3], [
++ ], [test -r $utsrelease3 && $FGREP -q UTS_RELEASE $utsrelease3], [
+ utsrelease=$utsrelease3
+ ])
+
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0004-Use-__asm__-instead-of-asm-to-compile-with-std-c99.patch b/pkg/zfs/patch/0004-Use-__asm__-instead-of-asm-to-compile-with-std-c99.patch
@@ -0,0 +1,221 @@
+From 6f50ce7e45a1d35ed170a22c7b465445cc5437fa Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 17 Jan 2023 13:07:11 -0800
+Subject: [PATCH] Use __asm__ instead of asm to compile with -std=c99
+
+---
+ module/zcommon/zfs_fletcher_intel.c | 44 +++++++--------
+ module/zcommon/zfs_fletcher_sse.c | 86 ++++++++++++++---------------
+ 2 files changed, 65 insertions(+), 65 deletions(-)
+
+diff --git a/module/zcommon/zfs_fletcher_intel.c b/module/zcommon/zfs_fletcher_intel.c
+index 5136a01ec..14eecb192 100644
+--- a/module/zcommon/zfs_fletcher_intel.c
++++ b/module/zcommon/zfs_fletcher_intel.c
+@@ -83,18 +83,18 @@ fletcher_4_avx2_fini(fletcher_4_ctx_t *ctx, zio_cksum_t *zcp)
+
+ #define FLETCHER_4_AVX2_RESTORE_CTX(ctx) \
+ { \
+- asm volatile("vmovdqu %0, %%ymm0" :: "m" ((ctx)->avx[0])); \
+- asm volatile("vmovdqu %0, %%ymm1" :: "m" ((ctx)->avx[1])); \
+- asm volatile("vmovdqu %0, %%ymm2" :: "m" ((ctx)->avx[2])); \
+- asm volatile("vmovdqu %0, %%ymm3" :: "m" ((ctx)->avx[3])); \
++ __asm__ volatile("vmovdqu %0, %%ymm0" :: "m" ((ctx)->avx[0])); \
++ __asm__ volatile("vmovdqu %0, %%ymm1" :: "m" ((ctx)->avx[1])); \
++ __asm__ volatile("vmovdqu %0, %%ymm2" :: "m" ((ctx)->avx[2])); \
++ __asm__ volatile("vmovdqu %0, %%ymm3" :: "m" ((ctx)->avx[3])); \
+ }
+
+ #define FLETCHER_4_AVX2_SAVE_CTX(ctx) \
+ { \
+- asm volatile("vmovdqu %%ymm0, %0" : "=m" ((ctx)->avx[0])); \
+- asm volatile("vmovdqu %%ymm1, %0" : "=m" ((ctx)->avx[1])); \
+- asm volatile("vmovdqu %%ymm2, %0" : "=m" ((ctx)->avx[2])); \
+- asm volatile("vmovdqu %%ymm3, %0" : "=m" ((ctx)->avx[3])); \
++ __asm__ volatile("vmovdqu %%ymm0, %0" : "=m" ((ctx)->avx[0])); \
++ __asm__ volatile("vmovdqu %%ymm1, %0" : "=m" ((ctx)->avx[1])); \
++ __asm__ volatile("vmovdqu %%ymm2, %0" : "=m" ((ctx)->avx[2])); \
++ __asm__ volatile("vmovdqu %%ymm3, %0" : "=m" ((ctx)->avx[3])); \
+ }
+
+
+@@ -109,15 +109,15 @@ fletcher_4_avx2_native(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size)
+ FLETCHER_4_AVX2_RESTORE_CTX(ctx);
+
+ for (; ip < ipend; ip += 2) {
+- asm volatile("vpmovzxdq %0, %%ymm4"::"m" (*ip));
+- asm volatile("vpaddq %ymm4, %ymm0, %ymm0");
+- asm volatile("vpaddq %ymm0, %ymm1, %ymm1");
+- asm volatile("vpaddq %ymm1, %ymm2, %ymm2");
+- asm volatile("vpaddq %ymm2, %ymm3, %ymm3");
++ __asm__ volatile("vpmovzxdq %0, %%ymm4"::"m" (*ip));
++ __asm__ volatile("vpaddq %ymm4, %ymm0, %ymm0");
++ __asm__ volatile("vpaddq %ymm0, %ymm1, %ymm1");
++ __asm__ volatile("vpaddq %ymm1, %ymm2, %ymm2");
++ __asm__ volatile("vpaddq %ymm2, %ymm3, %ymm3");
+ }
+
+ FLETCHER_4_AVX2_SAVE_CTX(ctx);
+- asm volatile("vzeroupper");
++ __asm__ volatile("vzeroupper");
+
+ kfpu_end();
+ }
+@@ -136,20 +136,20 @@ fletcher_4_avx2_byteswap(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size)
+
+ FLETCHER_4_AVX2_RESTORE_CTX(ctx);
+
+- asm volatile("vmovdqu %0, %%ymm5" :: "m" (mask));
++ __asm__ volatile("vmovdqu %0, %%ymm5" :: "m" (mask));
+
+ for (; ip < ipend; ip += 2) {
+- asm volatile("vpmovzxdq %0, %%ymm4"::"m" (*ip));
+- asm volatile("vpshufb %ymm5, %ymm4, %ymm4");
++ __asm__ volatile("vpmovzxdq %0, %%ymm4"::"m" (*ip));
++ __asm__ volatile("vpshufb %ymm5, %ymm4, %ymm4");
+
+- asm volatile("vpaddq %ymm4, %ymm0, %ymm0");
+- asm volatile("vpaddq %ymm0, %ymm1, %ymm1");
+- asm volatile("vpaddq %ymm1, %ymm2, %ymm2");
+- asm volatile("vpaddq %ymm2, %ymm3, %ymm3");
++ __asm__ volatile("vpaddq %ymm4, %ymm0, %ymm0");
++ __asm__ volatile("vpaddq %ymm0, %ymm1, %ymm1");
++ __asm__ volatile("vpaddq %ymm1, %ymm2, %ymm2");
++ __asm__ volatile("vpaddq %ymm2, %ymm3, %ymm3");
+ }
+
+ FLETCHER_4_AVX2_SAVE_CTX(ctx);
+- asm volatile("vzeroupper");
++ __asm__ volatile("vzeroupper");
+
+ kfpu_end();
+ }
+diff --git a/module/zcommon/zfs_fletcher_sse.c b/module/zcommon/zfs_fletcher_sse.c
+index 15ce9b07f..3aca5485d 100644
+--- a/module/zcommon/zfs_fletcher_sse.c
++++ b/module/zcommon/zfs_fletcher_sse.c
+@@ -82,18 +82,18 @@ fletcher_4_sse2_fini(fletcher_4_ctx_t *ctx, zio_cksum_t *zcp)
+
+ #define FLETCHER_4_SSE_RESTORE_CTX(ctx) \
+ { \
+- asm volatile("movdqu %0, %%xmm0" :: "m" ((ctx)->sse[0])); \
+- asm volatile("movdqu %0, %%xmm1" :: "m" ((ctx)->sse[1])); \
+- asm volatile("movdqu %0, %%xmm2" :: "m" ((ctx)->sse[2])); \
+- asm volatile("movdqu %0, %%xmm3" :: "m" ((ctx)->sse[3])); \
++ __asm__ volatile("movdqu %0, %%xmm0" :: "m" ((ctx)->sse[0])); \
++ __asm__ volatile("movdqu %0, %%xmm1" :: "m" ((ctx)->sse[1])); \
++ __asm__ volatile("movdqu %0, %%xmm2" :: "m" ((ctx)->sse[2])); \
++ __asm__ volatile("movdqu %0, %%xmm3" :: "m" ((ctx)->sse[3])); \
+ }
+
+ #define FLETCHER_4_SSE_SAVE_CTX(ctx) \
+ { \
+- asm volatile("movdqu %%xmm0, %0" : "=m" ((ctx)->sse[0])); \
+- asm volatile("movdqu %%xmm1, %0" : "=m" ((ctx)->sse[1])); \
+- asm volatile("movdqu %%xmm2, %0" : "=m" ((ctx)->sse[2])); \
+- asm volatile("movdqu %%xmm3, %0" : "=m" ((ctx)->sse[3])); \
++ __asm__ volatile("movdqu %%xmm0, %0" : "=m" ((ctx)->sse[0])); \
++ __asm__ volatile("movdqu %%xmm1, %0" : "=m" ((ctx)->sse[1])); \
++ __asm__ volatile("movdqu %%xmm2, %0" : "=m" ((ctx)->sse[2])); \
++ __asm__ volatile("movdqu %%xmm3, %0" : "=m" ((ctx)->sse[3])); \
+ }
+
+ static void
+@@ -106,21 +106,21 @@ fletcher_4_sse2_native(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size)
+
+ FLETCHER_4_SSE_RESTORE_CTX(ctx);
+
+- asm volatile("pxor %xmm4, %xmm4");
++ __asm__ volatile("pxor %xmm4, %xmm4");
+
+ for (; ip < ipend; ip += 2) {
+- asm volatile("movdqu %0, %%xmm5" :: "m"(*ip));
+- asm volatile("movdqa %xmm5, %xmm6");
+- asm volatile("punpckldq %xmm4, %xmm5");
+- asm volatile("punpckhdq %xmm4, %xmm6");
+- asm volatile("paddq %xmm5, %xmm0");
+- asm volatile("paddq %xmm0, %xmm1");
+- asm volatile("paddq %xmm1, %xmm2");
+- asm volatile("paddq %xmm2, %xmm3");
+- asm volatile("paddq %xmm6, %xmm0");
+- asm volatile("paddq %xmm0, %xmm1");
+- asm volatile("paddq %xmm1, %xmm2");
+- asm volatile("paddq %xmm2, %xmm3");
++ __asm__ volatile("movdqu %0, %%xmm5" :: "m"(*ip));
++ __asm__ volatile("movdqa %xmm5, %xmm6");
++ __asm__ volatile("punpckldq %xmm4, %xmm5");
++ __asm__ volatile("punpckhdq %xmm4, %xmm6");
++ __asm__ volatile("paddq %xmm5, %xmm0");
++ __asm__ volatile("paddq %xmm0, %xmm1");
++ __asm__ volatile("paddq %xmm1, %xmm2");
++ __asm__ volatile("paddq %xmm2, %xmm3");
++ __asm__ volatile("paddq %xmm6, %xmm0");
++ __asm__ volatile("paddq %xmm0, %xmm1");
++ __asm__ volatile("paddq %xmm1, %xmm2");
++ __asm__ volatile("paddq %xmm2, %xmm3");
+ }
+
+ FLETCHER_4_SSE_SAVE_CTX(ctx);
+@@ -141,13 +141,13 @@ fletcher_4_sse2_byteswap(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size)
+ for (; ip < ipend; ip += 2) {
+ uint32_t scratch1 = BSWAP_32(ip[0]);
+ uint32_t scratch2 = BSWAP_32(ip[1]);
+- asm volatile("movd %0, %%xmm5" :: "r"(scratch1));
+- asm volatile("movd %0, %%xmm6" :: "r"(scratch2));
+- asm volatile("punpcklqdq %xmm6, %xmm5");
+- asm volatile("paddq %xmm5, %xmm0");
+- asm volatile("paddq %xmm0, %xmm1");
+- asm volatile("paddq %xmm1, %xmm2");
+- asm volatile("paddq %xmm2, %xmm3");
++ __asm__ volatile("movd %0, %%xmm5" :: "r"(scratch1));
++ __asm__ volatile("movd %0, %%xmm6" :: "r"(scratch2));
++ __asm__ volatile("punpcklqdq %xmm6, %xmm5");
++ __asm__ volatile("paddq %xmm5, %xmm0");
++ __asm__ volatile("paddq %xmm0, %xmm1");
++ __asm__ volatile("paddq %xmm1, %xmm2");
++ __asm__ volatile("paddq %xmm2, %xmm3");
+ }
+
+ FLETCHER_4_SSE_SAVE_CTX(ctx);
+@@ -188,23 +188,23 @@ fletcher_4_ssse3_byteswap(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size)
+
+ FLETCHER_4_SSE_RESTORE_CTX(ctx);
+
+- asm volatile("movdqu %0, %%xmm7"::"m" (mask));
+- asm volatile("pxor %xmm4, %xmm4");
++ __asm__ volatile("movdqu %0, %%xmm7"::"m" (mask));
++ __asm__ volatile("pxor %xmm4, %xmm4");
+
+ for (; ip < ipend; ip += 2) {
+- asm volatile("movdqu %0, %%xmm5"::"m" (*ip));
+- asm volatile("pshufb %xmm7, %xmm5");
+- asm volatile("movdqa %xmm5, %xmm6");
+- asm volatile("punpckldq %xmm4, %xmm5");
+- asm volatile("punpckhdq %xmm4, %xmm6");
+- asm volatile("paddq %xmm5, %xmm0");
+- asm volatile("paddq %xmm0, %xmm1");
+- asm volatile("paddq %xmm1, %xmm2");
+- asm volatile("paddq %xmm2, %xmm3");
+- asm volatile("paddq %xmm6, %xmm0");
+- asm volatile("paddq %xmm0, %xmm1");
+- asm volatile("paddq %xmm1, %xmm2");
+- asm volatile("paddq %xmm2, %xmm3");
++ __asm__ volatile("movdqu %0, %%xmm5"::"m" (*ip));
++ __asm__ volatile("pshufb %xmm7, %xmm5");
++ __asm__ volatile("movdqa %xmm5, %xmm6");
++ __asm__ volatile("punpckldq %xmm4, %xmm5");
++ __asm__ volatile("punpckhdq %xmm4, %xmm6");
++ __asm__ volatile("paddq %xmm5, %xmm0");
++ __asm__ volatile("paddq %xmm0, %xmm1");
++ __asm__ volatile("paddq %xmm1, %xmm2");
++ __asm__ volatile("paddq %xmm2, %xmm3");
++ __asm__ volatile("paddq %xmm6, %xmm0");
++ __asm__ volatile("paddq %xmm0, %xmm1");
++ __asm__ volatile("paddq %xmm1, %xmm2");
++ __asm__ volatile("paddq %xmm2, %xmm3");
+ }
+
+ FLETCHER_4_SSE_SAVE_CTX(ctx);
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0005-Use-__func__-instead-of-obsolete-and-non-standard-__.patch b/pkg/zfs/patch/0005-Use-__func__-instead-of-obsolete-and-non-standard-__.patch
@@ -0,0 +1,401 @@
+From 35e48da3329aff4eee7bb3ff2ddd81d982cfa307 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:12:32 -0800
+Subject: [PATCH] Use __func__ instead of obsolete and non-standard
+ __FUNCTION__
+
+---
+ include/os/freebsd/spl/sys/debug.h | 18 +++++++++---------
+ include/os/linux/spl/sys/debug.h | 18 +++++++++---------
+ lib/libspl/include/assert.h | 18 +++++++++---------
+ module/os/freebsd/zfs/crypto_os.c | 22 +++++++++++-----------
+ module/os/freebsd/zfs/zfs_vfsops.c | 4 ++--
+ module/os/freebsd/zfs/zio_crypt.c | 6 +++---
+ 6 files changed, 43 insertions(+), 43 deletions(-)
+
+diff --git a/include/os/freebsd/spl/sys/debug.h b/include/os/freebsd/spl/sys/debug.h
+index 1f820bc33..a5c12daa5 100644
+--- a/include/os/freebsd/spl/sys/debug.h
++++ b/include/os/freebsd/spl/sys/debug.h
+@@ -66,18 +66,18 @@ void spl_dumpstack(void);
+
+ /* BEGIN CSTYLED */
+ #define PANIC(fmt, a...) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
++ spl_panic(__FILE__, __func__, __LINE__, fmt, ## a)
+
+ #define VERIFY(cond) \
+ (void) (unlikely(!(cond)) && \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "%s", "VERIFY(" #cond ") failed\n"))
+
+ #define VERIFY3B(LEFT, OP, RIGHT) do { \
+ const boolean_t _verify3_left = (boolean_t)(LEFT); \
+ const boolean_t _verify3_right = (boolean_t)(RIGHT);\
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%d " #OP " %d)\n", \
+ (boolean_t) (_verify3_left), \
+@@ -88,7 +88,7 @@ void spl_dumpstack(void);
+ const int64_t _verify3_left = (int64_t)(LEFT); \
+ const int64_t _verify3_right = (int64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%lld " #OP " %lld)\n", \
+ (long long) (_verify3_left), \
+@@ -99,7 +99,7 @@ void spl_dumpstack(void);
+ const uint64_t _verify3_left = (uint64_t)(LEFT); \
+ const uint64_t _verify3_right = (uint64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%llu " #OP " %llu)\n", \
+ (unsigned long long) (_verify3_left), \
+@@ -110,7 +110,7 @@ void spl_dumpstack(void);
+ const uintptr_t _verify3_left = (uintptr_t)(LEFT); \
+ const uintptr_t _verify3_right = (uintptr_t)(RIGHT);\
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%px " #OP " %px)\n", \
+ (void *) (_verify3_left), \
+@@ -121,7 +121,7 @@ void spl_dumpstack(void);
+ const int64_t _verify3_left = (int64_t)(0); \
+ const int64_t _verify3_right = (int64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left == _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(0 == " #RIGHT ") " \
+ "failed (0 == %lld)\n", \
+ (long long) (_verify3_right)); \
+@@ -155,11 +155,11 @@ void spl_dumpstack(void);
+ #define ASSERT VERIFY
+ #define IMPLY(A, B) \
+ ((void)(likely((!(A)) || (B)) || \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "(" #A ") implies (" #B ")")))
+ #define EQUIV(A, B) \
+ ((void)(likely(!!(A) == !!(B)) || \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "(" #A ") is equivalent to (" #B ")")))
+ /* END CSTYLED */
+
+diff --git a/include/os/linux/spl/sys/debug.h b/include/os/linux/spl/sys/debug.h
+index dc6b85eeb..b46c174cd 100644
+--- a/include/os/linux/spl/sys/debug.h
++++ b/include/os/linux/spl/sys/debug.h
+@@ -60,18 +60,18 @@ void spl_dumpstack(void);
+
+ /* BEGIN CSTYLED */
+ #define PANIC(fmt, a...) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)
++ spl_panic(__FILE__, __func__, __LINE__, fmt, ## a)
+
+ #define VERIFY(cond) \
+ (void) (unlikely(!(cond)) && \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "%s", "VERIFY(" #cond ") failed\n"))
+
+ #define VERIFY3B(LEFT, OP, RIGHT) do { \
+ const boolean_t _verify3_left = (boolean_t)(LEFT); \
+ const boolean_t _verify3_right = (boolean_t)(RIGHT);\
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%d " #OP " %d)\n", \
+ (boolean_t) (_verify3_left), \
+@@ -82,7 +82,7 @@ void spl_dumpstack(void);
+ const int64_t _verify3_left = (int64_t)(LEFT); \
+ const int64_t _verify3_right = (int64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%lld " #OP " %lld)\n", \
+ (long long) (_verify3_left), \
+@@ -93,7 +93,7 @@ void spl_dumpstack(void);
+ const uint64_t _verify3_left = (uint64_t)(LEFT); \
+ const uint64_t _verify3_right = (uint64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%llu " #OP " %llu)\n", \
+ (unsigned long long) (_verify3_left), \
+@@ -104,7 +104,7 @@ void spl_dumpstack(void);
+ const uintptr_t _verify3_left = (uintptr_t)(LEFT); \
+ const uintptr_t _verify3_right = (uintptr_t)(RIGHT);\
+ if (unlikely(!(_verify3_left OP _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
+ "failed (%px " #OP " %px)\n", \
+ (void *) (_verify3_left), \
+@@ -115,7 +115,7 @@ void spl_dumpstack(void);
+ const int64_t _verify3_left = (int64_t)(0); \
+ const int64_t _verify3_right = (int64_t)(RIGHT); \
+ if (unlikely(!(_verify3_left == _verify3_right))) \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "VERIFY3(0 == " #RIGHT ") " \
+ "failed (0 == %lld)\n", \
+ (long long) (_verify3_right)); \
+@@ -155,11 +155,11 @@ void spl_dumpstack(void);
+ #define ASSERT VERIFY
+ #define IMPLY(A, B) \
+ ((void)(likely((!(A)) || (B)) || \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "(" #A ") implies (" #B ")")))
+ #define EQUIV(A, B) \
+ ((void)(likely(!!(A) == !!(B)) || \
+- spl_panic(__FILE__, __FUNCTION__, __LINE__, \
++ spl_panic(__FILE__, __func__, __LINE__, \
+ "(" #A ") is equivalent to (" #B ")")))
+ /* END CSTYLED */
+
+diff --git a/lib/libspl/include/assert.h b/lib/libspl/include/assert.h
+index 0503ce492..73f33077c 100644
+--- a/lib/libspl/include/assert.h
++++ b/lib/libspl/include/assert.h
+@@ -53,17 +53,17 @@ libspl_assert(const char *buf, const char *file, const char *func, int line)
+
+ #define VERIFY(cond) \
+ (void) ((!(cond)) && \
+- libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__))
++ libspl_assert(#cond, __FILE__, __func__, __LINE__))
+ #define verify(cond) \
+ (void) ((!(cond)) && \
+- libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__))
++ libspl_assert(#cond, __FILE__, __func__, __LINE__))
+
+ #define VERIFY3B(LEFT, OP, RIGHT) \
+ do { \
+ const boolean_t __left = (boolean_t)(LEFT); \
+ const boolean_t __right = (boolean_t)(RIGHT); \
+ if (!(__left OP __right)) \
+- libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
++ libspl_assertf(__FILE__, __func__, __LINE__, \
+ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
+ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
+ } while (0)
+@@ -73,7 +73,7 @@ do { \
+ const int64_t __left = (int64_t)(LEFT); \
+ const int64_t __right = (int64_t)(RIGHT); \
+ if (!(__left OP __right)) \
+- libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
++ libspl_assertf(__FILE__, __func__, __LINE__, \
+ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
+ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
+ } while (0)
+@@ -83,7 +83,7 @@ do { \
+ const uint64_t __left = (uint64_t)(LEFT); \
+ const uint64_t __right = (uint64_t)(RIGHT); \
+ if (!(__left OP __right)) \
+- libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
++ libspl_assertf(__FILE__, __func__, __LINE__, \
+ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
+ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
+ } while (0)
+@@ -93,7 +93,7 @@ do { \
+ const uintptr_t __left = (uintptr_t)(LEFT); \
+ const uintptr_t __right = (uintptr_t)(RIGHT); \
+ if (!(__left OP __right)) \
+- libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
++ libspl_assertf(__FILE__, __func__, __LINE__, \
+ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
+ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
+ } while (0)
+@@ -102,7 +102,7 @@ do { \
+ do { \
+ const uint64_t __left = (uint64_t)(LEFT); \
+ if (!(__left == 0)) \
+- libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \
++ libspl_assertf(__FILE__, __func__, __LINE__, \
+ "%s == 0 (0x%llx == 0)", #LEFT, \
+ (u_longlong_t)__left); \
+ } while (0)
+@@ -140,11 +140,11 @@ do { \
+ #define IMPLY(A, B) \
+ ((void)(((!(A)) || (B)) || \
+ libspl_assert("(" #A ") implies (" #B ")", \
+- __FILE__, __FUNCTION__, __LINE__)))
++ __FILE__, __func__, __LINE__)))
+ #define EQUIV(A, B) \
+ ((void)((!!(A) == !!(B)) || \
+ libspl_assert("(" #A ") is equivalent to (" #B ")", \
+- __FILE__, __FUNCTION__, __LINE__)))
++ __FILE__, __func__, __LINE__)))
+
+ #endif /* NDEBUG */
+
+diff --git a/module/os/freebsd/zfs/crypto_os.c b/module/os/freebsd/zfs/crypto_os.c
+index f342c5e85..0ebc56e95 100644
+--- a/module/os/freebsd/zfs/crypto_os.c
++++ b/module/os/freebsd/zfs/crypto_os.c
+@@ -229,7 +229,7 @@ freebsd_crypt_uio_debug_log(boolean_t encrypt,
+
+ printf("%s(%s, %p, { %s, %d, %d, %s }, %p, { %d, %p, %u }, "
+ "%p, %u, %u)\n",
+- __FUNCTION__, encrypt ? "encrypt" : "decrypt", input_sessionp,
++ __func__, encrypt ? "encrypt" : "decrypt", input_sessionp,
+ c_info->ci_algname, c_info->ci_crypt_type,
+ (unsigned int)c_info->ci_keylen, c_info->ci_name,
+ data_uio, key->ck_format, key->ck_data,
+@@ -265,7 +265,7 @@ freebsd_crypt_newsession(freebsd_crypt_session_t *sessp,
+
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%p, { %s, %d, %d, %s }, { %d, %p, %u })\n",
+- __FUNCTION__, sessp,
++ __func__, sessp,
+ c_info->ci_algname, c_info->ci_crypt_type,
+ (unsigned int)c_info->ci_keylen, c_info->ci_name,
+ key->ck_format, key->ck_data, (unsigned int)key->ck_length);
+@@ -331,7 +331,7 @@ freebsd_crypt_newsession(freebsd_crypt_session_t *sessp,
+ bad:
+ #ifdef FCRYPTO_DEBUG
+ if (error)
+- printf("%s: returning error %d\n", __FUNCTION__, error);
++ printf("%s: returning error %d\n", __func__, error);
+ #endif
+ return (error);
+ }
+@@ -387,7 +387,7 @@ freebsd_crypt_uio(boolean_t encrypt,
+ out:
+ #ifdef FCRYPTO_DEBUG
+ if (error)
+- printf("%s: returning error %d\n", __FUNCTION__, error);
++ printf("%s: returning error %d\n", __func__, error);
+ #endif
+ if (input_sessionp == NULL) {
+ freebsd_crypt_freesession(session);
+@@ -409,7 +409,7 @@ freebsd_crypt_newsession(freebsd_crypt_session_t *sessp,
+
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%p, { %s, %d, %d, %s }, { %d, %p, %u })\n",
+- __FUNCTION__, sessp,
++ __func__, sessp,
+ c_info->ci_algname, c_info->ci_crypt_type,
+ (unsigned int)c_info->ci_keylen, c_info->ci_name,
+ key->ck_format, key->ck_data, (unsigned int)key->ck_length);
+@@ -463,7 +463,7 @@ freebsd_crypt_newsession(freebsd_crypt_session_t *sessp,
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%d): Using crypt %s (key length %u [%u bytes]), "
+ "auth %s (key length %d)\n",
+- __FUNCTION__, __LINE__,
++ __func__, __LINE__,
+ xform->name, (unsigned int)key->ck_length,
+ (unsigned int)key->ck_length/8,
+ xauth->name, xauth->keysize);
+@@ -489,7 +489,7 @@ freebsd_crypt_newsession(freebsd_crypt_session_t *sessp,
+ CRYPTOCAP_F_HARDWARE | CRYPTOCAP_F_SOFTWARE);
+ if (error != 0) {
+ printf("%s(%d): crypto_newsession failed with %d\n",
+- __FUNCTION__, __LINE__, error);
++ __func__, __LINE__, error);
+ goto bad;
+ }
+ sessp->fs_sid = sid;
+@@ -569,7 +569,7 @@ freebsd_crypt_uio(boolean_t encrypt,
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%d): Using crypt %s (key length %u [%u bytes]), "
+ "auth %s (key length %d)\n",
+- __FUNCTION__, __LINE__,
++ __func__, __LINE__,
+ xform->name, (unsigned int)key->ck_length,
+ (unsigned int)key->ck_length/8,
+ xauth->name, xauth->keysize);
+@@ -603,7 +603,7 @@ freebsd_crypt_uio(boolean_t encrypt,
+ auth_desc->crd_alg = xauth->type;
+ #ifdef FCRYPTO_DEBUG
+ printf("%s: auth: skip = %u, len = %u, inject = %u\n",
+- __FUNCTION__, auth_desc->crd_skip, auth_desc->crd_len,
++ __func__, auth_desc->crd_skip, auth_desc->crd_len,
+ auth_desc->crd_inject);
+ #endif
+
+@@ -617,7 +617,7 @@ freebsd_crypt_uio(boolean_t encrypt,
+
+ #ifdef FCRYPTO_DEBUG
+ printf("%s: enc: skip = %u, len = %u, inject = %u\n",
+- __FUNCTION__, enc_desc->crd_skip, enc_desc->crd_len,
++ __func__, enc_desc->crd_skip, enc_desc->crd_len,
+ enc_desc->crd_inject);
+ #endif
+
+@@ -634,7 +634,7 @@ out:
+ bad:
+ #ifdef FCRYPTO_DEBUG
+ if (error)
+- printf("%s: returning error %d\n", __FUNCTION__, error);
++ printf("%s: returning error %d\n", __func__, error);
+ #endif
+ return (error);
+ }
+diff --git a/module/os/freebsd/zfs/zfs_vfsops.c b/module/os/freebsd/zfs/zfs_vfsops.c
+index 05d41d4e3..01b12b12c 100644
+--- a/module/os/freebsd/zfs/zfs_vfsops.c
++++ b/module/os/freebsd/zfs/zfs_vfsops.c
+@@ -244,7 +244,7 @@ zfs_getquota(zfsvfs_t *zfsvfs, uid_t id, int isgroup, struct dqblk64 *dqp)
+ if ((error = zap_lookup(zfsvfs->z_os, quotaobj,
+ buf, sizeof (quota), 1, "a)) != 0) {
+ dprintf("%s(%d): quotaobj lookup failed\n",
+- __FUNCTION__, __LINE__);
++ __func__, __LINE__);
+ goto done;
+ }
+ /*
+@@ -255,7 +255,7 @@ zfs_getquota(zfsvfs_t *zfsvfs, uid_t id, int isgroup, struct dqblk64 *dqp)
+ error = zap_lookup(zfsvfs->z_os, usedobj, buf, sizeof (used), 1, &used);
+ if (error && error != ENOENT) {
+ dprintf("%s(%d): usedobj failed; %d\n",
+- __FUNCTION__, __LINE__, error);
++ __func__, __LINE__, error);
+ goto done;
+ }
+ dqp->dqb_curblocks = btodb(used);
+diff --git a/module/os/freebsd/zfs/zio_crypt.c b/module/os/freebsd/zfs/zio_crypt.c
+index 9e0ab52a2..997f2492f 100644
+--- a/module/os/freebsd/zfs/zio_crypt.c
++++ b/module/os/freebsd/zfs/zio_crypt.c
+@@ -420,7 +420,7 @@ zio_do_crypt_uio_opencrypto(boolean_t encrypt, freebsd_crypt_session_t *sess,
+ if (ret != 0) {
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%d): Returning error %s\n",
+- __FUNCTION__, __LINE__, encrypt ? "EIO" : "ECKSUM");
++ __func__, __LINE__, encrypt ? "EIO" : "ECKSUM");
+ #endif
+ ret = SET_ERROR(encrypt ? EIO : ECKSUM);
+ }
+@@ -1195,7 +1195,7 @@ zio_crypt_do_indirect_mac_checksum_impl(boolean_t generate, void *buf,
+
+ if (bcmp(digestbuf, cksum, ZIO_DATA_MAC_LEN) != 0) {
+ #ifdef FCRYPTO_DEBUG
+- printf("%s(%d): Setting ECKSUM\n", __FUNCTION__, __LINE__);
++ printf("%s(%d): Setting ECKSUM\n", __func__, __LINE__);
+ #endif
+ return (SET_ERROR(ECKSUM));
+ }
+@@ -1700,7 +1700,7 @@ zio_do_crypt_data(boolean_t encrypt, zio_crypt_key_t *key,
+
+ #ifdef FCRYPTO_DEBUG
+ printf("%s(%s, %p, %p, %d, %p, %p, %u, %s, %p, %p, %p)\n",
+- __FUNCTION__,
++ __func__,
+ encrypt ? "encrypt" : "decrypt",
+ key, salt, ot, iv, mac, datalen,
+ byteswap ? "byteswap" : "native_endian", plainbuf,
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0006-Use-forward-declaration-instead-of-empty-struct.patch b/pkg/zfs/patch/0006-Use-forward-declaration-instead-of-empty-struct.patch
@@ -0,0 +1,25 @@
+From 50878832d41ef03d61f5db2dc7a89039b2ba5889 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:15:47 -0800
+Subject: [PATCH] Use forward declaration instead of empty struct
+
+---
+ include/sys/zfs_context.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
+index a6ff94317..42384d83a 100644
+--- a/include/sys/zfs_context.h
++++ b/include/sys/zfs_context.h
+@@ -380,7 +380,7 @@ typedef struct procfs_list {
+ } procfs_list_t;
+
+ #ifndef __cplusplus
+-struct seq_file { };
++struct seq_file;
+ void seq_printf(struct seq_file *m, const char *fmt, ...);
+
+ typedef struct procfs_list_node {
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0007-Avoid-conflict-with-C23-bool-keyword.patch b/pkg/zfs/patch/0007-Avoid-conflict-with-C23-bool-keyword.patch
@@ -0,0 +1,25 @@
+From bf9e24e3fe87474e71555b3421bfaa7d0c5e1882 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:18:50 -0800
+Subject: [PATCH] Avoid conflict with C23 bool keyword
+
+---
+ cmd/zed/agents/fmd_api.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmd/zed/agents/fmd_api.h b/cmd/zed/agents/fmd_api.h
+index 4f06fb244..45c1f2ce2 100644
+--- a/cmd/zed/agents/fmd_api.h
++++ b/cmd/zed/agents/fmd_api.h
+@@ -109,7 +109,7 @@ typedef struct fmd_stat {
+ uint_t fmds_type; /* statistic type (see above) */
+ char fmds_desc[64]; /* statistic description */
+ union {
+- int bool; /* FMD_TYPE_BOOL */
++ int b; /* FMD_TYPE_BOOL */
+ int32_t i32; /* FMD_TYPE_INT32 */
+ uint32_t ui32; /* FMD_TYPE_UINT32 */
+ int64_t i64; /* FMD_TYPE_INT64 */
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0008-Remove-stray-at-top-level.patch b/pkg/zfs/patch/0008-Remove-stray-at-top-level.patch
@@ -0,0 +1,421 @@
+From 54212b1aebdb3c5ffa7904eed7b9a09490aca1e1 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:17:48 -0800
+Subject: [PATCH] Remove stray ';' at top-level
+
+---
+ module/avl/avl.c | 46 +++----
+ module/nvpair/nvpair.c | 240 ++++++++++++++++-----------------
+ module/zcommon/zfs_namecheck.c | 20 +--
+ module/zcommon/zfs_prop.c | 50 +++----
+ 4 files changed, 178 insertions(+), 178 deletions(-)
+
+diff --git a/module/avl/avl.c b/module/avl/avl.c
+index f761a8ae7..18dbe1b99 100644
+--- a/module/avl/avl.c
++++ b/module/avl/avl.c
+@@ -1052,26 +1052,26 @@ module_init(avl_init);
+ module_exit(avl_fini);
+ #endif
+
+-ZFS_MODULE_DESCRIPTION("Generic AVL tree implementation");
+-ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR);
+-ZFS_MODULE_LICENSE(ZFS_META_LICENSE);
+-ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
+-
+-EXPORT_SYMBOL(avl_create);
+-EXPORT_SYMBOL(avl_find);
+-EXPORT_SYMBOL(avl_insert);
+-EXPORT_SYMBOL(avl_insert_here);
+-EXPORT_SYMBOL(avl_walk);
+-EXPORT_SYMBOL(avl_first);
+-EXPORT_SYMBOL(avl_last);
+-EXPORT_SYMBOL(avl_nearest);
+-EXPORT_SYMBOL(avl_add);
+-EXPORT_SYMBOL(avl_swap);
+-EXPORT_SYMBOL(avl_is_empty);
+-EXPORT_SYMBOL(avl_remove);
+-EXPORT_SYMBOL(avl_numnodes);
+-EXPORT_SYMBOL(avl_destroy_nodes);
+-EXPORT_SYMBOL(avl_destroy);
+-EXPORT_SYMBOL(avl_update_lt);
+-EXPORT_SYMBOL(avl_update_gt);
+-EXPORT_SYMBOL(avl_update);
++ZFS_MODULE_DESCRIPTION("Generic AVL tree implementation")
++ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR)
++ZFS_MODULE_LICENSE(ZFS_META_LICENSE)
++ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE)
++
++EXPORT_SYMBOL(avl_create)
++EXPORT_SYMBOL(avl_find)
++EXPORT_SYMBOL(avl_insert)
++EXPORT_SYMBOL(avl_insert_here)
++EXPORT_SYMBOL(avl_walk)
++EXPORT_SYMBOL(avl_first)
++EXPORT_SYMBOL(avl_last)
++EXPORT_SYMBOL(avl_nearest)
++EXPORT_SYMBOL(avl_add)
++EXPORT_SYMBOL(avl_swap)
++EXPORT_SYMBOL(avl_is_empty)
++EXPORT_SYMBOL(avl_remove)
++EXPORT_SYMBOL(avl_numnodes)
++EXPORT_SYMBOL(avl_destroy_nodes)
++EXPORT_SYMBOL(avl_destroy)
++EXPORT_SYMBOL(avl_update_lt)
++EXPORT_SYMBOL(avl_update_gt)
++EXPORT_SYMBOL(avl_update)
+diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c
+index 9834dedd8..6dfebb0ec 100644
+--- a/module/nvpair/nvpair.c
++++ b/module/nvpair/nvpair.c
+@@ -3256,13 +3256,13 @@ nvs_xdr_nvp_##type(XDR *xdrs, void *ptr, ...) \
+ #endif
+
+ /* BEGIN CSTYLED */
+-NVS_BUILD_XDRPROC_T(char);
+-NVS_BUILD_XDRPROC_T(short);
+-NVS_BUILD_XDRPROC_T(u_short);
+-NVS_BUILD_XDRPROC_T(int);
+-NVS_BUILD_XDRPROC_T(u_int);
+-NVS_BUILD_XDRPROC_T(longlong_t);
+-NVS_BUILD_XDRPROC_T(u_longlong_t);
++NVS_BUILD_XDRPROC_T(char)
++NVS_BUILD_XDRPROC_T(short)
++NVS_BUILD_XDRPROC_T(u_short)
++NVS_BUILD_XDRPROC_T(int)
++NVS_BUILD_XDRPROC_T(u_int)
++NVS_BUILD_XDRPROC_T(longlong_t)
++NVS_BUILD_XDRPROC_T(u_longlong_t)
+ /* END CSTYLED */
+
+ /*
+@@ -3672,121 +3672,121 @@ module_init(nvpair_init);
+ module_exit(nvpair_fini);
+ #endif
+
+-ZFS_MODULE_DESCRIPTION("Generic name/value pair implementation");
+-ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR);
+-ZFS_MODULE_LICENSE(ZFS_META_LICENSE);
+-ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
++ZFS_MODULE_DESCRIPTION("Generic name/value pair implementation")
++ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR)
++ZFS_MODULE_LICENSE(ZFS_META_LICENSE)
++ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE)
+
+-EXPORT_SYMBOL(nv_alloc_init);
+-EXPORT_SYMBOL(nv_alloc_reset);
+-EXPORT_SYMBOL(nv_alloc_fini);
++EXPORT_SYMBOL(nv_alloc_init)
++EXPORT_SYMBOL(nv_alloc_reset)
++EXPORT_SYMBOL(nv_alloc_fini)
+
+ /* list management */
+-EXPORT_SYMBOL(nvlist_alloc);
+-EXPORT_SYMBOL(nvlist_free);
+-EXPORT_SYMBOL(nvlist_size);
+-EXPORT_SYMBOL(nvlist_pack);
+-EXPORT_SYMBOL(nvlist_unpack);
+-EXPORT_SYMBOL(nvlist_dup);
+-EXPORT_SYMBOL(nvlist_merge);
+-
+-EXPORT_SYMBOL(nvlist_xalloc);
+-EXPORT_SYMBOL(nvlist_xpack);
+-EXPORT_SYMBOL(nvlist_xunpack);
+-EXPORT_SYMBOL(nvlist_xdup);
+-EXPORT_SYMBOL(nvlist_lookup_nv_alloc);
+-
+-EXPORT_SYMBOL(nvlist_add_nvpair);
+-EXPORT_SYMBOL(nvlist_add_boolean);
+-EXPORT_SYMBOL(nvlist_add_boolean_value);
+-EXPORT_SYMBOL(nvlist_add_byte);
+-EXPORT_SYMBOL(nvlist_add_int8);
+-EXPORT_SYMBOL(nvlist_add_uint8);
+-EXPORT_SYMBOL(nvlist_add_int16);
+-EXPORT_SYMBOL(nvlist_add_uint16);
+-EXPORT_SYMBOL(nvlist_add_int32);
+-EXPORT_SYMBOL(nvlist_add_uint32);
+-EXPORT_SYMBOL(nvlist_add_int64);
+-EXPORT_SYMBOL(nvlist_add_uint64);
+-EXPORT_SYMBOL(nvlist_add_string);
+-EXPORT_SYMBOL(nvlist_add_nvlist);
+-EXPORT_SYMBOL(nvlist_add_boolean_array);
+-EXPORT_SYMBOL(nvlist_add_byte_array);
+-EXPORT_SYMBOL(nvlist_add_int8_array);
+-EXPORT_SYMBOL(nvlist_add_uint8_array);
+-EXPORT_SYMBOL(nvlist_add_int16_array);
+-EXPORT_SYMBOL(nvlist_add_uint16_array);
+-EXPORT_SYMBOL(nvlist_add_int32_array);
+-EXPORT_SYMBOL(nvlist_add_uint32_array);
+-EXPORT_SYMBOL(nvlist_add_int64_array);
+-EXPORT_SYMBOL(nvlist_add_uint64_array);
+-EXPORT_SYMBOL(nvlist_add_string_array);
+-EXPORT_SYMBOL(nvlist_add_nvlist_array);
+-EXPORT_SYMBOL(nvlist_next_nvpair);
+-EXPORT_SYMBOL(nvlist_prev_nvpair);
+-EXPORT_SYMBOL(nvlist_empty);
+-EXPORT_SYMBOL(nvlist_add_hrtime);
+-
+-EXPORT_SYMBOL(nvlist_remove);
+-EXPORT_SYMBOL(nvlist_remove_nvpair);
+-EXPORT_SYMBOL(nvlist_remove_all);
+-
+-EXPORT_SYMBOL(nvlist_lookup_boolean);
+-EXPORT_SYMBOL(nvlist_lookup_boolean_value);
+-EXPORT_SYMBOL(nvlist_lookup_byte);
+-EXPORT_SYMBOL(nvlist_lookup_int8);
+-EXPORT_SYMBOL(nvlist_lookup_uint8);
+-EXPORT_SYMBOL(nvlist_lookup_int16);
+-EXPORT_SYMBOL(nvlist_lookup_uint16);
+-EXPORT_SYMBOL(nvlist_lookup_int32);
+-EXPORT_SYMBOL(nvlist_lookup_uint32);
+-EXPORT_SYMBOL(nvlist_lookup_int64);
+-EXPORT_SYMBOL(nvlist_lookup_uint64);
+-EXPORT_SYMBOL(nvlist_lookup_string);
+-EXPORT_SYMBOL(nvlist_lookup_nvlist);
+-EXPORT_SYMBOL(nvlist_lookup_boolean_array);
+-EXPORT_SYMBOL(nvlist_lookup_byte_array);
+-EXPORT_SYMBOL(nvlist_lookup_int8_array);
+-EXPORT_SYMBOL(nvlist_lookup_uint8_array);
+-EXPORT_SYMBOL(nvlist_lookup_int16_array);
+-EXPORT_SYMBOL(nvlist_lookup_uint16_array);
+-EXPORT_SYMBOL(nvlist_lookup_int32_array);
+-EXPORT_SYMBOL(nvlist_lookup_uint32_array);
+-EXPORT_SYMBOL(nvlist_lookup_int64_array);
+-EXPORT_SYMBOL(nvlist_lookup_uint64_array);
+-EXPORT_SYMBOL(nvlist_lookup_string_array);
+-EXPORT_SYMBOL(nvlist_lookup_nvlist_array);
+-EXPORT_SYMBOL(nvlist_lookup_hrtime);
+-EXPORT_SYMBOL(nvlist_lookup_pairs);
+-
+-EXPORT_SYMBOL(nvlist_lookup_nvpair);
+-EXPORT_SYMBOL(nvlist_exists);
++EXPORT_SYMBOL(nvlist_alloc)
++EXPORT_SYMBOL(nvlist_free)
++EXPORT_SYMBOL(nvlist_size)
++EXPORT_SYMBOL(nvlist_pack)
++EXPORT_SYMBOL(nvlist_unpack)
++EXPORT_SYMBOL(nvlist_dup)
++EXPORT_SYMBOL(nvlist_merge)
++
++EXPORT_SYMBOL(nvlist_xalloc)
++EXPORT_SYMBOL(nvlist_xpack)
++EXPORT_SYMBOL(nvlist_xunpack)
++EXPORT_SYMBOL(nvlist_xdup)
++EXPORT_SYMBOL(nvlist_lookup_nv_alloc)
++
++EXPORT_SYMBOL(nvlist_add_nvpair)
++EXPORT_SYMBOL(nvlist_add_boolean)
++EXPORT_SYMBOL(nvlist_add_boolean_value)
++EXPORT_SYMBOL(nvlist_add_byte)
++EXPORT_SYMBOL(nvlist_add_int8)
++EXPORT_SYMBOL(nvlist_add_uint8)
++EXPORT_SYMBOL(nvlist_add_int16)
++EXPORT_SYMBOL(nvlist_add_uint16)
++EXPORT_SYMBOL(nvlist_add_int32)
++EXPORT_SYMBOL(nvlist_add_uint32)
++EXPORT_SYMBOL(nvlist_add_int64)
++EXPORT_SYMBOL(nvlist_add_uint64)
++EXPORT_SYMBOL(nvlist_add_string)
++EXPORT_SYMBOL(nvlist_add_nvlist)
++EXPORT_SYMBOL(nvlist_add_boolean_array)
++EXPORT_SYMBOL(nvlist_add_byte_array)
++EXPORT_SYMBOL(nvlist_add_int8_array)
++EXPORT_SYMBOL(nvlist_add_uint8_array)
++EXPORT_SYMBOL(nvlist_add_int16_array)
++EXPORT_SYMBOL(nvlist_add_uint16_array)
++EXPORT_SYMBOL(nvlist_add_int32_array)
++EXPORT_SYMBOL(nvlist_add_uint32_array)
++EXPORT_SYMBOL(nvlist_add_int64_array)
++EXPORT_SYMBOL(nvlist_add_uint64_array)
++EXPORT_SYMBOL(nvlist_add_string_array)
++EXPORT_SYMBOL(nvlist_add_nvlist_array)
++EXPORT_SYMBOL(nvlist_next_nvpair)
++EXPORT_SYMBOL(nvlist_prev_nvpair)
++EXPORT_SYMBOL(nvlist_empty)
++EXPORT_SYMBOL(nvlist_add_hrtime)
++
++EXPORT_SYMBOL(nvlist_remove)
++EXPORT_SYMBOL(nvlist_remove_nvpair)
++EXPORT_SYMBOL(nvlist_remove_all)
++
++EXPORT_SYMBOL(nvlist_lookup_boolean)
++EXPORT_SYMBOL(nvlist_lookup_boolean_value)
++EXPORT_SYMBOL(nvlist_lookup_byte)
++EXPORT_SYMBOL(nvlist_lookup_int8)
++EXPORT_SYMBOL(nvlist_lookup_uint8)
++EXPORT_SYMBOL(nvlist_lookup_int16)
++EXPORT_SYMBOL(nvlist_lookup_uint16)
++EXPORT_SYMBOL(nvlist_lookup_int32)
++EXPORT_SYMBOL(nvlist_lookup_uint32)
++EXPORT_SYMBOL(nvlist_lookup_int64)
++EXPORT_SYMBOL(nvlist_lookup_uint64)
++EXPORT_SYMBOL(nvlist_lookup_string)
++EXPORT_SYMBOL(nvlist_lookup_nvlist)
++EXPORT_SYMBOL(nvlist_lookup_boolean_array)
++EXPORT_SYMBOL(nvlist_lookup_byte_array)
++EXPORT_SYMBOL(nvlist_lookup_int8_array)
++EXPORT_SYMBOL(nvlist_lookup_uint8_array)
++EXPORT_SYMBOL(nvlist_lookup_int16_array)
++EXPORT_SYMBOL(nvlist_lookup_uint16_array)
++EXPORT_SYMBOL(nvlist_lookup_int32_array)
++EXPORT_SYMBOL(nvlist_lookup_uint32_array)
++EXPORT_SYMBOL(nvlist_lookup_int64_array)
++EXPORT_SYMBOL(nvlist_lookup_uint64_array)
++EXPORT_SYMBOL(nvlist_lookup_string_array)
++EXPORT_SYMBOL(nvlist_lookup_nvlist_array)
++EXPORT_SYMBOL(nvlist_lookup_hrtime)
++EXPORT_SYMBOL(nvlist_lookup_pairs)
++
++EXPORT_SYMBOL(nvlist_lookup_nvpair)
++EXPORT_SYMBOL(nvlist_exists)
+
+ /* processing nvpair */
+-EXPORT_SYMBOL(nvpair_name);
+-EXPORT_SYMBOL(nvpair_type);
+-EXPORT_SYMBOL(nvpair_value_boolean_value);
+-EXPORT_SYMBOL(nvpair_value_byte);
+-EXPORT_SYMBOL(nvpair_value_int8);
+-EXPORT_SYMBOL(nvpair_value_uint8);
+-EXPORT_SYMBOL(nvpair_value_int16);
+-EXPORT_SYMBOL(nvpair_value_uint16);
+-EXPORT_SYMBOL(nvpair_value_int32);
+-EXPORT_SYMBOL(nvpair_value_uint32);
+-EXPORT_SYMBOL(nvpair_value_int64);
+-EXPORT_SYMBOL(nvpair_value_uint64);
+-EXPORT_SYMBOL(nvpair_value_string);
+-EXPORT_SYMBOL(nvpair_value_nvlist);
+-EXPORT_SYMBOL(nvpair_value_boolean_array);
+-EXPORT_SYMBOL(nvpair_value_byte_array);
+-EXPORT_SYMBOL(nvpair_value_int8_array);
+-EXPORT_SYMBOL(nvpair_value_uint8_array);
+-EXPORT_SYMBOL(nvpair_value_int16_array);
+-EXPORT_SYMBOL(nvpair_value_uint16_array);
+-EXPORT_SYMBOL(nvpair_value_int32_array);
+-EXPORT_SYMBOL(nvpair_value_uint32_array);
+-EXPORT_SYMBOL(nvpair_value_int64_array);
+-EXPORT_SYMBOL(nvpair_value_uint64_array);
+-EXPORT_SYMBOL(nvpair_value_string_array);
+-EXPORT_SYMBOL(nvpair_value_nvlist_array);
+-EXPORT_SYMBOL(nvpair_value_hrtime);
++EXPORT_SYMBOL(nvpair_name)
++EXPORT_SYMBOL(nvpair_type)
++EXPORT_SYMBOL(nvpair_value_boolean_value)
++EXPORT_SYMBOL(nvpair_value_byte)
++EXPORT_SYMBOL(nvpair_value_int8)
++EXPORT_SYMBOL(nvpair_value_uint8)
++EXPORT_SYMBOL(nvpair_value_int16)
++EXPORT_SYMBOL(nvpair_value_uint16)
++EXPORT_SYMBOL(nvpair_value_int32)
++EXPORT_SYMBOL(nvpair_value_uint32)
++EXPORT_SYMBOL(nvpair_value_int64)
++EXPORT_SYMBOL(nvpair_value_uint64)
++EXPORT_SYMBOL(nvpair_value_string)
++EXPORT_SYMBOL(nvpair_value_nvlist)
++EXPORT_SYMBOL(nvpair_value_boolean_array)
++EXPORT_SYMBOL(nvpair_value_byte_array)
++EXPORT_SYMBOL(nvpair_value_int8_array)
++EXPORT_SYMBOL(nvpair_value_uint8_array)
++EXPORT_SYMBOL(nvpair_value_int16_array)
++EXPORT_SYMBOL(nvpair_value_uint16_array)
++EXPORT_SYMBOL(nvpair_value_int32_array)
++EXPORT_SYMBOL(nvpair_value_uint32_array)
++EXPORT_SYMBOL(nvpair_value_int64_array)
++EXPORT_SYMBOL(nvpair_value_uint64_array)
++EXPORT_SYMBOL(nvpair_value_string_array)
++EXPORT_SYMBOL(nvpair_value_nvlist_array)
++EXPORT_SYMBOL(nvpair_value_hrtime)
+diff --git a/module/zcommon/zfs_namecheck.c b/module/zcommon/zfs_namecheck.c
+index 7ecce451b..5f6b8a3b9 100644
+--- a/module/zcommon/zfs_namecheck.c
++++ b/module/zcommon/zfs_namecheck.c
+@@ -453,15 +453,15 @@ pool_namecheck(const char *pool, namecheck_err_t *why, char *what)
+ return (0);
+ }
+
+-EXPORT_SYMBOL(entity_namecheck);
+-EXPORT_SYMBOL(pool_namecheck);
+-EXPORT_SYMBOL(dataset_namecheck);
+-EXPORT_SYMBOL(bookmark_namecheck);
+-EXPORT_SYMBOL(snapshot_namecheck);
+-EXPORT_SYMBOL(zfs_component_namecheck);
+-EXPORT_SYMBOL(dataset_nestcheck);
+-EXPORT_SYMBOL(get_dataset_depth);
+-EXPORT_SYMBOL(zfs_max_dataset_nesting);
++EXPORT_SYMBOL(entity_namecheck)
++EXPORT_SYMBOL(pool_namecheck)
++EXPORT_SYMBOL(dataset_namecheck)
++EXPORT_SYMBOL(bookmark_namecheck)
++EXPORT_SYMBOL(snapshot_namecheck)
++EXPORT_SYMBOL(zfs_component_namecheck)
++EXPORT_SYMBOL(dataset_nestcheck)
++EXPORT_SYMBOL(get_dataset_depth)
++EXPORT_SYMBOL(zfs_max_dataset_nesting)
+
+ ZFS_MODULE_PARAM(zfs, zfs_, max_dataset_nesting, INT, ZMOD_RW,
+- "Limit to the amount of nesting a path can have. Defaults to 50.");
++ "Limit to the amount of nesting a path can have. Defaults to 50.")
+diff --git a/module/zcommon/zfs_prop.c b/module/zcommon/zfs_prop.c
+index b4e8fcf1f..9de54aa44 100644
+--- a/module/zcommon/zfs_prop.c
++++ b/module/zcommon/zfs_prop.c
+@@ -1054,32 +1054,32 @@ module_exit(zcommon_fini);
+
+ #endif
+
+-ZFS_MODULE_DESCRIPTION("Generic ZFS support");
+-ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR);
+-ZFS_MODULE_LICENSE(ZFS_META_LICENSE);
+-ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE);
++ZFS_MODULE_DESCRIPTION("Generic ZFS support")
++ZFS_MODULE_AUTHOR(ZFS_META_AUTHOR)
++ZFS_MODULE_LICENSE(ZFS_META_LICENSE)
++ZFS_MODULE_VERSION(ZFS_META_VERSION "-" ZFS_META_RELEASE)
+
+ /* zfs dataset property functions */
+-EXPORT_SYMBOL(zfs_userquota_prop_prefixes);
+-EXPORT_SYMBOL(zfs_prop_init);
+-EXPORT_SYMBOL(zfs_prop_get_type);
+-EXPORT_SYMBOL(zfs_prop_get_table);
+-EXPORT_SYMBOL(zfs_prop_delegatable);
+-EXPORT_SYMBOL(zfs_prop_visible);
++EXPORT_SYMBOL(zfs_userquota_prop_prefixes)
++EXPORT_SYMBOL(zfs_prop_init)
++EXPORT_SYMBOL(zfs_prop_get_type)
++EXPORT_SYMBOL(zfs_prop_get_table)
++EXPORT_SYMBOL(zfs_prop_delegatable)
++EXPORT_SYMBOL(zfs_prop_visible)
+
+ /* Dataset property functions shared between libzfs and kernel. */
+-EXPORT_SYMBOL(zfs_prop_default_string);
+-EXPORT_SYMBOL(zfs_prop_default_numeric);
+-EXPORT_SYMBOL(zfs_prop_readonly);
+-EXPORT_SYMBOL(zfs_prop_inheritable);
+-EXPORT_SYMBOL(zfs_prop_encryption_key_param);
+-EXPORT_SYMBOL(zfs_prop_valid_keylocation);
+-EXPORT_SYMBOL(zfs_prop_setonce);
+-EXPORT_SYMBOL(zfs_prop_to_name);
+-EXPORT_SYMBOL(zfs_name_to_prop);
+-EXPORT_SYMBOL(zfs_prop_user);
+-EXPORT_SYMBOL(zfs_prop_userquota);
+-EXPORT_SYMBOL(zfs_prop_index_to_string);
+-EXPORT_SYMBOL(zfs_prop_string_to_index);
+-EXPORT_SYMBOL(zfs_prop_valid_for_type);
+-EXPORT_SYMBOL(zfs_prop_written);
++EXPORT_SYMBOL(zfs_prop_default_string)
++EXPORT_SYMBOL(zfs_prop_default_numeric)
++EXPORT_SYMBOL(zfs_prop_readonly)
++EXPORT_SYMBOL(zfs_prop_inheritable)
++EXPORT_SYMBOL(zfs_prop_encryption_key_param)
++EXPORT_SYMBOL(zfs_prop_valid_keylocation)
++EXPORT_SYMBOL(zfs_prop_setonce)
++EXPORT_SYMBOL(zfs_prop_to_name)
++EXPORT_SYMBOL(zfs_name_to_prop)
++EXPORT_SYMBOL(zfs_prop_user)
++EXPORT_SYMBOL(zfs_prop_userquota)
++EXPORT_SYMBOL(zfs_prop_index_to_string)
++EXPORT_SYMBOL(zfs_prop_string_to_index)
++EXPORT_SYMBOL(zfs_prop_valid_for_type)
++EXPORT_SYMBOL(zfs_prop_written)
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0009-Avoid-use-of-long-double-function.patch b/pkg/zfs/patch/0009-Avoid-use-of-long-double-function.patch
@@ -0,0 +1,34 @@
+From 36c4199b3392557bffc375444696bdc6ec36ebae Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:30:39 -0800
+Subject: [PATCH] Avoid use of long double function
+
+---
+ lib/libzutil/zutil_nicenum.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/libzutil/zutil_nicenum.c b/lib/libzutil/zutil_nicenum.c
+index 4dcac1f85..5bde425f4 100644
+--- a/lib/libzutil/zutil_nicenum.c
++++ b/lib/libzutil/zutil_nicenum.c
+@@ -102,7 +102,7 @@ zfs_nicenum_format(uint64_t num, char *buf, size_t buflen,
+ if ((format == ZFS_NICENUM_TIME) && (num == 0)) {
+ (void) snprintf(buf, buflen, "-");
+ } else if ((index == 0) || ((num %
+- (uint64_t)powl(k_unit[format], index)) == 0)) {
++ (uint64_t)pow(k_unit[format], index)) == 0)) {
+ /*
+ * If this is an even multiple of the base, always display
+ * without any decimal precision.
+@@ -122,7 +122,7 @@ zfs_nicenum_format(uint64_t num, char *buf, size_t buflen,
+ int i;
+ for (i = 2; i >= 0; i--) {
+ val = (double)num /
+- (uint64_t)powl(k_unit[format], index);
++ (uint64_t)pow(k_unit[format], index);
+
+ /*
+ * Don't print floating point values for time. Note,
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0010-Avoid-unnecessary-VLA.patch b/pkg/zfs/patch/0010-Avoid-unnecessary-VLA.patch
@@ -0,0 +1,54 @@
+From 2218ade9b12bc42f61d96a4613328a6f627805a1 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:41:15 -0800
+Subject: [PATCH] Avoid unnecessary VLA
+
+---
+ cmd/zpool/zpool_vdev.c | 17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/cmd/zpool/zpool_vdev.c b/cmd/zpool/zpool_vdev.c
+index 3d83da641..521086366 100644
+--- a/cmd/zpool/zpool_vdev.c
++++ b/cmd/zpool/zpool_vdev.c
+@@ -891,8 +891,7 @@ check_replication(nvlist_t *config, nvlist_t *newroot)
+ static int
+ zero_label(char *path)
+ {
+- const int size = 4096;
+- char buf[size];
++ char buf[4096];
+ int err, fd;
+
+ if ((fd = open(path, O_WRONLY|O_EXCL)) < 0) {
+@@ -901,20 +900,20 @@ zero_label(char *path)
+ return (-1);
+ }
+
+- memset(buf, 0, size);
+- err = write(fd, buf, size);
++ memset(buf, 0, sizeof (buf));
++ err = write(fd, buf, sizeof (buf));
+ (void) fdatasync(fd);
+ (void) close(fd);
+
+ if (err == -1) {
+- (void) fprintf(stderr, gettext("cannot zero first %d bytes "
+- "of '%s': %s\n"), size, path, strerror(errno));
++ (void) fprintf(stderr, gettext("cannot zero first %zu bytes "
++ "of '%s': %s\n"), sizeof (buf), path, strerror(errno));
+ return (-1);
+ }
+
+- if (err != size) {
+- (void) fprintf(stderr, gettext("could only zero %d/%d bytes "
+- "of '%s'\n"), err, size, path);
++ if (err != sizeof (buf)) {
++ (void) fprintf(stderr, gettext("could only zero %d/%zu bytes "
++ "of '%s'\n"), err, sizeof (buf), path);
+ return (-1);
+ }
+
+--
+2.37.3
+
diff --git a/pkg/zfs/patch/0011-Avoid-arithmetic-on-void-pointer.patch b/pkg/zfs/patch/0011-Avoid-arithmetic-on-void-pointer.patch
@@ -0,0 +1,25 @@
+From 8a2689c718e4fdf96a5b73e4095866ddf4826135 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sat, 21 Jan 2023 17:52:40 -0800
+Subject: [PATCH] Avoid arithmetic on void pointer
+
+---
+ module/zcommon/zfs_fletcher.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/module/zcommon/zfs_fletcher.c b/module/zcommon/zfs_fletcher.c
+index 7a9de4a43..2faee46fe 100644
+--- a/module/zcommon/zfs_fletcher.c
++++ b/module/zcommon/zfs_fletcher.c
+@@ -569,7 +569,7 @@ fletcher_4_incremental_impl(boolean_t native, const void *buf, uint64_t size,
+ fletcher_4_incremental_combine(zcp, len, &nzc);
+
+ size -= len;
+- buf += len;
++ buf = (char *)buf + len;
+ }
+ }
+
+--
+2.37.3
+
diff --git a/pkg/zfs/sha256 b/pkg/zfs/sha256
@@ -0,0 +1 @@
+6462e63e185de6ff10c64ffa6ed773201a082f9dd13e603d7e8136fcb4aca71b zfs-2.1.7.tar.gz
diff --git a/pkg/zfs/url b/pkg/zfs/url
@@ -0,0 +1 @@
+url = "https://github.com/openzfs/zfs/releases/download/zfs-2.1.7/zfs-2.1.7.tar.gz"
diff --git a/pkg/zfs/ver b/pkg/zfs/ver
@@ -0,0 +1 @@
+2.1.7 r0