git: e2df9bb44109 - main - zfs: merge openzfs/zfs@b10992582
Date: Mon, 09 Sep 2024 16:48:12 UTC
The branch main has been updated by mm:
URL: https://cgit.FreeBSD.org/src/commit/?id=e2df9bb44109577475aeb186e7186ac040f9bde1
commit e2df9bb44109577475aeb186e7186ac040f9bde1
Merge: f05795e3f65f b109925820fb
Author: Martin Matuska <mm@FreeBSD.org>
AuthorDate: 2024-09-09 16:13:02 +0000
Commit: Martin Matuska <mm@FreeBSD.org>
CommitDate: 2024-09-09 16:13:02 +0000
zfs: merge openzfs/zfs@b10992582
Notable upstream pull request merges:
#15892 -multiple Fast Dedup: Introduce the FDT on-disk format and feature flag
#15893 -multiple Fast Dedup: “flat” DDT entry format
#15895 -multiple Fast Dedup: FDT-log feature
#16239 6be8bf555 zpool: Provide GUID to zpool-reguid(8) with -g
#16277 -multiple Fast Dedup: prune unique entries
#16316 5807de90a Fix null ptr deref when renaming a zvol with snaps and snapdev=visible
#16343 77a797a38 Enable L2 cache of all (MRU+MFU) metadata but MFU data only
#16446 83f359245 FreeBSD: fix build without kernel option MAC
#16449 963e6c9f3 Fix incorrect error report on vdev attach/replace
#16505 b10992582 spa_prop_get: require caller to supply output nvlist
Obtained from: OpenZFS
OpenZFS commit: b109925820fb79db3e37670c159977f03edd950f
cddl/lib/libicp/Makefile | 1 +
cddl/lib/libicp_rescue/Makefile | 1 +
cddl/lib/libzfs/Makefile | 3 +-
cddl/lib/libzpool/Makefile | 8 +-
cddl/sbin/zpool/Makefile | 2 +
cddl/usr.bin/zinject/Makefile | 1 +
cddl/usr.bin/zstream/Makefile | 2 +
cddl/usr.bin/ztest/Makefile | 1 +
cddl/usr.sbin/zdb/Makefile | 1 +
cddl/usr.sbin/zfsd/Makefile.common | 1 +
cddl/usr.sbin/zhack/Makefile | 1 +
lib/libbe/Makefile | 1 +
sys/cddl/boot/zfs/zfssubr.c | 4 +-
sys/conf/files | 2 +
sys/contrib/openzfs/META | 2 +-
sys/contrib/openzfs/cmd/Makefile.am | 4 +-
sys/contrib/openzfs/cmd/mount_zfs.c | 5 +-
sys/contrib/openzfs/cmd/raidz_test/Makefile.am | 2 +-
sys/contrib/openzfs/cmd/zdb/Makefile.am | 2 +-
sys/contrib/openzfs/cmd/zdb/zdb.c | 486 +++--
sys/contrib/openzfs/cmd/zed/agents/zfs_diagnosis.c | 15 +-
sys/contrib/openzfs/cmd/zpool/zpool_main.c | 136 +-
sys/contrib/openzfs/cmd/zstream/Makefile.am | 2 +
.../openzfs/cmd/zstream/zstream_decompress.c | 124 +-
.../openzfs/cmd/zstream/zstream_recompress.c | 110 +-
sys/contrib/openzfs/cmd/ztest.c | 30 +-
sys/contrib/openzfs/config/Rules.am | 8 +-
.../contrib/debian/openzfs-zfsutils.install | 1 +
sys/contrib/openzfs/include/Makefile.am | 1 +
sys/contrib/openzfs/include/libzfs.h | 4 +
sys/contrib/openzfs/include/libzfs_core.h | 3 +
sys/contrib/openzfs/include/os/freebsd/Makefile.am | 2 +
.../include/os/freebsd/zfs/sys/abd_impl_os.h | 41 +
.../openzfs/include/os/freebsd/zfs/sys/abd_os.h | 46 +
sys/contrib/openzfs/include/os/linux/Makefile.am | 2 +
.../openzfs/include/os/linux/spl/sys/taskq.h | 42 +
.../openzfs/include/os/linux/zfs/sys/abd_impl_os.h | 41 +
.../openzfs/include/os/linux/zfs/sys/abd_os.h | 62 +
sys/contrib/openzfs/include/sys/abd.h | 37 +-
sys/contrib/openzfs/include/sys/abd_impl.h | 14 +-
sys/contrib/openzfs/include/sys/ddt.h | 214 ++-
sys/contrib/openzfs/include/sys/ddt_impl.h | 202 +-
sys/contrib/openzfs/include/sys/dmu.h | 2 +
sys/contrib/openzfs/include/sys/dsl_scan.h | 2 +-
sys/contrib/openzfs/include/sys/fs/zfs.h | 20 +-
sys/contrib/openzfs/include/sys/spa.h | 9 +-
sys/contrib/openzfs/include/sys/spa_impl.h | 1 +
sys/contrib/openzfs/include/sys/zio.h | 3 +
sys/contrib/openzfs/include/sys/zio_compress.h | 90 +-
sys/contrib/openzfs/include/sys/zio_impl.h | 3 +
sys/contrib/openzfs/include/sys/zio_priority.h | 4 +
sys/contrib/openzfs/include/sys/zstd/zstd.h | 8 +-
sys/contrib/openzfs/include/zfeature_common.h | 1 +
sys/contrib/openzfs/include/zfs_valstr.h | 84 +
sys/contrib/openzfs/lib/libzfs/Makefile.am | 1 +
sys/contrib/openzfs/lib/libzfs/libzfs.abi | 135 +-
sys/contrib/openzfs/lib/libzfs/libzfs_pool.c | 76 +-
.../openzfs/lib/libzfs_core/libzfs_core.abi | 15 +
sys/contrib/openzfs/lib/libzfs_core/libzfs_core.c | 22 +
sys/contrib/openzfs/lib/libzpool/Makefile.am | 8 +-
sys/contrib/openzfs/lib/libzpool/abd_os.c | 365 ++++
.../openzfs/lib/libzpool/include/Makefile.am | 4 +
.../openzfs/lib/libzpool/include/sys/abd_impl_os.h | 41 +
.../openzfs/lib/libzpool/include/sys/abd_os.h | 47 +
sys/contrib/openzfs/man/Makefile.am | 1 +
sys/contrib/openzfs/man/man4/spl.4 | 11 -
sys/contrib/openzfs/man/man4/zfs.4 | 108 +-
sys/contrib/openzfs/man/man7/zpool-features.7 | 17 +-
sys/contrib/openzfs/man/man8/zpool-ddtprune.8 | 48 +
sys/contrib/openzfs/man/man8/zpool-reguid.8 | 14 +-
sys/contrib/openzfs/man/man8/zpool.8 | 1 +
sys/contrib/openzfs/module/Kbuild.in | 6 +-
sys/contrib/openzfs/module/Makefile.bsd | 3 +
sys/contrib/openzfs/module/os/freebsd/zfs/abd_os.c | 4 +-
.../openzfs/module/os/freebsd/zfs/sysctl_os.c | 1 -
.../openzfs/module/os/linux/spl/spl-generic.c | 20 +-
sys/contrib/openzfs/module/os/linux/spl/spl-proc.c | 268 ---
.../openzfs/module/os/linux/spl/spl-taskq.c | 414 +++-
.../openzfs/module/os/linux/spl/spl-thread.c | 7 +
sys/contrib/openzfs/module/os/linux/zfs/abd_os.c | 153 +-
sys/contrib/openzfs/module/os/linux/zfs/arc_os.c | 6 +-
.../openzfs/module/os/linux/zfs/zfs_ctldir.c | 8 +-
.../openzfs/module/os/linux/zfs/zpl_super.c | 8 +-
sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 14 +-
.../openzfs/module/zcommon/zfeature_common.c | 6 +
sys/contrib/openzfs/module/zcommon/zfs_valstr.c | 277 +++
sys/contrib/openzfs/module/zfs/abd.c | 24 +-
sys/contrib/openzfs/module/zfs/arc.c | 95 +-
sys/contrib/openzfs/module/zfs/blkptr.c | 9 +-
sys/contrib/openzfs/module/zfs/dataset_kstats.c | 3 +
sys/contrib/openzfs/module/zfs/ddt.c | 1981 +++++++++++++++++---
sys/contrib/openzfs/module/zfs/ddt_log.c | 778 ++++++++
sys/contrib/openzfs/module/zfs/ddt_stats.c | 129 +-
sys/contrib/openzfs/module/zfs/ddt_zap.c | 30 +-
sys/contrib/openzfs/module/zfs/dmu.c | 32 +
sys/contrib/openzfs/module/zfs/dmu_recv.c | 7 +-
sys/contrib/openzfs/module/zfs/dsl_dataset.c | 8 +-
sys/contrib/openzfs/module/zfs/dsl_scan.c | 46 +-
sys/contrib/openzfs/module/zfs/gzip.c | 13 +-
sys/contrib/openzfs/module/zfs/lz4_zfs.c | 11 +-
sys/contrib/openzfs/module/zfs/lzjb.c | 13 +-
sys/contrib/openzfs/module/zfs/spa.c | 31 +-
sys/contrib/openzfs/module/zfs/zfs_fm.c | 2 +-
sys/contrib/openzfs/module/zfs/zfs_ioctl.c | 80 +-
sys/contrib/openzfs/module/zfs/zio.c | 473 +++--
sys/contrib/openzfs/module/zfs/zio_compress.c | 92 +-
sys/contrib/openzfs/module/zfs/zle.c | 13 +-
sys/contrib/openzfs/module/zstd/zfs_zstd.c | 102 +-
sys/contrib/openzfs/rpm/generic/zfs-kmod.spec.in | 18 +
sys/contrib/openzfs/tests/runfiles/common.run | 8 +-
.../openzfs/tests/zfs-tests/cmd/Makefile.am | 2 +-
.../openzfs/tests/zfs-tests/include/tunables.cfg | 1 +
.../openzfs/tests/zfs-tests/tests/Makefile.am | 6 +
.../functional/cli_root/zpool_get/zpool_get.cfg | 1 +
.../zpool_prefetch/zpool_prefetch_001_pos.ksh | 4 +
.../functional/cli_root/zpool_reguid/Makefile.am | 6 +
.../functional/cli_root/zpool_reguid/cleanup.ksh | 32 +
.../functional/cli_root/zpool_reguid/setup.ksh | 34 +
.../cli_root/zpool_reguid/zpool_reguid_001_pos.ksh | 73 +
.../cli_root/zpool_reguid/zpool_reguid_002_neg.ksh | 60 +
.../tests/functional/dedup/dedup_fdt_create.ksh | 106 ++
.../tests/functional/dedup/dedup_fdt_import.ksh | 119 ++
.../tests/functional/dedup/dedup_legacy_create.ksh | 95 +
.../functional/dedup/dedup_legacy_fdt_mixed.ksh | 104 +
.../functional/dedup/dedup_legacy_fdt_upgrade.ksh | 129 ++
.../tests/functional/dedup/dedup_legacy_import.ksh | 104 +
.../tests/functional/dedup/dedup_quota.ksh | 18 +-
.../zfs-tests/tests/functional/dedup/setup.ksh | 4 -
sys/modules/zfs/Makefile | 3 +
sys/modules/zfs/zfs_config.h | 6 +-
sys/modules/zfs/zfs_gitrev.h | 2 +-
usr.sbin/fstyp/Makefile | 1 +
132 files changed, 7401 insertions(+), 1510 deletions(-)
diff --cc cddl/lib/libicp/Makefile
index b8bd3dc6df95,000000000000..f097e7e6ff58
mode 100644,000000..100644
--- a/cddl/lib/libicp/Makefile
+++ b/cddl/lib/libicp/Makefile
@@@ -1,137 -1,0 +1,138 @@@
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/icp
+
+PACKAGE= zfs
+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-x86_64.S \
+ asm-x86_64/sha2/sha512-x86_64.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_CPUARCH} == "arm"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-arm/sha2/sha256-armv7.S \
+ asm-arm/sha2/sha512-armv7.S
+.elif ${MACHINE_ARCH} == "aarch64"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-aarch64/blake3/b3_aarch64_sse2.S \
+ asm-aarch64/blake3/b3_aarch64_sse41.S \
+ asm-aarch64/sha2/sha256-armv8.S \
+ asm-aarch64/sha2/sha512-armv8.S
+.elif ${MACHINE_ARCH} == "powerpc64"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-ppc64/sha2/sha256-ppc.S \
+ asm-ppc64/sha2/sha512-ppc.S \
+ asm-ppc64/sha2/sha256-p8.S \
+ asm-ppc64/sha2/sha512-p8.S
+.elif ${MACHINE_ARCH} == "powerpc64le"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-ppc64/blake3/b3_ppc64le_sse2.S \
+ asm-ppc64/blake3/b3_ppc64le_sse41.S \
+ asm-ppc64/sha2/sha256-ppc.S \
+ asm-ppc64/sha2/sha512-ppc.S \
+ asm-ppc64/sha2/sha256-p8.S \
+ asm-ppc64/sha2/sha512-p8.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/edonr/edonr.c \
+ algs/modes/modes.c \
+ algs/modes/gcm_generic.c \
+ algs/modes/gcm_pclmulqdq.c \
+ algs/modes/gcm.c \
+ algs/modes/ccm.c \
+ algs/sha2/sha2_generic.c \
+ algs/sha2/sha256_impl.c \
+ algs/sha2/sha512_impl.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 \
+ 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)
+
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zfs
+KERNEL_C+= zfs_impl.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+= -I${SRCTOP}/sys/contrib/openzfs/lib/libzpool/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-x86_64.S+= -DLOCORE
+CFLAGS.sha512-x86_64.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.sha256-armv7.S = -DLOCORE
+CFLAGS.sha256-armv8.S = -DLOCORE
+CFLAGS.sha512-armv7.S = -DLOCORE
+CFLAGS.sha512-armv8.S = -DLOCORE
+CFLAGS.b3_ppc64le_sse2.S = -DLOCORE
+CFLAGS.b3_ppc64le_sse41.S = -DLOCORE
+CFLAGS.sha256-p8.S = -DLOCORE
+CFLAGS.sha256-ppc.S = -DLOCORE
+CFLAGS.sha512-p8.S = -DLOCORE
+CFLAGS.sha512-ppc.S = -DLOCORE
+
+
+LDFLAGS.bfd+= -Wl,-znoexecstack
+
+.include <bsd.lib.mk>
diff --cc cddl/lib/libicp_rescue/Makefile
index 3b332f736bde,000000000000..3a8b6746fe61
mode 100644,000000..100644
--- a/cddl/lib/libicp_rescue/Makefile
+++ b/cddl/lib/libicp_rescue/Makefile
@@@ -1,134 -1,0 +1,135 @@@
+.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-x86_64.S \
+ asm-x86_64/sha2/sha512-x86_64.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_CPUARCH} == "arm"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-arm/sha2/sha256-armv7.S \
+ asm-arm/sha2/sha512-armv7.S
+.elif ${MACHINE_ARCH} == "aarch64"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-aarch64/blake3/b3_aarch64_sse2.S \
+ asm-aarch64/blake3/b3_aarch64_sse41.S \
+ asm-aarch64/sha2/sha256-armv8.S \
+ asm-aarch64/sha2/sha512-armv8.S
+.elif ${MACHINE_ARCH} == "powerpc64"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-ppc64/sha2/sha256-ppc.S \
+ asm-ppc64/sha2/sha512-ppc.S \
+ asm-ppc64/sha2/sha256-p8.S \
+ asm-ppc64/sha2/sha512-p8.S
+.elif ${MACHINE_ARCH} == "powerpc64le"
+ASM_SOURCES_C =
+ASM_SOURCES_AS = \
+ asm-ppc64/blake3/b3_ppc64le_sse2.S \
+ asm-ppc64/blake3/b3_ppc64le_sse41.S \
+ asm-ppc64/sha2/sha256-ppc.S \
+ asm-ppc64/sha2/sha512-ppc.S \
+ asm-ppc64/sha2/sha256-p8.S \
+ asm-ppc64/sha2/sha512-p8.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/edonr/edonr.c \
+ algs/modes/modes.c \
+ algs/modes/gcm_generic.c \
+ algs/modes/gcm_pclmulqdq.c \
+ algs/modes/gcm.c \
+ algs/modes/ccm.c \
+ algs/sha2/sha2_generic.c \
+ algs/sha2/sha256_impl.c \
+ algs/sha2/sha512_impl.c \
+ algs/skein/skein_block.c \
+ illumos-crypto.c \
+ io/aes.c \
+ io/sha2_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)
+
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zfs
+KERNEL_C+= zfs_impl.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+= -I${SRCTOP}/sys/contrib/openzfs/lib/libzpool/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-x86_64.S+= -DLOCORE
+CFLAGS.sha512-x86_64.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.sha256-armv7.S = -DLOCORE
+CFLAGS.sha512-armv7.S = -DLOCORE
+CFLAGS.sha256-armv8.S = -DLOCORE
+CFLAGS.sha512-armv8.S = -DLOCORE
+CFLAGS.b3_ppc64le_sse2.S = -DLOCORE
+CFLAGS.b3_ppc64le_sse41.S = -DLOCORE
+CFLAGS.sha256-ppc.S = -DLOCORE
+CFLAGS.sha256-p8.S = -DLOCORE
+CFLAGS.sha512-ppc.S = -DLOCORE
+CFLAGS.sha512-p8.S = -DLOCORE
+
+LDFLAGS.bfd+= -Wl,-znoexecstack
+
+.include <bsd.lib.mk>
diff --cc cddl/lib/libzfs/Makefile
index 0b31fcb04b07,000000000000..bb0127a9108a
mode 100644,000000..100644
--- a/cddl/lib/libzfs/Makefile
+++ b/cddl/lib/libzfs/Makefile
@@@ -1,107 -1,0 +1,108 @@@
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/icp
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zcommon
+.PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libzfs
+.PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libzfs/os/freebsd
+.PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libshare
+.PATH: ${SRCTOP}/sys/contrib/openzfs/include
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zstd
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zstd/lib
+
+PACKAGE= zfs
+LIB= zfs
+LIBADD= \
+ avl \
+ bsdxml \
+ crypto \
+ geom \
+ m \
+ md \
+ nvpair \
+ pthread \
+ rt \
+ umem \
+ util \
+ uutil \
+ z \
+ zfs_core \
+ zutil
+
+INCS= libzfs.h
+USER_C = \
+ 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
+
+# FreeBSD
+USER_C += \
+ libzfs_compat.c \
+ libzfs_zmount.c
+
+# libshare
+USER_C += \
+ libshare.c \
+ nfs.c \
+ os/freebsd/nfs.c \
+ os/freebsd/smb.c
+
+KERNEL_C = \
+ cityhash.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_valstr.c \
+ zpool_prop.c \
+ zprop_common.c
+
-
+ARCH_C =
+.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
+ARCH_C += zfs_fletcher_intel.c \
+ zfs_fletcher_sse.c
+CFLAGS += -DHAVE_SSE2
+.endif
+.if ${MACHINE_ARCH} == "amd64"
+ARCH_C += zfs_fletcher_avx512.c
+CFLAGS+= -DHAVE_AVX2 -DHAVE_AVX -D__x86_64 -DHAVE_AVX512F
+.endif
+.if ${MACHINE_CPUARCH} == "aarch64"
+ARCH_C += zfs_fletcher_aarch64_neon.c
+.endif
+
+SRCS= $(USER_C) $(KERNEL_C) $(ARCH_C)
+
+WARNS?= 2
+SHLIB_MAJOR= 4
+CSTD= c99
+CFLAGS+= -DIN_BASE
+CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include
+CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include/os/freebsd
+CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include
+CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd
+CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libshare
++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libzpool/include
+CFLAGS+= -I${SRCTOP}/sys/contrib/ck/include
+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+= -DHAVE_EXECVPE
+CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h
+CFLAGS+= -DSYSCONFDIR=\"/etc\"
+CFLAGS+= -DPKGDATADIR=\"/usr/share/zfs\"
+CFLAGS+= -DZFSEXECDIR=\"${LIBEXECDIR}/zfs\"
+
+.include <bsd.lib.mk>
diff --cc cddl/lib/libzpool/Makefile
index 95038f4e5638,000000000000..b80486484506
mode 100644,000000..100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@@ -1,339 -1,0 +1,341 @@@
+ZFSTOP= ${SRCTOP}/sys/contrib/openzfs
+
++.PATH: ${ZFSTOP}/lib/libzpool
++
+# 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
+
+PACKAGE= zfs
+LIB= zpool
+
+USER_C = \
++ abd_os.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 \
+ bqueue.c \
+ btree.c \
+ brt.c \
+ cityhash.c \
+ dbuf.c \
+ dbuf_stats.c \
+ ddt.c \
++ ddt_log.c \
+ ddt_stats.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 \
+ sha2_zfs.c \
+ skein_zfs.c \
+ spa.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_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_label_os.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/contrib/openzfs/lib/libzpool/include \
+ -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.gcc+= -Wno-pointer-to-int-cast
+
+# Pointer values are used as debugging "tags" to mark reference count
+# ownerships and in some cases the tag reference is dropped after an
+# object is freed.
+CFLAGS.dbuf.c= ${NO_WUSE_AFTER_FREE}
+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 cddl/sbin/zpool/Makefile
index aaa2c51016ad,000000000000..ab7b852b4d9a
mode 100644,000000..100644
--- a/cddl/sbin/zpool/Makefile
+++ b/cddl/sbin/zpool/Makefile
@@@ -1,80 -1,0 +1,82 @@@
+ZFSTOP= ${SRCTOP}/sys/contrib/openzfs
+
+.PATH: ${ZFSTOP}/man/man4
+.PATH: ${ZFSTOP}/man/man5
+.PATH: ${ZFSTOP}/man/man7
+.PATH: ${ZFSTOP}/man/man8
+.PATH: ${ZFSTOP}/cmd/zpool
+.PATH: ${ZFSTOP}/cmd/zpool/os/freebsd
+
+
+PACKAGE= zfs
+PROG= zpool
+MAN= \
+ spl.4 \
+ vdevprops.7 \
+ zfs.4 \
+ zpool.8 \
+ zpool-add.8 \
+ zpool-attach.8 \
+ zpool-checkpoint.8 \
+ zpool-clear.8 \
+ zpool-create.8 \
+ zpool-destroy.8 \
+ zpool-detach.8 \
++ zpool-ddtprune.8 \
+ zpool-events.8 \
+ zpool-export.8 \
+ zpool-features.7 \
+ 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-prefetch.8 \
+ zpool-reguid.8 \
+ zpool-remove.8 \
+ zpool-reopen.8 \
+ zpool-replace.8 \
+ zpool-resilver.8 \
+ zpool-scrub.8 \
+ zpool-split.8 \
+ zpool-status.8 \
+ zpool-sync.8 \
+ zpool-trim.8 \
+ zpool-upgrade.8 \
+ zpool-wait.8 \
+ zpoolconcepts.7 \
+ zpoolprops.7
+MLINKS= \
+ zpool-offline.8 zpool-online.8 \
+ zpool-get.8 zpool-set.8
+SRCS= \
+ zpool_iter.c \
+ zpool_main.c \
+ zpool_util.c \
+ zpool_util.h \
+ zpool_vdev.c \
+ zpool_vdev_os.c
+
+WARNS?= 2
+
+CFLAGS+= \
+ -DIN_BASE \
+ -I${ZFSTOP}/include \
+ -I${ZFSTOP}/lib/libspl/include \
+ -I${ZFSTOP}/lib/libspl/include/os/freebsd \
*** 9973 LINES SKIPPED ***