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-main mailing list