git: 184c1b943937 - main - zfs: merge OpenZFS master-436ab35a5
Martin Matuska
mm at FreeBSD.org
Tue Feb 16 01:58:22 UTC 2021
The branch main has been updated by mm:
URL: https://cgit.FreeBSD.org/src/commit/?id=184c1b943937986c81e1996d999d21626ec7a4ff
commit 184c1b943937986c81e1996d999d21626ec7a4ff
Merge: 10fc4c321838 83dd4a9252fd
Author: Martin Matuska <mm at FreeBSD.org>
AuthorDate: 2021-02-16 00:39:34 +0000
Commit: Martin Matuska <mm at FreeBSD.org>
CommitDate: 2021-02-16 01:46:28 +0000
zfs: merge OpenZFS master-436ab35a5
- speed up writing to ZFS pools without ZIL devices (aa755b3)
- speed up importing ZFS pools (2d8f72d, a0e0199, cf0977a)
...
MFC after: 2 weeks
Reviewed by: mjg (partial)
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D28677
cddl/lib/libzfs/Makefile | 1 -
cddl/lib/libzpool/Makefile | 1 -
.../openzfs/.github/PULL_REQUEST_TEMPLATE.md | 42 +++
.../.github/workflows/zfs-tests-functional.yml | 64 ++++
.../openzfs/.github/workflows/zfs-tests-sanity.yml | 60 ++++
sys/contrib/openzfs/META | 2 +-
sys/contrib/openzfs/Makefile.am | 13 +-
sys/contrib/openzfs/cmd/Makefile.am | 10 +
sys/contrib/openzfs/cmd/mount_zfs/Makefile.am | 2 +
sys/contrib/openzfs/cmd/mount_zfs/mount_zfs.c | 15 +
sys/contrib/openzfs/cmd/raidz_test/Makefile.am | 2 +
sys/contrib/openzfs/cmd/raidz_test/raidz_test.c | 5 +-
sys/contrib/openzfs/cmd/vdev_id/vdev_id | 399 +++++++++++++++------
sys/contrib/openzfs/cmd/zdb/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zdb/zdb.c | 138 ++++++-
sys/contrib/openzfs/cmd/zed/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zed/agents/zfs_agents.c | 19 +-
sys/contrib/openzfs/cmd/zed/agents/zfs_retire.c | 2 +-
sys/contrib/openzfs/cmd/zed/zed.d/zed-functions.sh | 0
sys/contrib/openzfs/cmd/zfs/Makefile.am | 2 +
.../openzfs/cmd/zfs_ids_to_path/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zgenhostid/Makefile.am | 4 +-
sys/contrib/openzfs/cmd/zhack/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zinject/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zpool/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zpool/zpool_main.c | 15 +-
sys/contrib/openzfs/cmd/zpool_influxdb/Makefile.am | 2 +
sys/contrib/openzfs/cmd/zstream/Makefile.am | 2 +
sys/contrib/openzfs/cmd/ztest/Makefile.am | 2 +
sys/contrib/openzfs/cmd/ztest/ztest.c | 388 ++++++++++----------
sys/contrib/openzfs/cmd/zvol_id/Makefile.am | 2 +
sys/contrib/openzfs/config/CppCheck.am | 11 +
sys/contrib/openzfs/config/Rules.am | 1 +
sys/contrib/openzfs/config/always-cppcheck.m4 | 6 +
sys/contrib/openzfs/config/ax_count_cpus.m4 | 101 ++++++
.../openzfs/config/kernel-get-disk-and-module.m4 | 0
sys/contrib/openzfs/config/kernel-vfs-iov_iter.m4 | 44 ---
sys/contrib/openzfs/config/zfs-build.m4 | 10 +-
.../contrib/dracut/90zfs/module-setup.sh.in | 4 +-
.../contrib/dracut/90zfs/zfs-env-bootfs.service.in | 2 +-
.../contrib/dracut/90zfs/zfs-generator.sh.in | 8 +
.../contrib/dracut/90zfs/zfs-load-key.sh.in | 2 +-
.../pyzfs/libzfs_core/test/test_libzfs_core.py | 4 +-
sys/contrib/openzfs/cppcheck-suppressions.txt | 8 -
.../etc/systemd/system/zfs-import-cache.service.in | 2 +-
.../etc/systemd/system/zfs-import-scan.service.in | 2 +-
.../openzfs/include/os/freebsd/spl/sys/Makefile.am | 1 +
.../openzfs/include/os/freebsd/spl/sys/ccompile.h | 3 -
.../openzfs/include/os/freebsd/spl/sys/fcntl.h | 38 ++
.../openzfs/include/os/freebsd/spl/sys/uio.h | 79 ++--
.../include/os/freebsd/zfs/sys/freebsd_crypto.h | 2 +-
.../include/os/freebsd/zfs/sys/zfs_znode_impl.h | 5 +-
sys/contrib/openzfs/include/os/linux/spl/sys/uio.h | 73 ++--
.../include/os/linux/zfs/sys/zfs_vnops_os.h | 2 +-
.../include/os/linux/zfs/sys/zfs_znode_impl.h | 5 +-
sys/contrib/openzfs/include/sys/abd.h | 75 +++-
sys/contrib/openzfs/include/sys/abd_impl.h | 48 +--
sys/contrib/openzfs/include/sys/crypto/common.h | 2 +-
sys/contrib/openzfs/include/sys/dmu.h | 15 +-
sys/contrib/openzfs/include/sys/fs/zfs.h | 1 +
sys/contrib/openzfs/include/sys/sa.h | 2 +-
sys/contrib/openzfs/include/sys/spa.h | 1 +
sys/contrib/openzfs/include/sys/spa_impl.h | 1 +
sys/contrib/openzfs/include/sys/uio_impl.h | 8 +-
sys/contrib/openzfs/include/sys/vdev.h | 4 +
sys/contrib/openzfs/include/sys/vdev_impl.h | 5 +
sys/contrib/openzfs/include/sys/vdev_raidz_impl.h | 1 +
sys/contrib/openzfs/include/sys/zfs_debug.h | 1 +
sys/contrib/openzfs/include/sys/zfs_sa.h | 2 +-
sys/contrib/openzfs/include/sys/zfs_vnops.h | 8 +-
sys/contrib/openzfs/include/sys/zfs_znode.h | 2 +
sys/contrib/openzfs/lib/Makefile.am | 10 +-
sys/contrib/openzfs/lib/libavl/Makefile.am | 2 +
sys/contrib/openzfs/lib/libefi/Makefile.am | 2 +
sys/contrib/openzfs/lib/libefi/rdwr_efi.c | 1 +
sys/contrib/openzfs/lib/libicp/Makefile.am | 2 +
sys/contrib/openzfs/lib/libnvpair/Makefile.am | 3 +-
sys/contrib/openzfs/lib/libshare/Makefile.am | 2 +
sys/contrib/openzfs/lib/libspl/Makefile.am | 9 +
.../lib/libspl/include/os/freebsd/Makefile.am | 4 +
.../openzfs/lib/libspl/include/os/freebsd/fcntl.h | 33 ++
.../lib/libspl/include/os/freebsd/sys/Makefile.am | 1 +
.../lib/libspl/include/os/freebsd/sys/fcntl.h | 38 ++
sys/contrib/openzfs/lib/libspl/include/sys/uio.h | 44 +--
sys/contrib/openzfs/lib/libtpool/Makefile.am | 2 +
sys/contrib/openzfs/lib/libunicode/Makefile.am | 2 +
sys/contrib/openzfs/lib/libuutil/Makefile.am | 3 +-
sys/contrib/openzfs/lib/libuutil/uu_avl.c | 1 +
sys/contrib/openzfs/lib/libzfs/Makefile.am | 3 +-
sys/contrib/openzfs/lib/libzfs/libzfs_import.c | 2 +-
sys/contrib/openzfs/lib/libzfs/libzfs_pool.c | 51 ++-
sys/contrib/openzfs/lib/libzfs/libzfs_sendrecv.c | 205 +++++------
sys/contrib/openzfs/lib/libzfs_core/Makefile.am | 3 +-
sys/contrib/openzfs/lib/libzfsbootenv/Makefile.am | 3 +-
sys/contrib/openzfs/lib/libzpool/Makefile.am | 2 +
sys/contrib/openzfs/lib/libzstd/Makefile.am | 2 +
sys/contrib/openzfs/lib/libzutil/Makefile.am | 5 +-
.../lib/libzutil/os/freebsd/zutil_import_os.c | 20 +-
sys/contrib/openzfs/lib/libzutil/zutil_import.c | 52 ++-
.../openzfs/man/man5/zfs-module-parameters.5 | 16 +
sys/contrib/openzfs/man/man8/zdb.8 | 18 +-
sys/contrib/openzfs/man/man8/zfs-list.8 | 11 +-
sys/contrib/openzfs/man/man8/zfs-program.8 | 4 +-
sys/contrib/openzfs/man/man8/zfsprops.8 | 2 +-
sys/contrib/openzfs/module/Makefile.in | 22 +-
sys/contrib/openzfs/module/avl/avl.c | 3 -
sys/contrib/openzfs/module/icp/algs/modes/modes.c | 12 +-
sys/contrib/openzfs/module/icp/core/kcf_prov_lib.c | 32 +-
sys/contrib/openzfs/module/icp/io/sha1_mod.c | 48 +--
sys/contrib/openzfs/module/icp/io/sha2_mod.c | 48 +--
sys/contrib/openzfs/module/icp/io/skein_mod.c | 40 +--
sys/contrib/openzfs/module/lua/ldebug.c | 1 -
sys/contrib/openzfs/module/lua/ldo.c | 1 -
.../openzfs/module/os/freebsd/spl/spl_uio.c | 38 +-
.../openzfs/module/os/freebsd/spl/spl_vfs.c | 2 +
sys/contrib/openzfs/module/os/freebsd/zfs/abd_os.c | 31 +-
.../openzfs/module/os/freebsd/zfs/crypto_os.c | 26 +-
.../openzfs/module/os/freebsd/zfs/zfs_ctldir.c | 40 ++-
.../openzfs/module/os/freebsd/zfs/zfs_file_os.c | 2 +-
.../openzfs/module/os/freebsd/zfs/zfs_vnops_os.c | 89 ++---
.../openzfs/module/os/freebsd/zfs/zfs_znode.c | 6 +-
.../openzfs/module/os/freebsd/zfs/zio_crypt.c | 77 ++--
.../openzfs/module/os/freebsd/zfs/zvol_os.c | 44 ++-
.../openzfs/module/os/linux/spl/spl-generic.c | 2 -
.../openzfs/module/os/linux/spl/spl-kstat.c | 2 +-
.../openzfs/module/os/linux/spl/spl-taskq.c | 3 +-
sys/contrib/openzfs/module/os/linux/zfs/abd_os.c | 49 ++-
.../openzfs/module/os/linux/zfs/vdev_disk.c | 49 ++-
.../module/{zcommon => os/linux/zfs}/zfs_uio.c | 95 +++--
.../openzfs/module/os/linux/zfs/zfs_vfsops.c | 2 +-
.../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 90 ++---
.../openzfs/module/os/linux/zfs/zfs_znode.c | 18 +-
.../openzfs/module/os/linux/zfs/zio_crypt.c | 30 +-
sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c | 18 +-
.../openzfs/module/os/linux/zfs/zpl_inode.c | 4 +-
.../openzfs/module/os/linux/zfs/zpl_xattr.c | 6 +-
sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 8 +-
sys/contrib/openzfs/module/zfs/abd.c | 293 ++++++++-------
sys/contrib/openzfs/module/zfs/arc.c | 42 ++-
sys/contrib/openzfs/module/zfs/dbuf.c | 2 +-
sys/contrib/openzfs/module/zfs/dmu.c | 54 ++-
sys/contrib/openzfs/module/zfs/dmu_objset.c | 2 +-
sys/contrib/openzfs/module/zfs/dmu_tx.c | 16 +
sys/contrib/openzfs/module/zfs/dsl_dataset.c | 13 +-
sys/contrib/openzfs/module/zfs/dsl_destroy.c | 15 +-
sys/contrib/openzfs/module/zfs/metaslab.c | 100 ++++--
sys/contrib/openzfs/module/zfs/sa.c | 6 +-
sys/contrib/openzfs/module/zfs/spa.c | 51 ++-
sys/contrib/openzfs/module/zfs/spa_history.c | 8 +-
sys/contrib/openzfs/module/zfs/spa_misc.c | 67 ++--
sys/contrib/openzfs/module/zfs/txg.c | 24 +-
sys/contrib/openzfs/module/zfs/vdev.c | 225 ++++++++++--
sys/contrib/openzfs/module/zfs/vdev_draid.c | 34 +-
sys/contrib/openzfs/module/zfs/vdev_indirect.c | 2 +-
sys/contrib/openzfs/module/zfs/vdev_label.c | 38 +-
sys/contrib/openzfs/module/zfs/vdev_queue.c | 2 +-
sys/contrib/openzfs/module/zfs/vdev_raidz.c | 49 +--
sys/contrib/openzfs/module/zfs/vdev_removal.c | 13 +
sys/contrib/openzfs/module/zfs/zfs_ioctl.c | 3 +
sys/contrib/openzfs/module/zfs/zfs_sa.c | 11 +-
sys/contrib/openzfs/module/zfs/zfs_vnops.c | 69 ++--
sys/contrib/openzfs/module/zfs/zil.c | 2 +-
sys/contrib/openzfs/module/zfs/zio.c | 75 ++--
sys/contrib/openzfs/rpm/generic/zfs.spec.in | 2 +-
sys/contrib/openzfs/tests/runfiles/common.run | 2 +-
sys/contrib/openzfs/tests/runfiles/linux.run | 2 +-
.../openzfs/tests/test-runner/bin/zts-report.py.in | 35 ++
.../openzfs/tests/test-runner/include/logapi.shlib | 6 +-
.../tests/zfs-tests/cmd/mmapwrite/mmapwrite.c | 4 +-
.../tests/functional/acl/posix-sa/cleanup.ksh | 0
.../functional/acl/posix-sa/posix_001_pos.ksh | 0
.../functional/acl/posix-sa/posix_002_pos.ksh | 0
.../functional/acl/posix-sa/posix_003_pos.ksh | 0
.../functional/acl/posix-sa/posix_004_pos.ksh | 0
.../tests/functional/acl/posix-sa/setup.ksh | 0
.../tests/functional/acl/posix/posix_004_pos.ksh | 0
.../tests/functional/cli_root/zdb/Makefile.am | 4 +-
.../tests/functional/cli_root/zdb/zdb_args_neg.ksh | 2 +-
.../tests/functional/cli_root/zdb/zdb_recover.ksh | 55 +++
.../functional/cli_root/zdb/zdb_recover_2.ksh | 57 +++
.../cli_root/zfs_mount/zfs_mount_013_pos.ksh | 20 +-
.../cli_root/zfs_receive/zfs_receive_005_neg.ksh | 4 +-
.../cli_root/zfs_receive/zfs_receive_014_pos.ksh | 25 --
.../cli_root/zfs_receive/zfs_receive_new_props.ksh | 0
.../cli_root/zfs_rename/zfs_rename_nounmount.ksh | 0
.../cli_root/zfs_rollback/zfs_rollback_001_pos.ksh | 1 +
.../functional/cli_root/zfs_send/zfs_send-b.ksh | 10 +-
.../cli_root/zfs_send/zfs_send_003_pos.ksh | 2 +-
.../cli_root/zfs_send/zfs_send_004_neg.ksh | 2 +-
.../cli_root/zfs_send/zfs_send_005_pos.ksh | 2 +-
.../cli_root/zfs_send/zfs_send_encrypted.ksh | 10 +-
.../zfs_send/zfs_send_encrypted_unloaded.ksh | 2 +-
.../functional/cli_root/zfs_send/zfs_send_raw.ksh | 14 +-
.../cli_root/zfs_set/zfs_set_common.kshlib | 14 +-
.../functional/cli_root/zpool_create/draidcfg.gz | Bin 0 -> 21672412 bytes
.../zpool_events/zpool_events_duplicates.ksh | 0
.../functional/cli_root/zpool_export/Makefile.am | 3 +-
.../functional/cli_root/zpool_export/setup.ksh | 4 -
.../cli_root/zpool_export/zpool_export.cfg | 37 +-
.../cli_root/zpool_export/zpool_export.kshlib | 32 ++
.../cli_root/zpool_export/zpool_export_001_pos.ksh | 17 +-
.../cli_root/zpool_export/zpool_export_002_pos.ksh | 13 +-
.../cli_root/zpool_export/zpool_export_003_neg.ksh | 15 +-
.../cli_root/zpool_export/zpool_export_004_pos.ksh | 21 +-
.../zfs-tests/tests/functional/io/Makefile.am | 1 +
.../zfs-tests/tests/functional/io/io_uring.ksh | 72 ++++
.../{persist_l2arc => l2arc}/Makefile.am | 0
.../{persist_l2arc => l2arc}/cleanup.ksh | 0
.../persist_l2arc.cfg => l2arc/l2arc.cfg} | 0
.../persist_l2arc_001_pos.ksh | 0
.../persist_l2arc_002_pos.ksh | 0
.../persist_l2arc_003_neg.ksh | 0
.../persist_l2arc_004_pos.ksh | 0
.../persist_l2arc_005_pos.ksh | 0
.../persist_l2arc_006_pos.ksh | 0
.../persist_l2arc_007_pos.ksh | 0
.../persist_l2arc_008_pos.ksh | 0
.../functional/{persist_l2arc => l2arc}/setup.ksh | 0
.../tests/functional/procfs/pool_state.ksh | 18 +-
.../functional/redacted_send/redacted_negative.ksh | 8 +-
.../functional/redacted_send/redacted_resume.ksh | 2 +-
...edundancy_003_pos.ksh => redundancy_mirror.ksh} | 0
...edundancy_001_pos.ksh => redundancy_raidz1.ksh} | 0
...edundancy_002_pos.ksh => redundancy_raidz2.ksh} | 0
...edundancy_004_neg.ksh => redundancy_stripe.ksh} | 0
.../tests/functional/removal/removal_with_send.ksh | 2 +-
.../tests/functional/rsend/send_invalid.ksh | 2 +-
.../functional/rsend/send_partial_dataset.ksh | 2 +-
.../tests/functional/userquota/Makefile.am | 3 +-
.../tests/functional/zvol/zvol_swap/zvol_swap.cfg | 2 +
sys/modules/zfs/zfs_config.h | 6 +-
231 files changed, 3260 insertions(+), 1780 deletions(-)
diff --cc cddl/lib/libzfs/Makefile
index 611eb91d76e7,000000000000..d0b3458eda64
mode 100644,000000..100644
--- a/cddl/lib/libzfs/Makefile
+++ b/cddl/lib/libzfs/Makefile
@@@ -1,109 -1,0 +1,108 @@@
+# $FreeBSD$
+
+.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/lib/libshare/os/freebsd
+.PATH: ${SRCTOP}/sys/contrib/openzfs/include
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zstd
+.PATH: ${SRCTOP}/sys/contrib/openzfs/module/zstd/lib
+
+PACKAGE= runtime
+LIB= zfs
+LIBADD= \
+ avl \
+ bsdxml \
+ crypto \
+ geom \
+ m \
+ md \
+ nvpair \
+ pthread \
+ 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_ioctl_compat.c \
+ libzfs_zmount.c
+
+# libshare
+USER_C += \
+ libshare.c \
+ nfs.c \
+ smb.c
+
+
+KERNEL_C = \
+ algs/sha2/sha2.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_uio.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/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+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h
+
+
+.include <bsd.lib.mk>
diff --cc cddl/lib/libzpool/Makefile
index 0e2cc9456faa,000000000000..d9b2e67094e3
mode 100644,000000..100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@@ -1,267 -1,0 +1,266 @@@
+# $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
+
+.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_uio.c \
+ zfs_zstd.c \
+ zpool_prop.c \
+ zprop_common.c \
+ abd.c \
+ abd_os.c \
+ aggsum.c \
+ arc.c \
+ arc_os.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 \
+ hkdf.c \
+ fm.c \
+ gzip.c \
+ lzjb.c \
+ lz4.c \
+ metaslab.c \
+ mmp.c \
+ multilist.c \
+ objlist.c \
+ pathname.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 \
+ 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_debug.c \
+ zfs_fm.c \
+ zfs_fuid.c \
+ zfs_sa.c \
+ zfs_znode.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.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.zfs_zstd.c= -Wno-cast-qual -Wno-pointer-arith
+CFLAGS.zstd.c+= -fno-tree-vectorize
+
+.include <bsd.lib.mk>
diff --cc sys/contrib/openzfs/.github/PULL_REQUEST_TEMPLATE.md
index 000000000000,465ee182c497..465ee182c497
mode 000000,100644..100644
--- a/sys/contrib/openzfs/.github/PULL_REQUEST_TEMPLATE.md
+++ b/sys/contrib/openzfs/.github/PULL_REQUEST_TEMPLATE.md
diff --cc sys/contrib/openzfs/.github/workflows/zfs-tests-functional.yml
index 000000000000,631f174b74fd..631f174b74fd
mode 000000,100644..100644
--- a/sys/contrib/openzfs/.github/workflows/zfs-tests-functional.yml
+++ b/sys/contrib/openzfs/.github/workflows/zfs-tests-functional.yml
diff --cc sys/contrib/openzfs/.github/workflows/zfs-tests-sanity.yml
index 000000000000,e03399757575..e03399757575
mode 000000,100644..100644
--- a/sys/contrib/openzfs/.github/workflows/zfs-tests-sanity.yml
+++ b/sys/contrib/openzfs/.github/workflows/zfs-tests-sanity.yml
diff --cc sys/contrib/openzfs/cmd/zed/zed.d/zed-functions.sh
index 44a9b8d23303,44a9b8d23303..44a9b8d23303
mode 100755,100644..100644
--- a/sys/contrib/openzfs/cmd/zed/zed.d/zed-functions.sh
+++ b/sys/contrib/openzfs/cmd/zed/zed.d/zed-functions.sh
diff --cc sys/contrib/openzfs/config/CppCheck.am
index 000000000000,13c633c60038..13c633c60038
mode 000000,100644..100644
--- a/sys/contrib/openzfs/config/CppCheck.am
+++ b/sys/contrib/openzfs/config/CppCheck.am
diff --cc sys/contrib/openzfs/config/always-cppcheck.m4
index 000000000000,c7c134a3e8cd..c7c134a3e8cd
mode 000000,100644..100644
--- a/sys/contrib/openzfs/config/always-cppcheck.m4
+++ b/sys/contrib/openzfs/config/always-cppcheck.m4
diff --cc sys/contrib/openzfs/config/ax_count_cpus.m4
index 000000000000,5db892553437..5db892553437
mode 000000,100644..100644
--- a/sys/contrib/openzfs/config/ax_count_cpus.m4
+++ b/sys/contrib/openzfs/config/ax_count_cpus.m4
diff --cc sys/contrib/openzfs/include/os/freebsd/spl/sys/fcntl.h
index 000000000000,4301d6e151de..4301d6e151de
mode 000000,100644..100644
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/fcntl.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/fcntl.h
diff --cc sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h
index 091186f23174,000000000000..dde87973f961
mode 100644,000000..100644
--- a/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h
+++ b/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h
@@@ -1,187 -1,0 +1,188 @@@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
+ * Copyright (c) 2014 Integros [integros.com]
+ * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
+ */
+
+#ifndef _FREEBSD_ZFS_SYS_ZNODE_IMPL_H
+#define _FREEBSD_ZFS_SYS_ZNODE_IMPL_H
+
+#include <sys/list.h>
+#include <sys/dmu.h>
+#include <sys/sa.h>
+#include <sys/zfs_vfsops.h>
+#include <sys/rrwlock.h>
+#include <sys/zfs_sa.h>
+#include <sys/zfs_stat.h>
+#include <sys/zfs_rlock.h>
+#include <sys/zfs_acl.h>
+#include <sys/zil.h>
+#include <sys/zfs_project.h>
+#include <vm/vm_object.h>
++#include <sys/uio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Directory entry locks control access to directory entries.
+ * They are used to protect creates, deletes, and renames.
+ * Each directory znode has a mutex and a list of locked names.
+ */
+#define ZNODE_OS_FIELDS \
+ struct zfsvfs *z_zfsvfs; \
+ vnode_t *z_vnode; \
+ char *z_cached_symlink; \
+ uint64_t z_uid; \
+ uint64_t z_gid; \
+ uint64_t z_gen; \
+ uint64_t z_atime[2]; \
+ uint64_t z_links;
+
+#define ZFS_LINK_MAX UINT64_MAX
+
+/*
+ * ZFS minor numbers can refer to either a control device instance or
+ * a zvol. Depending on the value of zss_type, zss_data points to either
+ * a zvol_state_t or a zfs_onexit_t.
+ */
+enum zfs_soft_state_type {
+ ZSST_ZVOL,
+ ZSST_CTLDEV
+};
+
+typedef struct zfs_soft_state {
+ enum zfs_soft_state_type zss_type;
+ void *zss_data;
+} zfs_soft_state_t;
+
+extern minor_t zfsdev_minor_alloc(void);
+
+/*
+ * Range locking rules
+ * --------------------
+ * 1. When truncating a file (zfs_create, zfs_setattr, zfs_space) the whole
+ * file range needs to be locked as RL_WRITER. Only then can the pages be
+ * freed etc and zp_size reset. zp_size must be set within range lock.
+ * 2. For writes and punching holes (zfs_write & zfs_space) just the range
+ * being written or freed needs to be locked as RL_WRITER.
+ * Multiple writes at the end of the file must coordinate zp_size updates
+ * to ensure data isn't lost. A compare and swap loop is currently used
+ * to ensure the file size is at least the offset last written.
+ * 3. For reads (zfs_read, zfs_get_data & zfs_putapage) just the range being
+ * read needs to be locked as RL_READER. A check against zp_size can then
+ * be made for reading beyond end of file.
+ */
+
+/*
+ * Convert between znode pointers and vnode pointers
+ */
+#define ZTOV(ZP) ((ZP)->z_vnode)
+#define ZTOI(ZP) ((ZP)->z_vnode)
+#define VTOZ(VP) ((struct znode *)(VP)->v_data)
+#define VTOZ_SMR(VP) ((znode_t *)vn_load_v_data_smr(VP))
+#define ITOZ(VP) ((struct znode *)(VP)->v_data)
+#define zhold(zp) vhold(ZTOV((zp)))
+#define zrele(zp) vrele(ZTOV((zp)))
+
+#define ZTOZSB(zp) ((zp)->z_zfsvfs)
+#define ITOZSB(vp) (VTOZ(vp)->z_zfsvfs)
+#define ZTOTYPE(zp) (ZTOV(zp)->v_type)
+#define ZTOGID(zp) ((zp)->z_gid)
+#define ZTOUID(zp) ((zp)->z_uid)
+#define ZTONLNK(zp) ((zp)->z_links)
+#define Z_ISBLK(type) ((type) == VBLK)
+#define Z_ISCHR(type) ((type) == VCHR)
+#define Z_ISLNK(type) ((type) == VLNK)
+#define Z_ISDIR(type) ((type) == VDIR)
+
+#define zn_has_cached_data(zp) vn_has_cached_data(ZTOV(zp))
- #define zn_rlimit_fsize(zp, uio, td) vn_rlimit_fsize(ZTOV(zp), (uio), (td))
++#define zn_rlimit_fsize(zp, uio) \
++ vn_rlimit_fsize(ZTOV(zp), GET_UIO_STRUCT(uio), zfs_uio_td(uio))
+
+/* Called on entry to each ZFS vnode and vfs operation */
+#define ZFS_ENTER(zfsvfs) \
+ { \
+ ZFS_TEARDOWN_ENTER_READ((zfsvfs), FTAG); \
+ if (__predict_false((zfsvfs)->z_unmounted)) { \
+ ZFS_TEARDOWN_EXIT_READ(zfsvfs, FTAG); \
+ return (EIO); \
+ } \
+ }
+
+/* Must be called before exiting the vop */
+#define ZFS_EXIT(zfsvfs) ZFS_TEARDOWN_EXIT_READ(zfsvfs, FTAG)
+
+/* Verifies the znode is valid */
+#define ZFS_VERIFY_ZP(zp) \
+ if (__predict_false((zp)->z_sa_hdl == NULL)) { \
+ ZFS_EXIT((zp)->z_zfsvfs); \
+ return (EIO); \
+ } \
+
+/*
+ * Macros for dealing with dmu_buf_hold
+ */
+#define ZFS_OBJ_HASH(obj_num) ((obj_num) & (ZFS_OBJ_MTX_SZ - 1))
+#define ZFS_OBJ_MUTEX(zfsvfs, obj_num) \
+ (&(zfsvfs)->z_hold_mtx[ZFS_OBJ_HASH(obj_num)])
+#define ZFS_OBJ_HOLD_ENTER(zfsvfs, obj_num) \
+ mutex_enter(ZFS_OBJ_MUTEX((zfsvfs), (obj_num)))
+#define ZFS_OBJ_HOLD_TRYENTER(zfsvfs, obj_num) \
+ mutex_tryenter(ZFS_OBJ_MUTEX((zfsvfs), (obj_num)))
+#define ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num) \
+ mutex_exit(ZFS_OBJ_MUTEX((zfsvfs), (obj_num)))
+
+/* Encode ZFS stored time values from a struct timespec */
+#define ZFS_TIME_ENCODE(tp, stmp) \
+{ \
+ (stmp)[0] = (uint64_t)(tp)->tv_sec; \
+ (stmp)[1] = (uint64_t)(tp)->tv_nsec; \
+}
+
+/* Decode ZFS stored time values to a struct timespec */
+#define ZFS_TIME_DECODE(tp, stmp) \
+{ \
+ (tp)->tv_sec = (time_t)(stmp)[0]; \
+ (tp)->tv_nsec = (long)(stmp)[1]; \
+}
+#define ZFS_ACCESSTIME_STAMP(zfsvfs, zp) \
+ if ((zfsvfs)->z_atime && !((zfsvfs)->z_vfs->vfs_flag & VFS_RDONLY)) \
+ zfs_tstamp_update_setup_ext(zp, ACCESSED, NULL, NULL, B_FALSE);
+
+extern void zfs_tstamp_update_setup_ext(struct znode *,
+ uint_t, uint64_t [2], uint64_t [2], boolean_t have_tx);
+extern void zfs_znode_free(struct znode *);
+
+extern zil_replay_func_t *zfs_replay_vector[TX_MAX_TYPE];
+extern int zfsfstype;
+
+extern int zfs_znode_parent_and_name(struct znode *zp, struct znode **dzpp,
+ char *buf);
- extern void zfs_inode_update(struct znode *);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FREEBSD_SYS_FS_ZFS_ZNODE_H */
diff --cc sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h
index 13e5fb653f5b,000000000000..41bdf932511d
mode 100644,000000..100644
--- a/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h
+++ b/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h
@@@ -1,177 -1,0 +1,176 @@@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018 by Delphix. All rights reserved.
+ * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
+ */
+
+#ifndef _SYS_ZFS_ZNODE_IMPL_H
+#define _SYS_ZFS_ZNODE_IMPL_H
+
+#ifndef _KERNEL
+#error "no user serviceable parts within"
+#endif
+
+#include <sys/isa_defs.h>
+#include <sys/types32.h>
+#include <sys/list.h>
+#include <sys/dmu.h>
+#include <sys/sa.h>
+#include <sys/zfs_vfsops.h>
+#include <sys/rrwlock.h>
+#include <sys/zfs_sa.h>
+#include <sys/zfs_stat.h>
+#include <sys/zfs_rlock.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ZNODE_OS_FIELDS \
+ struct inode z_inode;
+
+
+/*
+ * Convert between znode pointers and inode pointers
+ */
+#define ZTOI(znode) (&((znode)->z_inode))
+#define ITOZ(inode) (container_of((inode), znode_t, z_inode))
+#define ZTOZSB(znode) ((zfsvfs_t *)(ZTOI(znode)->i_sb->s_fs_info))
+#define ITOZSB(inode) ((zfsvfs_t *)((inode)->i_sb->s_fs_info))
+
+#define ZTOTYPE(zp) (ZTOI(zp)->i_mode)
+#define ZTOGID(zp) (ZTOI(zp)->i_gid)
+#define ZTOUID(zp) (ZTOI(zp)->i_uid)
+#define ZTONLNK(zp) (ZTOI(zp)->i_nlink)
+
+#define Z_ISBLK(type) S_ISBLK(type)
+#define Z_ISCHR(type) S_ISCHR(type)
+#define Z_ISLNK(type) S_ISLNK(type)
+#define Z_ISDEV(type) (S_ISCHR(type) || S_ISBLK(type) || S_ISFIFO(type))
+#define Z_ISDIR(type) S_ISDIR(type)
+
- #define zn_has_cached_data(zp) ((zp)->z_is_mapped)
- #define zn_rlimit_fsize(zp, uio, td) (0)
++#define zn_has_cached_data(zp) ((zp)->z_is_mapped)
++#define zn_rlimit_fsize(zp, uio) (0)
+
+#define zhold(zp) igrab(ZTOI((zp)))
+#define zrele(zp) iput(ZTOI((zp)))
+
+/* Called on entry to each ZFS inode and vfs operation. */
+#define ZFS_ENTER_ERROR(zfsvfs, error) \
+do { \
+ ZFS_TEARDOWN_ENTER_READ(zfsvfs, FTAG); \
+ if (unlikely((zfsvfs)->z_unmounted)) { \
+ ZFS_EXIT_READ(zfsvfs, FTAG); \
+ return (error); \
+ } \
+} while (0)
+#define ZFS_ENTER(zfsvfs) ZFS_ENTER_ERROR(zfsvfs, EIO)
+#define ZPL_ENTER(zfsvfs) ZFS_ENTER_ERROR(zfsvfs, -EIO)
+
+/* Must be called before exiting the operation. */
+#define ZFS_EXIT(zfsvfs) \
+do { \
+ zfs_exit_fs(zfsvfs); \
+ ZFS_EXIT_READ(zfsvfs, FTAG); \
+} while (0)
+
+#define ZPL_EXIT(zfsvfs) \
+do { \
+ rrm_exit(&(zfsvfs)->z_teardown_lock, FTAG); \
*** 27212 LINES SKIPPED ***
More information about the dev-commits-src-all
mailing list