From nobody Fri Jun 03 16:44:58 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 911C21BD46E2; Fri, 3 Jun 2022 16:44:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LF7yz04C4z3srj; Fri, 3 Jun 2022 16:44:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654274699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HPKHan8dKFGIEuG0NpwYlJzZaDeyrgbkPGXu5Cq8LTI=; b=TERVXaFoVdSrKnC/rGGVTKOlO1x4H61Jr0selqsEgQUtYe9ySpdkRXvSNsH+W6Z7hM+7J8 xBeYUy+85i9wgBTYTEa2IxeIEvajagt7g71BVGTA5LeXLKb9lY0zY2Ccf3/18BMWsEANtT 6DLVNfWQbiDc1HdLHbfcyBf7+SnAxn9JJb8/v9qyRz1GsWRNEllFkJVlUCWcKHyahBN7S9 JvRhOKzDQ5ejoqpFwC8Cup/ci2p/yl7On/KetSE8YdzT3LhRsYoXXvDvFTuXaoSHLbRW5O a/KTFJuHZBwC34sVlchk+KBJIjLbj/sHVnxm2zimpDHoRBQYp+3xDWufAYH/bQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 887844E7F; Fri, 3 Jun 2022 16:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 253GiwL4022150; Fri, 3 Jun 2022 16:44:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 253Giwdo022149; Fri, 3 Jun 2022 16:44:58 GMT (envelope-from git) Date: Fri, 3 Jun 2022 16:44:58 GMT Message-Id: <202206031644.253Giwdo022149@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Martin Matuska Subject: git: e3aa18ad7178 - main - zfs: merge openzfs/zfs@b9d98453f List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e3aa18ad71782a73d3dd9dd3d526bbd2b607ca16 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654274699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HPKHan8dKFGIEuG0NpwYlJzZaDeyrgbkPGXu5Cq8LTI=; b=w28iVkn+r6GPc15kiAAfGa/B4C3OtjSXKGjSE6bsNJ0TLqPoUe84HcR1FCFL4SR8HDv7+8 hiYEPHHDgUG2Hh4c1iLs4FWUFH51BPx2mEKXAMUOFy6BH4DyCBrT4ZJ6iB/9Tts7FMsDRo g0BTpr0kUXRuwB2DrcaZMWml2DeNIcjnEPTpLGkpFi7PTo3YyezD/NZrbPOhhQdvYGCVRW nPCLfyLYHycCq7DwKnId1LilE2eyKVYPgkpmneP19Ip9cwhOcWpoJhShZT54ssZUq6gAVq w78RcZ3KzEKyDOQn/0EpAARl7EmywaOxCCJ8gtOnOy29JBhLpgvDFLCqPvkm+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1654274699; a=rsa-sha256; cv=none; b=LXNbzb5MBAnImEpIzCPLaniIaY8FPG5qDJNHMKuf3CrGxCocfmI5RbVVEPgriy0fTSKZ5v OcIrwoYsyAqzTDjN81iEmmAcD91ilhWFQj0t9qZ7hXXmmjXkR3omslnab+aJtmuVSM5vPy kx8jP19OT/l/A8EemYBqoZrfiSUZSVeSSrrgNQAlz7OivbIQckR92nD8Va0xYyZ1e2bUnk EKJdDvfq1jIlcEL0M56+KMaOPEyeOdzgazg/6uh0dG1I9Jua9zShL0gs+XqL2XWeVjT5dk Zl2wJa0n6j+j3jQ2dWtztHz1P+P4YJ2QLFxgz83xfwyZX7i3ON0S+HIujofxnw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=e3aa18ad71782a73d3dd9dd3d526bbd2b607ca16 commit e3aa18ad71782a73d3dd9dd3d526bbd2b607ca16 Merge: 645886d028c8 b9d98453f938 Author: Martin Matuska AuthorDate: 2022-06-03 15:58:39 +0000 Commit: Martin Matuska CommitDate: 2022-06-03 16:17:53 +0000 zfs: merge openzfs/zfs@b9d98453f Notable upstream pull request merges: #12321 Fix inflated quiesce time caused by lwb_tx during zil_commit() #13244 zstd early abort #13360 Verify BPs as part of spa_load_verify_cb() #13452 More speculative prefetcher improvements #13466 Expose zpool guids through kstats #13476 Refactor Log Size Limit #13484 FreeBSD: libspl: Add locking around statfs globals #13498 Cancel in-progress rebuilds when we finish removal #13499 zed: Take no action on scrub/resilver checksum errors #13513 Remove wrong assertion in log spacemap Obtained from: OpenZFS OpenZFS commit: b9d98453f9387c413f91d1d9cdb0cba8e04dbd95 cddl/usr.sbin/zfsd/Makefile.common | 2 +- stand/libsa/zfs/Makefile.inc | 2 +- .../.github/workflows/zfs-tests-functional.yml | 2 +- .../openzfs/.github/workflows/zfs-tests-sanity.yml | 2 +- sys/contrib/openzfs/.github/workflows/zloop.yml | 2 +- sys/contrib/openzfs/META | 2 +- sys/contrib/openzfs/Makefile.am | 42 +- sys/contrib/openzfs/cmd/Makefile.am | 8 +- sys/contrib/openzfs/cmd/zdb/zdb.c | 7 +- sys/contrib/openzfs/cmd/zed/Makefile.am | 2 +- sys/contrib/openzfs/cmd/zed/agents/zfs_diagnosis.c | 20 + sys/contrib/openzfs/cmd/zed/agents/zfs_mod.c | 4 +- sys/contrib/openzfs/cmd/zed/zed.d/Makefile.am | 2 +- sys/contrib/openzfs/cmd/zed/zed.d/zed-functions.sh | 19 +- sys/contrib/openzfs/cmd/zed/zed.d/zed.rc | 1 + sys/contrib/openzfs/cmd/zed/zed_disk_event.c | 8 +- sys/contrib/openzfs/cmd/zfs/zfs_main.c | 6 +- sys/contrib/openzfs/cmd/zpool/Makefile.am | 2 +- sys/contrib/openzfs/cmd/zpool/zpool_main.c | 6 +- sys/contrib/openzfs/config/Substfiles.am | 2 +- sys/contrib/openzfs/config/kernel-bio.m4 | 4 +- sys/contrib/openzfs/config/kernel-blk-queue.m4 | 76 +- sys/contrib/openzfs/config/kernel-blkdev.m4 | 53 + sys/contrib/openzfs/config/kernel-fpu.m4 | 23 +- .../openzfs/config/kernel-generic_io_acct.m4 | 83 +- .../config/kernel-pagemap-folio_wait_bit.m4 | 2 +- sys/contrib/openzfs/config/kernel-readpages.m4 | 2 +- sys/contrib/openzfs/config/kernel-shrink.m4 | 10 +- sys/contrib/openzfs/config/kernel-sysfs.m4 | 2 +- .../config/kernel-vfs-filemap_dirty_folio.m4 | 2 +- sys/contrib/openzfs/config/kernel-vfs-iov_iter.m4 | 2 + .../openzfs/config/kernel-vfs-read_folio.m4 | 32 + .../openzfs/config/kernel-vfs-set_page_dirty.m4 | 2 +- sys/contrib/openzfs/config/kernel.m4 | 10 +- sys/contrib/openzfs/config/zfs-build.m4 | 5 + sys/contrib/openzfs/configure.ac | 2 +- sys/contrib/openzfs/contrib/bpftrace/Makefile.am | 4 +- sys/contrib/openzfs/contrib/dracut/Makefile.am | 2 +- sys/contrib/openzfs/contrib/initramfs/Makefile.am | 2 +- sys/contrib/openzfs/contrib/pyzfs/Makefile.am | 2 +- sys/contrib/openzfs/contrib/zcp/Makefile.am | 2 +- sys/contrib/openzfs/etc/Makefile.am | 20 +- sys/contrib/openzfs/include/libzfs.h | 6 +- .../include/os/linux/kernel/linux/blkdev_compat.h | 45 +- .../include/os/linux/kernel/linux/simd_x86.h | 2 + sys/contrib/openzfs/include/sys/dbuf.h | 2 +- sys/contrib/openzfs/include/sys/dmu_tx.h | 2 +- sys/contrib/openzfs/include/sys/dmu_zfetch.h | 16 +- sys/contrib/openzfs/include/sys/dnode.h | 2 +- sys/contrib/openzfs/include/sys/dsl_pool.h | 2 +- sys/contrib/openzfs/include/sys/fs/zfs.h | 1 + sys/contrib/openzfs/include/sys/spa.h | 1 + sys/contrib/openzfs/include/sys/zap.h | 5 + sys/contrib/openzfs/include/sys/zil_impl.h | 8 +- sys/contrib/openzfs/include/sys/zstd/zstd.h | 4 + sys/contrib/openzfs/include/thread_pool.h | 1 - sys/contrib/openzfs/lib/libnvpair/Makefile.am | 2 +- sys/contrib/openzfs/lib/libshare/os/linux/smb.c | 4 +- sys/contrib/openzfs/lib/libspl/include/Makefile.am | 13 - .../openzfs/lib/libspl/include/libdevinfo.h | 30 - sys/contrib/openzfs/lib/libspl/include/limits.h | 45 - sys/contrib/openzfs/lib/libspl/include/locale.h | 35 - .../lib/libspl/include/os/freebsd/sys/byteorder.h | 2 +- .../lib/libspl/include/os/freebsd/sys/mnttab.h | 4 +- .../libspl/include/os/freebsd/sys/zfs_context_os.h | 1 - .../lib/libspl/include/os/linux/sys/byteorder.h | 2 +- sys/contrib/openzfs/lib/libspl/include/stropts.h | 25 - .../openzfs/lib/libspl/include/sys/int_limits.h | 30 - .../openzfs/lib/libspl/include/sys/int_types.h | 32 - sys/contrib/openzfs/lib/libspl/include/sys/kstat.h | 35 +- .../openzfs/lib/libspl/include/sys/stropts.h | 29 - sys/contrib/openzfs/lib/libspl/include/sys/types.h | 2 +- .../openzfs/lib/libspl/include/sys/tzfile.h | 164 - .../openzfs/lib/libspl/include/sys/va_list.h | 32 - .../openzfs/lib/libspl/include/sys/varargs.h | 30 - sys/contrib/openzfs/lib/libspl/include/thread.h | 30 - sys/contrib/openzfs/lib/libspl/include/tzfile.h | 32 - sys/contrib/openzfs/lib/libspl/include/ucred.h | 32 - sys/contrib/openzfs/lib/libspl/os/freebsd/mnttab.c | 16 +- sys/contrib/openzfs/lib/libuutil/Makefile.am | 2 +- sys/contrib/openzfs/lib/libzfs/Makefile.am | 4 +- sys/contrib/openzfs/lib/libzfs/libzfs.abi | 7024 ++++++++++---------- sys/contrib/openzfs/lib/libzfs/libzfs_dataset.c | 1 - sys/contrib/openzfs/lib/libzfs/libzfs_diff.c | 1 - sys/contrib/openzfs/lib/libzfs/libzfs_util.c | 25 +- .../openzfs/lib/libzfs/os/freebsd/libzfs_compat.c | 24 +- .../openzfs/lib/libzfs/os/linux/libzfs_util_os.c | 193 +- sys/contrib/openzfs/lib/libzfs_core/Makefile.am | 2 +- sys/contrib/openzfs/lib/libzfsbootenv/Makefile.am | 2 +- sys/contrib/openzfs/man/Makefile.am | 5 +- sys/contrib/openzfs/man/man4/zfs.4 | 32 +- sys/contrib/openzfs/man/man8/zfs.8 | 20 +- sys/contrib/openzfs/man/man8/zpool.8 | 14 + .../openzfs/module/os/linux/zfs/vdev_disk.c | 98 +- sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c | 12 + sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c | 2 + sys/contrib/openzfs/module/zfs/dbuf.c | 14 +- sys/contrib/openzfs/module/zfs/dmu_tx.c | 58 +- sys/contrib/openzfs/module/zfs/dmu_zfetch.c | 185 +- sys/contrib/openzfs/module/zfs/dsl_pool.c | 17 +- sys/contrib/openzfs/module/zfs/dsl_scan.c | 30 +- sys/contrib/openzfs/module/zfs/spa.c | 19 +- sys/contrib/openzfs/module/zfs/spa_log_spacemap.c | 6 - sys/contrib/openzfs/module/zfs/spa_stats.c | 48 + sys/contrib/openzfs/module/zfs/vdev_removal.c | 2 + sys/contrib/openzfs/module/zfs/zil.c | 91 +- sys/contrib/openzfs/module/zfs/zio.c | 6 +- sys/contrib/openzfs/module/zfs/zio_compress.c | 2 +- sys/contrib/openzfs/module/zstd/zfs_zstd.c | 129 +- sys/contrib/openzfs/rpm/Makefile.am | 2 +- sys/contrib/openzfs/rpm/generic/zfs-dkms.spec.in | 2 +- sys/contrib/openzfs/rpm/generic/zfs-kmod.spec.in | 6 +- sys/contrib/openzfs/rpm/generic/zfs.spec.in | 36 +- sys/contrib/openzfs/rpm/redhat/zfs-kmod.spec.in | 5 +- sys/contrib/openzfs/scripts/Makefile.am | 9 +- sys/contrib/openzfs/scripts/kmodtool | 65 +- sys/contrib/openzfs/tests/Makefile.am | 2 +- .../openzfs/tests/zfs-tests/cmd/Makefile.am | 4 +- .../openzfs/tests/zfs-tests/tests/Makefile.am | 30 +- sys/modules/zfs/zfs_config.h | 32 +- sys/modules/zfs/zfs_gitrev.h | 2 +- 121 files changed, 4745 insertions(+), 4725 deletions(-) diff --cc cddl/usr.sbin/zfsd/Makefile.common index 5e9257d7b37e,000000000000..68d921c90e37 mode 100644,000000..100644 --- a/cddl/usr.sbin/zfsd/Makefile.common +++ b/cddl/usr.sbin/zfsd/Makefile.common @@@ -1,34 -1,0 +1,34 @@@ +# $FreeBSD$ + +SRCS= callout.cc \ + case_file.cc \ + zfsd_event.cc \ + vdev.cc \ + vdev_iterator.cc \ + zfsd.cc \ + zfsd_exception.cc \ + zpool_list.cc \ + zfsd_main.cc + +WARNS?= 2 + +# Ignore warnings about Solaris specific pragmas. +IGNORE_PRAGMA= YES + +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+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h +CFLAGS+= -I${SRCTOP}/cddl/usr.sbin + +# use issetugid(2) - CFLAGS+= -D_MACHINE_FLOAT_H_ -DHAVE_ISSETUGID ++CFLAGS+= -DHAVE_ISSETUGID + +LIBADD+= devdctl zfs util geom bsdxml sbuf nvpair avl uutil zutil + +cscope: + find ${.CURDIR} -type f -a \( -name "*.[ch]" -o -name "*.cc" \) \ + > ${.CURDIR}/cscope.files + cd ${.CURDIR} && cscope -buq ${INCFLAGS} diff --cc stand/libsa/zfs/Makefile.inc index 0b51fff8a698,000000000000..2a06db0d2f5d mode 100644,000000..100644 --- a/stand/libsa/zfs/Makefile.inc +++ b/stand/libsa/zfs/Makefile.inc @@@ -1,96 -1,0 +1,96 @@@ +# $FreeBSD$ + +.PATH: ${ZFSSRC} +.PATH: ${SYSDIR}/crypto/skein +.PATH: ${ZFSOSSRC}/spl +.PATH: ${OZFS}/module/zstd/lib/common +.PATH: ${OZFS}/module/zstd/lib/compress +.PATH: ${OZFS}/module/zstd/lib/decompress +ZFSSRC= zfs.c nvlist.c skein.c skein_block.c list.c +ZFSSRC+= zstd_shim.c +ZFSSRC+= entropy_common.c error_private.c +ZFSSRC+= fse_compress.c fse_decompress.c hist.c +ZFSSRC+= huf_compress.c huf_decompress.c pool.c xxhash.c +ZFSSRC+= zstd_common.c zstd_compress.c zstd_compress_literals.c +ZFSSRC+= zstd_compress_sequences.c zstd_compress_superblock.c +ZFSSRC+= zstd_ddict.c zstd_decompress.c zstd_decompress_block.c +ZFSSRC+= zstd_double_fast.c zstd_fast.c zstd_lazy.c zstd_ldm.c +ZFSSRC+= zstd_opt.c + +CFLAGS+= -DHAS_ZSTD_ZFS +SRCS+= ${ZFSSRC} + +CFLAGS+= -I${LDRSRC} +CFLAGS+= -I${SYSDIR}/cddl/boot/zfs +CFLAGS+= -I${SYSDIR}/crypto/skein + +ZFS_EARLY= -I${ZFSOSINC} \ + -I${ZFSOSINC}/spl \ + -I${ZFSOSINC}/zfs + +.for i in ${ZFSSRC} +CFLAGS.$i+= -include ${ZFSOSINC}/spl/sys/ccompile.h +.endfor + +CFLAGS_EARLY.list.c+= ${ZFS_EARLY} +CFLAGS_EARLY.zstd_shim.c+= ${ZFS_EARLY} + +# Can't use the early flags because there's two conflicting definitions of boolean_t in +# the zfs code that need to be unified. +CFLAGS.nvlist.c+= -I${ZFSOSINC}/spl +CFLAGS.zfs.c+= -I${ZFSOSINC}/spl \ + -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/lz4 +CFLAGS.entropy_common.c= -U__BMI__ +CFLAGS.entropy_common.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.error_private.c= -U__BMI__ +CFLAGS.error_private.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.fse_compress.c= -U__BMI__ +CFLAGS.fse_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.fse_decompress.c= -U__BMI__ +CFLAGS.fse_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.hist.c= -U__BMI__ +CFLAGS.hist.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.huf_compress.c= -U__BMI__ +CFLAGS.huf_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.huf_decompress.c= -U__BMI__ +CFLAGS.huf_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.pool.c= -U__BMI__ +CFLAGS.pool.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.xxhash.c= -U__BMI__ +CFLAGS.xxhash.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_common.c= -U__BMI__ +CFLAGS.zstd_common.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress.c= -U__BMI__ +CFLAGS.zstd_compress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_literals.c= -U__BMI__ +CFLAGS.zstd_compress_literals.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_sequences.c= -U__BMI__ +CFLAGS.zstd_compress_sequences.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_compress_superblock.c= -U__BMI__ +CFLAGS.zstd_compress_superblock.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_double_fast.c= -U__BMI__ +CFLAGS.zstd_double_fast.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_fast.c= -U__BMI__ +CFLAGS.zstd_fast.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_lazy.c= -U__BMI__ +CFLAGS.zstd_lazy.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_ldm.c= -U__BMI__ +CFLAGS.zstd_ldm.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_opt.c= -U__BMI__ +CFLAGS.zstd_opt.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_ddict.c= -U__BMI__ +CFLAGS.zstd_ddict.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_decompress.c= -U__BMI__ +CFLAGS.zstd_decompress.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.zstd_decompress_block.c= -U__BMI__ +CFLAGS.zstd_decompress_block.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL} - CFLAGS.zstd_shim.c+= -DIN_BASE -I${OZFS}/include ++CFLAGS.zstd_shim.c+= -DIN_BASE -DIN_LIBSA -I${OZFS}/include + +# Do not unroll skein loops, reduce code size +CFLAGS.skein_block.c+= -DSKEIN_LOOP=111 + +CFLAGS+= -I${SYSDIR}/contrib/openzfs/include +CFLAGS+= -I${SYSDIR}/contrib/openzfs/include/os/freebsd/zfs +CFLAGS.zfs.c+= -I${SYSDIR}/cddl/contrib/opensolaris/common/lz4 + +CFLAGS+= -Wformat -Wall diff --cc sys/contrib/openzfs/config/kernel-vfs-read_folio.m4 index 000000000000,9ca0faff218d..9ca0faff218d mode 000000,100644..100644 --- a/sys/contrib/openzfs/config/kernel-vfs-read_folio.m4 +++ b/sys/contrib/openzfs/config/kernel-vfs-read_folio.m4 diff --cc sys/contrib/openzfs/module/zstd/zfs_zstd.c index 2ccc6818754e,41351898981a..d7977dfa6b40 --- a/sys/contrib/openzfs/module/zstd/zfs_zstd.c +++ b/sys/contrib/openzfs/module/zstd/zfs_zstd.c @@@ -50,6 -50,10 +50,12 @@@ #include "lib/zstd.h" #include "lib/common/zstd_errors.h" ++#ifndef IN_LIBSA + static int zstd_earlyabort_pass = 1; + static int zstd_cutoff_level = ZIO_ZSTD_LEVEL_3; + static unsigned int zstd_abort_size = (128 * 1024); ++#endif + static kstat_t *zstd_ksp = NULL; typedef struct zstd_stats { @@@ -376,6 -429,64 +431,65 @@@ zstd_enum_to_level(enum zio_zstd_level return (1); } - ++#ifndef IN_LIBSA + size_t + zfs_zstd_compress_wrap(void *s_start, void *d_start, size_t s_len, size_t d_len, + int level) + { + int16_t zstd_level; + if (zstd_enum_to_level(level, &zstd_level)) { + ZSTDSTAT_BUMP(zstd_stat_com_inval); + return (s_len); + } + /* + * A zstd early abort heuristic. + * + * - Zeroth, if this is <= zstd-3, or < zstd_abort_size (currently + * 128k), don't try any of this, just go. + * (because experimentally that was a reasonable cutoff for a perf win + * with tiny ratio change) + * - First, we try LZ4 compression, and if it doesn't early abort, we + * jump directly to whatever compression level we intended to try. + * - Second, we try zstd-1 - if that errors out (usually, but not + * exclusively, if it would overflow), we give up early. + * + * If it works, instead we go on and compress anyway. + * + * Why two passes? LZ4 alone gets you a lot of the way, but on highly + * compressible data, it was losing up to 8.5% of the compressed + * savings versus no early abort, and all the zstd-fast levels are + * worse indications on their own than LZ4, and don't improve the LZ4 + * pass noticably if stacked like this. + */ + size_t actual_abort_size = zstd_abort_size; + if (zstd_earlyabort_pass > 0 && zstd_level >= zstd_cutoff_level && + s_len >= actual_abort_size) { + int pass_len = 1; + pass_len = lz4_compress_zfs(s_start, d_start, s_len, d_len, 0); + if (pass_len < d_len) { + ZSTDSTAT_BUMP(zstd_stat_lz4pass_allowed); + goto keep_trying; + } + ZSTDSTAT_BUMP(zstd_stat_lz4pass_rejected); + + pass_len = zfs_zstd_compress(s_start, d_start, s_len, d_len, + ZIO_ZSTD_LEVEL_1); + if (pass_len == s_len || pass_len <= 0 || pass_len > d_len) { + ZSTDSTAT_BUMP(zstd_stat_zstdpass_rejected); + return (s_len); + } + ZSTDSTAT_BUMP(zstd_stat_zstdpass_allowed); + } else { + ZSTDSTAT_BUMP(zstd_stat_passignored); + if (s_len < actual_abort_size) { + ZSTDSTAT_BUMP(zstd_stat_passignored_size); + } + } + keep_trying: + return (zfs_zstd_compress(s_start, d_start, s_len, d_len, level)); + + } ++#endif /* Compress block using zstd */ size_t diff --cc sys/modules/zfs/zfs_config.h index cf32121940ac,000000000000..d691f899c2b3 mode 100644,000000..100644 --- a/sys/modules/zfs/zfs_config.h +++ b/sys/modules/zfs/zfs_config.h @@@ -1,936 -1,0 +1,960 @@@ +/* + * $FreeBSD$ + */ + +/* zfs_config.h. Generated from zfs_config.h.in by configure. */ +/* zfs_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* bio_end_io_t wants 1 arg */ +/* #undef HAVE_1ARG_BIO_END_IO_T */ + +/* lookup_bdev() wants 1 arg */ +/* #undef HAVE_1ARG_LOOKUP_BDEV */ + +/* submit_bio() wants 1 arg */ +/* #undef HAVE_1ARG_SUBMIT_BIO */ + +/* bdi_setup_and_register() wants 2 args */ +/* #undef HAVE_2ARGS_BDI_SETUP_AND_REGISTER */ + +/* vfs_getattr wants 2 args */ +/* #undef HAVE_2ARGS_VFS_GETATTR */ + +/* zlib_deflate_workspacesize() wants 2 args */ +/* #undef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE */ + +/* bdi_setup_and_register() wants 3 args */ +/* #undef HAVE_3ARGS_BDI_SETUP_AND_REGISTER */ + +/* vfs_getattr wants 3 args */ +/* #undef HAVE_3ARGS_VFS_GETATTR */ + +/* vfs_getattr wants 4 args */ +/* #undef HAVE_4ARGS_VFS_GETATTR */ + +/* kernel has access_ok with 'type' parameter */ +/* #undef HAVE_ACCESS_OK_TYPE */ + +/* posix_acl has refcount_t */ +/* #undef HAVE_ACL_REFCOUNT */ + +/* add_disk() returns int */ +/* #undef HAVE_ADD_DISK_RET */ + +/* Define if host toolchain supports AES */ +#define HAVE_AES 1 + +/* Define if you have [rt] */ +#define HAVE_AIO_H 1 + +#ifdef __amd64__ +#ifndef RESCUE +/* Define if host toolchain supports AVX */ +#define HAVE_AVX 1 +#endif + +/* Define if host toolchain supports AVX2 */ +#define HAVE_AVX2 1 + +/* Define if host toolchain supports AVX512BW */ +#define HAVE_AVX512BW 1 + +/* Define if host toolchain supports AVX512CD */ +#define HAVE_AVX512CD 1 + +/* Define if host toolchain supports AVX512DQ */ +#define HAVE_AVX512DQ 1 + +/* Define if host toolchain supports AVX512ER */ +#define HAVE_AVX512ER 1 + +/* Define if host toolchain supports AVX512F */ +#define HAVE_AVX512F 1 + +/* Define if host toolchain supports AVX512IFMA */ +#define HAVE_AVX512IFMA 1 + +/* Define if host toolchain supports AVX512PF */ +#define HAVE_AVX512PF 1 + +/* Define if host toolchain supports AVX512VBMI */ +#define HAVE_AVX512VBMI 1 + +/* Define if host toolchain supports AVX512VL */ +#define HAVE_AVX512VL 1 +#endif + +/* bdev_check_media_change() exists */ +/* #undef HAVE_BDEV_CHECK_MEDIA_CHANGE */ + ++/* bdev_*_io_acct() available */ ++/* #undef HAVE_BDEV_IO_ACCT */ ++ ++/* bdev_max_discard_sectors() is available */ ++/* #undef HAVE_BDEV_MAX_DISCARD_SECTORS */ ++ ++/* bdev_max_secure_erase_sectors() is available */ ++/* #undef HAVE_BDEV_MAX_SECURE_ERASE_SECTORS */ ++ +/* block_device_operations->submit_bio() returns void */ +/* #undef HAVE_BDEV_SUBMIT_BIO_RETURNS_VOID */ + +/* bdev_whole() is available */ +/* #undef HAVE_BDEV_WHOLE */ + +/* bio_alloc() takes 4 arguments */ +/* #undef HAVE_BIO_ALLOC_4ARG */ + +/* bio->bi_bdev->bd_disk exists */ +/* #undef HAVE_BIO_BDEV_DISK */ + +/* bio->bi_opf is defined */ +/* #undef HAVE_BIO_BI_OPF */ + +/* bio->bi_status exists */ +/* #undef HAVE_BIO_BI_STATUS */ + +/* bio has bi_iter */ +/* #undef HAVE_BIO_BVEC_ITER */ + +/* bio_*_io_acct() available */ +/* #undef HAVE_BIO_IO_ACCT */ + +/* bio_max_segs() is implemented */ +/* #undef HAVE_BIO_MAX_SEGS */ + +/* bio_set_dev() is available */ +/* #undef HAVE_BIO_SET_DEV */ + +/* bio_set_dev() GPL-only */ +/* #undef HAVE_BIO_SET_DEV_GPL_ONLY */ + +/* bio_set_dev() is a macro */ +/* #undef HAVE_BIO_SET_DEV_MACRO */ + +/* bio_set_op_attrs is available */ +/* #undef HAVE_BIO_SET_OP_ATTRS */ + +/* blkdev_get_by_path() handles ERESTARTSYS */ +/* #undef HAVE_BLKDEV_GET_ERESTARTSYS */ + ++/* blkdev_issue_discard() is available */ ++/* #undef HAVE_BLKDEV_ISSUE_DISCARD */ ++ ++/* blkdev_issue_secure_erase() is available */ ++/* #undef HAVE_BLKDEV_ISSUE_SECURE_ERASE */ ++ +/* blkdev_reread_part() exists */ +/* #undef HAVE_BLKDEV_REREAD_PART */ + +/* blkg_tryget() is available */ +/* #undef HAVE_BLKG_TRYGET */ + +/* blkg_tryget() GPL-only */ +/* #undef HAVE_BLKG_TRYGET_GPL_ONLY */ + +/* blk_alloc_disk() exists */ +/* #undef HAVE_BLK_ALLOC_DISK */ + +/* blk_alloc_queue() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN */ + +/* blk_alloc_queue_rh() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN_RH */ + +/* blk queue backing_dev_info is dynamic */ +/* #undef HAVE_BLK_QUEUE_BDI_DYNAMIC */ + ++/* blk_queue_discard() is available */ ++/* #undef HAVE_BLK_QUEUE_DISCARD */ ++ +/* blk_queue_flag_clear() exists */ +/* #undef HAVE_BLK_QUEUE_FLAG_CLEAR */ + +/* blk_queue_flag_set() exists */ +/* #undef HAVE_BLK_QUEUE_FLAG_SET */ + +/* blk_queue_flush() is available */ +/* #undef HAVE_BLK_QUEUE_FLUSH */ + +/* blk_queue_flush() is GPL-only */ +/* #undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY */ + +/* blk_queue_secdiscard() is available */ +/* #undef HAVE_BLK_QUEUE_SECDISCARD */ + +/* blk_queue_secure_erase() is available */ +/* #undef HAVE_BLK_QUEUE_SECURE_ERASE */ + +/* blk_queue_update_readahead() exists */ +/* #undef HAVE_BLK_QUEUE_UPDATE_READAHEAD */ + +/* blk_queue_write_cache() exists */ +/* #undef HAVE_BLK_QUEUE_WRITE_CACHE */ + +/* blk_queue_write_cache() is GPL-only */ +/* #undef HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY */ + +/* Define if revalidate_disk() in block_device_operations */ +/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK */ + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES */ + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* check_disk_change() exists */ +/* #undef HAVE_CHECK_DISK_CHANGE */ + +/* clear_inode() is available */ +/* #undef HAVE_CLEAR_INODE */ + +/* dentry uses const struct dentry_operations */ +/* #undef HAVE_CONST_DENTRY_OPERATIONS */ + +/* copy_from_iter() is available */ +/* #undef HAVE_COPY_FROM_ITER */ + +/* copy_to_iter() is available */ +/* #undef HAVE_COPY_TO_ITER */ + +/* yes */ +/* #undef HAVE_CPU_HOTPLUG */ + +/* current_time() exists */ +/* #undef HAVE_CURRENT_TIME */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* DECLARE_EVENT_CLASS() is available */ +/* #undef HAVE_DECLARE_EVENT_CLASS */ + +/* dequeue_signal() takes 4 arguments */ +/* #undef HAVE_DEQUEUE_SIGNAL_4ARG */ + +/* lookup_bdev() wants dev_t arg */ +/* #undef HAVE_DEVT_LOOKUP_BDEV */ + +/* sops->dirty_inode() wants flags */ +/* #undef HAVE_DIRTY_INODE_WITH_FLAGS */ + +/* disk_*_io_acct() available */ +/* #undef HAVE_DISK_IO_ACCT */ + +/* disk_update_readahead() exists */ +/* #undef HAVE_DISK_UPDATE_READAHEAD */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* d_make_root() is available */ +/* #undef HAVE_D_MAKE_ROOT */ + +/* d_prune_aliases() is available */ +/* #undef HAVE_D_PRUNE_ALIASES */ + +/* dops->d_revalidate() operation takes nameidata */ +/* #undef HAVE_D_REVALIDATE_NAMEIDATA */ + +/* eops->encode_fh() wants child and parent inodes */ +/* #undef HAVE_ENCODE_FH_WITH_INODE */ + +/* sops->evict_inode() exists */ +/* #undef HAVE_EVICT_INODE */ + +/* FALLOC_FL_ZERO_RANGE is defined */ +/* #undef HAVE_FALLOC_FL_ZERO_RANGE */ + +/* fault_in_iov_iter_readable() is available */ +/* #undef HAVE_FAULT_IN_IOV_ITER_READABLE */ + +/* fops->aio_fsync() exists */ +/* #undef HAVE_FILE_AIO_FSYNC */ + +/* file_dentry() is available */ +/* #undef HAVE_FILE_DENTRY */ + +/* file_inode() is available */ +/* #undef HAVE_FILE_INODE */ + +/* iops->follow_link() cookie */ +/* #undef HAVE_FOLLOW_LINK_COOKIE */ + +/* iops->follow_link() nameidata */ +/* #undef HAVE_FOLLOW_LINK_NAMEIDATA */ + +/* fops->fsync() with range */ +/* #undef HAVE_FSYNC_RANGE */ + +/* fops->fsync() without dentry */ +/* #undef HAVE_FSYNC_WITHOUT_DENTRY */ + +/* generic_fillattr requires struct user_namespace* */ +/* #undef HAVE_GENERIC_FILLATTR_USERNS */ + +/* generic_*_io_acct() 3 arg available */ +/* #undef HAVE_GENERIC_IO_ACCT_3ARG */ + +/* generic_*_io_acct() 4 arg available */ +/* #undef HAVE_GENERIC_IO_ACCT_4ARG */ + +/* generic_readlink is global */ +/* #undef HAVE_GENERIC_READLINK */ + +/* generic_setxattr() exists */ +/* #undef HAVE_GENERIC_SETXATTR */ + +/* generic_write_checks() takes kiocb */ +/* #undef HAVE_GENERIC_WRITE_CHECKS_KIOCB */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* iops->get_acl() exists */ +/* #undef HAVE_GET_ACL */ + +/* iops->get_acl() takes rcu */ +/* #undef HAVE_GET_ACL_RCU */ + +/* iops->get_link() cookie */ +/* #undef HAVE_GET_LINK_COOKIE */ + +/* iops->get_link() delayed */ +/* #undef HAVE_GET_LINK_DELAYED */ + +/* group_info->gid exists */ +/* #undef HAVE_GROUP_INFO_GID */ + +/* has_capability() is available */ +/* #undef HAVE_HAS_CAPABILITY */ + +/* Define if you have the iconv() function and it works. */ +#define HAVE_ICONV 1 + +/* yes */ +/* #undef HAVE_INODE_LOCK_SHARED */ + +/* inode_owner_or_capable() exists */ +/* #undef HAVE_INODE_OWNER_OR_CAPABLE */ + +/* inode_owner_or_capable() takes user_ns */ +/* #undef HAVE_INODE_OWNER_OR_CAPABLE_IDMAPPED */ + +/* inode_set_flags() exists */ +/* #undef HAVE_INODE_SET_FLAGS */ + +/* inode_set_iversion() exists */ +/* #undef HAVE_INODE_SET_IVERSION */ + +/* inode->i_*time's are timespec64 */ +/* #undef HAVE_INODE_TIMESPEC64_TIMES */ + +/* timestamp_truncate() exists */ +/* #undef HAVE_INODE_TIMESTAMP_TRUNCATE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* in_compat_syscall() is available */ +/* #undef HAVE_IN_COMPAT_SYSCALL */ + +/* iops->create() takes struct user_namespace* */ +/* #undef HAVE_IOPS_CREATE_USERNS */ + +/* iops->mkdir() takes struct user_namespace* */ +/* #undef HAVE_IOPS_MKDIR_USERNS */ + +/* iops->mknod() takes struct user_namespace* */ +/* #undef HAVE_IOPS_MKNOD_USERNS */ + +/* iops->permission() takes struct user_namespace* */ +/* #undef HAVE_IOPS_PERMISSION_USERNS */ + +/* iops->rename() takes struct user_namespace* */ +/* #undef HAVE_IOPS_RENAME_USERNS */ + +/* iops->symlink() takes struct user_namespace* */ +/* #undef HAVE_IOPS_SYMLINK_USERNS */ + +/* iov_iter_advance() is available */ +/* #undef HAVE_IOV_ITER_ADVANCE */ + +/* iov_iter_count() is available */ +/* #undef HAVE_IOV_ITER_COUNT */ + +/* iov_iter_fault_in_readable() is available */ +/* #undef HAVE_IOV_ITER_FAULT_IN_READABLE */ + +/* iov_iter_revert() is available */ +/* #undef HAVE_IOV_ITER_REVERT */ + +/* iov_iter_type() is available */ +/* #undef HAVE_IOV_ITER_TYPE */ + +/* iov_iter types are available */ +/* #undef HAVE_IOV_ITER_TYPES */ + +/* yes */ +/* #undef HAVE_IO_SCHEDULE_TIMEOUT */ + +/* Define to 1 if you have the `issetugid' function. */ +#define HAVE_ISSETUGID 1 + +/* kernel has kernel_fpu_* functions */ +/* #undef HAVE_KERNEL_FPU */ + +/* kernel has asm/fpu/api.h */ +/* #undef HAVE_KERNEL_FPU_API_HEADER */ + +/* kernel fpu internal */ +/* #undef HAVE_KERNEL_FPU_INTERNAL */ + ++/* kernel has asm/fpu/internal.h */ ++/* #undef HAVE_KERNEL_FPU_INTERNAL_HEADER */ ++ +/* uncached_acl_sentinel() exists */ +/* #undef HAVE_KERNEL_GET_ACL_HANDLE_CACHE */ + +/* kernel does stack verification */ +/* #undef HAVE_KERNEL_OBJTOOL */ + +/* kernel has linux/objtool.h */ +/* #undef HAVE_KERNEL_OBJTOOL_HEADER */ + +/* kernel_read() take loff_t pointer */ +/* #undef HAVE_KERNEL_READ_PPOS */ + +/* timer_list.function gets a timer_list */ +/* #undef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST */ + +/* struct timer_list has a flags member */ +/* #undef HAVE_KERNEL_TIMER_LIST_FLAGS */ + +/* timer_setup() is available */ +/* #undef HAVE_KERNEL_TIMER_SETUP */ + +/* kernel_write() take loff_t pointer */ +/* #undef HAVE_KERNEL_WRITE_PPOS */ + +/* kmem_cache_create_usercopy() exists */ +/* #undef HAVE_KMEM_CACHE_CREATE_USERCOPY */ + +/* kstrtoul() exists */ +/* #undef HAVE_KSTRTOUL */ + +/* ktime_get_coarse_real_ts64() exists */ +/* #undef HAVE_KTIME_GET_COARSE_REAL_TS64 */ + +/* ktime_get_raw_ts64() exists */ +/* #undef HAVE_KTIME_GET_RAW_TS64 */ + +/* kvmalloc exists */ +/* #undef HAVE_KVMALLOC */ + +/* Define if you have [aio] */ +/* #undef HAVE_LIBAIO */ + +/* Define if you have [blkid] */ +/* #undef HAVE_LIBBLKID */ + +/* Define if you have [crypto] */ +#define HAVE_LIBCRYPTO 1 + +/* Define if you have [tirpc] */ +/* #undef HAVE_LIBTIRPC */ + +/* Define if you have [udev] */ +/* #undef HAVE_LIBUDEV */ + +/* Define if you have [uuid] */ +/* #undef HAVE_LIBUUID */ + +/* linux/blk-cgroup.h exists */ +/* #undef HAVE_LINUX_BLK_CGROUP_HEADER */ + +/* lseek_execute() is available */ +/* #undef HAVE_LSEEK_EXECUTE */ + +/* makedev() is declared in sys/mkdev.h */ +/* #undef HAVE_MAKEDEV_IN_MKDEV */ + +/* makedev() is declared in sys/sysmacros.h */ +/* #undef HAVE_MAKEDEV_IN_SYSMACROS */ + +/* Noting that make_request_fn() returns blk_qc_t */ +/* #undef HAVE_MAKE_REQUEST_FN_RET_QC */ + +/* Noting that make_request_fn() returns void */ +/* #undef HAVE_MAKE_REQUEST_FN_RET_VOID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* iops->mkdir() takes umode_t */ +/* #undef HAVE_MKDIR_UMODE_T */ + +/* Define to 1 if you have the `mlockall' function. */ +#define HAVE_MLOCKALL 1 + +/* lookup_bdev() wants mode arg */ +/* #undef HAVE_MODE_LOOKUP_BDEV */ + +/* Define if host toolchain supports MOVBE */ +#define HAVE_MOVBE 1 + +/* new_sync_read()/new_sync_write() are available */ +/* #undef HAVE_NEW_SYNC_READ */ + +/* folio_wait_bit() exists */ +/* #undef HAVE_PAGEMAP_FOLIO_WAIT_BIT */ + +/* iops->getattr() takes a path */ +/* #undef HAVE_PATH_IOPS_GETATTR */ + +/* Define if host toolchain supports PCLMULQDQ */ +#define HAVE_PCLMULQDQ 1 + +/* percpu_counter_add_batch() is defined */ +/* #undef HAVE_PERCPU_COUNTER_ADD_BATCH */ + +/* percpu_counter_init() wants gfp_t */ +/* #undef HAVE_PERCPU_COUNTER_INIT_WITH_GFP */ + +/* posix_acl_chmod() exists */ +/* #undef HAVE_POSIX_ACL_CHMOD */ + +/* posix_acl_from_xattr() needs user_ns */ +/* #undef HAVE_POSIX_ACL_FROM_XATTR_USERNS */ + +/* posix_acl_release() is available */ +/* #undef HAVE_POSIX_ACL_RELEASE */ + +/* posix_acl_release() is GPL-only */ +/* #undef HAVE_POSIX_ACL_RELEASE_GPL_ONLY */ + +/* posix_acl_valid() wants user namespace */ +/* #undef HAVE_POSIX_ACL_VALID_WITH_NS */ + +/* proc_ops structure exists */ +/* #undef HAVE_PROC_OPS_STRUCT */ + +/* iops->put_link() cookie */ +/* #undef HAVE_PUT_LINK_COOKIE */ + +/* iops->put_link() delayed */ +/* #undef HAVE_PUT_LINK_DELAYED */ + +/* iops->put_link() nameidata */ +/* #undef HAVE_PUT_LINK_NAMEIDATA */ + +/* If available, contains the Python version number currently in use. */ +#define HAVE_PYTHON "3.7" + +/* qat is enabled and existed */ +/* #undef HAVE_QAT */ + +/* iops->rename() wants flags */ +/* #undef HAVE_RENAME_WANTS_FLAGS */ + +/* REQ_DISCARD is defined */ +/* #undef HAVE_REQ_DISCARD */ + +/* REQ_FLUSH is defined */ +/* #undef HAVE_REQ_FLUSH */ + +/* REQ_OP_DISCARD is defined */ +/* #undef HAVE_REQ_OP_DISCARD */ + +/* REQ_OP_FLUSH is defined */ +/* #undef HAVE_REQ_OP_FLUSH */ + +/* REQ_OP_SECURE_ERASE is defined */ +/* #undef HAVE_REQ_OP_SECURE_ERASE */ + +/* REQ_PREFLUSH is defined */ +/* #undef HAVE_REQ_PREFLUSH */ + +/* revalidate_disk() is available */ +/* #undef HAVE_REVALIDATE_DISK */ + +/* revalidate_disk_size() is available */ +/* #undef HAVE_REVALIDATE_DISK_SIZE */ + +/* struct rw_semaphore has member activity */ +/* #undef HAVE_RWSEM_ACTIVITY */ *** 375 LINES SKIPPED ***