git: 1f1e2261e341 - main - zfs: merge openzfs/zfs@deb121309

From: Martin Matuska <mm_at_FreeBSD.org>
Date: Thu, 23 Jun 2022 15:50:11 UTC
The branch main has been updated by mm:

URL: https://cgit.FreeBSD.org/src/commit/?id=1f1e2261e341e6ca6862f82261066ef1705f0a7a

commit 1f1e2261e341e6ca6862f82261066ef1705f0a7a
Merge: a320e9dd51e6 deb1213098e2
Author:     Martin Matuska <mm@FreeBSD.org>
AuthorDate: 2022-06-23 15:47:42 +0000
Commit:     Martin Matuska <mm@FreeBSD.org>
CommitDate: 2022-06-23 15:49:33 +0000

    zfs: merge openzfs/zfs@deb121309
    
    Notable upstream pull request merges:
      #12918 Introduce BLAKE3 checksums as an OpenZFS feature
      #13553 Reduce ZIO io_lock contention on sorted scrub
      #13537 Improve sorted scan memory accounting
      #13540 AVL: Remove obsolete branching optimizations
      #13563 FreeBSD: Improve crypto_dispatch() handling
    
    Obtained from:  OpenZFS
    OpenZFS commit: deb1213098e2dc10e6eee5e5c57bb40584e096a6

 cddl/lib/libicp/Makefile                           |   29 +-
 cddl/lib/libicp_rescue/Makefile                    |   29 +-
 cddl/lib/libzpool/Makefile                         |    2 +
 sys/contrib/openzfs/AUTHORS                        |    1 +
 sys/contrib/openzfs/cmd/zfs/zfs_iter.c             |    6 +-
 sys/contrib/openzfs/cmd/zfs/zfs_main.c             |   68 +-
 sys/contrib/openzfs/cmd/zpool/zpool_main.c         |    4 +-
 sys/contrib/openzfs/cmd/ztest.c                    |   89 +
 sys/contrib/openzfs/config/always-arch.m4          |    2 +
 sys/contrib/openzfs/config/kernel-add-disk.m4      |    3 +-
 sys/contrib/openzfs/config/kernel-blk-queue.m4     |   32 +
 sys/contrib/openzfs/config/kernel-user-ns-inum.m4  |   23 +
 sys/contrib/openzfs/config/kernel.m4               |    2 +
 .../contrib/dracut/90zfs/module-setup.sh.in        |    3 +-
 .../contrib/pyzfs/libzfs_core/_constants.py        |    1 +
 sys/contrib/openzfs/etc/Makefile.am                |    3 +
 .../etc/systemd/system/zfs-trim-monthly@.timer.in  |   12 +
 .../etc/systemd/system/zfs-trim-weekly@.timer.in   |   12 +
 .../etc/systemd/system/zfs-trim@.service.in        |   15 +
 sys/contrib/openzfs/include/Makefile.am            |    2 +
 sys/contrib/openzfs/include/libzfs.h               |   10 +
 .../openzfs/include/os/freebsd/spl/sys/ccompile.h  |    2 +
 .../include/os/linux/kernel/linux/blkdev_compat.h  |  111 +
 .../include/os/linux/kernel/linux/simd_powerpc.h   |   34 +-
 .../include/os/linux/kernel/linux/vfs_compat.h     |   16 -
 sys/contrib/openzfs/include/os/linux/spl/sys/uio.h |   39 +-
 .../openzfs/include/os/linux/spl/sys/zone.h        |   31 +-
 .../include/os/linux/zfs/sys/zfs_context_os.h      |    5 +
 sys/contrib/openzfs/include/sys/blake3.h           |  125 +
 sys/contrib/openzfs/include/sys/fs/zfs.h           |    6 +-
 sys/contrib/openzfs/include/sys/zfs_chksum.h       |   48 +
 sys/contrib/openzfs/include/sys/zfs_ioctl.h        |    3 +-
 sys/contrib/openzfs/include/sys/zio.h              |    1 +
 sys/contrib/openzfs/include/sys/zio_checksum.h     |   12 +-
 sys/contrib/openzfs/include/zfeature_common.h      |    1 +
 sys/contrib/openzfs/lib/libicp/Makefile.am         |   25 +-
 sys/contrib/openzfs/lib/libspl/include/sys/simd.h  |   18 +
 sys/contrib/openzfs/lib/libspl/include/sys/types.h |    2 +-
 sys/contrib/openzfs/lib/libspl/include/zone.h      |   12 +-
 sys/contrib/openzfs/lib/libspl/os/linux/zone.c     |   32 +-
 sys/contrib/openzfs/lib/libuutil/libuutil.abi      |    2 +-
 sys/contrib/openzfs/lib/libzfs/libzfs.abi          |   18 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_crypto.c     |   10 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c    |   64 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_diff.c       |    2 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_impl.h       |    4 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_pool.c       |  299 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c   |   36 +-
 sys/contrib/openzfs/lib/libzfs/libzfs_util.c       |   12 +-
 .../openzfs/lib/libzfs/os/freebsd/libzfs_compat.c  |    2 -
 .../openzfs/lib/libzfs/os/linux/libzfs_pool_os.c   |    2 +-
 .../openzfs/lib/libzfs/os/linux/libzfs_util_os.c   |   71 +
 .../openzfs/lib/libzfs_core/libzfs_core.abi        |    2 +-
 sys/contrib/openzfs/lib/libzpool/Makefile.am       |    2 +
 sys/contrib/openzfs/man/Makefile.am                |    2 +
 sys/contrib/openzfs/man/man4/zfs.4                 |   69 +-
 sys/contrib/openzfs/man/man7/zfsprops.7            |   10 +-
 sys/contrib/openzfs/man/man7/zpool-features.7      |    8 +
 sys/contrib/openzfs/man/man8/zfs-unzone.8          |    1 +
 sys/contrib/openzfs/man/man8/zfs-zone.8            |  116 +
 sys/contrib/openzfs/man/man8/zpool-trim.8          |   21 +
 sys/contrib/openzfs/module/Kbuild.in               |   38 +-
 sys/contrib/openzfs/module/Makefile.bsd            |   34 +-
 sys/contrib/openzfs/module/avl/avl.c               |   24 +-
 .../openzfs/module/icp/algs/blake3/blake3.c        |  732 +++++
 .../module/icp/algs/blake3/blake3_generic.c        |  202 ++
 .../openzfs/module/icp/algs/blake3/blake3_impl.c   |  284 ++
 .../openzfs/module/icp/algs/blake3/blake3_impl.h   |  213 ++
 .../openzfs/module/icp/algs/blake3/blake3_x86-64.c |  248 ++
 .../icp/asm-aarch64/blake3/b3_aarch64_sse2.S       | 2450 ++++++++++++++++
 .../icp/asm-aarch64/blake3/b3_aarch64_sse41.S      | 2463 ++++++++++++++++
 .../module/icp/asm-ppc64/blake3/b3_ppc64le_sse2.S  | 2823 ++++++++++++++++++
 .../module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S | 3064 ++++++++++++++++++++
 .../module/icp/asm-x86_64/blake3/blake3_avx2.S     | 1845 ++++++++++++
 .../module/icp/asm-x86_64/blake3/blake3_avx512.S   | 2618 +++++++++++++++++
 .../module/icp/asm-x86_64/blake3/blake3_sse2.S     | 2323 +++++++++++++++
 .../module/icp/asm-x86_64/blake3/blake3_sse41.S    | 2058 +++++++++++++
 .../openzfs/module/os/freebsd/zfs/crypto_os.c      |   41 +-
 .../openzfs/module/os/linux/spl/spl-generic.c      |    6 +
 sys/contrib/openzfs/module/os/linux/spl/spl-zone.c |  424 +++
 sys/contrib/openzfs/module/os/linux/zfs/policy.c   |    2 +-
 .../openzfs/module/os/linux/zfs/zfs_ioctl_os.c     |   47 +
 sys/contrib/openzfs/module/os/linux/zfs/zfs_uio.c  |  154 +-
 .../openzfs/module/os/linux/zfs/zfs_vfsops.c       |   20 +
 .../openzfs/module/os/linux/zfs/zpl_ctldir.c       |   17 +
 .../openzfs/module/os/linux/zfs/zpl_super.c        |    1 +
 .../openzfs/module/os/linux/zfs/zpl_xattr.c        |    5 +-
 sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c  |  632 +++-
 .../openzfs/module/zcommon/zfeature_common.c       |   31 +-
 sys/contrib/openzfs/module/zcommon/zfs_prop.c      |    8 +-
 sys/contrib/openzfs/module/zfs/blake3_zfs.c        |  117 +
 sys/contrib/openzfs/module/zfs/dsl_prop.c          |   10 +-
 sys/contrib/openzfs/module/zfs/dsl_scan.c          |   26 +-
 sys/contrib/openzfs/module/zfs/spa_misc.c          |    3 +
 sys/contrib/openzfs/module/zfs/vdev.c              |    6 +-
 sys/contrib/openzfs/module/zfs/zcp_synctask.c      |    2 +-
 sys/contrib/openzfs/module/zfs/zfs_chksum.c        |  323 +++
 sys/contrib/openzfs/module/zfs/zfs_ioctl.c         |   14 +-
 sys/contrib/openzfs/module/zfs/zio_checksum.c      |    6 +
 sys/contrib/openzfs/tests/runfiles/common.run      |   10 +-
 sys/contrib/openzfs/tests/runfiles/linux.run       |    8 +-
 sys/contrib/openzfs/tests/zfs-tests/cmd/.gitignore |    1 +
 .../openzfs/tests/zfs-tests/cmd/Makefile.am        |    6 +-
 .../tests/zfs-tests/cmd/checksum/blake3_test.c     |  575 ++++
 .../tests/zfs-tests/cmd/checksum/edonr_test.c      |    3 -
 .../tests/zfs-tests/cmd/checksum/sha2_test.c       |    3 -
 .../tests/zfs-tests/cmd/checksum/skein_test.c      |    3 -
 .../openzfs/tests/zfs-tests/include/commands.cfg   |    5 +
 .../openzfs/tests/zfs-tests/include/libtest.shlib  |   45 +-
 .../tests/zfs-tests/include/properties.shlib       |    2 +-
 .../openzfs/tests/zfs-tests/include/tunables.cfg   |    1 +
 .../openzfs/tests/zfs-tests/tests/Makefile.am      |    9 +
 .../tests/functional/checksum/default.cfg          |    2 +-
 .../tests/functional/checksum/run_blake3_test.ksh  |   30 +
 .../cli_root/zfs_set/checksum_001_pos.ksh          |    2 +-
 .../functional/cli_root/zpool_get/zpool_get.cfg    |    1 +
 .../user_namespace/user_namespace_001.ksh          |    5 +
 .../user_namespace/user_namespace_002.ksh          |  115 +
 .../user_namespace/user_namespace_003.ksh          |   97 +
 .../user_namespace/user_namespace_004.ksh          |   67 +
 .../tests/functional/zvol/zvol_common.shlib        |   11 +
 .../functional/zvol/zvol_misc/zvol_misc_fua.ksh    |   96 +
 .../functional/zvol/zvol_misc/zvol_misc_trim.ksh   |  136 +
 .../tests/functional/zvol/zvol_stress/cleanup.ksh  |   36 +
 .../tests/functional/zvol/zvol_stress/setup.ksh    |   36 +
 .../functional/zvol/zvol_stress/zvol_stress.ksh    |  169 ++
 sys/modules/zfs/Makefile                           |   30 +-
 sys/modules/zfs/zfs_config.h                       |   10 +-
 sys/modules/zfs/zfs_gitrev.h                       |    2 +-
 129 files changed, 25938 insertions(+), 516 deletions(-)

diff --cc cddl/lib/libicp/Makefile
index 6a8e979ea836,000000000000..5b316453af9a
mode 100644,000000..100644
--- a/cddl/lib/libicp/Makefile
+++ b/cddl/lib/libicp/Makefile
@@@ -1,92 -1,0 +1,119 @@@
 +# $FreeBSD$
 +
 +.PATH: ${SRCTOP}/sys/contrib/openzfs/module/icp
 +
 +PACKAGE=	utilities
 +LIB=	icp
 +LIBADD=
 +
 +
 +.if ${MACHINE_ARCH} == "amd64"
 +ASM_SOURCES_C = asm-x86_64/aes/aeskey.c
 +ASM_SOURCES_AS = \
 +        asm-x86_64/aes/aes_amd64.S \
 +        asm-x86_64/aes/aes_aesni.S \
 +        asm-x86_64/modes/gcm_pclmulqdq.S \
 +        asm-x86_64/modes/aesni-gcm-x86_64.S \
 +        asm-x86_64/modes/ghash-x86_64.S \
 +        asm-x86_64/sha2/sha256_impl.S \
-         asm-x86_64/sha2/sha512_impl.S
++        asm-x86_64/sha2/sha512_impl.S \
++        asm-x86_64/blake3/blake3_avx2.S \
++        asm-x86_64/blake3/blake3_avx512.S \
++        asm-x86_64/blake3/blake3_sse2.S \
++        asm-x86_64/blake3/blake3_sse41.S
 +
 +CFLAGS+= -D__amd64 -D_SYS_STACK_H -UHAVE_AES
++.elif ${MACHINE_ARCH} == "aarch64"
++ASM_SOURCES_C =
++ASM_SOURCES_AS = \
++        asm-aarch64/blake3/b3_aarch64_sse2.S \
++        asm-aarch64/blake3/b3_aarch64_sse41.S
++.elif ${MACHINE_ARCH} == "powerpc64"
++ASM_SOURCES_C =
++ASM_SOURCES_AS = \
++        asm-ppc64/blake3/b3_ppc64le_sse2.S \
++        asm-ppc64/blake3/b3_ppc64le_sse41.S
 +.else
 +ASM_SOURCES_C =
 +ASM_SOURCES_AS =
 +.endif
 +
 +
 +KERNEL_C = \
 +        spi/kcf_spi.c \
 +        api/kcf_ctxops.c \
 +        api/kcf_cipher.c \
 +        api/kcf_mac.c \
 +        algs/aes/aes_impl_aesni.c \
 +        algs/aes/aes_impl_generic.c \
 +        algs/aes/aes_impl_x86-64.c \
 +        algs/aes/aes_impl.c \
 +        algs/aes/aes_modes.c \
++        algs/blake3/blake3.c \
++        algs/blake3/blake3_generic.c \
++        algs/blake3/blake3_impl.c \
++        algs/blake3/blake3_x86-64.c \
 +        algs/edonr/edonr.c \
 +        algs/modes/modes.c \
 +        algs/modes/cbc.c \
 +        algs/modes/gcm_generic.c \
 +        algs/modes/gcm_pclmulqdq.c \
 +        algs/modes/gcm.c \
 +        algs/modes/ctr.c \
 +        algs/modes/ccm.c \
 +        algs/modes/ecb.c \
 +        algs/sha2/sha2.c \
 +        algs/skein/skein.c \
 +        algs/skein/skein_block.c \
 +        algs/skein/skein_iv.c \
 +        illumos-crypto.c \
 +        io/aes.c \
 +        io/sha2_mod.c \
 +        io/skein_mod.c \
 +        core/kcf_sched.c \
 +        core/kcf_prov_lib.c \
 +        core/kcf_callprov.c \
 +        core/kcf_mech_tabs.c \
 +        core/kcf_prov_tabs.c \
 +        $(ASM_SOURCES_C)
 +
 +
 +
 +
 +
 +
 +SRCS= $(ASM_SOURCES_AS) $(KERNEL_C)
 +
 +WARNS?=	2
 +SHLIB_MAJOR= 3
 +CSTD=	c99
 +CFLAGS+= -DIN_BASE
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd
 +CFLAGS+= -I${SRCTOP}/sys
 +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/module/icp/include
 +CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
 +CFLAGS+= -DHAVE_ISSETUGID
 +CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h
 +
 +
 +CFLAGS.aes_amd64.S+= -DLOCORE
 +CFLAGS.aes_aesni.S+= -DLOCORE
 +CFLAGS.gcm_pclmulqdq.S+= -DLOCORE
 +CFLAGS.aesni-gcm-x86_64.S+= -DLOCORE
 +CFLAGS.ghash-x86_64.S+= -DLOCORE
 +CFLAGS.sha256_impl.S+= -DLOCORE
 +CFLAGS.sha512_impl.S+= -DLOCORE
++CFLAGS.blake3_avx2.S = -DLOCORE
++CFLAGS.blake3_avx512.S = -DLOCORE
++CFLAGS.blake3_sse2.S = -DLOCORE
++CFLAGS.blake3_sse41.S = -DLOCORE
++CFLAGS.b3_aarch64_sse2.S = -DLOCORE
++CFLAGS.b3_aarch64_sse41.S = -DLOCORE
++CFLAGS.b3_ppc64le_sse2.S = -DLOCORE
++CFLAGS.b3_ppc64le_sse41.S = -DLOCORE
++
 +
 +.include <bsd.lib.mk>
diff --cc cddl/lib/libicp_rescue/Makefile
index d3e69d276d17,000000000000..3fd098bc86ed
mode 100644,000000..100644
--- a/cddl/lib/libicp_rescue/Makefile
+++ b/cddl/lib/libicp_rescue/Makefile
@@@ -1,85 -1,0 +1,112 @@@
 +# $FreeBSD$
 +
 +.PATH: ${SRCTOP}/sys/contrib/openzfs/module/icp
 +
 +PACKAGE=	utilities
 +LIB=	icp_rescue
 +LIBADD=
 +
 +
 +.if ${MACHINE_ARCH} == "amd64"
 +ASM_SOURCES_C = asm-x86_64/aes/aeskey.c
 +ASM_SOURCES_AS = \
 +        asm-x86_64/aes/aes_amd64.S \
 +        asm-x86_64/aes/aes_aesni.S \
 +        asm-x86_64/modes/gcm_pclmulqdq.S \
 +        asm-x86_64/modes/aesni-gcm-x86_64.S \
 +        asm-x86_64/sha2/sha256_impl.S \
-         asm-x86_64/sha2/sha512_impl.S
++        asm-x86_64/sha2/sha512_impl.S \
++        asm-x86_64/blake3/blake3_avx2.S \
++        asm-x86_64/blake3/blake3_avx512.S \
++        asm-x86_64/blake3/blake3_sse2.S \
++        asm-x86_64/blake3/blake3_sse41.S
 +
 +CFLAGS+= -D__amd64 -D_SYS_STACK_H
++.elif ${MACHINE_ARCH} == "aarch64"
++ASM_SOURCES_C =
++ASM_SOURCES_AS = \
++        asm-aarch64/blake3/b3_aarch64_sse2.S \
++        asm-aarch64/blake3/b3_aarch64_sse41.S
++.elif ${MACHINE_ARCH} == "powerpc64"
++ASM_SOURCES_C =
++ASM_SOURCES_AS = \
++        asm-ppc64/blake3/b3_ppc64le_sse2.S \
++        asm-ppc64/blake3/b3_ppc64le_sse41.S
 +.else
 +ASM_SOURCES_C =
 +ASM_SOURCES_AS =
 +.endif
 +
 +
 +KERNEL_C = \
 +        spi/kcf_spi.c \
 +        api/kcf_ctxops.c \
 +        api/kcf_cipher.c \
 +        api/kcf_mac.c \
 +        algs/aes/aes_impl_aesni.c \
 +        algs/aes/aes_impl_generic.c \
 +        algs/aes/aes_impl_x86-64.c \
 +        algs/aes/aes_impl.c \
 +        algs/aes/aes_modes.c \
++        algs/blake3/blake3.c \
++        algs/blake3/blake3_generic.c \
++        algs/blake3/blake3_impl.c \
++        algs/blake3/blake3_x86-64.c \
 +        algs/edonr/edonr.c \
 +        algs/modes/modes.c \
 +        algs/modes/cbc.c \
 +        algs/modes/gcm_generic.c \
 +        algs/modes/gcm_pclmulqdq.c \
 +        algs/modes/gcm.c \
 +        algs/modes/ctr.c \
 +        algs/modes/ccm.c \
 +        algs/modes/ecb.c \
 +        algs/sha2/sha2.c \
 +        algs/skein/skein_block.c \
 +        illumos-crypto.c \
 +        io/aes.c \
 +        io/sha2_mod.c \
 +        io/skein_mod.c \
 +        core/kcf_sched.c \
 +        core/kcf_prov_lib.c \
 +        core/kcf_callprov.c \
 +        core/kcf_mech_tabs.c \
 +        core/kcf_prov_tabs.c \
 +        $(ASM_SOURCES_C)
 +
 +SRCS= $(ASM_SOURCES_AS) $(KERNEL_C)
 +
 +WARNS?=	2
 +SHLIB_MAJOR= 3
 +CSTD=	c99
 +CFLAGS+= -DIN_BASE
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd
 +CFLAGS+= -I${SRCTOP}/sys
 +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include
 +CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/module/icp/include
 +CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
 +CFLAGS+= -DHAVE_ISSETUGID -UHAVE_AVX -DRESCUE
 +CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h
 +
 +
 +CFLAGS.aes_amd64.S+= -DLOCORE
 +CFLAGS.aes_aesni.S+= -DLOCORE
 +CFLAGS.gcm_pclmulqdq.S+= -DLOCORE
 +CFLAGS.aesni-gcm-x86_64.S+= -DLOCORE
 +CFLAGS.ghash-x86_64.S+= -DLOCORE
 +CFLAGS.sha256_impl.S+= -DLOCORE
 +CFLAGS.sha512_impl.S+= -DLOCORE
 +CFLAGS.gcm.c+= -UCAN_USE_GCM_ASM
++CFLAGS.blake3_avx2.S = -DLOCORE
++CFLAGS.blake3_avx512.S = -DLOCORE
++CFLAGS.blake3_sse2.S = -DLOCORE
++CFLAGS.blake3_sse41.S = -DLOCORE
++CFLAGS.b3_aarch64_sse2.S = -DLOCORE
++CFLAGS.b3_aarch64_sse41.S = -DLOCORE
++CFLAGS.b3_ppc64le_sse2.S = -DLOCORE
++CFLAGS.b3_ppc64le_sse41.S = -DLOCORE
++
 +
 +.include <bsd.lib.mk>
diff --cc cddl/lib/libzpool/Makefile
index 69700ec51407,000000000000..92f1bda6d82a
mode 100644,000000..100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@@ -1,331 -1,0 +1,333 @@@
 +# $FreeBSD$
 +
 +ZFSTOP=	${SRCTOP}/sys/contrib/openzfs
 +
 +# ZFS_COMMON_SRCS
 +.PATH: ${ZFSTOP}/module/zfs
 +.PATH: ${ZFSTOP}/module/zcommon
 +.PATH: ${ZFSTOP}/module/unicode
 +# LUA_SRCS
 +.PATH: ${ZFSTOP}/module/lua
 +# ZSTD_SRCS
 +.PATH: ${ZFSTOP}/module/zstd
 +.PATH: ${ZFSTOP}/module/zstd/lib/common
 +.PATH: ${ZFSTOP}/module/zstd/lib/compress
 +.PATH: ${ZFSTOP}/module/zstd/lib/decompress
 +
 +.PATH: ${ZFSTOP}/module/os/linux/zfs
 +
 +.PATH: ${ZFSTOP}/lib/libzpool
 +
 +.if exists(${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}/opensolaris_atomic.S)
 +.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/atomic/${MACHINE_ARCH}
 +ATOMIC_SRCS=	opensolaris_atomic.S
 +ACFLAGS+=	-Wa,--noexecstack
 +.else
 +.PATH: ${SRCTOP}/sys/cddl/compat/opensolaris/kern
 +ATOMIC_SRCS=	opensolaris_atomic.c
 +.endif
 +
 +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe"
 +# Don't waste GOT entries on small data.
 +PICFLAG=	-fPIC
 +.endif
 +
 +LIB=		zpool
 +
 +USER_C = \
 +	kernel.c \
 +	taskq.c \
 +	util.c
 +
 +KERNEL_C = \
 +	zfeature_common.c \
 +	zfs_comutil.c \
 +	zfs_deleg.c \
 +	zfs_fletcher.c \
 +	zfs_fletcher_superscalar.c \
 +	zfs_fletcher_superscalar4.c \
 +	zfs_namecheck.c \
 +	zfs_prop.c \
 +	zfs_zstd.c \
 +	zpool_prop.c \
 +	zprop_common.c \
 +	abd.c \
 +	abd_os.c \
 +	aggsum.c \
 +	arc.c \
 +	arc_os.c \
++        blake3_zfs.c \
 +	blkptr.c \
 +	bplist.c \
 +	bpobj.c \
 +	bptree.c \
 +	btree.c \
 +	bqueue.c \
 +	cityhash.c \
 +	dbuf.c \
 +	dbuf_stats.c \
 +	ddt.c \
 +	ddt_zap.c \
 +	dmu.c \
 +	dmu_diff.c \
 +	dmu_object.c \
 +	dmu_objset.c \
 +	dmu_recv.c \
 +	dmu_redact.c \
 +	dmu_send.c \
 +	dmu_traverse.c \
 +	dmu_tx.c \
 +	dmu_zfetch.c \
 +	dnode.c \
 +	dnode_sync.c \
 +	dsl_bookmark.c \
 +	dsl_dataset.c \
 +	dsl_deadlist.c \
 +	dsl_deleg.c \
 +	dsl_dir.c \
 +	dsl_crypt.c \
 +	dsl_pool.c \
 +	dsl_prop.c \
 +	dsl_scan.c \
 +	dsl_synctask.c \
 +	dsl_destroy.c \
 +	dsl_userhold.c \
 +	edonr_zfs.c \
 +	entropy_common.c \
 +	error_private.c \
 +	fm.c \
 +	fse_compress.c \
 +	fse_decompress.c \
 +	gzip.c \
 +	hist.c \
 +	hkdf.c \
 +	huf_compress.c \
 +	huf_decompress.c \
 +	lzjb.c \
 +	lz4.c \
 +	lz4_zfs.c \
 +	metaslab.c \
 +	mmp.c \
 +	multilist.c \
 +	objlist.c \
 +	pathname.c \
 +	pool.c \
 +	range_tree.c \
 +	refcount.c \
 +	rrwlock.c \
 +	sa.c \
 +	sha256.c \
 +	skein_zfs.c \
 +	spa.c \
 +	spa_boot.c \
 +	spa_checkpoint.c \
 +	spa_config.c \
 +	spa_errlog.c \
 +	spa_history.c \
 +	spa_log_spacemap.c \
 +	spa_misc.c \
 +	spa_stats.c \
 +	space_map.c \
 +	space_reftree.c \
 +	txg.c \
 +	trace.c \
 +	uberblock.c \
 +	unique.c \
 +	vdev.c \
 +	vdev_cache.c \
 +	vdev_draid.c \
 +	vdev_draid_rand.c \
 +	vdev_file.c \
 +	vdev_indirect_births.c \
 +	vdev_indirect.c \
 +	vdev_indirect_mapping.c \
 +	vdev_initialize.c \
 +	vdev_label.c \
 +	vdev_mirror.c \
 +	vdev_missing.c \
 +	vdev_queue.c \
 +	vdev_raidz.c \
 +	vdev_raidz_math_aarch64_neon.c \
 +	vdev_raidz_math_aarch64_neonx2.c \
 +	vdev_raidz_math_avx2.c \
 +	vdev_raidz_math_avx512bw.c \
 +	vdev_raidz_math_avx512f.c \
 +	vdev_raidz_math.c \
 +	vdev_raidz_math_scalar.c \
 +	vdev_rebuild.c \
 +	vdev_removal.c \
 +	vdev_root.c \
 +	vdev_trim.c \
 +	xxhash.c \
 +	zap.c \
 +	zap_leaf.c \
 +	zap_micro.c \
 +	zcp.c \
 +	zcp_get.c \
 +	zcp_global.c \
 +	zcp_iter.c \
 +	zcp_set.c \
 +	zcp_synctask.c \
 +	zfeature.c \
 +	zfs_byteswap.c \
++        zfs_chksum.c \
 +	zfs_debug.c \
 +	zfs_fm.c \
 +	zfs_fuid.c \
 +	zfs_sa.c \
 +	zfs_znode.c \
 +	zfs_racct.c \
 +	zfs_ratelimit.c \
 +	zfs_rlock.c \
 +	zil.c \
 +	zio.c \
 +	zio_checksum.c \
 +	zio_compress.c \
 +	zio_crypt.c \
 +	zio_inject.c \
 +	zle.c \
 +	zrlock.c \
 +	zstd_common.c \
 +	zstd_compress.c \
 +	zstd_compress_literals.c \
 +	zstd_compress_sequences.c \
 +	zstd_compress_superblock.c \
 +	zstd_ddict.c \
 +	zstd_decompress.c \
 +	zstd_decompress_block.c \
 +	zstd_double_fast.c \
 +	zstd_fast.c \
 +	zstd_lazy.c \
 +	zstd_ldm.c \
 +	zstd_opt.c \
 +	zthr.c
 +
 +ARCH_C =
 +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
 +ARCH_C += 	vdev_raidz_math_sse2.c \
 +		vdev_raidz_math_ssse3.c \
 +		zfs_fletcher_intel.c \
 +		zfs_fletcher_sse.c 
 +CFLAGS +=  -DHAVE_SSE2 	-DHAVE_SSE3
 +.endif
 +.if ${MACHINE_ARCH} == "amd64"
 +ARCH_C +=	zfs_fletcher_avx512.c
 +CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_AVX512F \
 +	-DHAVE_AVX512BW
 +.endif
 +.if ${MACHINE_CPUARCH} == "aarch64"
 +ARCH_C +=	zfs_fletcher_aarch64_neon.c
 +.endif
 +
 +LUA_C = \
 +	lapi.c \
 +	lauxlib.c \
 +	lbaselib.c \
 +	lcode.c \
 +	lcompat.c \
 +	lcorolib.c \
 +	lctype.c \
 +	ldebug.c \
 +	ldo.c \
 +	lfunc.c \
 +	lgc.c \
 +	llex.c \
 +	lmem.c \
 +	lobject.c \
 +	lopcodes.c \
 +	lparser.c \
 +	lstate.c \
 +	lstring.c \
 +	lstrlib.c \
 +	ltable.c \
 +	ltablib.c \
 +	ltm.c \
 +	lvm.c \
 +	lzio.c
 +
 +UNICODE_C = u8_textprep.c uconv.c
 +
 +SRCS=		${USER_C} ${KERNEL_C} ${LUA_C} ${UNICODE_C} ${ARCH_C}
 +
 +WARNS?=		2
 +CFLAGS+= \
 +	-DIN_BASE \
 +	-I${ZFSTOP}/include \
 +	-I${ZFSTOP}/lib/libspl/include \
 +	-I${ZFSTOP}/lib/libspl/include/os/freebsd \
 +	-I${SRCTOP}/sys \
 +	-I${ZFSTOP}/include/os/freebsd/zfs \
 +	-I${SRCTOP}/cddl/compat/opensolaris/include \
 +	-I${ZFSTOP}/module/icp/include \
 +	-include ${ZFSTOP}/include/os/freebsd/spl/sys/ccompile.h \
 +	-DHAVE_ISSETUGID \
 +	-include ${SRCTOP}/sys/modules/zfs/zfs_config.h \
 +	-I${SRCTOP}/sys/modules/zfs \
 +	-I${ZFSTOP}/include/os/freebsd/zfs \
 +	-DLIB_ZPOOL_BUILD -DZFS_DEBUG \
 +
 +# XXX: pthread doesn't have mutex_owned() equivalent, so we need to look
 +#      into libthr private structures. That's sooo evil, but it's only for
 +#      ZFS debugging tools needs.
 +CFLAGS+=	-DWANTS_MUTEX_OWNED
 +CFLAGS+=	-I${SRCTOP}/lib/libpthread/thread
 +CFLAGS+=	-I${SRCTOP}/lib/libpthread/sys
 +CFLAGS+=	-I${SRCTOP}/lib/libthr/arch/${MACHINE_CPUARCH}/include
 +CFLAGS.gcc+=	-fms-extensions
 +
 +LIBADD=		md pthread z spl icp nvpair avl umem
 +
 +# atomic.S doesn't like profiling.
 +MK_PROFILE=	no
 +
 +CSTD=	c99
 +
 +# Since there are many asserts in this library, it makes no sense to compile
 +# it without debugging.
 +
 +CFLAGS+=	-g -DDEBUG=1
 +
 +CFLAGS.entropy_common.c=	-fno-tree-vectorize
 +CFLAGS.entropy_common.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.error_private.c=		-fno-tree-vectorize
 +CFLAGS.error_private.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.fse_compress.c=		-fno-tree-vectorize
 +CFLAGS.fse_compress.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.fse_decompress.c=	-fno-tree-vectorize
 +CFLAGS.fse_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.hist.c=			-fno-tree-vectorize
 +CFLAGS.hist.c+=			${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.huf_compress.c=		-fno-tree-vectorize
 +CFLAGS.huf_compress.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.huf_decompress.c=	-fno-tree-vectorize
 +CFLAGS.huf_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.pool.c=			-fno-tree-vectorize
 +CFLAGS.pool.c+=			${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.xxhash.c=		-fno-tree-vectorize
 +CFLAGS.xxhash.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_compress.c=		-fno-tree-vectorize
 +CFLAGS.zstd_compress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_compress_literals.c=	-fno-tree-vectorize
 +CFLAGS.zstd_compress_literals.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_compress_sequences.c=	-fno-tree-vectorize
 +CFLAGS.zstd_compress_sequences.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_compress_superblock.c=	-fno-tree-vectorize
 +CFLAGS.zstd_compress_superblock.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_double_fast.c=	-fno-tree-vectorize
 +CFLAGS.zstd_double_fast.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_fast.c=		-fno-tree-vectorize
 +CFLAGS.zstd_fast.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_lazy.c=		-fno-tree-vectorize
 +CFLAGS.zstd_lazy.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_ldm.c=		-fno-tree-vectorize
 +CFLAGS.zstd_ldm.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_opt.c=		-fno-tree-vectorize
 +CFLAGS.zstd_opt.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_ddict.c=		-fno-tree-vectorize
 +CFLAGS.zstd_ddict.c+=		${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_decompress.c=	-fno-tree-vectorize
 +CFLAGS.zstd_decompress.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +CFLAGS.zstd_decompress_block.c=	-fno-tree-vectorize
 +CFLAGS.zstd_decompress_block.c+=	${NO_WBITWISE_INSTEAD_OF_LOGICAL}
 +
 +.include <bsd.lib.mk>
diff --cc sys/contrib/openzfs/config/kernel-user-ns-inum.m4
index 000000000000,2207a4aa6921..2207a4aa6921
mode 000000,100644..100644
--- a/sys/contrib/openzfs/config/kernel-user-ns-inum.m4
+++ b/sys/contrib/openzfs/config/kernel-user-ns-inum.m4
diff --cc sys/contrib/openzfs/etc/systemd/system/zfs-trim-monthly@.timer.in
index 000000000000,8c13ffb304b3..8c13ffb304b3
mode 000000,100644..100644
--- a/sys/contrib/openzfs/etc/systemd/system/zfs-trim-monthly@.timer.in
+++ b/sys/contrib/openzfs/etc/systemd/system/zfs-trim-monthly@.timer.in
diff --cc sys/contrib/openzfs/etc/systemd/system/zfs-trim-weekly@.timer.in
index 000000000000,dced3d88b5c9..dced3d88b5c9
mode 000000,100644..100644
--- a/sys/contrib/openzfs/etc/systemd/system/zfs-trim-weekly@.timer.in
+++ b/sys/contrib/openzfs/etc/systemd/system/zfs-trim-weekly@.timer.in
diff --cc sys/contrib/openzfs/etc/systemd/system/zfs-trim@.service.in
index 000000000000,423fb448c16f..423fb448c16f
mode 000000,100644..100644
--- a/sys/contrib/openzfs/etc/systemd/system/zfs-trim@.service.in
+++ b/sys/contrib/openzfs/etc/systemd/system/zfs-trim@.service.in
diff --cc sys/contrib/openzfs/include/sys/blake3.h
index 000000000000,b3391c5f2349..b3391c5f2349
mode 000000,100644..100644
--- a/sys/contrib/openzfs/include/sys/blake3.h
+++ b/sys/contrib/openzfs/include/sys/blake3.h
diff --cc sys/contrib/openzfs/include/sys/zfs_chksum.h
index 000000000000,cfd07bd0ffe7..cfd07bd0ffe7
mode 000000,100644..100644
--- a/sys/contrib/openzfs/include/sys/zfs_chksum.h
+++ b/sys/contrib/openzfs/include/sys/zfs_chksum.h
diff --cc sys/contrib/openzfs/man/man8/zfs-unzone.8
index 000000000000,9052b28aa880..9052b28aa880
mode 000000,120000..120000
--- a/sys/contrib/openzfs/man/man8/zfs-unzone.8
+++ b/sys/contrib/openzfs/man/man8/zfs-unzone.8
diff --cc sys/contrib/openzfs/man/man8/zfs-zone.8
index 000000000000,2f975dde6799..2f975dde6799
mode 000000,100644..100644
--- a/sys/contrib/openzfs/man/man8/zfs-zone.8
+++ b/sys/contrib/openzfs/man/man8/zfs-zone.8
diff --cc sys/contrib/openzfs/module/icp/algs/blake3/blake3.c
index 000000000000,8c9c06eb9d9f..8c9c06eb9d9f
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/algs/blake3/blake3.c
+++ b/sys/contrib/openzfs/module/icp/algs/blake3/blake3.c
diff --cc sys/contrib/openzfs/module/icp/algs/blake3/blake3_generic.c
index 000000000000,6ff9a845ccdc..6ff9a845ccdc
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/algs/blake3/blake3_generic.c
+++ b/sys/contrib/openzfs/module/icp/algs/blake3/blake3_generic.c
diff --cc sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.c
index 000000000000,c3809a2827be..c3809a2827be
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.c
+++ b/sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.c
diff --cc sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.h
index 000000000000,7b40cc4d3f02..7b40cc4d3f02
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.h
+++ b/sys/contrib/openzfs/module/icp/algs/blake3/blake3_impl.h
diff --cc sys/contrib/openzfs/module/icp/algs/blake3/blake3_x86-64.c
index 000000000000,48715e2128d2..48715e2128d2
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/algs/blake3/blake3_x86-64.c
+++ b/sys/contrib/openzfs/module/icp/algs/blake3/blake3_x86-64.c
diff --cc sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse2.S
index 000000000000,59a4d9afd437..59a4d9afd437
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse2.S
+++ b/sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse2.S
diff --cc sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse41.S
index 000000000000,eb6946400b8a..eb6946400b8a
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse41.S
+++ b/sys/contrib/openzfs/module/icp/asm-aarch64/blake3/b3_aarch64_sse41.S
diff --cc sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse2.S
index 000000000000,9deba202fde8..9deba202fde8
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse2.S
+++ b/sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse2.S
diff --cc sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S
index 000000000000,a8b2627f12b0..a8b2627f12b0
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S
+++ b/sys/contrib/openzfs/module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S
diff --cc sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx2.S
index 000000000000,b15d8fc7744e..b15d8fc7744e
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx2.S
+++ b/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx2.S
diff --cc sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx512.S
index 000000000000,d02c5e7ec92f..d02c5e7ec92f
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx512.S
+++ b/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx512.S
diff --cc sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse2.S
index 000000000000,39d23ee233df..39d23ee233df
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse2.S
+++ b/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse2.S
diff --cc sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse41.S
index 000000000000,1c40236f0628..1c40236f0628
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse41.S
+++ b/sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_sse41.S
diff --cc sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
index 000000000000,b8a8b7cd8cd8..b8a8b7cd8cd8
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
+++ b/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
diff --cc sys/contrib/openzfs/module/zfs/blake3_zfs.c
index 000000000000,7560f30fd4e4..7560f30fd4e4
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/zfs/blake3_zfs.c
+++ b/sys/contrib/openzfs/module/zfs/blake3_zfs.c
diff --cc sys/contrib/openzfs/module/zfs/zfs_chksum.c
index 000000000000,639784287d72..639784287d72
mode 000000,100644..100644
--- a/sys/contrib/openzfs/module/zfs/zfs_chksum.c
+++ b/sys/contrib/openzfs/module/zfs/zfs_chksum.c
diff --cc sys/contrib/openzfs/tests/zfs-tests/cmd/checksum/blake3_test.c
index 000000000000,55d268f5f8b7..55d268f5f8b7
mode 000000,100644..100644
--- a/sys/contrib/openzfs/tests/zfs-tests/cmd/checksum/blake3_test.c
+++ b/sys/contrib/openzfs/tests/zfs-tests/cmd/checksum/blake3_test.c
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/checksum/run_blake3_test.ksh
index 000000000000,cf1ca70328e1..cf1ca70328e1
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/checksum/run_blake3_test.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/checksum/run_blake3_test.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_002.ksh
index 000000000000,a5f76014ab85..a5f76014ab85
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_002.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_002.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_003.ksh
index 000000000000,20a7f6677d20..20a7f6677d20
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_003.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_003.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_004.ksh
index 000000000000,6edb0413c98a..6edb0413c98a
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_004.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/user_namespace/user_namespace_004.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_fua.ksh
index 000000000000,e44107030f3c..e44107030f3c
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_fua.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_fua.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_trim.ksh
index 000000000000,2e417a0e6676..2e417a0e6676
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_trim.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_trim.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/cleanup.ksh
index 000000000000,b81a372638e3..b81a372638e3
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/cleanup.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/cleanup.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/setup.ksh
index 000000000000,9e70fc47b89b..9e70fc47b89b
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/setup.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/setup.ksh
diff --cc sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/zvol_stress.ksh
index 000000000000,c1aadcac3bf5..c1aadcac3bf5
mode 000000,100755..100755
--- a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/zvol_stress.ksh
+++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/zvol/zvol_stress/zvol_stress.ksh
diff --cc sys/modules/zfs/Makefile
index 510511a3e118,000000000000..1a6912fb8ebd
mode 100644,000000..100644
--- a/sys/modules/zfs/Makefile
+++ b/sys/modules/zfs/Makefile
@@@ -1,446 -1,0 +1,474 @@@
 +# $FreeBSD$
 +
 +SRCDIR=${SRCTOP}/sys/contrib/openzfs/module
 +INCDIR=${SRCTOP}/sys/contrib/openzfs/include
 +
 +KMOD=	zfs
 +
 +.PATH:	${SRCDIR}/avl \
 +	${SRCDIR}/lua \
 +	${SRCDIR}/nvpair \
++        ${SRCDIR}/icp/algs/blake3 \
++        ${SRCDIR}/icp/asm-aarch64/blake3 \
++        ${SRCDIR}/icp/asm-ppc64/blake3 \
++        ${SRCDIR}/icp/asm-x86_64/blake3 \
 +	${SRCDIR}/icp/algs/edonr \
 +	${SRCDIR}/os/freebsd/spl \
 +	${SRCDIR}/os/freebsd/zfs \
 +	${SRCDIR}/unicode \
 +	${SRCDIR}/zcommon \
 +	${SRCDIR}/zfs	\
 +	${SRCDIR}/zstd	\
 +	${SRCDIR}/zstd/lib/common \
 +	${SRCDIR}/zstd/lib/compress \
 +	${SRCDIR}/zstd/lib/decompress
 +
 +
 +CFLAGS+= -I${INCDIR}
 +CFLAGS+= -I${INCDIR}/os/freebsd
 +CFLAGS+= -I${INCDIR}/os/freebsd/spl
 +CFLAGS+= -I${INCDIR}/os/freebsd/zfs
 +CFLAGS+= -I${SRCDIR}/zstd/include
++CFLAGS+= -I${SRCDIR}/icp/include
 +CFLAGS+= -I${.CURDIR}
 +
 +CFLAGS+= -D__KERNEL__ -DFREEBSD_NAMECACHE -DBUILDING_ZFS \
 +	-DHAVE_UIO_ZEROCOPY -DWITHOUT_NETDUMP -D__KERNEL -D_SYS_CONDVAR_H_ \
 +	-D_SYS_VMEM_H_ -DIN_FREEBSD_BASE
 +
 +.if ${MACHINE_ARCH} == "amd64"
- CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_SSE2 -DHAVE_AVX512F -DHAVE_AVX512BW -DHAVE_SSSE3
++CFLAGS+= -D__x86_64 -DHAVE_SSE2 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 \
++	-DHAVE_AVX -DHAVE_AVX2 -DHAVE_AVX512F -DHAVE_AVX512VL -DHAVE_AVX512BW
 +.endif
 +
 +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "powerpc" || \
 +	${MACHINE_ARCH} == "powerpcspe" || ${MACHINE_ARCH} == "arm"
 +CFLAGS+= -DBITS_PER_LONG=32
 +.else
 +CFLAGS+= -DBITS_PER_LONG=64
 +.endif
 +
 +SRCS=	vnode_if.h device_if.h bus_if.h
 +
 +# avl
 +SRCS+=	avl.c
 +
 +# icp
 +SRCS+=	edonr.c
 +
++#icp/algs/blake3
++SRCS+=	blake3.c \
++	blake3_generic.c \
++	blake3_impl.c \
++	blake3_x86-64.c
++
++#icp/asm-aarch64/blake3
++SRCS+=	b3_aarch64_sse2.S \
++	b3_aarch64_sse41.S
++
++#icp/asm-ppc64/blake3
++SRCS+=	b3_ppc64le_sse2.S \
++	b3_ppc64le_sse41.S
++
*** 1384 LINES SKIPPED ***