From owner-svn-src-projects@freebsd.org Sun Aug 13 01:23:20 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 89706DD8AE4 for ; Sun, 13 Aug 2017 01:23:20 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0B5227E009; Sun, 13 Aug 2017 01:23:19 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7D1NJIT086909; Sun, 13 Aug 2017 01:23:19 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7D1NEtH086864; Sun, 13 Aug 2017 01:23:14 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708130123.v7D1NEtH086864@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sun, 13 Aug 2017 01:23:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322452 - in projects/runtime-coverage: . bin/cat bin/chmod/tests bin/df bin/pkill bin/sh/tests bin/sh/tests/invocation cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/l... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: . bin/cat bin/chmod/tests bin/df bin/pkill bin/sh/tests bin/sh/tests/invocation cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/libdtrace/common cddl/cont... X-SVN-Commit-Revision: 322452 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Aug 2017 01:23:20 -0000 Author: ngie Date: Sun Aug 13 01:23:13 2017 New Revision: 322452 URL: https://svnweb.freebsd.org/changeset/base/322452 Log: MFhead@r322451 Added: projects/runtime-coverage/bin/sh/tests/invocation/ - copied from r322445, head/bin/sh/tests/invocation/ projects/runtime-coverage/crypto/openssh/regress/unittests/conversion/ - copied from r322445, head/crypto/openssh/regress/unittests/conversion/ projects/runtime-coverage/lib/libcasper/services/tests/ - copied from r322451, head/lib/libcasper/services/tests/ projects/runtime-coverage/lib/libcasper/tests/ - copied from r322451, head/lib/libcasper/tests/ projects/runtime-coverage/sys/arm/conf/GENERIC-NODEBUG - copied unchanged from r322445, head/sys/arm/conf/GENERIC-NODEBUG projects/runtime-coverage/sys/arm/freescale/imx/imx6_ahci.c - copied unchanged from r322445, head/sys/arm/freescale/imx/imx6_ahci.c projects/runtime-coverage/sys/boot/efi/include/efi_driver_utils.h - copied unchanged from r322445, head/sys/boot/efi/include/efi_driver_utils.h projects/runtime-coverage/sys/boot/efi/include/efi_drivers.h - copied unchanged from r322445, head/sys/boot/efi/include/efi_drivers.h projects/runtime-coverage/sys/boot/efi/include/efizfs.h - copied unchanged from r322445, head/sys/boot/efi/include/efizfs.h projects/runtime-coverage/sys/boot/efi/libefi/devicename.c - copied unchanged from r322445, head/sys/boot/efi/libefi/devicename.c projects/runtime-coverage/sys/boot/efi/libefi/efi_driver_utils.c - copied unchanged from r322445, head/sys/boot/efi/libefi/efi_driver_utils.c projects/runtime-coverage/sys/boot/efi/libefi/efizfs.c - copied unchanged from r322445, head/sys/boot/efi/libefi/efizfs.c projects/runtime-coverage/sys/dev/cxgbe/cudbg/ - copied from r322445, head/sys/dev/cxgbe/cudbg/ Deleted: projects/runtime-coverage/contrib/jemalloc/src/spin.c projects/runtime-coverage/crypto/openssh/auth1.c projects/runtime-coverage/sys/boot/efi/loader/devicename.c projects/runtime-coverage/sys/boot/fdt/dts/riscv/ projects/runtime-coverage/sys/riscv/conf/LOWRISC projects/runtime-coverage/sys/riscv/conf/LOWRISC.hints projects/runtime-coverage/sys/riscv/conf/QEMU projects/runtime-coverage/sys/riscv/conf/ROCKET projects/runtime-coverage/sys/riscv/conf/SPIKE projects/runtime-coverage/sys/riscv/riscv/sbi.S Modified: projects/runtime-coverage/Makefile projects/runtime-coverage/Makefile.inc1 projects/runtime-coverage/Makefile.libcompat projects/runtime-coverage/UPDATING projects/runtime-coverage/bin/cat/cat.c projects/runtime-coverage/bin/chmod/tests/chmod_test.sh projects/runtime-coverage/bin/df/df.1 projects/runtime-coverage/bin/df/df.c projects/runtime-coverage/bin/pkill/pkill.c projects/runtime-coverage/bin/sh/tests/Makefile projects/runtime-coverage/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h projects/runtime-coverage/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h projects/runtime-coverage/contrib/elftoolchain/libelf/_libelf_config.h projects/runtime-coverage/contrib/ipfilter/tools/ippool.c projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/spin.h projects/runtime-coverage/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h projects/runtime-coverage/contrib/libc++/include/__bsd_locale_defaults.h projects/runtime-coverage/contrib/libc++/include/__bsd_locale_fallbacks.h projects/runtime-coverage/contrib/libc++/include/__locale projects/runtime-coverage/contrib/libc++/include/mutex projects/runtime-coverage/contrib/libc++/include/sstream projects/runtime-coverage/contrib/libxo/Makefile.am projects/runtime-coverage/contrib/libxo/configure.ac projects/runtime-coverage/contrib/libxo/doc/libxo-manual.html projects/runtime-coverage/contrib/libxo/libxo/libxo.3 projects/runtime-coverage/contrib/libxo/libxo/libxo.c projects/runtime-coverage/contrib/libxo/libxo/xo_attr.3 projects/runtime-coverage/contrib/libxo/libxo/xo_create.3 projects/runtime-coverage/contrib/libxo/libxo/xo_emit.3 projects/runtime-coverage/contrib/libxo/libxo/xo_emit_err.3 projects/runtime-coverage/contrib/libxo/libxo/xo_emit_f.3 projects/runtime-coverage/contrib/libxo/libxo/xo_err.3 projects/runtime-coverage/contrib/libxo/libxo/xo_error.3 projects/runtime-coverage/contrib/libxo/libxo/xo_finish.3 projects/runtime-coverage/contrib/libxo/libxo/xo_flush.3 projects/runtime-coverage/contrib/libxo/libxo/xo_format.5 projects/runtime-coverage/contrib/libxo/libxo/xo_message.3 projects/runtime-coverage/contrib/libxo/libxo/xo_no_setlocale.3 projects/runtime-coverage/contrib/libxo/libxo/xo_open_container.3 projects/runtime-coverage/contrib/libxo/libxo/xo_open_list.3 projects/runtime-coverage/contrib/libxo/libxo/xo_open_marker.3 projects/runtime-coverage/contrib/libxo/libxo/xo_options.7 projects/runtime-coverage/contrib/libxo/libxo/xo_parse_args.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_allocator.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_flags.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_info.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_options.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_style.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_syslog_enterprise_id.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_version.3 projects/runtime-coverage/contrib/libxo/libxo/xo_set_writer.3 projects/runtime-coverage/contrib/libxo/libxo/xo_syslog.3 projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.E.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.H.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.HIPx.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.HP.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.J.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.JP.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.T.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.X.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_01.XP.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_02.E.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_02.J.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_02.JP.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_02.X.out projects/runtime-coverage/contrib/libxo/tests/core/saved/test_02.XP.out projects/runtime-coverage/contrib/libxo/tests/core/test_01.c projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.H.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.J.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.T.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.X.out projects/runtime-coverage/contrib/libxo/tests/xo/saved/xo_01.XP.out projects/runtime-coverage/contrib/libxo/tests/xo/xo_01.sh projects/runtime-coverage/contrib/libxo/xo/xo.1 projects/runtime-coverage/contrib/libxo/xohtml/xohtml.1 projects/runtime-coverage/contrib/libxo/xohtml/xohtml.sh.in projects/runtime-coverage/contrib/libxo/xolint/xolint.1 projects/runtime-coverage/contrib/libxo/xopo/xopo.1 projects/runtime-coverage/contrib/llvm/include/llvm/Analysis/ValueTracking.h projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/MachineFunction.h projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/MachineInstr.h projects/runtime-coverage/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/MachineFunction.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/StackColoring.cpp projects/runtime-coverage/contrib/llvm/lib/IR/ConstantFold.cpp projects/runtime-coverage/contrib/llvm/lib/Object/COFFImportFile.cpp projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp projects/runtime-coverage/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/runtime-coverage/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/runtime-coverage/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Utils/CloneModule.cpp projects/runtime-coverage/contrib/llvm/projects/libunwind/include/__libunwind_config.h projects/runtime-coverage/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S projects/runtime-coverage/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S projects/runtime-coverage/contrib/llvm/projects/libunwind/src/config.h projects/runtime-coverage/contrib/llvm/projects/libunwind/src/libunwind.cpp projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/AST/StmtCXX.h projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/ODRHash.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/StmtCXX.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Headers/avxintrin.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Headers/float.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/include/lldb/Target/Platform.h projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/POSIXStopInfo.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/POSIXStopInfo.h projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Target/Platform.cpp projects/runtime-coverage/contrib/netbsd-tests/lib/libc/gen/t_dir.c projects/runtime-coverage/contrib/netbsd-tests/lib/libc/regex/data/repet_bounded.in projects/runtime-coverage/contrib/netbsd-tests/lib/libc/regex/data/repet_multi.in projects/runtime-coverage/contrib/netbsd-tests/lib/libc/sys/t_mlock.c projects/runtime-coverage/contrib/sqlite3/Makefile.msc projects/runtime-coverage/contrib/sqlite3/configure projects/runtime-coverage/contrib/sqlite3/configure.ac projects/runtime-coverage/contrib/sqlite3/shell.c projects/runtime-coverage/contrib/sqlite3/sqlite3.c projects/runtime-coverage/contrib/sqlite3/sqlite3.h projects/runtime-coverage/contrib/sqlite3/sqlite3ext.h projects/runtime-coverage/contrib/sqlite3/tea/configure projects/runtime-coverage/contrib/sqlite3/tea/configure.ac projects/runtime-coverage/contrib/sqlite3/tea/generic/tclsqlite3.c projects/runtime-coverage/contrib/subversion/CHANGES projects/runtime-coverage/contrib/subversion/NOTICE projects/runtime-coverage/contrib/subversion/build-outputs.mk projects/runtime-coverage/contrib/subversion/configure projects/runtime-coverage/contrib/subversion/subversion/include/svn_version.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_client/copy.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_client/merge.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_fs/cached_data.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_fs/cached_data.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_fs/rep-cache-db.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_fs/rep-cache.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_fs/transaction.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_fs_x/rep-cache-db.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_ra_svn/client.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_repos/dump.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_subr/config_file.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_subr/internal_statements.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_subr/io.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_subr/version.c projects/runtime-coverage/contrib/subversion/subversion/libsvn_wc/wc-checks.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_wc/wc-metadata.h projects/runtime-coverage/contrib/subversion/subversion/libsvn_wc/wc-queries.h projects/runtime-coverage/contrib/subversion/subversion/svnadmin/svnadmin.c projects/runtime-coverage/contrib/subversion/win-tests.py projects/runtime-coverage/contrib/top/machine.h projects/runtime-coverage/contrib/top/top.c projects/runtime-coverage/contrib/top/top.xs projects/runtime-coverage/contrib/zstd/lib/common/xxhash.c projects/runtime-coverage/crypto/openssh/ChangeLog projects/runtime-coverage/crypto/openssh/INSTALL projects/runtime-coverage/crypto/openssh/Makefile.in projects/runtime-coverage/crypto/openssh/README projects/runtime-coverage/crypto/openssh/auth-pam.c projects/runtime-coverage/crypto/openssh/auth2-pubkey.c projects/runtime-coverage/crypto/openssh/auth2.c projects/runtime-coverage/crypto/openssh/channels.c projects/runtime-coverage/crypto/openssh/channels.h projects/runtime-coverage/crypto/openssh/clientloop.c projects/runtime-coverage/crypto/openssh/compat.c projects/runtime-coverage/crypto/openssh/config.h projects/runtime-coverage/crypto/openssh/configure.ac projects/runtime-coverage/crypto/openssh/contrib/cygwin/ssh-host-config projects/runtime-coverage/crypto/openssh/contrib/redhat/openssh.spec projects/runtime-coverage/crypto/openssh/contrib/suse/openssh.spec projects/runtime-coverage/crypto/openssh/digest-openssl.c projects/runtime-coverage/crypto/openssh/freebsd-configure.sh projects/runtime-coverage/crypto/openssh/hostfile.c projects/runtime-coverage/crypto/openssh/kex.c projects/runtime-coverage/crypto/openssh/krl.c projects/runtime-coverage/crypto/openssh/log.c projects/runtime-coverage/crypto/openssh/match.c projects/runtime-coverage/crypto/openssh/match.h projects/runtime-coverage/crypto/openssh/misc.c projects/runtime-coverage/crypto/openssh/monitor.c projects/runtime-coverage/crypto/openssh/mux.c projects/runtime-coverage/crypto/openssh/openbsd-compat/bsd-misc.c projects/runtime-coverage/crypto/openssh/openbsd-compat/bsd-misc.h projects/runtime-coverage/crypto/openssh/openbsd-compat/fmt_scaled.c projects/runtime-coverage/crypto/openssh/packet.c projects/runtime-coverage/crypto/openssh/packet.h projects/runtime-coverage/crypto/openssh/pathnames.h projects/runtime-coverage/crypto/openssh/readconf.c projects/runtime-coverage/crypto/openssh/regress/Makefile projects/runtime-coverage/crypto/openssh/regress/agent-getpeereid.sh projects/runtime-coverage/crypto/openssh/regress/allow-deny-users.sh projects/runtime-coverage/crypto/openssh/regress/cert-file.sh projects/runtime-coverage/crypto/openssh/regress/forwarding.sh projects/runtime-coverage/crypto/openssh/regress/integrity.sh projects/runtime-coverage/crypto/openssh/regress/test-exec.sh projects/runtime-coverage/crypto/openssh/regress/unittests/Makefile projects/runtime-coverage/crypto/openssh/regress/unittests/match/tests.c projects/runtime-coverage/crypto/openssh/regress/unittests/test_helper/test_helper.c projects/runtime-coverage/crypto/openssh/regress/unittests/test_helper/test_helper.h projects/runtime-coverage/crypto/openssh/regress/unittests/utf8/tests.c projects/runtime-coverage/crypto/openssh/sandbox-seccomp-filter.c projects/runtime-coverage/crypto/openssh/servconf.c projects/runtime-coverage/crypto/openssh/serverloop.c projects/runtime-coverage/crypto/openssh/session.c projects/runtime-coverage/crypto/openssh/sftp-client.c projects/runtime-coverage/crypto/openssh/sftp.c projects/runtime-coverage/crypto/openssh/ssh-agent.c projects/runtime-coverage/crypto/openssh/ssh-keygen.c projects/runtime-coverage/crypto/openssh/ssh-keyscan.c projects/runtime-coverage/crypto/openssh/ssh.c projects/runtime-coverage/crypto/openssh/ssh_config projects/runtime-coverage/crypto/openssh/ssh_config.5 projects/runtime-coverage/crypto/openssh/ssh_namespace.h projects/runtime-coverage/crypto/openssh/sshconnect.c projects/runtime-coverage/crypto/openssh/sshconnect1.c projects/runtime-coverage/crypto/openssh/sshconnect2.c projects/runtime-coverage/crypto/openssh/sshd.8 projects/runtime-coverage/crypto/openssh/sshd.c projects/runtime-coverage/crypto/openssh/sshd_config projects/runtime-coverage/crypto/openssh/sshd_config.5 projects/runtime-coverage/crypto/openssh/sshkey.c projects/runtime-coverage/crypto/openssh/sshkey.h projects/runtime-coverage/crypto/openssh/utf8.c projects/runtime-coverage/crypto/openssh/version.h projects/runtime-coverage/etc/mtree/BSD.tests.dist projects/runtime-coverage/gnu/usr.bin/binutils/Makefile.inc0 projects/runtime-coverage/gnu/usr.bin/cc/Makefile.tgt projects/runtime-coverage/gnu/usr.bin/gdb/Makefile.inc projects/runtime-coverage/gnu/usr.bin/gdb/libgdb/Makefile projects/runtime-coverage/kerberos5/lib/libkafs5/Makefile projects/runtime-coverage/kerberos5/libexec/ipropd-master/Makefile projects/runtime-coverage/lib/clang/include/clang/Basic/Version.inc projects/runtime-coverage/lib/clang/include/lld/Config/Version.inc projects/runtime-coverage/lib/clang/include/llvm/Support/VCSRevision.h projects/runtime-coverage/lib/csu/riscv/crt1.c projects/runtime-coverage/lib/csu/riscv/crti.S projects/runtime-coverage/lib/libc/gen/fnmatch.c projects/runtime-coverage/lib/libc/gen/tls.c projects/runtime-coverage/lib/libc/regex/engine.c projects/runtime-coverage/lib/libc/regex/regcomp.c projects/runtime-coverage/lib/libc/riscv/gen/fabs.S projects/runtime-coverage/lib/libc/stdlib/jemalloc/Makefile.inc projects/runtime-coverage/lib/libc/stdlib/set_constraint_handler_s.c projects/runtime-coverage/lib/libc/string/memset_s.c projects/runtime-coverage/lib/libc/sys/shmget.2 projects/runtime-coverage/lib/libc/tests/gen/fnmatch_testcases.h projects/runtime-coverage/lib/libc/tests/string/memset_s_test.c projects/runtime-coverage/lib/libcapsicum/capsicum_helpers.h projects/runtime-coverage/lib/libcasper/Makefile projects/runtime-coverage/lib/libcasper/services/Makefile projects/runtime-coverage/lib/libcasper/services/cap_dns/tests/dns_test.c projects/runtime-coverage/lib/libcasper/services/cap_grp/tests/grp_test.c projects/runtime-coverage/lib/libcasper/services/cap_pwd/tests/pwd_test.c projects/runtime-coverage/lib/libcasper/services/cap_sysctl/tests/Makefile projects/runtime-coverage/lib/libcasper/services/cap_sysctl/tests/sysctl_test.c projects/runtime-coverage/lib/libproc/proc_bkpt.c projects/runtime-coverage/lib/libproc/proc_regs.c projects/runtime-coverage/lib/libstand/Makefile projects/runtime-coverage/lib/libusb/libusb.h projects/runtime-coverage/lib/libusb/libusb10_desc.c projects/runtime-coverage/lib/libutil/Makefile projects/runtime-coverage/lib/libutil/flopen.3 projects/runtime-coverage/lib/libutil/flopen.c projects/runtime-coverage/lib/libutil/libutil.h projects/runtime-coverage/lib/libutil/pidfile.c projects/runtime-coverage/lib/libxo/add.man projects/runtime-coverage/lib/libxo/tests/Makefile projects/runtime-coverage/lib/libxo/xo_config.h projects/runtime-coverage/lib/ncurses/ncurses/termcap.c projects/runtime-coverage/libexec/rtld-elf/riscv/reloc.c projects/runtime-coverage/libexec/rtld-elf/rtld.c projects/runtime-coverage/release/packages/kernel.ucl projects/runtime-coverage/release/packages/runtime.ucl projects/runtime-coverage/sbin/fsck_ffs/setup.c projects/runtime-coverage/sbin/ifconfig/af_link.c projects/runtime-coverage/sbin/ifconfig/ifconfig.c projects/runtime-coverage/sbin/newfs/mkfs.c projects/runtime-coverage/share/man/man3/makedev.3 projects/runtime-coverage/share/man/man4/ehci.4 projects/runtime-coverage/share/man/man4/enc.4 projects/runtime-coverage/share/man/man4/geom.4 projects/runtime-coverage/share/man/man4/geom_fox.4 projects/runtime-coverage/share/man/man4/ohci.4 projects/runtime-coverage/share/man/man4/ucom.4 projects/runtime-coverage/share/man/man4/ugen.4 projects/runtime-coverage/share/man/man4/uhci.4 projects/runtime-coverage/share/man/man4/uhid.4 projects/runtime-coverage/share/man/man4/ukbd.4 projects/runtime-coverage/share/man/man4/ums.4 projects/runtime-coverage/share/man/man4/uplcom.4 projects/runtime-coverage/share/man/man4/usb.4 projects/runtime-coverage/share/man/man4/xhci.4 projects/runtime-coverage/share/man/man7/arch.7 projects/runtime-coverage/share/man/man9/disk.9 projects/runtime-coverage/share/misc/organization.dot projects/runtime-coverage/share/mk/bsd.cpu.mk projects/runtime-coverage/share/mk/bsd.links.mk projects/runtime-coverage/share/mk/bsd.own.mk projects/runtime-coverage/share/mk/bsd.stand.mk projects/runtime-coverage/share/mk/src.opts.mk projects/runtime-coverage/share/mk/sys.mk projects/runtime-coverage/sys/amd64/amd64/efirt.c (contents, props changed) projects/runtime-coverage/sys/amd64/amd64/machdep.c projects/runtime-coverage/sys/amd64/amd64/pmap.c projects/runtime-coverage/sys/amd64/include/cpufunc.h projects/runtime-coverage/sys/amd64/include/efi.h projects/runtime-coverage/sys/arm/allwinner/axp209.c projects/runtime-coverage/sys/arm/at91/at91_pmc.c projects/runtime-coverage/sys/arm/conf/GENERIC projects/runtime-coverage/sys/arm/conf/IMX6 projects/runtime-coverage/sys/arm/conf/NOTES projects/runtime-coverage/sys/arm/freescale/imx/files.imx6 projects/runtime-coverage/sys/arm/freescale/imx/imx6_ccm.c projects/runtime-coverage/sys/arm/freescale/imx/imx6_ccmreg.h projects/runtime-coverage/sys/arm/freescale/imx/imx_ccmvar.h projects/runtime-coverage/sys/arm/freescale/imx/imx_iomuxreg.h projects/runtime-coverage/sys/arm/mv/armada38x/armada38x_pl310.c projects/runtime-coverage/sys/arm/mv/mv_machdep.c projects/runtime-coverage/sys/arm/ti/am335x/am335x_prcm.c projects/runtime-coverage/sys/arm64/arm64/debug_monitor.c projects/runtime-coverage/sys/arm64/arm64/gic_v3.c projects/runtime-coverage/sys/arm64/arm64/gic_v3_fdt.c projects/runtime-coverage/sys/arm64/arm64/gic_v3_var.h projects/runtime-coverage/sys/arm64/arm64/gicv3_its.c projects/runtime-coverage/sys/arm64/arm64/machdep.c projects/runtime-coverage/sys/arm64/arm64/mp_machdep.c projects/runtime-coverage/sys/arm64/arm64/vfp.c projects/runtime-coverage/sys/arm64/include/machdep.h projects/runtime-coverage/sys/arm64/include/param.h projects/runtime-coverage/sys/boot/arm/at91/libat91/lib.h projects/runtime-coverage/sys/boot/arm/at91/libat91/printf.c projects/runtime-coverage/sys/boot/arm/at91/libat91/putchar.c projects/runtime-coverage/sys/boot/arm/ixp425/boot2/ixp425_board.c projects/runtime-coverage/sys/boot/arm/ixp425/boot2/lib.h projects/runtime-coverage/sys/boot/efi/include/efilib.h projects/runtime-coverage/sys/boot/efi/include/efiprot.h projects/runtime-coverage/sys/boot/efi/libefi/Makefile projects/runtime-coverage/sys/boot/efi/libefi/errno.c projects/runtime-coverage/sys/boot/efi/libefi/time.c projects/runtime-coverage/sys/boot/efi/loader/Makefile projects/runtime-coverage/sys/boot/efi/loader/loader_efi.h projects/runtime-coverage/sys/boot/efi/loader/main.c projects/runtime-coverage/sys/boot/fdt/dts/arm/armada-385-db-ap.dts projects/runtime-coverage/sys/boot/fdt/dts/arm/armada-388-gp.dts projects/runtime-coverage/sys/boot/fdt/dts/arm/armada-38x-solidrun-microsom.dtsi projects/runtime-coverage/sys/boot/fdt/dts/arm/armada-38x.dtsi projects/runtime-coverage/sys/boot/i386/boot2/Makefile projects/runtime-coverage/sys/boot/i386/boot2/boot2.c projects/runtime-coverage/sys/cam/ctl/scsi_ctl.c projects/runtime-coverage/sys/cam/nvme/nvme_da.c projects/runtime-coverage/sys/cddl/compat/opensolaris/sys/atomic.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h projects/runtime-coverage/sys/cddl/dev/profile/profile.c projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/completion.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/device.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/hrtimer.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/jiffies.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/page.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/pci.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/sched.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/sysfs.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/timer.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/wait.h projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_compat.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_hrtimer.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_page.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_pci.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_schedule.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_work.c projects/runtime-coverage/sys/conf/Makefile.riscv projects/runtime-coverage/sys/conf/NOTES projects/runtime-coverage/sys/conf/files projects/runtime-coverage/sys/conf/files.amd64 projects/runtime-coverage/sys/conf/files.riscv projects/runtime-coverage/sys/conf/kern.mk projects/runtime-coverage/sys/contrib/ipfilter/netinet/ip_nat.c projects/runtime-coverage/sys/dev/ahci/ahci_pci.c projects/runtime-coverage/sys/dev/ata/ata-pci.h projects/runtime-coverage/sys/dev/ata/chipsets/ata-intel.c projects/runtime-coverage/sys/dev/cxgbe/adapter.h projects/runtime-coverage/sys/dev/cxgbe/common/common.h projects/runtime-coverage/sys/dev/cxgbe/common/t4_hw.c projects/runtime-coverage/sys/dev/cxgbe/common/t4_hw.h projects/runtime-coverage/sys/dev/cxgbe/t4_ioctl.h projects/runtime-coverage/sys/dev/cxgbe/t4_main.c projects/runtime-coverage/sys/dev/cxgbe/t4_sched.c projects/runtime-coverage/sys/dev/cyapa/cyapa.c projects/runtime-coverage/sys/dev/e1000/if_em.h projects/runtime-coverage/sys/dev/efidev/efidev.c projects/runtime-coverage/sys/dev/fdt/fdt_common.c projects/runtime-coverage/sys/dev/hwpmc/hwpmc_piv.c projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hn.c projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hnreg.h projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hnvar.h projects/runtime-coverage/sys/dev/iicbus/nxprtc.c projects/runtime-coverage/sys/dev/ksyms/ksyms.c projects/runtime-coverage/sys/dev/mlx4/mlx4_en/en.h projects/runtime-coverage/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c projects/runtime-coverage/sys/dev/mlx4/mlx4_en/mlx4_en_port.c projects/runtime-coverage/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c projects/runtime-coverage/sys/dev/mlx4/stats.h projects/runtime-coverage/sys/dev/mlx5/mlx5_core/mlx5_cmd.c projects/runtime-coverage/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c projects/runtime-coverage/sys/dev/mlx5/mlx5_en/mlx5_en_main.c projects/runtime-coverage/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c projects/runtime-coverage/sys/dev/mly/mly.c projects/runtime-coverage/sys/dev/mmc/bridge.h projects/runtime-coverage/sys/dev/mmc/mmc.c projects/runtime-coverage/sys/dev/mmc/mmcreg.h projects/runtime-coverage/sys/dev/mmc/mmcsd.c projects/runtime-coverage/sys/dev/mmc/mmcvar.h projects/runtime-coverage/sys/dev/mpr/mpr.c projects/runtime-coverage/sys/dev/mpr/mpr_config.c projects/runtime-coverage/sys/dev/mpr/mpr_sas.c projects/runtime-coverage/sys/dev/mpr/mpr_sas_lsi.c projects/runtime-coverage/sys/dev/mpr/mpr_user.c projects/runtime-coverage/sys/dev/mpr/mprvar.h projects/runtime-coverage/sys/dev/mps/mps.c projects/runtime-coverage/sys/dev/mps/mps_config.c projects/runtime-coverage/sys/dev/mps/mps_sas.c projects/runtime-coverage/sys/dev/mps/mps_sas_lsi.c projects/runtime-coverage/sys/dev/mps/mps_user.c projects/runtime-coverage/sys/dev/mps/mpsvar.h projects/runtime-coverage/sys/dev/nvd/nvd.c projects/runtime-coverage/sys/dev/nvme/nvme.c projects/runtime-coverage/sys/dev/nvme/nvme.h projects/runtime-coverage/sys/dev/nvme/nvme_sim.c projects/runtime-coverage/sys/dev/nvme/nvme_sysctl.c projects/runtime-coverage/sys/dev/ofw/ofw_bus_subr.c projects/runtime-coverage/sys/dev/ofw/ofw_fdt.c projects/runtime-coverage/sys/dev/qlnx/qlnxe/qlnx_def.h projects/runtime-coverage/sys/dev/qlnx/qlnxe/qlnx_os.c projects/runtime-coverage/sys/dev/qlnx/qlnxe/qlnx_ver.h projects/runtime-coverage/sys/dev/sound/pci/hda/hdac.c projects/runtime-coverage/sys/dev/sound/pci/hda/hdac.h projects/runtime-coverage/sys/dev/sym/sym_hipd.c projects/runtime-coverage/sys/dev/usb/controller/xhci_pci.c projects/runtime-coverage/sys/dev/xen/timer/timer.c projects/runtime-coverage/sys/fs/pseudofs/pseudofs.h projects/runtime-coverage/sys/geom/geom.h projects/runtime-coverage/sys/geom/geom_bsd.c projects/runtime-coverage/sys/geom/geom_dev.c projects/runtime-coverage/sys/geom/geom_disk.c projects/runtime-coverage/sys/geom/geom_disk.h projects/runtime-coverage/sys/geom/geom_dump.c projects/runtime-coverage/sys/geom/geom_fox.c projects/runtime-coverage/sys/geom/geom_mbr.c projects/runtime-coverage/sys/geom/geom_subr.c projects/runtime-coverage/sys/geom/geom_sunlabel.c projects/runtime-coverage/sys/geom/geom_vol_ffs.c projects/runtime-coverage/sys/geom/journal/g_journal.c projects/runtime-coverage/sys/geom/journal/g_journal.h projects/runtime-coverage/sys/geom/part/g_part.c projects/runtime-coverage/sys/i386/i386/machdep.c projects/runtime-coverage/sys/i386/include/cpufunc.h projects/runtime-coverage/sys/i386/include/md_var.h projects/runtime-coverage/sys/isa/rtc.h projects/runtime-coverage/sys/kern/kern_sendfile.c projects/runtime-coverage/sys/kern/posix4_mib.c projects/runtime-coverage/sys/kern/subr_blist.c projects/runtime-coverage/sys/kern/subr_devmap.c projects/runtime-coverage/sys/kern/subr_intr.c projects/runtime-coverage/sys/kern/vfs_aio.c projects/runtime-coverage/sys/kern/vfs_bio.c projects/runtime-coverage/sys/libkern/x86/crc32_sse42.c projects/runtime-coverage/sys/modules/cxgbe/if_cxgbe/Makefile projects/runtime-coverage/sys/modules/dtrace/dtraceall/dtraceall.c projects/runtime-coverage/sys/modules/i2c/nxprtc/Makefile projects/runtime-coverage/sys/modules/qlnx/qlnxe/Makefile projects/runtime-coverage/sys/net/if_enc.c projects/runtime-coverage/sys/net/iflib.c projects/runtime-coverage/sys/netinet/if_ether.c projects/runtime-coverage/sys/netinet/in.h projects/runtime-coverage/sys/netipsec/key.c projects/runtime-coverage/sys/netpfil/pf/pf_lb.c projects/runtime-coverage/sys/ofed/drivers/infiniband/core/addr.c projects/runtime-coverage/sys/ofed/drivers/infiniband/core/cm.c projects/runtime-coverage/sys/riscv/conf/GENERIC projects/runtime-coverage/sys/riscv/include/machdep.h projects/runtime-coverage/sys/riscv/include/riscvreg.h projects/runtime-coverage/sys/riscv/include/sbi.h projects/runtime-coverage/sys/riscv/riscv/cpufunc_asm.S projects/runtime-coverage/sys/riscv/riscv/exception.S projects/runtime-coverage/sys/riscv/riscv/intr_machdep.c projects/runtime-coverage/sys/riscv/riscv/locore.S projects/runtime-coverage/sys/riscv/riscv/machdep.c projects/runtime-coverage/sys/riscv/riscv/nexus.c projects/runtime-coverage/sys/riscv/riscv/pmap.c projects/runtime-coverage/sys/riscv/riscv/riscv_console.c projects/runtime-coverage/sys/riscv/riscv/swtch.S projects/runtime-coverage/sys/riscv/riscv/timer.c projects/runtime-coverage/sys/riscv/riscv/trap.c projects/runtime-coverage/sys/riscv/riscv/vm_machdep.c projects/runtime-coverage/sys/sparc64/sparc64/pmap.c projects/runtime-coverage/sys/sys/_termios.h projects/runtime-coverage/sys/sys/cdefs.h projects/runtime-coverage/sys/sys/kerneldump.h projects/runtime-coverage/sys/sys/types.h projects/runtime-coverage/sys/ufs/ffs/fs.h projects/runtime-coverage/sys/vm/vm_glue.c projects/runtime-coverage/sys/vm/vm_kern.c projects/runtime-coverage/sys/vm/vm_page.c projects/runtime-coverage/sys/vm/vm_page.h projects/runtime-coverage/sys/x86/acpica/madt.c projects/runtime-coverage/sys/x86/acpica/srat.c projects/runtime-coverage/sys/x86/include/apicvar.h projects/runtime-coverage/sys/x86/include/x86_smp.h projects/runtime-coverage/sys/x86/include/x86_var.h projects/runtime-coverage/sys/x86/isa/atrtc.c projects/runtime-coverage/sys/x86/x86/identcpu.c projects/runtime-coverage/sys/x86/x86/local_apic.c projects/runtime-coverage/sys/x86/x86/mp_x86.c projects/runtime-coverage/sys/x86/x86/mptable.c projects/runtime-coverage/sys/x86/xen/pvcpu_enum.c projects/runtime-coverage/tests/sys/netinet/fibs_test.sh (contents, props changed) projects/runtime-coverage/tools/build/mk/OptionalObsoleteFiles.inc projects/runtime-coverage/usr.bin/Makefile projects/runtime-coverage/usr.bin/calendar/calendars/calendar.freebsd projects/runtime-coverage/usr.bin/cut/cut.1 projects/runtime-coverage/usr.bin/du/du.1 projects/runtime-coverage/usr.bin/du/du.c projects/runtime-coverage/usr.bin/du/tests/du_test.sh projects/runtime-coverage/usr.bin/indent/indent.1 projects/runtime-coverage/usr.bin/indent/indent.c projects/runtime-coverage/usr.bin/ldd/ldd.c projects/runtime-coverage/usr.bin/mkesdb/yacc.y projects/runtime-coverage/usr.bin/mt/mt.1 projects/runtime-coverage/usr.bin/procstat/procstat_ptlwpinfo.c projects/runtime-coverage/usr.bin/ruptime/ruptime.1 projects/runtime-coverage/usr.bin/rwho/rwho.1 projects/runtime-coverage/usr.bin/top/machine.c projects/runtime-coverage/usr.bin/units/units.1 projects/runtime-coverage/usr.bin/vmstat/vmstat.c projects/runtime-coverage/usr.bin/xlint/lint1/param.h projects/runtime-coverage/usr.bin/xohtml/xohtml.sh projects/runtime-coverage/usr.sbin/Makefile projects/runtime-coverage/usr.sbin/acpi/acpidump/acpi.c projects/runtime-coverage/usr.sbin/bluetooth/bthidcontrol/sdp.c projects/runtime-coverage/usr.sbin/bluetooth/bthidd/bthid_config.h projects/runtime-coverage/usr.sbin/bluetooth/bthidd/bthidd.conf.sample projects/runtime-coverage/usr.sbin/bluetooth/bthidd/bthidd.h projects/runtime-coverage/usr.sbin/bluetooth/bthidd/hid.c projects/runtime-coverage/usr.sbin/bluetooth/bthidd/lexer.l projects/runtime-coverage/usr.sbin/bluetooth/bthidd/parser.y projects/runtime-coverage/usr.sbin/bluetooth/bthidd/server.c projects/runtime-coverage/usr.sbin/bluetooth/bthidd/session.c projects/runtime-coverage/usr.sbin/bluetooth/rfcomm_pppd/rfcomm_pppd.8 projects/runtime-coverage/usr.sbin/bsdinstall/scripts/netconfig_ipv4 projects/runtime-coverage/usr.sbin/cxgbetool/cxgbetool.c projects/runtime-coverage/usr.sbin/pmcstat/pmcpl_gprof.c projects/runtime-coverage/usr.sbin/rwhod/rwhod.8 projects/runtime-coverage/usr.sbin/tzsetup/tzsetup.c Directory Properties: projects/runtime-coverage/ (props changed) projects/runtime-coverage/cddl/ (props changed) projects/runtime-coverage/cddl/contrib/opensolaris/ (props changed) projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/runtime-coverage/contrib/compiler-rt/ (props changed) projects/runtime-coverage/contrib/elftoolchain/ (props changed) projects/runtime-coverage/contrib/ipfilter/ (props changed) projects/runtime-coverage/contrib/libc++/ (props changed) projects/runtime-coverage/contrib/libxo/ (props changed) projects/runtime-coverage/contrib/llvm/ (props changed) projects/runtime-coverage/contrib/llvm/projects/libunwind/ (props changed) projects/runtime-coverage/contrib/llvm/tools/clang/ (props changed) projects/runtime-coverage/contrib/llvm/tools/lld/ (props changed) projects/runtime-coverage/contrib/llvm/tools/lldb/ (props changed) projects/runtime-coverage/contrib/netbsd-tests/ (props changed) projects/runtime-coverage/contrib/sqlite3/ (props changed) projects/runtime-coverage/contrib/subversion/ (props changed) projects/runtime-coverage/contrib/top/ (props changed) projects/runtime-coverage/contrib/zstd/ (props changed) projects/runtime-coverage/crypto/openssh/ (props changed) projects/runtime-coverage/gnu/usr.bin/binutils/ (props changed) projects/runtime-coverage/gnu/usr.bin/gdb/ (props changed) projects/runtime-coverage/sys/cddl/contrib/opensolaris/ (props changed) projects/runtime-coverage/sys/contrib/ipfilter/ (props changed) projects/runtime-coverage/tests/etc/rc.d/routing_test.sh (props changed) projects/runtime-coverage/tests/sys/acl/aclfuzzer.sh (props changed) projects/runtime-coverage/tests/sys/acl/mktrivial.sh (props changed) projects/runtime-coverage/tests/sys/file/flock_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/eli/conf.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/eli/init_alias_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/gate/ggate_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/mirror/8_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/mirror/9_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/nop/nop_test.sh (props changed) projects/runtime-coverage/tests/sys/geom/class/uzip/conf.sh (props changed) projects/runtime-coverage/tests/sys/kern/coredump_phnum_test.sh (props changed) projects/runtime-coverage/tests/sys/kqueue/libkqueue/kqueue_test.sh (props changed) projects/runtime-coverage/tests/sys/mac/portacl/misc.sh (props changed) projects/runtime-coverage/tests/sys/mac/portacl/nobody_test.sh (props changed) projects/runtime-coverage/tests/sys/mac/portacl/root_test.sh (props changed) projects/runtime-coverage/tests/sys/mqueue/mqueue_test.sh (props changed) projects/runtime-coverage/tests/sys/opencrypto/runtests.sh (props changed) projects/runtime-coverage/tests/sys/vfs/trailing_slash.sh (props changed) Modified: projects/runtime-coverage/Makefile ============================================================================== --- projects/runtime-coverage/Makefile Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/Makefile Sun Aug 13 01:23:13 2017 (r322452) @@ -245,12 +245,17 @@ _MAKE+= MK_META_MODE=no .endif # !exists(/dev/filemon) && !defined(NO_FILEMON) .endif # !defined(_CAN_USE_META_MODE) -# Guess machine architecture from machine type, and vice versa. +# Guess target architecture from target type, and vice versa, based on +# historic FreeBSD practice of tending to have TARGET == TARGET_ARCH +# expanding to TARGET == TARGET_CPUARCH in recent times, with known +# exceptions. .if !defined(TARGET_ARCH) && defined(TARGET) +# T->TA mapping is usually TARGET with arm64 the odd man out _TARGET_ARCH= ${TARGET:S/arm64/aarch64/} .elif !defined(TARGET) && defined(TARGET_ARCH) && \ ${TARGET_ARCH} != ${MACHINE_ARCH} -_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/powerpcspe/powerpc/:C/riscv64(sf)?/riscv/} +# TA->T mapping is accidentally CPUARCH with aarch64 the odd man out +_TARGET= ${TARGET_ARCH:${__TO_CPUARCH}:C/aarch64/arm64/} .endif .if defined(TARGET) && !defined(_TARGET) _TARGET=${TARGET} Modified: projects/runtime-coverage/Makefile.inc1 ============================================================================== --- projects/runtime-coverage/Makefile.inc1 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/Makefile.inc1 Sun Aug 13 01:23:13 2017 (r322452) @@ -346,6 +346,12 @@ SVN= ${_P}/${_S} . endfor .endif SVNFLAGS?= -r HEAD +.if !defined(VCS_REVISION) && empty(VCS_REVISION) +_VCS_REVISION?= $$(eval ${SVNVERSION_CMD} ${SRCDIR}) +. if !empty(_VCS_REVISION) +VCS_REVISION= $$(echo r${_VCS_REVISION}) +. endif +.endif .if !defined(OSRELDATE) .if exists(/usr/include/osreldate.h) @@ -1494,20 +1500,24 @@ packagekernel: .PHONY @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .else @@ -1516,17 +1526,21 @@ packagekernel: .PHONY tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .endif @@ -1619,7 +1633,11 @@ create-world-package-${pkgname}: .PHONY @awk -F\" ' \ /^name/ { printf("===> Creating %s-", $$2); next } \ /^version/ { print $$2; next } \ - ' ${WSTAGEDIR}/${pkgname}.ucl ; \ + ' ${WSTAGEDIR}/${pkgname}.ucl + @if [ "${pkgname}" == "runtime" ]; then \ + sed -i '' -e "s/%KERNCONF%/${INSTALLKERNEL:tl}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ + sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ + fi ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${WSTAGEDIR}/${pkgname}.ucl \ -p ${WSTAGEDIR}/${pkgname}.plist \ @@ -1630,7 +1648,10 @@ create-world-package-${pkgname}: .PHONY create-kernel-packages: .PHONY _default_flavor= -default .if exists(${KSTAGEDIR}/kernel.meta) -.for flavor in "" -debug +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},} create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/${DISTDIR} ; \ @@ -1645,6 +1666,7 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul -e "s/%DESC%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ awk -F\" ' \ @@ -1656,12 +1678,15 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} -.endfor +. endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" -.for _kernel in ${BUILDKERNELS:[2..-1]} -.if exists(${KSTAGEDIR}/kernel.${_kernel}.meta) -.for flavor in "" -debug +. for _kernel in ${BUILDKERNELS:[2..-1]} +. if exists(${KSTAGEDIR}/kernel.${_kernel}.meta) +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel} create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/kernel.${_kernel} ; \ @@ -1676,6 +1701,7 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ -e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ awk -F\" ' \ @@ -1687,10 +1713,10 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} -.endfor +. endfor +. endif +. endfor .endif -.endfor -.endif sign-packages: _pkgbootstrap .PHONY @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ @@ -2750,8 +2776,7 @@ CD2CFLAGS+= -isystem ${XDDESTDIR}/usr/include -L${XDDE # combined with --sysroot. CD2CFLAGS+= -B${XDDESTDIR}/usr/lib # Force using libc++ for external GCC. -# XXX: This should be checking MK_GNUCXX == no -.if ${X_COMPILER_VERSION} >= 40800 +.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 CD2CXXFLAGS+= -isystem ${XDDESTDIR}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ .endif Modified: projects/runtime-coverage/Makefile.libcompat ============================================================================== --- projects/runtime-coverage/Makefile.libcompat Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/Makefile.libcompat Sun Aug 13 01:23:13 2017 (r322452) @@ -99,8 +99,7 @@ LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat # sysroot path which --sysroot does not actually do for headers. LIBCOMPATCFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include # Force using libc++ for external GCC. -# XXX: This should be checking MK_GNUCXX == no -.if ${X_COMPILER_VERSION} >= 40800 && \ +.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 && \ (${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no") LIBCOMPATCXXFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ Modified: projects/runtime-coverage/UPDATING ============================================================================== --- projects/runtime-coverage/UPDATING Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/UPDATING Sun Aug 13 01:23:13 2017 (r322452) @@ -51,6 +51,19 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170808: + Since the switch to GPT disk labels, fsck for UFS/FFS has been + unable to automatically find alternate superblocks. As of r322297, + the information needed to find alternate superblocks has been + moved to the end of the area reserved for the boot block. + Filesystems created with a newfs of this vintage or later + will create the recovery information. If you have a filesystem + created prior to this change and wish to have a recovery block + created for your filesystem, you can do so by running fsck in + forground mode (i.e., do not use the -p or -y options). As it + starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' + to which you should answer yes. + 20170728: As of r321665, an NFSv4 server configuration that services Kerberos mounts or clients that do not support the uid/gid in @@ -64,8 +77,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: and upgrading, if you are not already using clang 3.5.0 or higher. 20170701: - WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need them to be - built with the base system. + WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the + r-commands (rlogin, rsh, etc.) to be built with the base system. 20170625: The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is Modified: projects/runtime-coverage/bin/cat/cat.c ============================================================================== --- projects/runtime-coverage/bin/cat/cat.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/cat/cat.c Sun Aug 13 01:23:13 2017 (r322452) @@ -51,12 +51,12 @@ __FBSDID("$FreeBSD$"); #ifndef NO_UDOM_SUPPORT #include #include -#include #include #endif #include #include +#include #include #include #include Modified: projects/runtime-coverage/bin/chmod/tests/chmod_test.sh ============================================================================== --- projects/runtime-coverage/bin/chmod/tests/chmod_test.sh Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/chmod/tests/chmod_test.sh Sun Aug 13 01:23:13 2017 (r322452) @@ -115,7 +115,7 @@ f_flag_body() f_flag_cleanup() { - atf_check chflags 0 foo + chflags 0 foo || : } atf_test_case h_flag Modified: projects/runtime-coverage/bin/df/df.1 ============================================================================== --- projects/runtime-coverage/bin/df/df.1 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/df/df.1 Sun Aug 13 01:23:13 2017 (r322452) @@ -29,7 +29,7 @@ .\" @(#)df.1 8.3 (Berkeley) 5/8/95 .\" $FreeBSD$ .\" -.Dd December 1, 2015 +.Dd August 8, 2017 .Dt DF 1 .Os .Sh NAME @@ -97,7 +97,7 @@ output. Use unit suffixes: Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte and Pebibyte (based on powers of 1024) in order to reduce the number of digits to four or fewer. -.It Fl H +.It Fl H , Fl Fl si .Dq Human-readable output. Use unit suffixes: Byte, Kilobyte, Megabyte, Modified: projects/runtime-coverage/bin/df/df.c ============================================================================== --- projects/runtime-coverage/bin/df/df.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/df/df.c Sun Aug 13 01:23:13 2017 (r322452) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include #endif #include +#include #include #include #ifdef MOUNT_CHAR_DEVS @@ -107,6 +108,12 @@ static int thousands; static struct ufs_args mdev; #endif +static const struct option long_options[] = +{ + { "si", no_argument, NULL, 'H' }, + { NULL, no_argument, NULL, 0 }, +}; + int main(int argc, char *argv[]) { @@ -142,7 +149,8 @@ main(int argc, char *argv[]) if (argc < 0) exit(1); - while ((ch = getopt(argc, argv, "abcgHhiklmnPt:T,")) != -1) + while ((ch = getopt_long(argc, argv, "+abcgHhiklmnPt:T,", long_options, + NULL)) != -1) switch (ch) { case 'a': aflag = 1; Modified: projects/runtime-coverage/bin/pkill/pkill.c ============================================================================== --- projects/runtime-coverage/bin/pkill/pkill.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/pkill/pkill.c Sun Aug 13 01:23:13 2017 (r322452) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -656,10 +657,12 @@ killact(const struct kinfo_proc *kp) static int grepact(const struct kinfo_proc *kp) { + static bool first = true; - show_process(kp); - if (!quiet) + if (!quiet && !first) printf("%s", delim); + show_process(kp); + first = false; return (1); } Modified: projects/runtime-coverage/bin/sh/tests/Makefile ============================================================================== --- projects/runtime-coverage/bin/sh/tests/Makefile Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/bin/sh/tests/Makefile Sun Aug 13 01:23:13 2017 (r322452) @@ -6,6 +6,7 @@ TESTS_SUBDIRS+= builtins TESTS_SUBDIRS+= errors TESTS_SUBDIRS+= execution TESTS_SUBDIRS+= expansion +TESTS_SUBDIRS+= invocation TESTS_SUBDIRS+= parameters TESTS_SUBDIRS+= parser TESTS_SUBDIRS+= set-e Modified: projects/runtime-coverage/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/cmd/ztest/ztest.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/cmd/ztest/ztest.c Sun Aug 13 01:23:13 2017 (r322452) @@ -1838,7 +1838,6 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, z uint64_t object = lr->lr_foid; uint64_t offset = lr->lr_offset; uint64_t size = lr->lr_length; - blkptr_t *bp = &lr->lr_blkptr; uint64_t txg = lr->lr_common.lrc_txg; uint64_t crtxg; dmu_object_info_t doi; @@ -1892,11 +1891,7 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, z DMU_READ_NO_PREFETCH); if (error == 0) { - blkptr_t *obp = dmu_buf_get_blkptr(db); - if (obp) { - ASSERT(BP_IS_HOLE(bp)); - *bp = *obp; - } + blkptr_t *bp = &lr->lr_blkptr; zgd->zgd_db = db; zgd->zgd_bp = bp; Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Sun Aug 13 01:23:13 2017 (r322452) @@ -250,7 +250,7 @@ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__L dofr[j].dofr_offset + 4; rel->r_info = ELF32_R_INFO(count + dep->de_global, R_PPC_REL32); -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__); #else @@ -430,7 +430,7 @@ prepare_elf64(dtrace_hdl_t *dtp, const dof_hdr_t *dof, dofr[j].dofr_offset; rel->r_info = ELF64_R_INFO(count + dep->de_global, R_PPC64_REL64); -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ #elif defined(__i386) || defined(__amd64) rel->r_offset = s->dofs_offset + @@ -904,7 +904,7 @@ dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, return (0); } -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ static int dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela, Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c Sun Aug 13 01:23:13 2017 (r322452) @@ -311,7 +311,7 @@ pfprint_fp(dtrace_hdl_t *dtp, FILE *fp, const char *fo return (dt_printf(dtp, fp, format, *((double *)addr) / n)); #if !defined(__arm__) && !defined(__powerpc__) && \ - !defined(__mips__) && !defined(__riscv__) + !defined(__mips__) && !defined(__riscv) case sizeof (long double): return (dt_printf(dtp, fp, format, *((long double *)addr) / ldn)); Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Sun Aug 13 01:23:13 2017 (r322452) @@ -103,7 +103,6 @@ zfs_validate_name(libzfs_handle_t *hdl, const char *pa namecheck_err_t why; char what; - (void) zfs_prop_get_table(); if (entity_namecheck(path, &why, &what) != 0) { if (hdl != NULL) { switch (why) { @@ -3958,14 +3957,19 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap, bo } /* - * We rely on zfs_iter_children() to verify that there are no - * newer snapshots for the given dataset. Therefore, we can - * simply pass the name on to the ioctl() call. There is still - * an unlikely race condition where the user has taken a - * snapshot since we verified that this was the most recent. + * Pass both the filesystem and the wanted snapshot names, + * we would get an error back if the snapshot is destroyed or + * a new snapshot is created before this request is processed. */ - err = lzc_rollback(zhp->zfs_name, NULL, 0); - if (err != 0) { + err = lzc_rollback_to(zhp->zfs_name, snap->zfs_name); + if (err == EXDEV) { + zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, + "'%s' is not the latest snapshot"), snap->zfs_name); + (void) zfs_error_fmt(zhp->zfs_hdl, EZFS_BUSY, + dgettext(TEXT_DOMAIN, "cannot rollback '%s'"), + zhp->zfs_name); + return (err); + } else if (err != 0) { (void) zfs_standard_error_fmt(zhp->zfs_hdl, errno, dgettext(TEXT_DOMAIN, "cannot rollback '%s'"), zhp->zfs_name); Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c Sun Aug 13 01:23:13 2017 (r322452) @@ -765,6 +765,9 @@ lzc_receive_with_header(const char *snapname, nvlist_t * Roll back this filesystem or volume to its most recent snapshot. * If snapnamebuf is not NULL, it will be filled in with the name * of the most recent snapshot. + * Note that the latest snapshot may change if a new one is concurrently + * created or the current one is destroyed. lzc_rollback_to can be used + * to roll back to a specific latest snapshot. * * Return 0 on success or an errno on failure. */ @@ -784,6 +787,27 @@ lzc_rollback(const char *fsname, char *snapnamebuf, in } nvlist_free(result); + return (err); +} + +/* + * Roll back this filesystem or volume to the specified snapshot, + * if possible. + * + * Return 0 on success or an errno on failure. + */ +int +lzc_rollback_to(const char *fsname, const char *snapname) +{ + nvlist_t *args; + nvlist_t *result; + int err; + + args = fnvlist_alloc(); + fnvlist_add_string(args, "target", snapname); + err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result); + nvlist_free(args); + nvlist_free(result); return (err); } Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h Sun Aug 13 01:23:13 2017 (r322452) @@ -84,6 +84,7 @@ int lzc_receive_with_header(const char *, nvlist_t *, boolean_t lzc_exists(const char *); int lzc_rollback(const char *, char *, int); +int lzc_rollback_to(const char *, const char *); #ifdef __cplusplus } Modified: projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h Sun Aug 13 01:23:13 2017 (r322452) @@ -92,7 +92,7 @@ * does not have dedicated bit counting instructions. */ #if defined(__FreeBSD__) && (defined(__sparc64__) || \ - defined(__mips_n64) || defined(__mips_o64) || defined(__riscv__)) + defined(__mips_n64) || defined(__mips_o64) || defined(__riscv)) si_int __clzsi2(si_int); si_int __ctzsi2(si_int); #define __builtin_clz __clzsi2 Modified: projects/runtime-coverage/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h Sun Aug 13 01:23:13 2017 (r322452) @@ -83,7 +83,7 @@ namespace __sanitizer { #elif defined(__powerpc64__) const unsigned struct_kernel_stat_sz = 144; const unsigned struct_kernel_stat64_sz = 104; -#elif defined(__riscv__) +#elif defined(__riscv) /* RISCVTODO: check that these values are correct */ const unsigned struct_kernel_stat_sz = 128; const unsigned struct_kernel_stat64_sz = 128; @@ -126,7 +126,7 @@ namespace __sanitizer { #if SANITIZER_LINUX || SANITIZER_FREEBSD -#if defined(__powerpc64__) || defined(__riscv__) || defined(__s390__) +#if defined(__powerpc64__) || defined(__riscv) || defined(__s390__) const unsigned struct___old_kernel_stat_sz = 0; #elif !defined(__sparc__) const unsigned struct___old_kernel_stat_sz = 32; @@ -554,7 +554,7 @@ namespace __sanitizer { typedef long __sanitizer___kernel_off_t; #endif -#if defined(__powerpc__) || defined(__mips__) || defined(__riscv__) +#if defined(__powerpc__) || defined(__mips__) || defined(__riscv) typedef unsigned int __sanitizer___kernel_old_uid_t; typedef unsigned int __sanitizer___kernel_old_gid_t; #else Modified: projects/runtime-coverage/contrib/elftoolchain/libelf/_libelf_config.h ============================================================================== --- projects/runtime-coverage/contrib/elftoolchain/libelf/_libelf_config.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/elftoolchain/libelf/_libelf_config.h Sun Aug 13 01:23:13 2017 (r322452) @@ -97,7 +97,7 @@ #define LIBELF_BYTEORDER ELFDATA2MSB #define LIBELF_CLASS ELFCLASS32 -#elif defined(__riscv64) +#elif defined(__riscv) && (__riscv_xlen == 64) #define LIBELF_ARCH EM_RISCV #define LIBELF_BYTEORDER ELFDATA2LSB Modified: projects/runtime-coverage/contrib/ipfilter/tools/ippool.c ============================================================================== --- projects/runtime-coverage/contrib/ipfilter/tools/ippool.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/ipfilter/tools/ippool.c Sun Aug 13 01:23:13 2017 (r322452) @@ -77,7 +77,7 @@ usage(prog) fprintf(stderr, "Usage:\t%s\n", prog); fprintf(stderr, "\t-a [-dnv] -m [-o ] [-t type] [-T ttl] -i [/netmask]\n"); fprintf(stderr, "\t-A [-dnv] [-m ] [-o ] [-S ] [-t ]\n"); - fprintf(stderr, "\t-f [-dnuv]\n"); + fprintf(stderr, "\t-f [-dnuvR]\n"); fprintf(stderr, "\t-F [-dv] [-o ] [-t ]\n"); fprintf(stderr, "\t-l [-dv] [-m ] [-t ] [-o ] [-M ] [-N ]\n"); fprintf(stderr, "\t-r [-dnv] [-m ] [-o ] [-t type] -i [/netmask]\n"); Modified: projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h ============================================================================== --- projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h Sun Aug 13 01:23:13 2017 (r322452) @@ -88,7 +88,7 @@ typedef int malloc_cpuid_t; # ifdef __powerpc__ # define LG_QUANTUM 4 # endif -# ifdef __riscv__ +# ifdef __riscv # define LG_QUANTUM 4 # endif # ifdef __s390__ Modified: projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/spin.h ============================================================================== --- projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/spin.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/jemalloc/include/jemalloc/internal/spin.h Sun Aug 13 01:23:13 2017 (r322452) @@ -1,19 +1,13 @@ #ifndef JEMALLOC_INTERNAL_SPIN_H #define JEMALLOC_INTERNAL_SPIN_H -#ifdef JEMALLOC_SPIN_C_ -# define SPIN_INLINE extern inline -#else -# define SPIN_INLINE inline -#endif - #define SPIN_INITIALIZER {0U} typedef struct { unsigned iteration; } spin_t; -SPIN_INLINE void +static inline void spin_adaptive(spin_t *spin) { volatile uint32_t i; Modified: projects/runtime-coverage/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h ============================================================================== --- projects/runtime-coverage/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h Sun Aug 13 01:23:13 2017 (r322452) @@ -67,7 +67,7 @@ # define LG_VADDR 32 # define LG_SIZEOF_PTR 2 #endif -#ifdef __riscv__ +#ifdef __riscv # define LG_VADDR 64 # define LG_SIZEOF_PTR 3 #endif Modified: projects/runtime-coverage/contrib/libc++/include/__bsd_locale_defaults.h ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/__bsd_locale_defaults.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libc++/include/__bsd_locale_defaults.h Sun Aug 13 01:23:13 2017 (r322452) @@ -15,6 +15,10 @@ #ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H #define _LIBCPP_BSD_LOCALE_DEFAULTS_H +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + #define __libcpp_mb_cur_max_l(loc) MB_CUR_MAX_L(loc) #define __libcpp_btowc_l(ch, loc) btowc_l(ch, loc) #define __libcpp_wctob_l(wch, loc) wctob_l(wch, loc) Modified: projects/runtime-coverage/contrib/libc++/include/__bsd_locale_fallbacks.h ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/__bsd_locale_fallbacks.h Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libc++/include/__bsd_locale_fallbacks.h Sun Aug 13 01:23:13 2017 (r322452) @@ -18,6 +18,10 @@ #include #include +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + _LIBCPP_BEGIN_NAMESPACE_STD inline _LIBCPP_ALWAYS_INLINE Modified: projects/runtime-coverage/contrib/libc++/include/__locale ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/__locale Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libc++/include/__locale Sun Aug 13 01:23:13 2017 (r322452) @@ -34,7 +34,7 @@ # include #elif defined(_NEWLIB_VERSION) # include -#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \ +#elif (defined(__APPLE__) || defined(__FreeBSD__) \ || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) # include #elif defined(__Fuchsia__) Modified: projects/runtime-coverage/contrib/libc++/include/mutex ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/mutex Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libc++/include/mutex Sun Aug 13 01:23:13 2017 (r322452) @@ -116,7 +116,7 @@ class scoped_lock // C++17 (public) using mutex_type = Mutex; // If MutexTypes... consists of the single type Mutex explicit scoped_lock(MutexTypes&... m); - scoped_lock(MutexTypes&... m, adopt_lock_t); + scoped_lock(adopt_lock_t, MutexTypes&... m); ~scoped_lock(); scoped_lock(scoped_lock const&) = delete; scoped_lock& operator=(scoped_lock const&) = delete; @@ -500,7 +500,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock<_Mutex> { (publ ~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();} _LIBCPP_INLINE_VISIBILITY - explicit scoped_lock(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m)) + explicit scoped_lock(adopt_lock_t, mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m)) : __m_(__m) {} scoped_lock(scoped_lock const&) = delete; @@ -522,7 +522,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock (public) } _LIBCPP_INLINE_VISIBILITY - scoped_lock(_MArgs&... __margs, adopt_lock_t) + scoped_lock(adopt_lock_t, _MArgs&... __margs) : __t_(__margs...) { } Modified: projects/runtime-coverage/contrib/libc++/include/sstream ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/sstream Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libc++/include/sstream Sun Aug 13 01:23:13 2017 (r322452) @@ -249,7 +249,8 @@ basic_stringbuf<_CharT, _Traits, _Allocator>::basic_st template basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(const string_type& __s, ios_base::openmode __wch) - : __hm_(0), + : __str_(__s.get_allocator()), + __hm_(0), __mode_(__wch) { str(__s); Modified: projects/runtime-coverage/contrib/libxo/Makefile.am ============================================================================== --- projects/runtime-coverage/contrib/libxo/Makefile.am Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/Makefile.am Sun Aug 13 01:23:13 2017 (r322452) @@ -38,7 +38,14 @@ GH_PAGES_DIR = gh-pages/ GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION} PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz -upload: dist upload-docs +XOHTML_FILES = \ + ${top_srcdir}/xohtml/xohtml.css \ + ${top_srcdir}/xohtml/xohtml.js \ + ${top_srcdir}/xohtml/external/jquery.js \ + ${top_srcdir}/xohtml/external/jquery.qtip.css \ + ${top_srcdir}/xohtml/external/jquery.qtip.js + +upload: dist upload-docs upload-xohtml-files @echo "Remember to run:" @echo " gt tag ${PACKAGE_VERSION}" @@ -54,6 +61,18 @@ upload-docs: docs && git add libxo-manual.html \ && git commit -m 'new docs' \ libxo-manual.html ${PACKAGE_VERSION} \ + && git push origin gh-pages ) ; true + +upload-xohtml-files: + @echo "Uploading xohtml files ... " + @-[ -d ${GH_PAGES_DIR} ] \ + && echo "Updating xohtml files on gh-pages ..." \ + && mkdir -p ${GH_PAGES_DIR_VER}/xohtml \ + && cp ${XOHTML_FILES} ${GH_PAGES_DIR_VER}/xohtml \ + && (cd ${GH_PAGES_DIR} \ + && git add ${PACKAGE_VERSION}/xohtml \ + && git commit -m 'new xohtml files' \ + ${PACKAGE_VERSION}/xohtml \ && git push origin gh-pages ) ; true pkgconfigdir=$(libdir)/pkgconfig Modified: projects/runtime-coverage/contrib/libxo/configure.ac ============================================================================== --- projects/runtime-coverage/contrib/libxo/configure.ac Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/configure.ac Sun Aug 13 01:23:13 2017 (r322452) @@ -12,7 +12,7 @@ # AC_PREREQ(2.2) -AC_INIT([libxo], [0.8.1], [phil@juniper.net]) +AC_INIT([libxo], [0.8.4], [phil@juniper.net]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) # Support silent build rules. Requires at least automake-1.11. Modified: projects/runtime-coverage/contrib/libxo/doc/libxo-manual.html ============================================================================== --- projects/runtime-coverage/contrib/libxo/doc/libxo-manual.html Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/doc/libxo-manual.html Sun Aug 13 01:23:13 2017 (r322452) @@ -515,7 +515,7 @@ li.indline1 { } @top-right { - content: "June 2017"; + content: "August 2017"; } @top-center { @@ -22011,7 +22011,7 @@ jQuery(function ($) { -June 14, 2017 +August 3, 2017

libxo: The Easy Way to Generate text, XML, JSON, and HTML output
libxo-manual

Modified: projects/runtime-coverage/contrib/libxo/libxo/libxo.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/libxo.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/libxo.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -311,3 +311,13 @@ to use an alternative set of low-level output function .Xr xo_set_style 3 , .Xr xo_set_writer 3 , .Xr xo_format 5 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/libxo.c ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/libxo.c Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/libxo.c Sun Aug 13 01:23:13 2017 (r322452) @@ -137,7 +137,7 @@ static const char xo_default_format[] = "%s"; #define XO_INDENT_BY 2 /* Amount to indent when pretty printing */ #define XO_DEPTH 128 /* Default stack depth */ -#define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just sillyb */ +#define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just silly */ #define XO_FAILURE_NAME "failure" @@ -5071,16 +5071,60 @@ xo_find_width (xo_handle_t *xop, xo_field_info_t *xfip bp[vlen] = '\0'; width = strtol(bp, &cp, 0); - if (width == LONG_MIN || width == LONG_MAX - || bp == cp || *cp != '\0' ) { + if (width == LONG_MIN || width == LONG_MAX || bp == cp || *cp != '\0') { width = 0; xo_failure(xop, "invalid width for anchor: '%s'", bp); } } else if (flen) { - if (flen != 2 || strncmp("%d", fmt, flen) != 0) - xo_failure(xop, "invalid width format: '%*.*s'", flen, flen, fmt); - if (!XOF_ISSET(xop, XOF_NO_VA_ARG)) - width = va_arg(xop->xo_vap, int); + /* + * We really expect the format for width to be "{:/%d}" or + * "{:/%u}", so if that's the case, we just grab our width off + * the argument list. But we need to avoid optimized logic if + * there's a custom formatter. + */ + if (xop->xo_formatter == NULL && flen == 2 + && strncmp("%d", fmt, flen) == 0) { + if (!XOF_ISSET(xop, XOF_NO_VA_ARG)) + width = va_arg(xop->xo_vap, int); + } else if (xop->xo_formatter == NULL && flen == 2 + && strncmp("%u", fmt, flen) == 0) { + if (!XOF_ISSET(xop, XOF_NO_VA_ARG)) + width = va_arg(xop->xo_vap, unsigned); + } else { + /* + * So we have a format and it's not a simple one like + * "{:/%d}". That means we need to format the field, + * extract the value from the formatted output, and then + * discard that output. + */ + int anchor_was_set = FALSE; + xo_buffer_t *xbp = &xop->xo_data; + ssize_t start_offset = xo_buf_offset(xbp); + bp = xo_buf_cur(xbp); /* Save start of the string */ + cp = NULL; + + if (XOIF_ISSET(xop, XOIF_ANCHOR)) { + XOIF_CLEAR(xop, XOIF_ANCHOR); + anchor_was_set = TRUE; + } + + ssize_t rc = xo_do_format_field(xop, xbp, fmt, flen, 0); + if (rc >= 0) { + xo_buf_append(xbp, "", 1); /* Append a NUL */ + + width = strtol(bp, &cp, 0); + if (width == LONG_MIN || width == LONG_MAX + || bp == cp || *cp != '\0') { + width = 0; + xo_failure(xop, "invalid width for anchor: '%s'", bp); + } + } + + /* Reset the cur pointer to where we found it */ + xbp->xb_curp = xbp->xb_bufp + start_offset; + if (anchor_was_set) + XOIF_SET(xop, XOIF_ANCHOR); + } } return width; @@ -5107,9 +5151,6 @@ static void xo_anchor_start (xo_handle_t *xop, xo_field_info_t *xfip, const char *value, ssize_t vlen) { - if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML) - return; - if (XOIF_ISSET(xop, XOIF_ANCHOR)) xo_failure(xop, "the anchor already recording is discarded"); @@ -5129,9 +5170,6 @@ static void xo_anchor_stop (xo_handle_t *xop, xo_field_info_t *xfip, const char *value, ssize_t vlen) { - if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML) - return; - if (!XOIF_ISSET(xop, XOIF_ANCHOR)) { xo_failure(xop, "no start anchor"); return; Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_attr.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_attr.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_attr.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -58,3 +58,13 @@ already emitted in other form. .Sh SEE ALSO .Xr xo_emit 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_create.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_create.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_create.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -65,3 +65,13 @@ resources associated with the default handle. .Xr xo_emit 3 , .Xr xo_set_options 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_emit.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_emit.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_emit.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -102,3 +102,13 @@ then the number of display columns consumed by the out .Xr xo_open_list 3 , .Xr xo_format 5 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_emit_err.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_emit_err.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_emit_err.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -70,3 +70,13 @@ parameter. .Xr xo_format 5 , .Xr xo_err 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_emit_f.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_emit_f.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_emit_f.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -109,3 +109,13 @@ for details. .Xr xo_open_list 3 , .Xr xo_format 5 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_err.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_err.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_err.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -72,3 +72,13 @@ parameter. .Xr xo_emit 3 , .Xr xo_emit_err 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_error.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_error.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_error.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -39,3 +39,13 @@ calls. .Xr printf 3 , .Xr xo_emit 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_finish.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_finish.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_finish.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -37,3 +37,13 @@ especially for the non-TEXT output styles. .Sh SEE ALSO .Xr xo_emit 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_flush.3 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_flush.3 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_flush.3 Sun Aug 13 01:23:13 2017 (r322452) @@ -33,3 +33,13 @@ function is used for this. .Sh SEE ALSO .Xr xo_emit 3 , .Xr libxo 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in +.Fx 11.0 . +.Sh AUTHORS +.Nm libxo +was written by +.An Phil Shafer Aq Mt phil@freebsd.org . + Modified: projects/runtime-coverage/contrib/libxo/libxo/xo_format.5 ============================================================================== --- projects/runtime-coverage/contrib/libxo/libxo/xo_format.5 Sun Aug 13 01:08:37 2017 (r322451) +++ projects/runtime-coverage/contrib/libxo/libxo/xo_format.5 Sun Aug 13 01:23:13 2017 (r322452) @@ -965,3 +965,13 @@ names to make that difference more obvious. .Xr libxo 3 , .Xr xolint 1 , .Xr xo_emit 3 +.Sh HISTORY +The +.Nm libxo +library first appeared in *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sun Aug 13 18:34:46 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5FD36DD14C2 for ; Sun, 13 Aug 2017 18:34:46 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 01D9B7DFAE; Sun, 13 Aug 2017 18:34:45 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7DIYjhs006781; Sun, 13 Aug 2017 18:34:45 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7DIYiZI006778; Sun, 13 Aug 2017 18:34:44 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708131834.v7DIYiZI006778@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sun, 13 Aug 2017 18:34:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322468 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322468 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Aug 2017 18:34:46 -0000 Author: rmacklem Date: Sun Aug 13 18:34:44 2017 New Revision: 322468 URL: https://svnweb.freebsd.org/changeset/base/322468 Log: Modify nfsrv_pnfscreate(), factoring out the part that does the Open RPC against the DS server to create the DS data file, so that it can be done by a separate kernel process. Put all the arguments to this factored out function (nfsrv_dscreate()) in a structure, so that it can be passed through kproc_create(). This allows creation of the data file on mirrors to be done concurrently. In future, it might be better to avoid the kproc_create() call for every file create and have a set of these kernel processes waiting to do the RPCs. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Sun Aug 13 18:14:24 2017 (r322467) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Sun Aug 13 18:34:44 2017 (r322468) @@ -65,6 +65,7 @@ char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; struct callout newnfsd_callout; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; +struct mtx nfsrv_dsclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -696,6 +697,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_nfsuserdsock.nr_mtx, "nfsuserd", NULL, MTX_DEF); mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); + mtx_init(&nfsrv_dsclock_mtx, "nfs4ds", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -724,6 +726,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfs_req_mutex); mtx_destroy(&nfsrv_nfsuserdsock.nr_mtx); mtx_destroy(&nfsrv_dslock_mtx); + mtx_destroy(&nfsrv_dsclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Sun Aug 13 18:14:24 2017 (r322467) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Sun Aug 13 18:34:44 2017 (r322468) @@ -713,6 +713,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSUNLOCKLAYOUT(l) mtx_unlock(&((l)->mtx)) #define NFSDDSLOCK() mtx_lock(&nfsrv_dslock_mtx) #define NFSDDSUNLOCK() mtx_unlock(&nfsrv_dslock_mtx) +#define NFSDSCLOCKMUTEXPTR (&nfsrv_dsclock_mtx) +#define NFSDSCLOCK() mtx_lock(&nfsrv_dsclock_mtx) +#define NFSDSCUNLOCK() mtx_unlock(&nfsrv_dsclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Sun Aug 13 18:14:24 2017 (r322467) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Sun Aug 13 18:34:44 2017 (r322468) @@ -67,6 +67,7 @@ extern struct nfsstatsv1 nfsstatsv1; extern struct nfslayouthash *nfslayouthash; extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; +extern struct mtx nfsrv_dsclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -3582,142 +3583,242 @@ nfsrv_backupstable(void) } /* + * Create a DS data file for nfsrv_pnfscreate(). Called for each mirror. + * The arguments are in a structure, so that they can be passed through + * kproc_create() for a kernel process to execute this function. + */ +struct nfsrvdscreate { + struct ucred *tcred; + struct vnode *dvp; + NFSPROC_T *p; + struct pnfsdsfile *pf; + int haskproc; + int err; + fhandle_t fh; + struct vattr va; + struct vattr createva; + struct pnfsdsattr dsattr; +}; + +static int +nfsrv_dscreate(struct nfsrvdscreate *dsc) +{ + struct vnode *nvp; + struct nameidata named; + struct vattr va; + char *bufp; + u_long *hashp; + struct nfsnode *np; + struct nfsmount *nmp; + int error; + + NFSNAMEICNDSET(&named.ni_cnd, dsc->tcred, CREATE, + LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); + nfsvno_setpathbuf(&named, &bufp, &hashp); + named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; + named.ni_cnd.cn_thread = dsc->p; + named.ni_cnd.cn_nameptr = bufp; + named.ni_cnd.cn_namelen = nfsrv_putfhname(&dsc->fh, bufp); + + /* Create the date file in the DS mount. */ + error = NFSVOPLOCK(dsc->dvp, LK_EXCLUSIVE); + if (error == 0) { + error = VOP_CREATE(dsc->dvp, &nvp, &named.ni_cnd, + &dsc->createva); + NFSVOPUNLOCK(dsc->dvp, 0); + if (error == 0) { + /* Set the ownership of the file. */ + error = VOP_SETATTR(nvp, &dsc->va, dsc->tcred); + NFSD_DEBUG(4, "nfsrv_dscreate:" + " setattr-uid=%d\n", error); + if (error != 0) + vput(nvp); + } + if (error != 0) + printf("pNFS: pnfscreate failed=%d\n", error); + } else + printf("pNFS: pnfscreate vnlock=%d\n", error); + if (error == 0) { + np = VTONFS(nvp); + nmp = VFSTONFS(nvp->v_mount); + if (strcmp(nvp->v_mount->mnt_vfc->vfc_name, "nfs") + != 0 || nmp->nm_nam->sa_len > sizeof( + struct sockaddr_in6) || + np->n_fhp->nfh_len != NFSX_MYFH) { + printf("Bad DS file: fstype=%s salen=%d" + " fhlen=%d\n", + nvp->v_mount->mnt_vfc->vfc_name, + nmp->nm_nam->sa_len, np->n_fhp->nfh_len); + error = ENOENT; + } + + /* Get the attributes of the DS file. */ + if (error == 0) + error = VOP_GETATTR(nvp, &va, dsc->tcred); + /* Set extattrs for the DS on the MDS file. */ + if (error == 0) { + if (dsc->dsattr.dsa_filerev != UINT64_MAX) { + dsc->dsattr.dsa_filerev = va.va_filerev; + dsc->dsattr.dsa_size = va.va_size; + dsc->dsattr.dsa_atime = va.va_atime; + dsc->dsattr.dsa_mtime = va.va_mtime; + } + NFSBCOPY(np->n_fhp->nfh_fh, &dsc->pf->dsf_fh, + NFSX_MYFH); + NFSBCOPY(nmp->nm_nam, &dsc->pf->dsf_sin, + nmp->nm_nam->sa_len); + NFSBCOPY(named.ni_cnd.cn_nameptr, + dsc->pf->dsf_filename, + sizeof(dsc->pf->dsf_filename)); + } else + printf("pNFS: pnfscreate can't get DS" + " attr=%d\n", error); + vput(nvp); + } + nfsvno_relpathbuf(&named); + return (error); +} + +/* + * Start up the thread that will execute nfsrv_dscreate(). + */ +static void +start_dscreate(void *arg) +{ + struct nfsrvdscreate *dsc; + + dsc = (struct nfsrvdscreate *)arg; + dsc->err = nfsrv_dscreate(dsc); + NFSDSCLOCK(); + dsc->haskproc = 0; + wakeup(dsc); + NFSDSCUNLOCK(); + kproc_exit(0); +} + +/* * Create a pNFS data file on the Data Server(s). */ static void nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, struct ucred *cred, NFSPROC_T *p) { - struct vnode *dvp[NFSDEV_MAXMIRRORS], *nvp; + struct nfsrvdscreate *dsc, *tdsc; struct nfsdevice *ds, *mds; - fhandle_t fh; - struct nameidata named; - char *bufp; - u_long *hashp; struct mount *mp; - struct nfsnode *np; - struct nfsmount *nmp; struct pnfsdsfile *pf, *tpf; struct pnfsdsattr dsattr; - struct vattr va; uid_t vauid; gid_t vagid; u_short vamode; struct ucred *tcred; - int error, i, mirrorcnt; - uint32_t dsdir[NFSDEV_MAXMIRRORS]; + int error, haskproc, i, mirrorcnt, ret; /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; + tdsc = dsc = malloc(sizeof(*dsc) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | + M_ZERO); + tpf = pf = malloc(sizeof(*pf) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | + M_ZERO); NFSDDSLOCK(); ds = TAILQ_FIRST(&nfsrv_devidhead); if (ds == NULL) { NFSDDSUNLOCK(); + free(dsc, M_TEMP); + free(pf, M_TEMP); NFSD_DEBUG(4, "nfsrv_pnfscreate: no srv\n"); return; } /* Put at end of list to implement round-robin usage. */ TAILQ_REMOVE(&nfsrv_devidhead, ds, nfsdev_list); TAILQ_INSERT_TAIL(&nfsrv_devidhead, ds, nfsdev_list); - i = dsdir[0] = ds->nfsdev_nextdir; + i = pf->dsf_dir = ds->nfsdev_nextdir; ds->nfsdev_nextdir = (ds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dvp[0] = ds->nfsdev_dsdir[i]; + dsc->dvp = ds->nfsdev_dsdir[i]; TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { - i = dsdir[mirrorcnt] = mds->nfsdev_nextdir; + tpf++; + tdsc++; + i = tpf->dsf_dir = mds->nfsdev_nextdir; mds->nfsdev_nextdir = (mds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dvp[mirrorcnt] = mds->nfsdev_dsdir[i]; + tdsc->dvp = mds->nfsdev_dsdir[i]; mirrorcnt++; } NFSDDSUNLOCK(); + tpf = pf; + tdsc = dsc; - error = nfsvno_getfh(vp, &fh, p); + error = nfsvno_getfh(vp, &dsc->fh, p); if (error == 0) - error = VOP_GETATTR(vp, &va, cred); - if (error != 0) { + error = VOP_GETATTR(vp, &dsc->va, cred); + if (error == 0) { + /* Set the three attributes for "vp" to Setattr the DS vp. */ + vauid = dsc->va.va_uid; + vagid = dsc->va.va_gid; + vamode = dsc->va.va_mode; + VATTR_NULL(&dsc->va); + dsc->va.va_uid = vauid; + dsc->va.va_gid = vagid; + dsc->va.va_mode = vamode; + } else printf("pNFS: pnfscreate getfh+attr=%d\n", error); - return; - } - NFSD_DEBUG(4, "nfsrv_pnfscreate: cruid=%d crgid=%d uid=%d gid=%d\n", - cred->cr_uid, cred->cr_gid, va.va_uid, va.va_gid); + NFSD_DEBUG(4, "nfsrv_pnfscreate: cruid=%d crgid=%d\n", cred->cr_uid, + cred->cr_gid); /* Make data file name based on FH. */ tcred = newnfs_getcred(); - tpf = pf = malloc(sizeof(*pf) * mirrorcnt, M_TEMP, M_WAITOK | M_ZERO); - /* Create the file on each DS mirror. */ - for (i = 0; i < mirrorcnt && error == 0; i++) { - NFSNAMEICNDSET(&named.ni_cnd, tcred, CREATE, - LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); - nfsvno_setpathbuf(&named, &bufp, &hashp); - named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; - named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = nfsrv_putfhname(&fh, bufp); - - /* Create the date file in the DS mount. */ - error = NFSVOPLOCK(dvp[i], LK_EXCLUSIVE); - if (error == 0) { - error = VOP_CREATE(dvp[i], &nvp, &named.ni_cnd, vap); - NFSVOPUNLOCK(dvp[i], 0); - if (error == 0) { - /* Set the ownership of the file. */ - vauid = va.va_uid; - vagid = va.va_gid; - vamode = va.va_mode; - VATTR_NULL(&va); - va.va_uid = vauid; - va.va_gid = vagid; - va.va_mode = vamode; - error = VOP_SETATTR(nvp, &va, tcred); - NFSD_DEBUG(4, "nfsrv_pnfscreate:" - " setattr-uid=%d\n", error); - if (error != 0) - vput(nvp); - } - if (error != 0) - printf("pNFS: pnfscreate failed=%d\n", error); - } else - printf("pNFS: pnfscreate vnlock=%d\n", error); - if (error == 0) { - np = VTONFS(nvp); - nmp = VFSTONFS(nvp->v_mount); - if (strcmp(nvp->v_mount->mnt_vfc->vfc_name, "nfs") - != 0 || nmp->nm_nam->sa_len > sizeof( - struct sockaddr_in6) || - np->n_fhp->nfh_len != NFSX_MYFH) { - printf("Bad DS file: fstype=%s salen=%d" - " fhlen=%d\n", - nvp->v_mount->mnt_vfc->vfc_name, - nmp->nm_nam->sa_len, np->n_fhp->nfh_len); - error = ENOENT; - } - - /* Get the attributes of the DS file. */ - if (error == 0) - error = VOP_GETATTR(nvp, &va, cred); - /* Set extattrs for the DS on the MDS file. */ - if (error == 0) { - dsattr.dsa_filerev = va.va_filerev; - dsattr.dsa_size = va.va_size; - dsattr.dsa_atime = va.va_atime; - dsattr.dsa_mtime = va.va_mtime; - tpf->dsf_dir = dsdir[i]; - NFSBCOPY(np->n_fhp->nfh_fh, &tpf->dsf_fh, - NFSX_MYFH); - NFSBCOPY(nmp->nm_nam, &tpf->dsf_sin, - nmp->nm_nam->sa_len); - NFSBCOPY(named.ni_cnd.cn_nameptr, - tpf->dsf_filename, - sizeof(tpf->dsf_filename)); - tpf++; - } else - printf("pNFS: pnfscreate can't get DS" - " attr=%d\n", error); - vput(nvp); + /* + * Create the file on each DS mirror, using kernel process(es) for the + * additional mirrors. + */ + haskproc = 0; + for (i = 0; i < mirrorcnt && error == 0; i++, tpf++, tdsc++) { + tdsc->tcred = tcred; + tdsc->p = p; + tdsc->pf = tpf; + tdsc->createva = *vap; + if (i > 0) { + tdsc->fh = dsc->fh; + tdsc->va = dsc->va; } - nfsvno_relpathbuf(&named); + if (i != mirrorcnt - 1) + tdsc->dsattr.dsa_filerev = UINT64_MAX; + + /* + * Do the last create outselves instead of forking a process. + * (This avoids creating kernel processes unless mirrors are + * in use.) + * tdsc->haskproc marks a create with a kernel process. + * haskproc is set non-zero to indicate at least one kernel + * process has been created. + */ + ret = ENXIO; + if (i < mirrorcnt - 1) { + tdsc->haskproc = 1; + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, + 0, 0, "nfsdpnfs"); + } + if (ret == 0) + haskproc = 1; + else { + tdsc->haskproc = 0; + error = nfsrv_dscreate(dsc); + } } + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSCLOCK(); + for (tdsc = dsc, i = 0; i < mirrorcnt; i++, tdsc++) { + while (tdsc->haskproc != 0) + mtx_sleep(tdsc, NFSDSCLOCKMUTEXPTR, PVFS, + "nfspcr", 0); + if (error == 0 && tdsc->err != 0) + error = tdsc->err; + } + NFSDSCUNLOCK(); + } + NFSFREECRED(tcred); if (error == 0) { error = vn_start_write(vp, &mp, V_WAIT); @@ -3728,7 +3829,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (error == 0) error = vn_extattr_set(vp, IO_NODELOCKED, EXTATTR_NAMESPACE_SYSTEM, "pnfsd.dsattr", - sizeof(dsattr), (char *)&dsattr, p); + sizeof(dsattr), (char *)&dsc->dsattr, p); vn_finished_write(mp); if (error != 0) printf("pNFS: pnfscreate setextattr=%d\n", @@ -3738,6 +3839,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, } else printf("pNFS: pnfscreate=%d\n", error); free(pf, M_TEMP); + free(dsc, M_TEMP); } /* From owner-svn-src-projects@freebsd.org Sun Aug 13 18:41:39 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 740E8DD1B77 for ; Sun, 13 Aug 2017 18:41:39 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 152AE7E380; Sun, 13 Aug 2017 18:41:39 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7DIfcrh008677; Sun, 13 Aug 2017 18:41:38 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7DIfbUE008674; Sun, 13 Aug 2017 18:41:37 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708131841.v7DIfbUE008674@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sun, 13 Aug 2017 18:41:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322469 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322469 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Aug 2017 18:41:39 -0000 Author: rmacklem Date: Sun Aug 13 18:41:37 2017 New Revision: 322469 URL: https://svnweb.freebsd.org/changeset/base/322469 Log: Modify nfsrv_pnfscreate(), factoring out the part that does the Open RPC against the DS server to create the DS data file, so that it can be done by a separate kernel process. Put all the arguments to this factored out function (nfsrv_dscreate()) in a structure, so that it can be passed through kproc_create(). This allows creation of the data file on mirrors to be done concurrently. In future, it might be better to avoid the kproc_create() call for every file create and have a set of these kernel processes waiting to do the RPCs. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server/sys/fs/nfs/nfsport.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sun Aug 13 18:34:44 2017 (r322468) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sun Aug 13 18:41:37 2017 (r322469) @@ -66,6 +66,7 @@ char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; struct callout newnfsd_callout; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; +struct mtx nfsrv_dsclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -716,6 +717,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_nfsuserdsock.nr_mtx, "nfsuserd", NULL, MTX_DEF); mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); + mtx_init(&nfsrv_dsclock_mtx, "nfs4ds", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -744,6 +746,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfs_req_mutex); mtx_destroy(&nfsrv_nfsuserdsock.nr_mtx); mtx_destroy(&nfsrv_dslock_mtx); + mtx_destroy(&nfsrv_dsclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Sun Aug 13 18:34:44 2017 (r322468) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Sun Aug 13 18:41:37 2017 (r322469) @@ -713,6 +713,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSUNLOCKLAYOUT(l) mtx_unlock(&((l)->mtx)) #define NFSDDSLOCK() mtx_lock(&nfsrv_dslock_mtx) #define NFSDDSUNLOCK() mtx_unlock(&nfsrv_dslock_mtx) +#define NFSDSCLOCKMUTEXPTR (&nfsrv_dsclock_mtx) +#define NFSDSCLOCK() mtx_lock(&nfsrv_dsclock_mtx) +#define NFSDSCUNLOCK() mtx_unlock(&nfsrv_dsclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sun Aug 13 18:34:44 2017 (r322468) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sun Aug 13 18:41:37 2017 (r322469) @@ -67,6 +67,7 @@ extern struct nfsstatsv1 nfsstatsv1; extern struct nfslayouthash *nfslayouthash; extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; +extern struct mtx nfsrv_dsclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -3599,142 +3600,242 @@ nfsrv_backupstable(void) } /* + * Create a DS data file for nfsrv_pnfscreate(). Called for each mirror. + * The arguments are in a structure, so that they can be passed through + * kproc_create() for a kernel process to execute this function. + */ +struct nfsrvdscreate { + struct ucred *tcred; + struct vnode *dvp; + NFSPROC_T *p; + struct pnfsdsfile *pf; + int haskproc; + int err; + fhandle_t fh; + struct vattr va; + struct vattr createva; + struct pnfsdsattr dsattr; +}; + +static int +nfsrv_dscreate(struct nfsrvdscreate *dsc) +{ + struct vnode *nvp; + struct nameidata named; + struct vattr va; + char *bufp; + u_long *hashp; + struct nfsnode *np; + struct nfsmount *nmp; + int error; + + NFSNAMEICNDSET(&named.ni_cnd, dsc->tcred, CREATE, + LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); + nfsvno_setpathbuf(&named, &bufp, &hashp); + named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; + named.ni_cnd.cn_thread = dsc->p; + named.ni_cnd.cn_nameptr = bufp; + named.ni_cnd.cn_namelen = nfsrv_putfhname(&dsc->fh, bufp); + + /* Create the date file in the DS mount. */ + error = NFSVOPLOCK(dsc->dvp, LK_EXCLUSIVE); + if (error == 0) { + error = VOP_CREATE(dsc->dvp, &nvp, &named.ni_cnd, + &dsc->createva); + NFSVOPUNLOCK(dsc->dvp, 0); + if (error == 0) { + /* Set the ownership of the file. */ + error = VOP_SETATTR(nvp, &dsc->va, dsc->tcred); + NFSD_DEBUG(4, "nfsrv_dscreate:" + " setattr-uid=%d\n", error); + if (error != 0) + vput(nvp); + } + if (error != 0) + printf("pNFS: pnfscreate failed=%d\n", error); + } else + printf("pNFS: pnfscreate vnlock=%d\n", error); + if (error == 0) { + np = VTONFS(nvp); + nmp = VFSTONFS(nvp->v_mount); + if (strcmp(nvp->v_mount->mnt_vfc->vfc_name, "nfs") + != 0 || nmp->nm_nam->sa_len > sizeof( + struct sockaddr_in6) || + np->n_fhp->nfh_len != NFSX_MYFH) { + printf("Bad DS file: fstype=%s salen=%d" + " fhlen=%d\n", + nvp->v_mount->mnt_vfc->vfc_name, + nmp->nm_nam->sa_len, np->n_fhp->nfh_len); + error = ENOENT; + } + + /* Get the attributes of the DS file. */ + if (error == 0) + error = VOP_GETATTR(nvp, &va, dsc->tcred); + /* Set extattrs for the DS on the MDS file. */ + if (error == 0) { + if (dsc->dsattr.dsa_filerev != UINT64_MAX) { + dsc->dsattr.dsa_filerev = va.va_filerev; + dsc->dsattr.dsa_size = va.va_size; + dsc->dsattr.dsa_atime = va.va_atime; + dsc->dsattr.dsa_mtime = va.va_mtime; + } + NFSBCOPY(np->n_fhp->nfh_fh, &dsc->pf->dsf_fh, + NFSX_MYFH); + NFSBCOPY(nmp->nm_nam, &dsc->pf->dsf_sin, + nmp->nm_nam->sa_len); + NFSBCOPY(named.ni_cnd.cn_nameptr, + dsc->pf->dsf_filename, + sizeof(dsc->pf->dsf_filename)); + } else + printf("pNFS: pnfscreate can't get DS" + " attr=%d\n", error); + vput(nvp); + } + nfsvno_relpathbuf(&named); + return (error); +} + +/* + * Start up the thread that will execute nfsrv_dscreate(). + */ +static void +start_dscreate(void *arg) +{ + struct nfsrvdscreate *dsc; + + dsc = (struct nfsrvdscreate *)arg; + dsc->err = nfsrv_dscreate(dsc); + NFSDSCLOCK(); + dsc->haskproc = 0; + wakeup(dsc); + NFSDSCUNLOCK(); + kproc_exit(0); +} + +/* * Create a pNFS data file on the Data Server(s). */ static void nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, struct ucred *cred, NFSPROC_T *p) { - struct vnode *dvp[NFSDEV_MAXMIRRORS], *nvp; + struct nfsrvdscreate *dsc, *tdsc; struct nfsdevice *ds, *mds; - fhandle_t fh; - struct nameidata named; - char *bufp; - u_long *hashp; struct mount *mp; - struct nfsnode *np; - struct nfsmount *nmp; struct pnfsdsfile *pf, *tpf; struct pnfsdsattr dsattr; - struct vattr va; uid_t vauid; gid_t vagid; u_short vamode; struct ucred *tcred; - int error, i, mirrorcnt; - uint32_t dsdir[NFSDEV_MAXMIRRORS]; + int error, haskproc, i, mirrorcnt, ret; /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; + tdsc = dsc = malloc(sizeof(*dsc) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | + M_ZERO); + tpf = pf = malloc(sizeof(*pf) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | + M_ZERO); NFSDDSLOCK(); ds = TAILQ_FIRST(&nfsrv_devidhead); if (ds == NULL) { NFSDDSUNLOCK(); + free(dsc, M_TEMP); + free(pf, M_TEMP); NFSD_DEBUG(4, "nfsrv_pnfscreate: no srv\n"); return; } /* Put at end of list to implement round-robin usage. */ TAILQ_REMOVE(&nfsrv_devidhead, ds, nfsdev_list); TAILQ_INSERT_TAIL(&nfsrv_devidhead, ds, nfsdev_list); - i = dsdir[0] = ds->nfsdev_nextdir; + i = pf->dsf_dir = ds->nfsdev_nextdir; ds->nfsdev_nextdir = (ds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dvp[0] = ds->nfsdev_dsdir[i]; + dsc->dvp = ds->nfsdev_dsdir[i]; TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { - i = dsdir[mirrorcnt] = mds->nfsdev_nextdir; + tpf++; + tdsc++; + i = tpf->dsf_dir = mds->nfsdev_nextdir; mds->nfsdev_nextdir = (mds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dvp[mirrorcnt] = mds->nfsdev_dsdir[i]; + tdsc->dvp = mds->nfsdev_dsdir[i]; mirrorcnt++; } NFSDDSUNLOCK(); + tpf = pf; + tdsc = dsc; - error = nfsvno_getfh(vp, &fh, p); + error = nfsvno_getfh(vp, &dsc->fh, p); if (error == 0) - error = VOP_GETATTR(vp, &va, cred); - if (error != 0) { + error = VOP_GETATTR(vp, &dsc->va, cred); + if (error == 0) { + /* Set the three attributes for "vp" to Setattr the DS vp. */ + vauid = dsc->va.va_uid; + vagid = dsc->va.va_gid; + vamode = dsc->va.va_mode; + VATTR_NULL(&dsc->va); + dsc->va.va_uid = vauid; + dsc->va.va_gid = vagid; + dsc->va.va_mode = vamode; + } else printf("pNFS: pnfscreate getfh+attr=%d\n", error); - return; - } - NFSD_DEBUG(4, "nfsrv_pnfscreate: cruid=%d crgid=%d uid=%d gid=%d\n", - cred->cr_uid, cred->cr_gid, va.va_uid, va.va_gid); + NFSD_DEBUG(4, "nfsrv_pnfscreate: cruid=%d crgid=%d\n", cred->cr_uid, + cred->cr_gid); /* Make data file name based on FH. */ tcred = newnfs_getcred(); - tpf = pf = malloc(sizeof(*pf) * mirrorcnt, M_TEMP, M_WAITOK | M_ZERO); - /* Create the file on each DS mirror. */ - for (i = 0; i < mirrorcnt && error == 0; i++) { - NFSNAMEICNDSET(&named.ni_cnd, tcred, CREATE, - LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); - nfsvno_setpathbuf(&named, &bufp, &hashp); - named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; - named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = nfsrv_putfhname(&fh, bufp); - - /* Create the date file in the DS mount. */ - error = NFSVOPLOCK(dvp[i], LK_EXCLUSIVE); - if (error == 0) { - error = VOP_CREATE(dvp[i], &nvp, &named.ni_cnd, vap); - NFSVOPUNLOCK(dvp[i], 0); - if (error == 0) { - /* Set the ownership of the file. */ - vauid = va.va_uid; - vagid = va.va_gid; - vamode = va.va_mode; - VATTR_NULL(&va); - va.va_uid = vauid; - va.va_gid = vagid; - va.va_mode = vamode; - error = VOP_SETATTR(nvp, &va, tcred); - NFSD_DEBUG(4, "nfsrv_pnfscreate:" - " setattr-uid=%d\n", error); - if (error != 0) - vput(nvp); - } - if (error != 0) - printf("pNFS: pnfscreate failed=%d\n", error); - } else - printf("pNFS: pnfscreate vnlock=%d\n", error); - if (error == 0) { - np = VTONFS(nvp); - nmp = VFSTONFS(nvp->v_mount); - if (strcmp(nvp->v_mount->mnt_vfc->vfc_name, "nfs") - != 0 || nmp->nm_nam->sa_len > sizeof( - struct sockaddr_in6) || - np->n_fhp->nfh_len != NFSX_MYFH) { - printf("Bad DS file: fstype=%s salen=%d" - " fhlen=%d\n", - nvp->v_mount->mnt_vfc->vfc_name, - nmp->nm_nam->sa_len, np->n_fhp->nfh_len); - error = ENOENT; - } - - /* Get the attributes of the DS file. */ - if (error == 0) - error = VOP_GETATTR(nvp, &va, cred); - /* Set extattrs for the DS on the MDS file. */ - if (error == 0) { - dsattr.dsa_filerev = va.va_filerev; - dsattr.dsa_size = va.va_size; - dsattr.dsa_atime = va.va_atime; - dsattr.dsa_mtime = va.va_mtime; - tpf->dsf_dir = dsdir[i]; - NFSBCOPY(np->n_fhp->nfh_fh, &tpf->dsf_fh, - NFSX_MYFH); - NFSBCOPY(nmp->nm_nam, &tpf->dsf_sin, - nmp->nm_nam->sa_len); - NFSBCOPY(named.ni_cnd.cn_nameptr, - tpf->dsf_filename, - sizeof(tpf->dsf_filename)); - tpf++; - } else - printf("pNFS: pnfscreate can't get DS" - " attr=%d\n", error); - vput(nvp); + /* + * Create the file on each DS mirror, using kernel process(es) for the + * additional mirrors. + */ + haskproc = 0; + for (i = 0; i < mirrorcnt && error == 0; i++, tpf++, tdsc++) { + tdsc->tcred = tcred; + tdsc->p = p; + tdsc->pf = tpf; + tdsc->createva = *vap; + if (i > 0) { + tdsc->fh = dsc->fh; + tdsc->va = dsc->va; } - nfsvno_relpathbuf(&named); + if (i != mirrorcnt - 1) + tdsc->dsattr.dsa_filerev = UINT64_MAX; + + /* + * Do the last create outselves instead of forking a process. + * (This avoids creating kernel processes unless mirrors are + * in use.) + * tdsc->haskproc marks a create with a kernel process. + * haskproc is set non-zero to indicate at least one kernel + * process has been created. + */ + ret = ENXIO; + if (i < mirrorcnt - 1) { + tdsc->haskproc = 1; + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, + 0, 0, "nfsdpnfs"); + } + if (ret == 0) + haskproc = 1; + else { + tdsc->haskproc = 0; + error = nfsrv_dscreate(dsc); + } } + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSCLOCK(); + for (tdsc = dsc, i = 0; i < mirrorcnt; i++, tdsc++) { + while (tdsc->haskproc != 0) + mtx_sleep(tdsc, NFSDSCLOCKMUTEXPTR, PVFS, + "nfspcr", 0); + if (error == 0 && tdsc->err != 0) + error = tdsc->err; + } + NFSDSCUNLOCK(); + } + NFSFREECRED(tcred); if (error == 0) { error = vn_start_write(vp, &mp, V_WAIT); @@ -3745,7 +3846,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (error == 0) error = vn_extattr_set(vp, IO_NODELOCKED, EXTATTR_NAMESPACE_SYSTEM, "pnfsd.dsattr", - sizeof(dsattr), (char *)&dsattr, p); + sizeof(dsattr), (char *)&dsc->dsattr, p); vn_finished_write(mp); if (error != 0) printf("pNFS: pnfscreate setextattr=%d\n", @@ -3755,6 +3856,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, } else printf("pNFS: pnfscreate=%d\n", error); free(pf, M_TEMP); + free(dsc, M_TEMP); } /* From owner-svn-src-projects@freebsd.org Mon Aug 14 19:23:32 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C5705DDF58A for ; Mon, 14 Aug 2017 19:23:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 79B156BBFA; Mon, 14 Aug 2017 19:23:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7EJNVJi022400; Mon, 14 Aug 2017 19:23:31 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7EJNV8L022399; Mon, 14 Aug 2017 19:23:31 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708141923.v7EJNV8L022399@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Mon, 14 Aug 2017 19:23:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322516 - projects/make-check-sandbox X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/make-check-sandbox X-SVN-Commit-Revision: 322516 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Aug 2017 19:23:32 -0000 Author: ngie Date: Mon Aug 14 19:23:31 2017 New Revision: 322516 URL: https://svnweb.freebsd.org/changeset/base/322516 Log: Prune project branch "merged" into ^/head as r322511 and r322515 Deleted: projects/make-check-sandbox/ From owner-svn-src-projects@freebsd.org Mon Aug 14 19:28:57 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E6FA2DDF921 for ; Mon, 14 Aug 2017 19:28:57 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 909CC6BDB2; Mon, 14 Aug 2017 19:28:57 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7EJSu3I022705; Mon, 14 Aug 2017 19:28:56 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7EJSnnE022634; Mon, 14 Aug 2017 19:28:49 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708141928.v7EJSnnE022634@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Mon, 14 Aug 2017 19:28:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322517 - in projects/runtime-coverage: . bin/cat bin/chmod bin/date bin/dd bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests/invocation bin/sleep b... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: . bin/cat bin/chmod bin/date bin/dd bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests/invocation bin/sleep bin/test contrib/gcc/confi... X-SVN-Commit-Revision: 322517 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Aug 2017 19:28:58 -0000 Author: ngie Date: Mon Aug 14 19:28:49 2017 New Revision: 322517 URL: https://svnweb.freebsd.org/changeset/base/322517 Log: MFhead@r322515 Added: projects/runtime-coverage/bin/sh/tests/invocation/sh-c-missing1.0 - copied unchanged from r322516, head/bin/sh/tests/invocation/sh-c-missing1.0 projects/runtime-coverage/contrib/gcc/config/riscv/ - copied from r322516, head/contrib/gcc/config/riscv/ projects/runtime-coverage/sys/dev/iicbus/ds13rtc.c - copied unchanged from r322516, head/sys/dev/iicbus/ds13rtc.c projects/runtime-coverage/sys/modules/i2c/ds13rtc/ - copied from r322516, head/sys/modules/i2c/ds13rtc/ projects/runtime-coverage/sys/modules/i2c/s35390a/ - copied from r322516, head/sys/modules/i2c/s35390a/ projects/runtime-coverage/tests/Makefile.inc0 - copied unchanged from r322516, head/tests/Makefile.inc0 projects/runtime-coverage/tests/etc/Makefile.inc - copied unchanged from r322516, head/tests/etc/Makefile.inc projects/runtime-coverage/tests/sys/geom/class/Makefile.inc - copied unchanged from r322516, head/tests/sys/geom/class/Makefile.inc projects/runtime-coverage/tests/sys/pjdfstest/Makefile.inc - copied unchanged from r322516, head/tests/sys/pjdfstest/Makefile.inc projects/runtime-coverage/tests/sys/pjdfstest/tests/Makefile.inc - copied unchanged from r322516, head/tests/sys/pjdfstest/tests/Makefile.inc projects/runtime-coverage/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX - copied unchanged from r322516, head/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX Deleted: projects/runtime-coverage/contrib/gcc/config/riscv64/ projects/runtime-coverage/sys/dev/iicbus/ds133x.c projects/runtime-coverage/sys/dev/iicbus/ds1374.c Modified: projects/runtime-coverage/UPDATING projects/runtime-coverage/bin/cat/Makefile projects/runtime-coverage/bin/chmod/Makefile projects/runtime-coverage/bin/date/Makefile projects/runtime-coverage/bin/dd/Makefile projects/runtime-coverage/bin/echo/Makefile projects/runtime-coverage/bin/expr/Makefile projects/runtime-coverage/bin/ln/Makefile projects/runtime-coverage/bin/ls/Makefile projects/runtime-coverage/bin/mv/Makefile projects/runtime-coverage/bin/pax/Makefile projects/runtime-coverage/bin/pkill/Makefile projects/runtime-coverage/bin/pwait/Makefile projects/runtime-coverage/bin/sh/Makefile projects/runtime-coverage/bin/sh/tests/invocation/Makefile projects/runtime-coverage/bin/sleep/Makefile projects/runtime-coverage/bin/test/Makefile projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Driver.cpp projects/runtime-coverage/lib/atf/libatf-c++/Makefile projects/runtime-coverage/lib/atf/libatf-c/Makefile projects/runtime-coverage/lib/libarchive/Makefile projects/runtime-coverage/lib/libc/Makefile projects/runtime-coverage/lib/libc/sys/getsockopt.2 projects/runtime-coverage/lib/libc/x86/sys/__vdso_gettc.c projects/runtime-coverage/lib/libcam/Makefile projects/runtime-coverage/lib/libcasper/services/cap_dns/Makefile projects/runtime-coverage/lib/libcasper/services/cap_grp/Makefile projects/runtime-coverage/lib/libcasper/services/cap_pwd/Makefile projects/runtime-coverage/lib/libcasper/services/cap_sysctl/Makefile projects/runtime-coverage/lib/libcrypt/Makefile projects/runtime-coverage/lib/libkvm/Makefile projects/runtime-coverage/lib/libmp/Makefile projects/runtime-coverage/lib/libnv/Makefile projects/runtime-coverage/lib/libpathconv/Makefile projects/runtime-coverage/lib/libproc/Makefile projects/runtime-coverage/lib/librt/Makefile projects/runtime-coverage/lib/libsbuf/Makefile projects/runtime-coverage/lib/libthr/Makefile projects/runtime-coverage/lib/libutil/Makefile projects/runtime-coverage/lib/libxo/Makefile projects/runtime-coverage/lib/msun/Makefile projects/runtime-coverage/libexec/atf/atf-check/Makefile projects/runtime-coverage/libexec/atf/atf-sh/Makefile projects/runtime-coverage/libexec/rtld-elf/Makefile projects/runtime-coverage/sbin/devd/Makefile projects/runtime-coverage/sbin/dhclient/Makefile projects/runtime-coverage/sbin/growfs/Makefile projects/runtime-coverage/sbin/ifconfig/Makefile projects/runtime-coverage/sbin/mdconfig/Makefile projects/runtime-coverage/sbin/pfctl/Makefile projects/runtime-coverage/share/examples/Makefile projects/runtime-coverage/share/man/man5/src.conf.5 projects/runtime-coverage/share/man/man9/Makefile projects/runtime-coverage/share/man/man9/config_intrhook.9 projects/runtime-coverage/share/mk/bsd.README projects/runtime-coverage/share/mk/bsd.cpu.mk projects/runtime-coverage/share/mk/bsd.lib.mk projects/runtime-coverage/share/mk/bsd.opts.mk projects/runtime-coverage/share/mk/bsd.prog.mk projects/runtime-coverage/share/mk/src.opts.mk projects/runtime-coverage/share/mk/suite.test.mk projects/runtime-coverage/share/zoneinfo/Makefile projects/runtime-coverage/sys/amd64/amd64/trap.c projects/runtime-coverage/sys/amd64/include/cpufunc.h projects/runtime-coverage/sys/arm/conf/GENERIC projects/runtime-coverage/sys/arm64/arm64/gic_v3.c projects/runtime-coverage/sys/arm64/arm64/gic_v3_fdt.c projects/runtime-coverage/sys/arm64/arm64/gicv3_its.c projects/runtime-coverage/sys/conf/NOTES projects/runtime-coverage/sys/conf/files projects/runtime-coverage/sys/dev/hyperv/include/hyperv.h projects/runtime-coverage/sys/dev/hyperv/netvsc/hn_nvs.c projects/runtime-coverage/sys/dev/hyperv/netvsc/hn_nvs.h projects/runtime-coverage/sys/dev/hyperv/netvsc/hn_rndis.c projects/runtime-coverage/sys/dev/hyperv/netvsc/hn_rndis.h projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hn.c projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hnreg.h projects/runtime-coverage/sys/dev/hyperv/netvsc/if_hnvar.h projects/runtime-coverage/sys/dev/hyperv/pcib/vmbus_pcib.c projects/runtime-coverage/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c projects/runtime-coverage/sys/dev/hyperv/storvsc/hv_vstorage.h projects/runtime-coverage/sys/dev/hyperv/utilities/hv_kvp.c projects/runtime-coverage/sys/dev/hyperv/utilities/vmbus_timesync.c projects/runtime-coverage/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c projects/runtime-coverage/sys/dev/hyperv/vmbus/hyperv.c projects/runtime-coverage/sys/dev/hyperv/vmbus/vmbus.c projects/runtime-coverage/sys/dev/hyperv/vmbus/vmbus_et.c projects/runtime-coverage/sys/dev/iicbus/nxprtc.c projects/runtime-coverage/sys/dev/iicbus/s35390a.c projects/runtime-coverage/sys/geom/journal/g_journal.c projects/runtime-coverage/sys/kern/subr_autoconf.c projects/runtime-coverage/sys/kern/subr_blist.c projects/runtime-coverage/sys/mips/conf/XLP.hints projects/runtime-coverage/sys/mips/conf/XLR projects/runtime-coverage/sys/mips/conf/XLR64 projects/runtime-coverage/sys/mips/conf/XLRN32 projects/runtime-coverage/sys/mips/conf/std.XLP projects/runtime-coverage/sys/mips/rmi/xlr_i2c.c projects/runtime-coverage/sys/modules/i2c/Makefile projects/runtime-coverage/sys/sys/blist.h projects/runtime-coverage/sys/sys/kernel.h projects/runtime-coverage/sys/x86/acpica/srat.c projects/runtime-coverage/tests/Makefile projects/runtime-coverage/tests/sys/Makefile.inc projects/runtime-coverage/usr.bin/apply/Makefile projects/runtime-coverage/usr.bin/basename/Makefile projects/runtime-coverage/usr.bin/bsdcat/Makefile projects/runtime-coverage/usr.bin/calendar/Makefile projects/runtime-coverage/usr.bin/calendar/calendars/calendar.freebsd projects/runtime-coverage/usr.bin/cmp/Makefile projects/runtime-coverage/usr.bin/col/Makefile projects/runtime-coverage/usr.bin/comm/Makefile projects/runtime-coverage/usr.bin/compress/Makefile projects/runtime-coverage/usr.bin/cpio/Makefile projects/runtime-coverage/usr.bin/csplit/Makefile projects/runtime-coverage/usr.bin/cut/Makefile projects/runtime-coverage/usr.bin/diff/Makefile projects/runtime-coverage/usr.bin/diff3/Makefile projects/runtime-coverage/usr.bin/dirname/Makefile projects/runtime-coverage/usr.bin/du/Makefile projects/runtime-coverage/usr.bin/file2c/Makefile projects/runtime-coverage/usr.bin/getconf/Makefile projects/runtime-coverage/usr.bin/grep/Makefile projects/runtime-coverage/usr.bin/gzip/Makefile projects/runtime-coverage/usr.bin/hexdump/Makefile projects/runtime-coverage/usr.bin/ident/Makefile projects/runtime-coverage/usr.bin/indent/Makefile projects/runtime-coverage/usr.bin/join/Makefile projects/runtime-coverage/usr.bin/jot/Makefile projects/runtime-coverage/usr.bin/lastcomm/Makefile projects/runtime-coverage/usr.bin/limits/Makefile projects/runtime-coverage/usr.bin/m4/Makefile projects/runtime-coverage/usr.bin/mkimg/Makefile projects/runtime-coverage/usr.bin/ncal/Makefile projects/runtime-coverage/usr.bin/pr/Makefile projects/runtime-coverage/usr.bin/printf/Makefile projects/runtime-coverage/usr.bin/procstat/Makefile projects/runtime-coverage/usr.bin/sdiff/Makefile projects/runtime-coverage/usr.bin/sed/Makefile projects/runtime-coverage/usr.bin/soelim/Makefile projects/runtime-coverage/usr.bin/stat/Makefile projects/runtime-coverage/usr.bin/tail/Makefile projects/runtime-coverage/usr.bin/tar/Makefile projects/runtime-coverage/usr.bin/timeout/Makefile projects/runtime-coverage/usr.bin/tr/Makefile projects/runtime-coverage/usr.bin/truncate/Makefile projects/runtime-coverage/usr.bin/uniq/Makefile projects/runtime-coverage/usr.bin/units/Makefile projects/runtime-coverage/usr.bin/uudecode/Makefile projects/runtime-coverage/usr.bin/uuencode/Makefile projects/runtime-coverage/usr.bin/xargs/Makefile projects/runtime-coverage/usr.bin/xinstall/Makefile projects/runtime-coverage/usr.bin/xo/Makefile projects/runtime-coverage/usr.bin/yacc/Makefile projects/runtime-coverage/usr.sbin/chown/Makefile projects/runtime-coverage/usr.sbin/cpucontrol/cpucontrol.8 projects/runtime-coverage/usr.sbin/etcupdate/Makefile projects/runtime-coverage/usr.sbin/extattr/Makefile projects/runtime-coverage/usr.sbin/fstyp/Makefile projects/runtime-coverage/usr.sbin/makefs/Makefile projects/runtime-coverage/usr.sbin/newsyslog/Makefile projects/runtime-coverage/usr.sbin/nmtree/Makefile projects/runtime-coverage/usr.sbin/pw/Makefile projects/runtime-coverage/usr.sbin/rpcbind/Makefile projects/runtime-coverage/usr.sbin/sa/Makefile Directory Properties: projects/runtime-coverage/ (props changed) projects/runtime-coverage/contrib/gcc/ (props changed) projects/runtime-coverage/contrib/llvm/ (props changed) projects/runtime-coverage/contrib/llvm/tools/lld/ (props changed) Modified: projects/runtime-coverage/UPDATING ============================================================================== --- projects/runtime-coverage/UPDATING Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/UPDATING Mon Aug 14 19:28:49 2017 (r322517) @@ -51,6 +51,27 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170814: + "make check" behavior (made in ^/head@r295380) has been changed to + execute from a limited sandbox, as opposed to executing from + ${TESTSDIR}. + + Behavioral changes: + - The "beforecheck" and "aftercheck" targets are now specified. + - ${CHECKDIR} (added in commit noted above) has been removed. + - Legacy behavior can be enabled by setting + WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. + + If the limited sandbox mode is enabled, "make check" will execute + "make distribution", then install, execute the tests, and clean up the + sandbox if successful. + + The "make distribution" and "make install" targets are typically run as + root to set appropriate permissions and ownership at installation time. + The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the + environment if executing "make check" with limited sandbox mode using + an unprivileged user. + 20170808: Since the switch to GPT disk labels, fsck for UFS/FFS has been unable to automatically find alternate superblocks. As of r322297, Modified: projects/runtime-coverage/bin/cat/Makefile ============================================================================== --- projects/runtime-coverage/bin/cat/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/cat/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= cat +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/chmod/Makefile ============================================================================== --- projects/runtime-coverage/bin/chmod/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/chmod/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= chmod +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/date/Makefile ============================================================================== --- projects/runtime-coverage/bin/date/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/date/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -7,6 +7,7 @@ PACKAGE=runtime PROG= date SRCS= date.c netdate.c vary.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/dd/Makefile ============================================================================== --- projects/runtime-coverage/bin/dd/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/dd/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -38,6 +38,7 @@ test: ${PROG} gen @rm -f gen 1M_zeroes* obs_zeroes +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/echo/Makefile ============================================================================== --- projects/runtime-coverage/bin/echo/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/echo/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= echo +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/expr/Makefile ============================================================================== --- projects/runtime-coverage/bin/expr/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/expr/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -12,6 +12,7 @@ CFLAGS+= -fwrapv NO_WMISSING_VARIABLE_DECLARATIONS= +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/ln/Makefile ============================================================================== --- projects/runtime-coverage/bin/ln/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/ln/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -10,6 +10,7 @@ MAN= ln.1 symlink.7 LINKS= ${BINDIR}/ln ${BINDIR}/link MLINKS= ln.1 link.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/ls/Makefile ============================================================================== --- projects/runtime-coverage/bin/ls/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/ls/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -14,6 +14,7 @@ CFLAGS+= -DCOLORLS LIBADD+= termcapw .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/mv/Makefile ============================================================================== --- projects/runtime-coverage/bin/mv/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/mv/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= mv +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/pax/Makefile ============================================================================== --- projects/runtime-coverage/bin/pax/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/pax/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -33,6 +33,7 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \ tables.c tar.c tty_subs.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/pkill/Makefile ============================================================================== --- projects/runtime-coverage/bin/pkill/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/pkill/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -19,6 +19,7 @@ MLINKS= pkill.1 pgrep.1 SYMLINKS= ../..${BINDIR}/pkill /usr/bin/pkill SYMLINKS+= ../..${BINDIR}/pgrep /usr/bin/pgrep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/pwait/Makefile ============================================================================== --- projects/runtime-coverage/bin/pwait/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/pwait/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -5,6 +5,7 @@ PACKAGE=runtime PROG= pwait +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/sh/Makefile ============================================================================== --- projects/runtime-coverage/bin/sh/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/sh/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -64,6 +64,7 @@ syntax.c syntax.h: mksyntax token.h: mktokens sh ${.CURDIR}/mktokens +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/sh/tests/invocation/Makefile ============================================================================== --- projects/runtime-coverage/bin/sh/tests/invocation/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/sh/tests/invocation/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -8,6 +8,7 @@ TESTSDIR= ${TESTSBASE}/bin/sh/${.CURDIR:T} ATF_TESTS_SH= functional_test ${PACKAGE}FILES+= sh-ac1.0 +${PACKAGE}FILES+= sh-c-missing1.0 ${PACKAGE}FILES+= sh-c1.0 ${PACKAGE}FILES+= sh-ca1.0 ${PACKAGE}FILES+= sh-fca1.0 Copied: projects/runtime-coverage/bin/sh/tests/invocation/sh-c-missing1.0 (from r322516, head/bin/sh/tests/invocation/sh-c-missing1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/bin/sh/tests/invocation/sh-c-missing1.0 Mon Aug 14 19:28:49 2017 (r322517, copy of r322516, head/bin/sh/tests/invocation/sh-c-missing1.0) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! echo echo bad | ${SH} -c 2>/dev/null Modified: projects/runtime-coverage/bin/sleep/Makefile ============================================================================== --- projects/runtime-coverage/bin/sleep/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/sleep/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= sleep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/bin/test/Makefile ============================================================================== --- projects/runtime-coverage/bin/test/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/bin/test/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -8,6 +8,7 @@ PROG= test LINKS= ${BINDIR}/test ${BINDIR}/[ MLINKS= test.1 [.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Driver.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Driver.cpp Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Driver.cpp Mon Aug 14 19:28:49 2017 (r322517) @@ -615,7 +615,8 @@ static bool getCompressDebugSections(opt::InputArgList // Initializes Config members by the command line options. void LinkerDriver::readConfigs(opt::InputArgList &Args) { - Config->AllowMultipleDefinition = Args.hasArg(OPT_allow_multiple_definition); + Config->AllowMultipleDefinition = + Args.hasArg(OPT_allow_multiple_definition) || hasZOption(Args, "muldefs"); Config->AuxiliaryList = getArgs(Args, OPT_auxiliary); Config->Bsymbolic = Args.hasArg(OPT_Bsymbolic); Config->BsymbolicFunctions = Args.hasArg(OPT_Bsymbolic_functions); Modified: projects/runtime-coverage/lib/atf/libatf-c++/Makefile ============================================================================== --- projects/runtime-coverage/lib/atf/libatf-c++/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/atf/libatf-c++/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -72,6 +72,7 @@ INCSDIR_atf-c++.hpp= ${INCLUDEDIR} MAN= atf-c++.3 MLINKS+= atf-c++.3 atf-c-api++.3 # Backwards compatibility. +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include "../common.mk" Modified: projects/runtime-coverage/lib/atf/libatf-c/Makefile ============================================================================== --- projects/runtime-coverage/lib/atf/libatf-c/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/atf/libatf-c/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -97,6 +97,7 @@ INCSDIR_atf-c.h= ${INCLUDEDIR} MAN= atf-c.3 MLINKS+= atf-c.3 atf-c-api.3 # Backwards compatibility. +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include "../common.mk" Modified: projects/runtime-coverage/lib/libarchive/Makefile ============================================================================== --- projects/runtime-coverage/lib/libarchive/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libarchive/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -413,6 +413,7 @@ MLINKS+= archive_write_set_options.3 archive_write_set MLINKS+= archive_write_set_options.3 archive_write_set_option.3 MLINKS+= libarchive.3 archive.3 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libc/Makefile ============================================================================== --- projects/runtime-coverage/lib/libc/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libc/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -173,6 +173,7 @@ libkern.${LIBC_ARCH}:: ${KMSRCS} ${CP} ${.ALLSRC} ${DESTDIR}/sys/libkern/${LIBC_ARCH} .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libc/sys/getsockopt.2 ============================================================================== --- projects/runtime-coverage/lib/libc/sys/getsockopt.2 Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libc/sys/getsockopt.2 Mon Aug 14 19:28:49 2017 (r322517) @@ -188,7 +188,7 @@ The following options are recognized in .It Dv SO_LISTENINCQLEN Ta "get incomplete queue length of the socket (get only)" .It Dv SO_USER_COOKIE Ta "set the 'so_user_cookie' value for the socket (uint32_t, set only)" .It Dv SO_TS_CLOCK Ta "set specific format of timestamp returned by SO_TIMESTAMP" -.It Dv SO_MAX_PACING_RATE "set the maximum transmit rate in bytes per second for the socket" +.It Dv SO_MAX_PACING_RATE Ta "set the maximum transmit rate in bytes per second for the socket" .El .Pp .Dv SO_DEBUG Modified: projects/runtime-coverage/lib/libc/x86/sys/__vdso_gettc.c ============================================================================== --- projects/runtime-coverage/lib/libc/x86/sys/__vdso_gettc.c Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libc/x86/sys/__vdso_gettc.c Mon Aug 14 19:28:49 2017 (r322517) @@ -101,6 +101,7 @@ init_fence(void) #if defined(__i386__) u_int cpuid_supported, p[4]; + lfence_works = LMB_NONE; __asm __volatile( " pushfl\n" " popl %%eax\n" @@ -121,8 +122,7 @@ init_fence(void) cpuidp(0x1, p); if ((p[3] & CPUID_SSE2) != 0) lfence_works = select_lmb(); - } else - lfence_works = LMB_NONE; + } #elif defined(__amd64__) lfence_works = select_lmb(); #else Modified: projects/runtime-coverage/lib/libcam/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcam/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcam/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -47,6 +47,7 @@ SHLIB_MAJOR= 7 .include +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libcasper/services/cap_dns/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcasper/services/cap_dns/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcasper/services/cap_dns/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -18,6 +18,7 @@ LIBADD= nv CFLAGS+=-I${.CURDIR} +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libcasper/services/cap_grp/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcasper/services/cap_grp/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcasper/services/cap_grp/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -18,6 +18,7 @@ LIBADD= nv CFLAGS+=-I${.CURDIR} +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libcasper/services/cap_pwd/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcasper/services/cap_pwd/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcasper/services/cap_pwd/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -18,6 +18,7 @@ LIBADD= nv CFLAGS+=-I${.CURDIR} +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libcasper/services/cap_sysctl/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcasper/services/cap_sysctl/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcasper/services/cap_sysctl/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -18,6 +18,7 @@ LIBADD= nv CFLAGS+=-I${.CURDIR} +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libcrypt/Makefile ============================================================================== --- projects/runtime-coverage/lib/libcrypt/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libcrypt/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -43,6 +43,7 @@ WARNS?= 2 PRECIOUSLIB= +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libkvm/Makefile ============================================================================== --- projects/runtime-coverage/lib/libkvm/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libkvm/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -38,6 +38,7 @@ MLINKS+=kvm_read.3 kvm_read2.3 kvm_read.3 kvm_write.3 .include +HAS_TESTS= SUBDIR.${MK_TESTS}= tests .include Modified: projects/runtime-coverage/lib/libmp/Makefile ============================================================================== --- projects/runtime-coverage/lib/libmp/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libmp/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -15,6 +15,7 @@ CFLAGS+= -I${SRCTOP}/crypto VERSION_DEF= ${SRCTOP}/lib/libc/Versions.def SYMBOL_MAPS= ${.CURDIR}/Symbol.map +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libnv/Makefile ============================================================================== --- projects/runtime-coverage/lib/libnv/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libnv/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -17,6 +17,7 @@ SRCS+= msgio.c SRCS+= nvlist.c SRCS+= nvpair.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libpathconv/Makefile ============================================================================== --- projects/runtime-coverage/lib/libpathconv/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libpathconv/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -13,6 +13,7 @@ SRCS= abs2rel.c rel2abs.c #VERSION_DEF= ${SRCTOP/lib/libc/Versions.def #SYMBOL_MAPS= ${.CURDIR}/Symbol.map +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libproc/Makefile ============================================================================== --- projects/runtime-coverage/lib/libproc/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libproc/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -41,6 +41,7 @@ SHLIB_MAJOR= 4 MAN= +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/librt/Makefile ============================================================================== --- projects/runtime-coverage/lib/librt/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/librt/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -21,6 +21,7 @@ PRECIOUSLIB= VERSION_DEF=${SRCTOP}/lib/libc/Versions.def SYMBOL_MAPS=${.CURDIR}/Symbol.map +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libsbuf/Makefile ============================================================================== --- projects/runtime-coverage/lib/libsbuf/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libsbuf/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -14,6 +14,7 @@ VERSION_DEF= ${.CURDIR}/Version.def .PATH: ${SRCTOP}/sys/kern +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libthr/Makefile ============================================================================== --- projects/runtime-coverage/lib/libthr/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libthr/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -69,6 +69,7 @@ SYMLINKS+=lib${LIB}.so ${LIBDIR}/libpthread.so SYMLINKS+=lib${LIB}_p.a ${LIBDIR}/libpthread_p.a .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libutil/Makefile ============================================================================== --- projects/runtime-coverage/lib/libutil/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libutil/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -85,6 +85,7 @@ MLINKS+=pw_util.3 pw_copy.3 \ pw_util.3 pw_tempname.3 \ pw_util.3 pw_tmp.3 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/libxo/Makefile ============================================================================== --- projects/runtime-coverage/lib/libxo/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/libxo/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -110,6 +110,7 @@ MLINKS= xo_attr.3 xo_attr_h.3 \ xo_syslog.3 xo_set_logmask.3 \ xo_syslog.3 xo_vsyslog.3 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/lib/msun/Makefile ============================================================================== --- projects/runtime-coverage/lib/msun/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/lib/msun/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -228,6 +228,7 @@ MLINKS+=trunc.3 truncf.3 trunc.3 truncl.3 .include +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/libexec/atf/atf-check/Makefile ============================================================================== --- projects/runtime-coverage/libexec/atf/atf-check/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/libexec/atf/atf-check/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -40,6 +40,7 @@ CFLAGS+= -DATF_SHELL='"/bin/sh"' LIBADD= atf_cxx +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/libexec/atf/atf-sh/Makefile ============================================================================== --- projects/runtime-coverage/libexec/atf/atf-sh/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/libexec/atf/atf-sh/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -72,6 +72,7 @@ FILESGROUPS= SUBR SUBRDIR= ${SHAREDIR}/atf SUBR= libatf-sh.subr +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include "../../../lib/atf/common.mk" Modified: projects/runtime-coverage/libexec/rtld-elf/Makefile ============================================================================== --- projects/runtime-coverage/libexec/rtld-elf/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/libexec/rtld-elf/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -85,6 +85,7 @@ beforeinstall: .PATH: ${.CURDIR}/${RTLD_ARCH} +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/devd/Makefile ============================================================================== --- projects/runtime-coverage/sbin/devd/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/devd/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -18,6 +18,7 @@ CFLAGS+=-I. -I${.CURDIR} CLEANFILES= y.output +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/dhclient/Makefile ============================================================================== --- projects/runtime-coverage/sbin/dhclient/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/dhclient/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -46,6 +46,7 @@ LIBADD= util WARNS?= 2 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/growfs/Makefile ============================================================================== --- projects/runtime-coverage/sbin/growfs/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/growfs/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -22,6 +22,7 @@ NO_WCAST_ALIGN= yes LIBADD= util +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/ifconfig/Makefile ============================================================================== --- projects/runtime-coverage/sbin/ifconfig/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/ifconfig/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -67,6 +67,7 @@ MAN= ifconfig.8 CFLAGS+= -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wnested-externs WARNS?= 2 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/mdconfig/Makefile ============================================================================== --- projects/runtime-coverage/sbin/mdconfig/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/mdconfig/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -8,6 +8,7 @@ MAN= mdconfig.8 LIBADD= util geom +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sbin/pfctl/Makefile ============================================================================== --- projects/runtime-coverage/sbin/pfctl/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sbin/pfctl/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -31,6 +31,7 @@ YFLAGS= LIBADD= m md +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/share/examples/Makefile ============================================================================== --- projects/runtime-coverage/share/examples/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/examples/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -266,6 +266,7 @@ SUBDIR+=pf .endif .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests SUBDIR_PARALLEL= Modified: projects/runtime-coverage/share/man/man5/src.conf.5 ============================================================================== --- projects/runtime-coverage/share/man/man5/src.conf.5 Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/man/man5/src.conf.5 Mon Aug 14 19:28:49 2017 (r322517) @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd August 2, 2017 +.Dd August 14, 2017 .Dt SRC.CONF 5 .Os .Sh NAME @@ -967,12 +967,12 @@ amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm64/aarc Set to not build the LLDB debugger. .Pp This is a default setting on -arm/arm, arm/armeb, arm/armv6, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe, riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. +arm/arm, arm/armeb, arm/armv6, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe, riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. .It Va WITH_LLDB Set to build the LLDB debugger. .Pp This is a default setting on -amd64/amd64 and arm64/aarch64. +amd64/amd64, arm64/aarch64 and i386/i386. .It Va WITHOUT_LLD_BOOTSTRAP Set to not build the LLD linker during the bootstrap phase of the build. @@ -1043,6 +1043,16 @@ MTA selector. Set to not install .Xr make 1 and related support files. +.It Va WITHOUT_MAKE_CHECK_USE_SANDBOX +Set to not execute +.Dq Li "make check" +in limited sandbox mode. +This option should be paired with +.Va WITH_INSTALL_AS_USER +if executed as an unprivileged user. +See +.Xr tests 7 +for more details. .It Va WITHOUT_MAN Set to not build manual pages. When set, these options are also in effect: @@ -1254,13 +1264,13 @@ Set to not build profiled libraries for use with .Xr gprof 8 . .Pp This is a default setting on -riscv/riscv64 and riscv/riscv64sf. +mips/mips64el, mips/mips64, mips/mips64elhf, mips/mips64hf, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_PROFILE Set to build profiled libraries for use with .Xr gprof 8 . .Pp This is a default setting on -amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm64/aarch64, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe and sparc64/sparc64. +amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm64/aarch64, i386/i386, mips/mipsel, mips/mips, mips/mipsn32, mips/mipselhf, mips/mipshf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe and sparc64/sparc64. .It Va WITHOUT_QUOTAS Set to not build .Xr quota 1 Modified: projects/runtime-coverage/share/man/man9/Makefile ============================================================================== --- projects/runtime-coverage/share/man/man9/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/man/man9/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -669,7 +669,8 @@ MLINKS+=condvar.9 cv_broadcast.9 \ condvar.9 cv_wait_unlock.9 \ condvar.9 cv_wmesg.9 MLINKS+=config_intrhook.9 config_intrhook_disestablish.9 \ - config_intrhook.9 config_intrhook_establish.9 + config_intrhook.9 config_intrhook_establish.9 \ + config_intrhook.9 config_intrhook_oneshot.9 MLINKS+=contigmalloc.9 contigfree.9 MLINKS+=casuword.9 casueword.9 \ casuword.9 casueword32.9 \ Modified: projects/runtime-coverage/share/man/man9/config_intrhook.9 ============================================================================== --- projects/runtime-coverage/share/man/man9/config_intrhook.9 Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/man/man9/config_intrhook.9 Mon Aug 14 19:28:49 2017 (r322517) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 24, 2006 +.Dd August 10, 2017 .Dt CONFIG_INTRHOOK 9 .Os .Sh NAME @@ -35,10 +35,13 @@ but before root is mounted .Sh SYNOPSIS .In sys/kernel.h +.Vt typedef void (*ich_func_t)(void *arg); .Ft int .Fn config_intrhook_establish "struct intr_config_hook *hook" .Ft void .Fn config_intrhook_disestablish "struct intr_config_hook *hook" +.Ft void +.Fn config_intrhook_oneshot "ich_func_t func" "void *arg" .Sh DESCRIPTION The .Fn config_intrhook_establish @@ -51,6 +54,18 @@ The .Fn config_intrhook_disestablish function removes the entry from the hook queue. .Pp +The +.Fn config_intrhook_oneshot +function schedules a function to be run as described for +.Fn config_intrhook_establish ; +the entry is automatically removed from the hook queue +after that function runs. +This is appropriate when additional device configuration must be done +after interrupts are enabled, but there is no need to stall the +boot process after that. +This function allocates memory using M_WAITOK; do not call this while +holding any non-sleepable locks. +.Pp Before root is mounted, all the previously established hooks are run. The boot process is then stalled until all handlers remove their hook @@ -71,8 +86,8 @@ This structure is defined as follows: .Bd -literal struct intr_config_hook { TAILQ_ENTRY(intr_config_hook) ich_links;/* Private */ - void (*ich_func)(void *arg); /* function to call */ - void *ich_arg; /* Argument to call */ + ich_func_t ich_func; /* function to call */ + void *ich_arg; /* Argument to call */ }; .Ed .Pp Modified: projects/runtime-coverage/share/mk/bsd.README ============================================================================== --- projects/runtime-coverage/share/mk/bsd.README Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/bsd.README Mon Aug 14 19:28:49 2017 (r322517) @@ -566,7 +566,7 @@ It has seven targets: all: build the test programs. check: - runs the test programs from CHECKDIR with kyua test. + runs the test programs with kyua test. The beforecheck and aftercheck targets will be invoked, if defined, to execute commands before and after the realcheck @@ -574,8 +574,6 @@ It has seven targets: The devel/kyua package must be installed before invoking this target. - - See CHECKDIR for more details. clean: remove the test programs and any object files. cleandir: @@ -602,10 +600,6 @@ ATF_TESTS_C The names of the ATF C test programs to bu ATF_TESTS_CXX The names of the ATF C++ test programs to build. ATF_TESTS_SH The names of the ATF sh test programs to build. - -CHECKDIR The directory that 'make check' executes tests from. - - The value of CHECKDIR defaults to .OBJDIR. KYUAFILE If 'auto' (the default), generate a Kyuafile out of the test programs defined in the Makefile. If 'yes', then a Modified: projects/runtime-coverage/share/mk/bsd.cpu.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cpu.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/bsd.cpu.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -111,10 +111,9 @@ _CPUCFLAGS = -march=armv5te -D__XSCALE__ . elif ${CPUTYPE:M*soft*} != "" _CPUCFLAGS = -mfloat-abi=softfp . elif ${CPUTYPE} == "armv6" -# Not sure we still need ARM_ARCH_6=1 here. -_CPUCFLAGS = -march=${CPUTYPE} -DARM_ARCH_6=1 +_CPUCFLAGS = -march=${CPUTYPE} . elif ${CPUTYPE} == "cortexa" -_CPUCFLAGS = -march=armv7 -DARM_ARCH_6=1 -mfpu=vfp +_CPUCFLAGS = -march=armv7 -mfpu=vfp . elif ${CPUTYPE:Marmv[4567]*} != "" # Handle all the armvX types that FreeBSD runs: # armv4, armv4t, armv5, armv5te, armv6, armv6t2, armv7, armv7-a, armv7ve Modified: projects/runtime-coverage/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.lib.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/bsd.lib.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -469,6 +469,12 @@ OBJS_DEPEND_GUESS.${_S:R}.pico+= ${_S} .endfor .endif +.if defined(HAS_TESTS) +MAKE+= MK_MAKE_CHECK_USE_SANDBOX=yes +SUBDIR_TARGETS+= check +TESTS_LD_LIBRARY_PATH+= ${.OBJDIR} +.endif + .include .include .include Modified: projects/runtime-coverage/share/mk/bsd.opts.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.opts.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/bsd.opts.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -55,6 +55,7 @@ __DEFAULT_YES_OPTIONS = \ INCLUDES \ INSTALLLIB \ KERBEROS \ + MAKE_CHECK_USE_SANDBOX \ MAN \ MANCOMPRESS \ NIS \ @@ -63,6 +64,7 @@ __DEFAULT_YES_OPTIONS = \ PROFILE \ SSP \ SYMVER \ + TESTS \ TOOLCHAIN \ WARNS @@ -75,6 +77,7 @@ __DEFAULT_NO_OPTIONS = \ __DEFAULT_DEPENDENT_OPTIONS = \ COVERAGE/DEBUG_FILES \ + MAKE_CHECK_USE_SANDBOX/TESTS \ STAGING_MAN/STAGING \ STAGING_PROG/STAGING \ STALE_STAGED/STAGING \ Modified: projects/runtime-coverage/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.prog.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/bsd.prog.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -324,6 +324,13 @@ lint: ${SRCS:M*.c} .include .endif +.if defined(HAS_TESTS) +MAKE+= MK_MAKE_CHECK_USE_SANDBOX=yes +SUBDIR_TARGETS+= check +TESTS_LD_LIBRARY_PATH+= ${.OBJDIR} +TESTS_PATH+= ${.OBJDIR} +.endif + .if defined(PROG) OBJS_DEPEND_GUESS+= ${SRCS:M*.h} .endif Modified: projects/runtime-coverage/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage/share/mk/src.opts.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/src.opts.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -160,7 +160,6 @@ __DEFAULT_YES_OPTIONS = \ TCP_WRAPPERS \ TCSH \ TELNET \ - TESTS \ TEXTPROC \ TFTP \ TIMED \ Modified: projects/runtime-coverage/share/mk/suite.test.mk ============================================================================== --- projects/runtime-coverage/share/mk/suite.test.mk Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/mk/suite.test.mk Mon Aug 14 19:28:49 2017 (r322517) @@ -8,6 +8,8 @@ .error suite.test.mk cannot be included directly. .endif +.include + # Name of the test suite these tests belong to. Should rarely be changed for # Makefiles built into the FreeBSD src tree. TESTSUITE?= FreeBSD @@ -75,8 +77,6 @@ Kyuafile: Makefile @mv ${.TARGET}.tmp ${.TARGET} .endif -CHECKDIR?= ${DESTDIR}${TESTSDIR} - KYUA= ${LOCALBASE}/bin/kyua # Definition of the "make check" target and supporting variables. @@ -99,4 +99,26 @@ realcheck: .PHONY echo "LOCALBASE=\"${LOCALBASE}\""; \ false; \ fi - @${KYUA} test -k ${CHECKDIR}/Kyuafile + @env ${TESTS_ENV:Q} ${KYUA} test -k ${DESTDIR}${TESTSDIR}/Kyuafile + +MAKE_CHECK_SANDBOX_DIR= ${.OBJDIR}/checkdir +CLEANDIRS+= ${MAKE_CHECK_SANDBOX_DIR} + +.if ${MK_MAKE_CHECK_USE_SANDBOX} != "no" && make(check) +DESTDIR:= ${MAKE_CHECK_SANDBOX_DIR} + +beforecheck: +.for t in clean depend all + @cd ${.CURDIR} && ${MAKE} $t +.endfor + @cd ${SRCTOP} && ${MAKE} hierarchy DESTDIR=${DESTDIR} + @cd ${.CURDIR} && ${MAKE} install \ + DESTDIR=${DESTDIR} + +# NOTE: this is intentional to ensure that "make check" can be run multiple +# times. "aftercheck" won't be run if "make check" fails, is interrupted, +# etc. +aftercheck: + @cd ${.CURDIR} && ${MAKE} clean + +.endif Modified: projects/runtime-coverage/share/zoneinfo/Makefile ============================================================================== --- projects/runtime-coverage/share/zoneinfo/Makefile Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/share/zoneinfo/Makefile Mon Aug 14 19:28:49 2017 (r322517) @@ -131,6 +131,7 @@ afterinstall: echo "Run tzsetup(8) manually to update /etc/localtime."; \ fi +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/runtime-coverage/sys/amd64/amd64/trap.c ============================================================================== --- projects/runtime-coverage/sys/amd64/amd64/trap.c Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/amd64/amd64/trap.c Mon Aug 14 19:28:49 2017 (r322517) @@ -166,16 +166,22 @@ trap(struct trapframe *frame) #ifdef KDTRACE_HOOKS struct reg regs; #endif - struct thread *td = curthread; - struct proc *p = td->td_proc; + ksiginfo_t ksi; + struct thread *td; + struct proc *p; + register_t addr; #ifdef KDB register_t dr6; #endif - int i = 0, ucode = 0; + int i, ucode; u_int type; - register_t addr = 0; - ksiginfo_t ksi; + td = curthread; + p = td->td_proc; + i = 0; + ucode = 0; + addr = 0; + VM_CNT_INC(v_trap); type = frame->tf_trapno; @@ -816,10 +822,24 @@ dblfault_handler(struct trapframe *frame) if (dtrace_doubletrap_func != NULL) (*dtrace_doubletrap_func)(); #endif - printf("\nFatal double fault\n"); - printf("rip = 0x%lx\n", frame->tf_rip); - printf("rsp = 0x%lx\n", frame->tf_rsp); - printf("rbp = 0x%lx\n", frame->tf_rbp); + printf("\nFatal double fault\n" + "rip %#lx rsp %#lx rbp %#lx\n" + "rax %#lx rdx %#lx rbx %#lx\n" + "rcx %#lx rsi %#lx rdi %#lx\n" + "r8 %#lx r9 %#lx r10 %#lx\n" + "r11 %#lx r12 %#lx r13 %#lx\n" + "r14 %#lx r15 %#lx rflags %#lx\n" + "cs %#lx ss %#lx ds %#hx es %#hx fs %#hx gs %#hx\n" + "fsbase %#lx gsbase %#lx kgsbase %#lx\n", + frame->tf_rip, frame->tf_rsp, frame->tf_rbp, + frame->tf_rax, frame->tf_rdx, frame->tf_rbx, + frame->tf_rcx, frame->tf_rdi, frame->tf_rsi, + frame->tf_r8, frame->tf_r9, frame->tf_r10, + frame->tf_r11, frame->tf_r12, frame->tf_r13, + frame->tf_r14, frame->tf_r15, frame->tf_rflags, + frame->tf_cs, frame->tf_ss, frame->tf_ds, frame->tf_es, + frame->tf_fs, frame->tf_gs, + rdmsr(MSR_FSBASE), rdmsr(MSR_GSBASE), rdmsr(MSR_KGSBASE)); #ifdef SMP /* two separate prints in case of a trap on an unmapped page */ printf("cpuid = %d; ", PCPU_GET(cpuid)); Modified: projects/runtime-coverage/sys/amd64/include/cpufunc.h ============================================================================== --- projects/runtime-coverage/sys/amd64/include/cpufunc.h Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/amd64/include/cpufunc.h Mon Aug 14 19:28:49 2017 (r322517) @@ -651,6 +651,38 @@ load_gs(u_short sel) } #endif +static __inline uint64_t +rdfsbase(void) +{ + uint64_t x; + + __asm __volatile("rdfsbase %0" : "=r" (x)); + return (x); +} + +static __inline void +wrfsbase(uint64_t x) +{ + + __asm __volatile("wrfsbase %0" : : "r" (x)); +} + +static __inline uint64_t +rdgsbase(void) +{ + uint64_t x; + + __asm __volatile("rdgsbase %0" : "=r" (x)); + return (x); +} + +static __inline void +wrgsbase(uint64_t x) +{ + + __asm __volatile("wrgsbase %0" : : "r" (x)); +} + static __inline void bare_lgdt(struct region_descriptor *addr) { Modified: projects/runtime-coverage/sys/arm/conf/GENERIC ============================================================================== --- projects/runtime-coverage/sys/arm/conf/GENERIC Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/arm/conf/GENERIC Mon Aug 14 19:28:49 2017 (r322517) @@ -139,9 +139,11 @@ device twl_clks # twl external clocks # i2c RTCs device ds1307 # Dallas DS1307 RTC and compatible +device ds13rtc # All Dallas/Maxim DS13xx RTCs device ds1672 # Dallas DS1672 RTC device ds3231 # Dallas DS3231 RTC + temperature device nxprtc # NXP RTCs: PCA/PFC212x PCA/PCF85xx +device s35390a # Seiko s3539x RTCs # GPIO device gpio Modified: projects/runtime-coverage/sys/arm64/arm64/gic_v3.c ============================================================================== --- projects/runtime-coverage/sys/arm64/arm64/gic_v3.c Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/arm64/arm64/gic_v3.c Mon Aug 14 19:28:49 2017 (r322517) @@ -374,7 +374,7 @@ gic_v3_read_ivar(device_t dev, device_t child, int whi switch (which) { case GICV3_IVAR_NIRQS: - *result = sc->gic_nirqs; + *result = (NIRQ - sc->gic_nirqs) / sc->gic_nchildren; return (0); case GICV3_IVAR_REDIST_VADDR: *result = (uintptr_t)rman_get_virtual( Modified: projects/runtime-coverage/sys/arm64/arm64/gic_v3_fdt.c ============================================================================== --- projects/runtime-coverage/sys/arm64/arm64/gic_v3_fdt.c Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/arm64/arm64/gic_v3_fdt.c Mon Aug 14 19:28:49 2017 (r322517) @@ -266,10 +266,12 @@ static int gic_v3_ofw_bus_attach(device_t dev) { struct gic_v3_ofw_devinfo *di; + struct gic_v3_softc *sc; device_t child; phandle_t parent, node; pcell_t addr_cells, size_cells; + sc = device_get_softc(dev); parent = ofw_bus_get_node(dev); if (parent > 0) { addr_cells = 2; @@ -320,6 +322,7 @@ gic_v3_ofw_bus_attach(device_t dev) continue; } + sc->gic_nchildren++; device_set_ivars(child, di); } } Modified: projects/runtime-coverage/sys/arm64/arm64/gicv3_its.c ============================================================================== --- projects/runtime-coverage/sys/arm64/arm64/gicv3_its.c Mon Aug 14 19:23:31 2017 (r322516) +++ projects/runtime-coverage/sys/arm64/arm64/gicv3_its.c Mon Aug 14 19:28:49 2017 (r322517) @@ -228,6 +228,9 @@ struct gicv3_its_softc { struct intr_pic *sc_pic; struct resource *sc_its_res; + cpuset_t sc_cpus; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Mon Aug 14 20:47:15 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9C640DE3BF1 for ; Mon, 14 Aug 2017 20:47:15 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 690376E45D; Mon, 14 Aug 2017 20:47:15 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7EKlE2r054966; Mon, 14 Aug 2017 20:47:14 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7EKlEOC054963; Mon, 14 Aug 2017 20:47:14 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708142047.v7EKlEOC054963@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 14 Aug 2017 20:47:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322518 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322518 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Aug 2017 20:47:15 -0000 Author: rmacklem Date: Mon Aug 14 20:47:14 2017 New Revision: 322518 URL: https://svnweb.freebsd.org/changeset/base/322518 Log: Modify nfsrv_pnfsremovesetup() and nfsrv_pnfsremove(), factoring out the part that does the Lookup and Remove RPCs against the DS server to remove the DS data file, so that it can be done by a separate kernel process. Put all the arguments to this factored out function (nfsrv_dsremove()) in a structure, so that it can be passed through kproc_create(). This allows removal of the data file on mirrors to be done concurrently. In future, it might be better to avoid the kproc_create() call for every file remove and have a set of these kernel processes waiting to do the RPCs. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Mon Aug 14 19:28:49 2017 (r322517) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Mon Aug 14 20:47:14 2017 (r322518) @@ -66,6 +66,7 @@ struct callout newnfsd_callout; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; +struct mtx nfsrv_dsrmlock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -697,7 +698,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_nfsuserdsock.nr_mtx, "nfsuserd", NULL, MTX_DEF); mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); - mtx_init(&nfsrv_dsclock_mtx, "nfs4ds", NULL, MTX_DEF); + mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); + mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -727,6 +729,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_nfsuserdsock.nr_mtx); mtx_destroy(&nfsrv_dslock_mtx); mtx_destroy(&nfsrv_dsclock_mtx); + mtx_destroy(&nfsrv_dsrmlock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Mon Aug 14 19:28:49 2017 (r322517) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Mon Aug 14 20:47:14 2017 (r322518) @@ -716,6 +716,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDSCLOCKMUTEXPTR (&nfsrv_dsclock_mtx) #define NFSDSCLOCK() mtx_lock(&nfsrv_dsclock_mtx) #define NFSDSCUNLOCK() mtx_unlock(&nfsrv_dsclock_mtx) +#define NFSDSRMLOCKMUTEXPTR (&nfsrv_dsrmlock_mtx) +#define NFSDSRMLOCK() mtx_lock(&nfsrv_dsrmlock_mtx) +#define NFSDSRMUNLOCK() mtx_unlock(&nfsrv_dsrmlock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Mon Aug 14 19:28:49 2017 (r322517) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Mon Aug 14 20:47:14 2017 (r322518) @@ -68,6 +68,7 @@ extern struct nfslayouthash *nfslayouthash; extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; +extern struct mtx nfsrv_dsrmlock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -99,8 +100,8 @@ extern struct nfsdevicehead nfsrv_devidhead; static void nfsrv_pnfscreate(struct vnode *, struct vattr *, struct ucred *, NFSPROC_T *); static void nfsrv_pnfsremovesetup(struct vnode *, NFSPROC_T *, struct vnode **, - fhandle_t *, char *); -static void nfsrv_pnfsremove(struct vnode *, fhandle_t *, char *, NFSPROC_T *); + int *, char *); +static void nfsrv_pnfsremove(struct vnode **, int, char *, NFSPROC_T *); static int nfsrv_proxyds(struct nfsrv_descript *, struct vnode *, off_t, int, struct ucred *, struct thread *, int, struct mbuf **, char *, struct mbuf **, struct nfsvattr *, struct acl *); @@ -1199,25 +1200,25 @@ int nfsvno_removesub(struct nameidata *ndp, int is_v4, struct ucred *cred, struct thread *p, struct nfsexstuff *exp) { - struct vnode *vp, *dsdvp; - fhandle_t fh; - int error = 0; + struct vnode *vp, *dsdvp[NFSDEV_MAXMIRRORS]; + int error = 0, i, mirrorcnt; char fname[PNFS_FILENAME_LEN + 1]; vp = ndp->ni_vp; - dsdvp = NULL; + dsdvp[0] = NULL; if (vp->v_type == VDIR) error = NFSERR_ISDIR; else if (is_v4) error = nfsrv_checkremove(vp, 1, p); if (error == 0) - nfsrv_pnfsremovesetup(vp, p, &dsdvp, &fh, fname); + nfsrv_pnfsremovesetup(vp, p, dsdvp, &mirrorcnt, fname); if (!error) error = VOP_REMOVE(ndp->ni_dvp, vp, &ndp->ni_cnd); - if (dsdvp != NULL) { + if (dsdvp[0] != NULL) { if (error == 0) - nfsrv_pnfsremove(dsdvp, &fh, fname, p); - NFSVOPUNLOCK(dsdvp, 0); + nfsrv_pnfsremove(dsdvp, mirrorcnt, fname, p); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dsdvp[i], 0); } if (ndp->ni_dvp == vp) vrele(ndp->ni_dvp); @@ -1278,12 +1279,11 @@ int nfsvno_rename(struct nameidata *fromndp, struct nameidata *tondp, u_int32_t ndstat, u_int32_t ndflag, struct ucred *cred, struct thread *p) { - struct vnode *fvp, *tvp, *tdvp, *dsdvp; - fhandle_t fh; - int error = 0; + struct vnode *fvp, *tvp, *tdvp, *dsdvp[NFSDEV_MAXMIRRORS]; + int error = 0, i, mirrorcnt; char fname[PNFS_FILENAME_LEN + 1]; - dsdvp = NULL; + dsdvp[0] = NULL; fvp = fromndp->ni_vp; if (ndstat) { vrele(fromndp->ni_dvp); @@ -1359,9 +1359,9 @@ nfsvno_rename(struct nameidata *fromndp, struct nameid nfsd_recalldelegation(fvp, p); } if (error == 0 && tvp != NULL) { - nfsrv_pnfsremovesetup(tvp, p, &dsdvp, &fh, fname); + nfsrv_pnfsremovesetup(tvp, p, dsdvp, &mirrorcnt, fname); NFSD_DEBUG(4, "nfsvno_rename: pnfsremovesetup" - " dsdvp=%p\n", dsdvp); + " dsdvp=%p\n", dsdvp[0]); } out: if (!error) { @@ -1382,16 +1382,17 @@ out: } /* - * If dsdvp != NULL, it was set up by nfsrv_pnfsremovesetup() and + * If dsdvp[0] != NULL, it was set up by nfsrv_pnfsremovesetup() and * if the rename succeeded, the DS file for the tvp needs to be * removed. */ - if (dsdvp != NULL) { + if (dsdvp[0] != NULL) { if (error == 0) { - nfsrv_pnfsremove(dsdvp, &fh, fname, p); + nfsrv_pnfsremove(dsdvp, mirrorcnt, fname, p); NFSD_DEBUG(4, "nfsvno_rename: pnfsremove\n"); } - NFSVOPUNLOCK(dsdvp, 0); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dsdvp[i], 0); } vrele(tondp->ni_startdir); @@ -3849,16 +3850,15 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, */ static void nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, struct vnode **dvpp, - fhandle_t *fhp, char *fname) + int *mirrorcntp, char *fname) { - struct vnode *dvp[NFSDEV_MAXMIRRORS]; struct nfsmount *nmp[NFSDEV_MAXMIRRORS]; struct vattr va; struct ucred *tcred; char *buf; - int buflen, error, mirrorcnt; + int buflen, error; - *dvpp = NULL; + dvpp[0] = NULL; /* If not an exported regular file or not a pNFS server, just return. */ NFSDDSLOCK(); if (vp->v_type != VREG || (vp->v_mount->mnt_flag & MNT_EXPORTED) == 0 || @@ -3882,61 +3882,136 @@ nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, buflen = 1024; buf = malloc(buflen, M_TEMP, M_WAITOK); /* Get the directory vnode for the DS mount and the file handle. */ - error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, buflen, &mirrorcnt, p, - dvp, nmp, NULL, NULL, fname); - if (error == 0) { - error = nfsvno_getfh(vp, fhp, p); - if (error != 0) { - NFSVOPUNLOCK(dvp[0], 0); - printf("pNFS: nfsrv_pnfsremovesetup getfh=%d\n", error); - } - } else - printf("pNFS: nfsrv_pnfsremovesetup getsockmnt=%d\n", error); + error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, buflen, mirrorcntp, p, + dvpp, nmp, NULL, NULL, fname); free(buf, M_TEMP); - if (error == 0) - *dvpp = dvp[0]; + if (error != 0) + printf("pNFS: nfsrv_pnfsremovesetup getsockmnt=%d\n", error); } /* - * Remove a pNFS data file from a Data Server. - * nfsrv_pnfsremovesetup() must have been called before the MDS file was - * removed to set up the dvp and fill in the FH. + * Remove a DS data file for nfsrv_pnfsremove(). Called for each mirror. + * The arguments are in a structure, so that they can be passed through + * kproc_create() for a kernel process to execute this function. */ +struct nfsrvdsremove { + struct ucred *tcred; + struct vnode *dvp; + NFSPROC_T *p; + int haskproc; + char fname[PNFS_FILENAME_LEN + 1]; +}; + static void -nfsrv_pnfsremove(struct vnode *dvp, fhandle_t *fhp, char *fname, NFSPROC_T *p) +nfsrv_dsremove(struct nfsrvdsremove *dsrm) { - struct vnode *nvp; struct nameidata named; - struct ucred *tcred; + struct vnode *nvp; char *bufp; u_long *hashp; int error; - /* Look up the data file and remove it. */ - tcred = newnfs_getcred(); named.ni_cnd.cn_nameiop = DELETE; named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; - named.ni_cnd.cn_cred = tcred; - named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; + named.ni_cnd.cn_cred = dsrm->tcred; + named.ni_cnd.cn_thread = dsrm->p; + named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | + SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = strlen(fname); - strlcpy(bufp, fname, NAME_MAX); + named.ni_cnd.cn_namelen = strlen(dsrm->fname); + strlcpy(bufp, dsrm->fname, NAME_MAX); NFSD_DEBUG(4, "nfsrv_pnfsremove: filename=%s\n", bufp); - error = VOP_LOOKUP(dvp, &nvp, &named.ni_cnd); + error = VOP_LOOKUP(dsrm->dvp, &nvp, &named.ni_cnd); NFSD_DEBUG(4, "nfsrv_pnfsremove: aft LOOKUP=%d\n", error); if (error == 0) { - error = VOP_REMOVE(dvp, nvp, &named.ni_cnd); + error = VOP_REMOVE(dsrm->dvp, nvp, &named.ni_cnd); vput(nvp); } - NFSFREECRED(tcred); nfsvno_relpathbuf(&named); if (error != 0) printf("pNFS: nfsrv_pnfsremove failed=%d\n", error); } /* + * Start up the thread that will execute nfsrv_dsremove(). + */ +static void +start_dsremove(void *arg) +{ + struct nfsrvdsremove *dsrm; + + dsrm = (struct nfsrvdsremove *)arg; + nfsrv_dsremove(dsrm); + NFSDSRMLOCK(); + dsrm->haskproc = 0; + wakeup(dsrm); + NFSDSRMUNLOCK(); + kproc_exit(0); +} + +/* + * Remove a pNFS data file from a Data Server. + * nfsrv_pnfsremovesetup() must have been called before the MDS file was + * removed to set up the dvp and fill in the FH. + */ +static void +nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, char *fname, NFSPROC_T *p) +{ + struct ucred *tcred; + struct nfsrvdsremove *dsrm, *tdsrm; + int haskproc, i, ret; + + tcred = newnfs_getcred(); + tdsrm = dsrm = malloc(sizeof(*dsrm) * NFSDEV_MAXMIRRORS, M_TEMP, + M_WAITOK); + /* + * Remove the file on each DS mirror, using kernel process(es) for the + * additional mirrors. + */ + haskproc = 0; + for (i = 0; i < mirrorcnt; i++, tdsrm++) { + tdsrm->tcred = tcred; + tdsrm->p = p; + tdsrm->dvp = dvp[i]; + strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); + + /* + * Do the last remove outselves instead of forking a process. + * (This avoids creating kernel processes unless mirrors are + * in use.) + * tdsrm->haskproc marks a create with a kernel process. + * haskproc is set non-zero to indicate at least one kernel + * process has been created. + */ + ret = ENXIO; + if (i < mirrorcnt - 1) { + tdsrm->haskproc = 1; + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, + 0, 0, "nfsdpnfs"); + } + if (ret == 0) + haskproc = 1; + else { + tdsrm->haskproc = 0; + nfsrv_dsremove(tdsrm); + } + } + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSRMLOCK(); + for (tdsrm = dsrm, i = 0; i < mirrorcnt; i++, tdsrm++) { + while (tdsrm->haskproc != 0) + mtx_sleep(tdsrm, NFSDSRMLOCKMUTEXPTR, PVFS, + "nfsprm", 0); + } + NFSDSRMUNLOCK(); + } + NFSFREECRED(tcred); + free(dsrm, M_TEMP); +} + +/* * Generate a file name based on the file handle and put it in *bufp. * Return the number of bytes generated. */ @@ -4194,8 +4269,10 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char * the one(s) prior to the failure will have locked dvp's that * need to be unlocked. */ - for (j = 1; j < i; j++) - NFSVOPUNLOCK(*dvpp++, 0); + for (j = 1; j < i; j++) { + NFSVOPUNLOCK(*dvpp, 0); + *dvpp++ = NULL; + } } return (error); } From owner-svn-src-projects@freebsd.org Mon Aug 14 20:53:03 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 127D5DE40C9 for ; Mon, 14 Aug 2017 20:53:03 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E263D6E968; Mon, 14 Aug 2017 20:53:02 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7EKr2b6058860; Mon, 14 Aug 2017 20:53:02 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7EKr1Sp058857; Mon, 14 Aug 2017 20:53:01 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708142053.v7EKr1Sp058857@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 14 Aug 2017 20:53:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322519 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322519 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Aug 2017 20:53:03 -0000 Author: rmacklem Date: Mon Aug 14 20:53:01 2017 New Revision: 322519 URL: https://svnweb.freebsd.org/changeset/base/322519 Log: Modify nfsrv_pnfsremovesetup() and nfsrv_pnfsremove(), factoring out the part that does the Lookup and Remove RPCs against the DS server to remove the DS data file, so that it can be done by a separate kernel process. Put all the arguments to this factored out function (nfsrv_dsremove()) in a structure, so that it can be passed through kproc_create(). This allows removal of the data file on mirrors to be done concurrently. In future, it might be better to avoid the kproc_create() call for every file remove and have a set of these kernel processes waiting to do the RPCs. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server/sys/fs/nfs/nfsport.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Mon Aug 14 20:47:14 2017 (r322518) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Mon Aug 14 20:53:01 2017 (r322519) @@ -67,6 +67,7 @@ struct callout newnfsd_callout; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; +struct mtx nfsrv_dsrmlock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -717,7 +718,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_nfsuserdsock.nr_mtx, "nfsuserd", NULL, MTX_DEF); mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); - mtx_init(&nfsrv_dsclock_mtx, "nfs4ds", NULL, MTX_DEF); + mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); + mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -747,6 +749,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_nfsuserdsock.nr_mtx); mtx_destroy(&nfsrv_dslock_mtx); mtx_destroy(&nfsrv_dsclock_mtx); + mtx_destroy(&nfsrv_dsrmlock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Mon Aug 14 20:47:14 2017 (r322518) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Mon Aug 14 20:53:01 2017 (r322519) @@ -716,6 +716,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDSCLOCKMUTEXPTR (&nfsrv_dsclock_mtx) #define NFSDSCLOCK() mtx_lock(&nfsrv_dsclock_mtx) #define NFSDSCUNLOCK() mtx_unlock(&nfsrv_dsclock_mtx) +#define NFSDSRMLOCKMUTEXPTR (&nfsrv_dsrmlock_mtx) +#define NFSDSRMLOCK() mtx_lock(&nfsrv_dsrmlock_mtx) +#define NFSDSRMUNLOCK() mtx_unlock(&nfsrv_dsrmlock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Mon Aug 14 20:47:14 2017 (r322518) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Mon Aug 14 20:53:01 2017 (r322519) @@ -68,6 +68,7 @@ extern struct nfslayouthash *nfslayouthash; extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; +extern struct mtx nfsrv_dsrmlock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -99,8 +100,8 @@ extern struct nfsdevicehead nfsrv_devidhead; static void nfsrv_pnfscreate(struct vnode *, struct vattr *, struct ucred *, NFSPROC_T *); static void nfsrv_pnfsremovesetup(struct vnode *, NFSPROC_T *, struct vnode **, - fhandle_t *, char *); -static void nfsrv_pnfsremove(struct vnode *, fhandle_t *, char *, NFSPROC_T *); + int *, char *); +static void nfsrv_pnfsremove(struct vnode **, int, char *, NFSPROC_T *); static int nfsrv_proxyds(struct nfsrv_descript *, struct vnode *, off_t, int, struct ucred *, struct thread *, int, struct mbuf **, char *, struct mbuf **, struct nfsvattr *, struct acl *); @@ -1199,25 +1200,25 @@ int nfsvno_removesub(struct nameidata *ndp, int is_v4, struct ucred *cred, struct thread *p, struct nfsexstuff *exp) { - struct vnode *vp, *dsdvp; - fhandle_t fh; - int error = 0; + struct vnode *vp, *dsdvp[NFSDEV_MAXMIRRORS]; + int error = 0, i, mirrorcnt; char fname[PNFS_FILENAME_LEN + 1]; vp = ndp->ni_vp; - dsdvp = NULL; + dsdvp[0] = NULL; if (vp->v_type == VDIR) error = NFSERR_ISDIR; else if (is_v4) error = nfsrv_checkremove(vp, 1, p); if (error == 0) - nfsrv_pnfsremovesetup(vp, p, &dsdvp, &fh, fname); + nfsrv_pnfsremovesetup(vp, p, dsdvp, &mirrorcnt, fname); if (!error) error = VOP_REMOVE(ndp->ni_dvp, vp, &ndp->ni_cnd); - if (dsdvp != NULL) { + if (dsdvp[0] != NULL) { if (error == 0) - nfsrv_pnfsremove(dsdvp, &fh, fname, p); - NFSVOPUNLOCK(dsdvp, 0); + nfsrv_pnfsremove(dsdvp, mirrorcnt, fname, p); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dsdvp[i], 0); } if (ndp->ni_dvp == vp) vrele(ndp->ni_dvp); @@ -1278,12 +1279,11 @@ int nfsvno_rename(struct nameidata *fromndp, struct nameidata *tondp, u_int32_t ndstat, u_int32_t ndflag, struct ucred *cred, struct thread *p) { - struct vnode *fvp, *tvp, *tdvp, *dsdvp; - fhandle_t fh; - int error = 0; + struct vnode *fvp, *tvp, *tdvp, *dsdvp[NFSDEV_MAXMIRRORS]; + int error = 0, i, mirrorcnt; char fname[PNFS_FILENAME_LEN + 1]; - dsdvp = NULL; + dsdvp[0] = NULL; fvp = fromndp->ni_vp; if (ndstat) { vrele(fromndp->ni_dvp); @@ -1359,9 +1359,9 @@ nfsvno_rename(struct nameidata *fromndp, struct nameid nfsd_recalldelegation(fvp, p); } if (error == 0 && tvp != NULL) { - nfsrv_pnfsremovesetup(tvp, p, &dsdvp, &fh, fname); + nfsrv_pnfsremovesetup(tvp, p, dsdvp, &mirrorcnt, fname); NFSD_DEBUG(4, "nfsvno_rename: pnfsremovesetup" - " dsdvp=%p\n", dsdvp); + " dsdvp=%p\n", dsdvp[0]); } out: if (!error) { @@ -1382,16 +1382,17 @@ out: } /* - * If dsdvp != NULL, it was set up by nfsrv_pnfsremovesetup() and + * If dsdvp[0] != NULL, it was set up by nfsrv_pnfsremovesetup() and * if the rename succeeded, the DS file for the tvp needs to be * removed. */ - if (dsdvp != NULL) { + if (dsdvp[0] != NULL) { if (error == 0) { - nfsrv_pnfsremove(dsdvp, &fh, fname, p); + nfsrv_pnfsremove(dsdvp, mirrorcnt, fname, p); NFSD_DEBUG(4, "nfsvno_rename: pnfsremove\n"); } - NFSVOPUNLOCK(dsdvp, 0); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dsdvp[i], 0); } vrele(tondp->ni_startdir); @@ -3866,16 +3867,15 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, */ static void nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, struct vnode **dvpp, - fhandle_t *fhp, char *fname) + int *mirrorcntp, char *fname) { - struct vnode *dvp[NFSDEV_MAXMIRRORS]; struct nfsmount *nmp[NFSDEV_MAXMIRRORS]; struct vattr va; struct ucred *tcred; char *buf; - int buflen, error, mirrorcnt; + int buflen, error; - *dvpp = NULL; + dvpp[0] = NULL; /* If not an exported regular file or not a pNFS server, just return. */ NFSDDSLOCK(); if (vp->v_type != VREG || (vp->v_mount->mnt_flag & MNT_EXPORTED) == 0 || @@ -3899,61 +3899,136 @@ nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, buflen = 1024; buf = malloc(buflen, M_TEMP, M_WAITOK); /* Get the directory vnode for the DS mount and the file handle. */ - error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, buflen, &mirrorcnt, p, - dvp, nmp, NULL, NULL, fname); - if (error == 0) { - error = nfsvno_getfh(vp, fhp, p); - if (error != 0) { - NFSVOPUNLOCK(dvp[0], 0); - printf("pNFS: nfsrv_pnfsremovesetup getfh=%d\n", error); - } - } else - printf("pNFS: nfsrv_pnfsremovesetup getsockmnt=%d\n", error); + error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, buflen, mirrorcntp, p, + dvpp, nmp, NULL, NULL, fname); free(buf, M_TEMP); - if (error == 0) - *dvpp = dvp[0]; + if (error != 0) + printf("pNFS: nfsrv_pnfsremovesetup getsockmnt=%d\n", error); } /* - * Remove a pNFS data file from a Data Server. - * nfsrv_pnfsremovesetup() must have been called before the MDS file was - * removed to set up the dvp and fill in the FH. + * Remove a DS data file for nfsrv_pnfsremove(). Called for each mirror. + * The arguments are in a structure, so that they can be passed through + * kproc_create() for a kernel process to execute this function. */ +struct nfsrvdsremove { + struct ucred *tcred; + struct vnode *dvp; + NFSPROC_T *p; + int haskproc; + char fname[PNFS_FILENAME_LEN + 1]; +}; + static void -nfsrv_pnfsremove(struct vnode *dvp, fhandle_t *fhp, char *fname, NFSPROC_T *p) +nfsrv_dsremove(struct nfsrvdsremove *dsrm) { - struct vnode *nvp; struct nameidata named; - struct ucred *tcred; + struct vnode *nvp; char *bufp; u_long *hashp; int error; - /* Look up the data file and remove it. */ - tcred = newnfs_getcred(); named.ni_cnd.cn_nameiop = DELETE; named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; - named.ni_cnd.cn_cred = tcred; - named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; + named.ni_cnd.cn_cred = dsrm->tcred; + named.ni_cnd.cn_thread = dsrm->p; + named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | + SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = strlen(fname); - strlcpy(bufp, fname, NAME_MAX); + named.ni_cnd.cn_namelen = strlen(dsrm->fname); + strlcpy(bufp, dsrm->fname, NAME_MAX); NFSD_DEBUG(4, "nfsrv_pnfsremove: filename=%s\n", bufp); - error = VOP_LOOKUP(dvp, &nvp, &named.ni_cnd); + error = VOP_LOOKUP(dsrm->dvp, &nvp, &named.ni_cnd); NFSD_DEBUG(4, "nfsrv_pnfsremove: aft LOOKUP=%d\n", error); if (error == 0) { - error = VOP_REMOVE(dvp, nvp, &named.ni_cnd); + error = VOP_REMOVE(dsrm->dvp, nvp, &named.ni_cnd); vput(nvp); } - NFSFREECRED(tcred); nfsvno_relpathbuf(&named); if (error != 0) printf("pNFS: nfsrv_pnfsremove failed=%d\n", error); } /* + * Start up the thread that will execute nfsrv_dsremove(). + */ +static void +start_dsremove(void *arg) +{ + struct nfsrvdsremove *dsrm; + + dsrm = (struct nfsrvdsremove *)arg; + nfsrv_dsremove(dsrm); + NFSDSRMLOCK(); + dsrm->haskproc = 0; + wakeup(dsrm); + NFSDSRMUNLOCK(); + kproc_exit(0); +} + +/* + * Remove a pNFS data file from a Data Server. + * nfsrv_pnfsremovesetup() must have been called before the MDS file was + * removed to set up the dvp and fill in the FH. + */ +static void +nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, char *fname, NFSPROC_T *p) +{ + struct ucred *tcred; + struct nfsrvdsremove *dsrm, *tdsrm; + int haskproc, i, ret; + + tcred = newnfs_getcred(); + tdsrm = dsrm = malloc(sizeof(*dsrm) * NFSDEV_MAXMIRRORS, M_TEMP, + M_WAITOK); + /* + * Remove the file on each DS mirror, using kernel process(es) for the + * additional mirrors. + */ + haskproc = 0; + for (i = 0; i < mirrorcnt; i++, tdsrm++) { + tdsrm->tcred = tcred; + tdsrm->p = p; + tdsrm->dvp = dvp[i]; + strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); + + /* + * Do the last remove outselves instead of forking a process. + * (This avoids creating kernel processes unless mirrors are + * in use.) + * tdsrm->haskproc marks a create with a kernel process. + * haskproc is set non-zero to indicate at least one kernel + * process has been created. + */ + ret = ENXIO; + if (i < mirrorcnt - 1) { + tdsrm->haskproc = 1; + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, + 0, 0, "nfsdpnfs"); + } + if (ret == 0) + haskproc = 1; + else { + tdsrm->haskproc = 0; + nfsrv_dsremove(tdsrm); + } + } + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSRMLOCK(); + for (tdsrm = dsrm, i = 0; i < mirrorcnt; i++, tdsrm++) { + while (tdsrm->haskproc != 0) + mtx_sleep(tdsrm, NFSDSRMLOCKMUTEXPTR, PVFS, + "nfsprm", 0); + } + NFSDSRMUNLOCK(); + } + NFSFREECRED(tcred); + free(dsrm, M_TEMP); +} + +/* * Generate a file name based on the file handle and put it in *bufp. * Return the number of bytes generated. */ @@ -4211,8 +4286,10 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char * the one(s) prior to the failure will have locked dvp's that * need to be unlocked. */ - for (j = 1; j < i; j++) - NFSVOPUNLOCK(*dvpp++, 0); + for (j = 1; j < i; j++) { + NFSVOPUNLOCK(*dvpp, 0); + *dvpp++ = NULL; + } } return (error); } From owner-svn-src-projects@freebsd.org Tue Aug 15 20:27:10 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9EC15DC8C6E for ; Tue, 15 Aug 2017 20:27:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 78F9983BA5; Tue, 15 Aug 2017 20:27:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7FKR9Dw031493; Tue, 15 Aug 2017 20:27:09 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7FKR89U031476; Tue, 15 Aug 2017 20:27:08 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708152027.v7FKR89U031476@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Tue, 15 Aug 2017 20:27:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322551 - in projects/runtime-coverage/sys/boot: efi/boot1 efi/loader geli i386/boot2 i386/btx/lib i386/gptboot i386/gptzfsboot i386/loader i386/zfsboot mips/beri/loader powerpc/kboot p... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage/sys/boot: efi/boot1 efi/loader geli i386/boot2 i386/btx/lib i386/gptboot i386/gptzfsboot i386/loader i386/zfsboot mips/beri/loader powerpc/kboot powerpc/ofw powerpc/ps3 sp... X-SVN-Commit-Revision: 322551 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Aug 2017 20:27:10 -0000 Author: ngie Date: Tue Aug 15 20:27:07 2017 New Revision: 322551 URL: https://svnweb.freebsd.org/changeset/base/322551 Log: Disable MK_COVERAGE in sys/boot/... None of this should be compiled with MK_COVERAGE enabled, and it fails to compile with it enabled due to unresolved symbols. Modified: projects/runtime-coverage/sys/boot/efi/boot1/Makefile projects/runtime-coverage/sys/boot/efi/loader/Makefile projects/runtime-coverage/sys/boot/geli/Makefile projects/runtime-coverage/sys/boot/i386/boot2/Makefile projects/runtime-coverage/sys/boot/i386/btx/lib/Makefile projects/runtime-coverage/sys/boot/i386/gptboot/Makefile projects/runtime-coverage/sys/boot/i386/gptzfsboot/Makefile projects/runtime-coverage/sys/boot/i386/loader/Makefile projects/runtime-coverage/sys/boot/i386/zfsboot/Makefile projects/runtime-coverage/sys/boot/mips/beri/loader/Makefile projects/runtime-coverage/sys/boot/powerpc/kboot/Makefile projects/runtime-coverage/sys/boot/powerpc/ofw/Makefile projects/runtime-coverage/sys/boot/powerpc/ps3/Makefile projects/runtime-coverage/sys/boot/sparc64/loader/Makefile projects/runtime-coverage/sys/boot/userboot/ficl/Makefile projects/runtime-coverage/sys/boot/userboot/test/Makefile projects/runtime-coverage/sys/boot/userboot/userboot/Makefile Modified: projects/runtime-coverage/sys/boot/efi/boot1/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/efi/boot1/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/efi/boot1/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -4,6 +4,7 @@ MAN= .include +MK_COVERAGE= no MK_SSP= no PROG= boot1.sym Modified: projects/runtime-coverage/sys/boot/efi/loader/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/efi/loader/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/efi/loader/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -4,6 +4,7 @@ MAN= .include +MK_COVERAGE= no MK_SSP= no PROG= loader.sym Modified: projects/runtime-coverage/sys/boot/geli/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/geli/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/geli/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -4,6 +4,7 @@ MAN= .include +MK_COVERAGE= no MK_SSP= no LIB= geliboot Modified: projects/runtime-coverage/sys/boot/i386/boot2/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/boot2/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/boot2/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no FILES= boot boot1 boot2 Modified: projects/runtime-coverage/sys/boot/i386/btx/lib/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/btx/lib/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/btx/lib/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,5 +1,8 @@ # $FreeBSD$ +.include +MK_COVERAGE=no + PROG= crt0.o INTERNALPROG= MAN= Modified: projects/runtime-coverage/sys/boot/i386/gptboot/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/gptboot/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/gptboot/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -2,6 +2,9 @@ .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common +.include +MK_COVERAGE= no + FILES= gptboot MAN= gptboot.8 Modified: projects/runtime-coverage/sys/boot/i386/gptzfsboot/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/gptzfsboot/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/gptzfsboot/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../gptboot \ ${.CURDIR}/../zfsboot ${.CURDIR}/../common \ Modified: projects/runtime-coverage/sys/boot/i386/loader/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/loader/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/loader/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no LOADER?= loader Modified: projects/runtime-coverage/sys/boot/i386/zfsboot/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/i386/zfsboot/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/i386/zfsboot/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,5 +1,8 @@ # $FreeBSD$ +.include +MK_COVERAGE= no + .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common \ ${.CURDIR}/../../common ${.CURDIR}/../../../crypto/skein Modified: projects/runtime-coverage/sys/boot/mips/beri/loader/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/mips/beri/loader/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/mips/beri/loader/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -30,6 +30,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no MAN= Modified: projects/runtime-coverage/sys/boot/powerpc/kboot/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/powerpc/kboot/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/powerpc/kboot/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no MAN= Modified: projects/runtime-coverage/sys/boot/powerpc/ofw/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/powerpc/ofw/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/powerpc/ofw/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no MAN= Modified: projects/runtime-coverage/sys/boot/powerpc/ps3/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/powerpc/ps3/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/powerpc/ps3/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no MAN= Modified: projects/runtime-coverage/sys/boot/sparc64/loader/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/sparc64/loader/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/sparc64/loader/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ .include +MK_COVERAGE= no MK_SSP= no MAN= Modified: projects/runtime-coverage/sys/boot/userboot/ficl/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/userboot/ficl/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/userboot/ficl/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -1,6 +1,7 @@ # $FreeBSD$ # .include +MK_COVERAGE= no MK_SSP= no .PATH: ${.CURDIR}/../../ficl Modified: projects/runtime-coverage/sys/boot/userboot/test/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/userboot/test/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/userboot/test/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -4,6 +4,7 @@ MAN= .include +MK_COVERAGE= no MK_SSP= no PROG= test Modified: projects/runtime-coverage/sys/boot/userboot/userboot/Makefile ============================================================================== --- projects/runtime-coverage/sys/boot/userboot/userboot/Makefile Tue Aug 15 19:29:10 2017 (r322550) +++ projects/runtime-coverage/sys/boot/userboot/userboot/Makefile Tue Aug 15 20:27:07 2017 (r322551) @@ -3,6 +3,7 @@ MAN= .include +MK_COVERAGE= no MK_SSP= no SHLIB_NAME= userboot.so From owner-svn-src-projects@freebsd.org Tue Aug 15 23:59:58 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B0F40DD669F for ; Tue, 15 Aug 2017 23:59:58 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 74CDE65427; Tue, 15 Aug 2017 23:59:58 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7FNxvgo017397; Tue, 15 Aug 2017 23:59:57 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7FNxv3f017394; Tue, 15 Aug 2017 23:59:57 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708152359.v7FNxv3f017394@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Tue, 15 Aug 2017 23:59:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322553 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322553 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Aug 2017 23:59:58 -0000 Author: rmacklem Date: Tue Aug 15 23:59:56 2017 New Revision: 322553 URL: https://svnweb.freebsd.org/changeset/base/322553 Log: Add support for DS writes to mirrors. Also, modify the code that handles DS file creation/removal for mirrors so that it only malloc()s data structures when there are mirrors. This was done since these large number of malloc()s were resulting in significant unnecessary overhead for the non-mirror case. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Tue Aug 15 22:16:15 2017 (r322552) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Tue Aug 15 23:59:56 2017 (r322553) @@ -67,6 +67,7 @@ int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; struct mtx nfsrv_dsrmlock_mtx; +struct mtx nfsrv_dwrpclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -700,6 +701,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); + mtx_init(&nfsrv_dwrpclock_mtx, "nfsdwrpc", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -730,6 +732,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_dslock_mtx); mtx_destroy(&nfsrv_dsclock_mtx); mtx_destroy(&nfsrv_dsrmlock_mtx); + mtx_destroy(&nfsrv_dwrpclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Tue Aug 15 22:16:15 2017 (r322552) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Tue Aug 15 23:59:56 2017 (r322553) @@ -719,6 +719,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDSRMLOCKMUTEXPTR (&nfsrv_dsrmlock_mtx) #define NFSDSRMLOCK() mtx_lock(&nfsrv_dsrmlock_mtx) #define NFSDSRMUNLOCK() mtx_unlock(&nfsrv_dsrmlock_mtx) +#define NFSDWRPCLOCKMUTEXPTR (&nfsrv_dwrpclock_mtx) +#define NFSDWRPCLOCK() mtx_lock(&nfsrv_dwrpclock_mtx) +#define NFSDWRPCUNLOCK() mtx_unlock(&nfsrv_dwrpclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Tue Aug 15 22:16:15 2017 (r322552) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Tue Aug 15 23:59:56 2017 (r322553) @@ -69,6 +69,7 @@ extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; extern struct mtx nfsrv_dsrmlock_mtx; +extern struct mtx nfsrv_dwrpclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -3598,11 +3599,12 @@ struct nfsrvdscreate { fhandle_t fh; struct vattr va; struct vattr createva; - struct pnfsdsattr dsattr; }; static int -nfsrv_dscreate(struct nfsrvdscreate *dsc) +nfsrv_dscreate(struct vnode *dvp, struct vattr *vap, struct vattr *nvap, + fhandle_t *fhp, struct pnfsdsfile *pf, struct pnfsdsattr *dsa, + struct ucred *tcred, NFSPROC_T *p) { struct vnode *nvp; struct nameidata named; @@ -3613,23 +3615,22 @@ nfsrv_dscreate(struct nfsrvdscreate *dsc) struct nfsmount *nmp; int error; - NFSNAMEICNDSET(&named.ni_cnd, dsc->tcred, CREATE, + NFSNAMEICNDSET(&named.ni_cnd, tcred, CREATE, LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; - named.ni_cnd.cn_thread = dsc->p; + named.ni_cnd.cn_thread = p; named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = nfsrv_putfhname(&dsc->fh, bufp); + named.ni_cnd.cn_namelen = nfsrv_putfhname(fhp, bufp); /* Create the date file in the DS mount. */ - error = NFSVOPLOCK(dsc->dvp, LK_EXCLUSIVE); + error = NFSVOPLOCK(dvp, LK_EXCLUSIVE); if (error == 0) { - error = VOP_CREATE(dsc->dvp, &nvp, &named.ni_cnd, - &dsc->createva); - NFSVOPUNLOCK(dsc->dvp, 0); + error = VOP_CREATE(dvp, &nvp, &named.ni_cnd, vap); + NFSVOPUNLOCK(dvp, 0); if (error == 0) { /* Set the ownership of the file. */ - error = VOP_SETATTR(nvp, &dsc->va, dsc->tcred); + error = VOP_SETATTR(nvp, nvap, tcred); NFSD_DEBUG(4, "nfsrv_dscreate:" " setattr-uid=%d\n", error); if (error != 0) @@ -3653,24 +3654,26 @@ nfsrv_dscreate(struct nfsrvdscreate *dsc) error = ENOENT; } - /* Get the attributes of the DS file. */ - if (error == 0) - error = VOP_GETATTR(nvp, &va, dsc->tcred); /* Set extattrs for the DS on the MDS file. */ if (error == 0) { - if (dsc->dsattr.dsa_filerev != UINT64_MAX) { - dsc->dsattr.dsa_filerev = va.va_filerev; - dsc->dsattr.dsa_size = va.va_size; - dsc->dsattr.dsa_atime = va.va_atime; - dsc->dsattr.dsa_mtime = va.va_mtime; + if (dsa != NULL) { + error = VOP_GETATTR(nvp, &va, tcred); + if (error == 0) { + dsa->dsa_filerev = va.va_filerev; + dsa->dsa_size = va.va_size; + dsa->dsa_atime = va.va_atime; + dsa->dsa_mtime = va.va_mtime; + } } - NFSBCOPY(np->n_fhp->nfh_fh, &dsc->pf->dsf_fh, - NFSX_MYFH); - NFSBCOPY(nmp->nm_nam, &dsc->pf->dsf_sin, - nmp->nm_nam->sa_len); - NFSBCOPY(named.ni_cnd.cn_nameptr, - dsc->pf->dsf_filename, - sizeof(dsc->pf->dsf_filename)); + if (error == 0) { + NFSBCOPY(np->n_fhp->nfh_fh, &pf->dsf_fh, + NFSX_MYFH); + NFSBCOPY(nmp->nm_nam, &pf->dsf_sin, + nmp->nm_nam->sa_len); + NFSBCOPY(named.ni_cnd.cn_nameptr, + pf->dsf_filename, + sizeof(pf->dsf_filename)); + } } else printf("pNFS: pnfscreate can't get DS" " attr=%d\n", error); @@ -3689,7 +3692,8 @@ start_dscreate(void *arg) struct nfsrvdscreate *dsc; dsc = (struct nfsrvdscreate *)arg; - dsc->err = nfsrv_dscreate(dsc); + dsc->err = nfsrv_dscreate(dsc->dvp, &dsc->createva, &dsc->va, &dsc->fh, + dsc->pf, NULL, dsc->tcred, dsc->p); NFSDSCLOCK(); dsc->haskproc = 0; wakeup(dsc); @@ -3709,58 +3713,56 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, struct mount *mp; struct pnfsdsfile *pf, *tpf; struct pnfsdsattr dsattr; + struct vattr va; + struct vnode *dvp[NFSDEV_MAXMIRRORS]; + fhandle_t fh; uid_t vauid; gid_t vagid; u_short vamode; struct ucred *tcred; - int error, haskproc, i, mirrorcnt, ret; + int dsdir[NFSDEV_MAXMIRRORS], error, haskproc, i, mirrorcnt, ret; /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; - tdsc = dsc = malloc(sizeof(*dsc) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | - M_ZERO); - tpf = pf = malloc(sizeof(*pf) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | - M_ZERO); NFSDDSLOCK(); ds = TAILQ_FIRST(&nfsrv_devidhead); if (ds == NULL) { NFSDDSUNLOCK(); - free(dsc, M_TEMP); - free(pf, M_TEMP); NFSD_DEBUG(4, "nfsrv_pnfscreate: no srv\n"); return; } /* Put at end of list to implement round-robin usage. */ TAILQ_REMOVE(&nfsrv_devidhead, ds, nfsdev_list); TAILQ_INSERT_TAIL(&nfsrv_devidhead, ds, nfsdev_list); - i = pf->dsf_dir = ds->nfsdev_nextdir; + i = dsdir[0] = ds->nfsdev_nextdir; ds->nfsdev_nextdir = (ds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dsc->dvp = ds->nfsdev_dsdir[i]; + dvp[0] = ds->nfsdev_dsdir[i]; TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { - tpf++; - tdsc++; - i = tpf->dsf_dir = mds->nfsdev_nextdir; + i = dsdir[mirrorcnt] = mds->nfsdev_nextdir; mds->nfsdev_nextdir = (mds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - tdsc->dvp = mds->nfsdev_dsdir[i]; + dvp[mirrorcnt] = mds->nfsdev_dsdir[i]; mirrorcnt++; } NFSDDSUNLOCK(); - tpf = pf; - tdsc = dsc; + dsc = NULL; + if (mirrorcnt > 1) + tdsc = dsc = malloc(sizeof(*dsc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK | M_ZERO); + tpf = pf = malloc(sizeof(*pf) * mirrorcnt, M_TEMP, M_WAITOK | M_ZERO); - error = nfsvno_getfh(vp, &dsc->fh, p); + error = nfsvno_getfh(vp, &fh, p); if (error == 0) - error = VOP_GETATTR(vp, &dsc->va, cred); + error = VOP_GETATTR(vp, &va, cred); if (error == 0) { /* Set the three attributes for "vp" to Setattr the DS vp. */ - vauid = dsc->va.va_uid; - vagid = dsc->va.va_gid; - vamode = dsc->va.va_mode; - VATTR_NULL(&dsc->va); - dsc->va.va_uid = vauid; - dsc->va.va_gid = vagid; - dsc->va.va_mode = vamode; + vauid = va.va_uid; + vagid = va.va_gid; + vamode = va.va_mode; + VATTR_NULL(&va); + va.va_uid = vauid; + va.va_gid = vagid; + va.va_mode = vamode; } else printf("pNFS: pnfscreate getfh+attr=%d\n", error); @@ -3774,43 +3776,37 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, * additional mirrors. */ haskproc = 0; - for (i = 0; i < mirrorcnt && error == 0; i++, tpf++, tdsc++) { + for (i = 0; i < mirrorcnt - 1 && error == 0; i++, tpf++, tdsc++) { + tpf->dsf_dir = dsdir[i]; tdsc->tcred = tcred; tdsc->p = p; tdsc->pf = tpf; tdsc->createva = *vap; - if (i > 0) { - tdsc->fh = dsc->fh; - tdsc->va = dsc->va; - } - if (i != mirrorcnt - 1) - tdsc->dsattr.dsa_filerev = UINT64_MAX; - - /* - * Do the last create outselves instead of forking a process. - * (This avoids creating kernel processes unless mirrors are - * in use.) - * tdsc->haskproc marks a create with a kernel process. - * haskproc is set non-zero to indicate at least one kernel - * process has been created. - */ - ret = ENXIO; - if (i < mirrorcnt - 1) { - tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, - 0, 0, "nfsdpnfs"); - } + tdsc->fh = fh; + tdsc->va = va; + tdsc->dvp = dvp[i]; + tdsc->haskproc = 1; + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, + 0, 0, "nfsdpnfs"); if (ret == 0) haskproc = 1; else { tdsc->haskproc = 0; - error = nfsrv_dscreate(dsc); + ret = nfsrv_dscreate(dvp[i], vap, &va, &fh, tpf, NULL, + tcred, p); + if (error == 0 && ret != 0) + error = ret; } } + if (error == 0) { + tpf->dsf_dir = dsdir[mirrorcnt - 1]; + error = nfsrv_dscreate(dvp[mirrorcnt - 1], vap, &va, &fh, tpf, + &dsattr, tcred, p); + } if (haskproc != 0) { /* Wait for kernel proc(s) to complete. */ NFSDSCLOCK(); - for (tdsc = dsc, i = 0; i < mirrorcnt; i++, tdsc++) { + for (tdsc = dsc, i = 0; i < mirrorcnt - 1; i++, tdsc++) { while (tdsc->haskproc != 0) mtx_sleep(tdsc, NFSDSCLOCKMUTEXPTR, PVFS, "nfspcr", 0); @@ -3830,7 +3826,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (error == 0) error = vn_extattr_set(vp, IO_NODELOCKED, EXTATTR_NAMESPACE_SYSTEM, "pnfsd.dsattr", - sizeof(dsattr), (char *)&dsc->dsattr, p); + sizeof(dsattr), (char *)&dsattr, p); vn_finished_write(mp); if (error != 0) printf("pNFS: pnfscreate setextattr=%d\n", @@ -3903,7 +3899,8 @@ struct nfsrvdsremove { }; static void -nfsrv_dsremove(struct nfsrvdsremove *dsrm) +nfsrv_dsremove(struct vnode *dvp, char *fname, struct ucred *tcred, + NFSPROC_T *p) { struct nameidata named; struct vnode *nvp; @@ -3913,19 +3910,19 @@ nfsrv_dsremove(struct nfsrvdsremove *dsrm) named.ni_cnd.cn_nameiop = DELETE; named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; - named.ni_cnd.cn_cred = dsrm->tcred; - named.ni_cnd.cn_thread = dsrm->p; + named.ni_cnd.cn_cred = tcred; + named.ni_cnd.cn_thread = p; named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = strlen(dsrm->fname); - strlcpy(bufp, dsrm->fname, NAME_MAX); + named.ni_cnd.cn_namelen = strlen(fname); + strlcpy(bufp, fname, NAME_MAX); NFSD_DEBUG(4, "nfsrv_pnfsremove: filename=%s\n", bufp); - error = VOP_LOOKUP(dsrm->dvp, &nvp, &named.ni_cnd); + error = VOP_LOOKUP(dvp, &nvp, &named.ni_cnd); NFSD_DEBUG(4, "nfsrv_pnfsremove: aft LOOKUP=%d\n", error); if (error == 0) { - error = VOP_REMOVE(dsrm->dvp, nvp, &named.ni_cnd); + error = VOP_REMOVE(dvp, nvp, &named.ni_cnd); vput(nvp); } nfsvno_relpathbuf(&named); @@ -3942,7 +3939,7 @@ start_dsremove(void *arg) struct nfsrvdsremove *dsrm; dsrm = (struct nfsrvdsremove *)arg; - nfsrv_dsremove(dsrm); + nfsrv_dsremove(dsrm->dvp, dsrm->fname, dsrm->tcred, dsrm->p); NFSDSRMLOCK(); dsrm->haskproc = 0; wakeup(dsrm); @@ -3963,44 +3960,35 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch int haskproc, i, ret; tcred = newnfs_getcred(); - tdsrm = dsrm = malloc(sizeof(*dsrm) * NFSDEV_MAXMIRRORS, M_TEMP, - M_WAITOK); + dsrm = NULL; + if (mirrorcnt > 1) + dsrm = malloc(sizeof(*dsrm) * mirrorcnt - 1, M_TEMP, M_WAITOK); /* * Remove the file on each DS mirror, using kernel process(es) for the * additional mirrors. */ haskproc = 0; - for (i = 0; i < mirrorcnt; i++, tdsrm++) { + for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { tdsrm->tcred = tcred; tdsrm->p = p; tdsrm->dvp = dvp[i]; strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); - - /* - * Do the last remove outselves instead of forking a process. - * (This avoids creating kernel processes unless mirrors are - * in use.) - * tdsrm->haskproc marks a create with a kernel process. - * haskproc is set non-zero to indicate at least one kernel - * process has been created. - */ - ret = ENXIO; - if (i < mirrorcnt - 1) { - tdsrm->haskproc = 1; - ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, - 0, 0, "nfsdpnfs"); - } + tdsrm->haskproc = 1; + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, + 0, 0, "nfsdpnfs"); if (ret == 0) haskproc = 1; else { tdsrm->haskproc = 0; - nfsrv_dsremove(tdsrm); + nfsrv_dsremove(tdsrm->dvp, tdsrm->fname, tdsrm->tcred, + tdsrm->p); } } + nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); if (haskproc != 0) { /* Wait for kernel proc(s) to complete. */ NFSDSRMLOCK(); - for (tdsrm = dsrm, i = 0; i < mirrorcnt; i++, tdsrm++) { + for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { while (tdsrm->haskproc != 0) mtx_sleep(tdsrm, NFSDSRMLOCKMUTEXPTR, PVFS, "nfsprm", 0); @@ -4405,35 +4393,37 @@ nfsmout: return (error); } +/* + * Do a write RPC on a DS data file, using this structure for the arguments, + * so that this function can be executed by a separate kernel process. + */ +struct nfsrvwritedsdorpc { + fhandle_t fh; + off_t off; + int len; + struct nfsmount *nmp; + struct ucred *cred; + NFSPROC_T *p; + struct mbuf *m; + nfsv4stateid_t st; + int haskproc; + int err; +}; + static int -nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, - NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, - char *cp) +nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, + nfsv4stateid_t *stp, struct nfsvattr *nap, struct mbuf *m, + struct ucred *cred, NFSPROC_T *p) { uint32_t *tl; struct nfsrv_descript *nd; - nfsv4stateid_t st; - struct mbuf *m; - struct nfsvattr na; nfsattrbit_t attrbits; - int commit, error, retlen, offs; + int commit, error, retlen; - NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); - KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); - /* - * Use a stateid where other is an alternating 01010 pattern and - * seqid is 0xffffffff. This value is not defined as special by - * the RFC and is used by the FreeBSD NFS server to indicate an - * MDS->DS proxy operation. - */ - st.other[0] = 0x55555555; - st.other[1] = 0x55555555; - st.other[2] = 0x55555555; - st.seqid = 0xffffffff; - nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, sizeof(*fhp), - NULL, NULL); - nfsm_stateidtom(nd, &st, NFSSTATEID_PUTSTATEID); + nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, + sizeof(fhandle_t), NULL, NULL); + nfsm_stateidtom(nd, stp, NFSSTATEID_PUTSTATEID); NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED); txdr_hyper(off, tl); tl += 2; @@ -4445,13 +4435,8 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s */ *tl++ = txdr_unsigned(NFSWRITE_FILESYNC); *tl = txdr_unsigned(len); - NFSD_DEBUG(4, "nfsrv_writedsrpc: len=%d\n", len); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: len=%d\n", len); - /* Calculate offset in mbuf chain that data starts. */ - offs = cp - mtod(*mpp, char *); - NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); - m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - /* Put data in mbuf chain. */ nd->nd_mb->m_next = m; @@ -4460,7 +4445,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s m = m->m_next; nd->nd_mb = m; nd->nd_bpos = mtod(m, char *) + m->m_len; - NFSD_DEBUG(4, "nfsrv_writedsrpc: lastmb len=%d\n", m->m_len); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: lastmb len=%d\n", m->m_len); /* Do a Getattr for Size, Change and Modify Time. */ NFSZERO_ATTRBIT(&attrbits); @@ -4471,20 +4456,20 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(NFSV4OP_GETATTR); (void) nfsrv_putattrbit(nd, &attrbits); - error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, cred, - NFS_PROG, NFS_VER4, NULL, 1, NULL, NULL); + error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, + cred, NFS_PROG, NFS_VER4, NULL, 1, NULL, NULL); if (error != 0) { free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft writerpc=%d\n", nd->nd_repstat); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft writerpc=%d\n", nd->nd_repstat); /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, &na, NULL, + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); - NFSD_DEBUG(4, "nfsrv_writedsrpc: wcc attr=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; /* @@ -4500,7 +4485,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s commit = fxdr_unsigned(int, *tl); if (commit != NFSWRITE_FILESYNC) error = NFSERR_IO; - NFSD_DEBUG(4, "nfsrv_writedsrpc:retlen=%d commit=%d error=%d\n", + NFSD_DEBUG(4, "nfsrv_writedsdorpc:retlen=%d commit=%d err=%d\n", retlen, commit, error); } else error = nd->nd_repstat; @@ -4513,18 +4498,118 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, &na, NULL, NULL, 0, + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft loadattr=%d\n", error); - if (error == 0) - error = nfsrv_setextattr(vp, &na, p); - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft setextat=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: m_freem(nd->nd_mrep); free(nd, M_TEMP); - NFSD_DEBUG(4, "nfsrv_writedsrpc error=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc error=%d\n", error); + return (error); +} + +/* + * Start up the thread that will execute nfsrv_writedsdorpc(). + */ +static void +start_writedsdorpc(void *arg) +{ + struct nfsrvwritedsdorpc *drpc; + + drpc = (struct nfsrvwritedsdorpc *)arg; + drpc->err = nfsrv_writedsdorpc(drpc->nmp, &drpc->fh, drpc->off, + drpc->len, &drpc->st, NULL, drpc->m, drpc->cred, drpc->p); + NFSDWRPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDWRPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, + NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, + char *cp) +{ + struct nfsrvwritedsdorpc *drpc, *tdrpc; + nfsv4stateid_t st; + struct nfsvattr na; + struct mbuf *m; + int error, haskproc, i, offs, ret, mirrorcnt = 1; + + NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); + KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* Calculate offset in mbuf chain that data starts. */ + offs = cp - mtod(*mpp, char *); + NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); + + /* + * Use a stateid where other is an alternating 01010 pattern and + * seqid is 0xffffffff. This value is not defined as special by + * the RFC and is used by the FreeBSD NFS server to indicate an + * MDS->DS proxy operation. + */ + st.other[0] = 0x55555555; + st.other[1] = 0x55555555; + st.other[2] = 0x55555555; + st.seqid = 0xffffffff; + + /* + * Do the write RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->st = st; + tdrpc->fh = *fhp; + tdrpc->off = off; + tdrpc->len = len; + tdrpc->nmp = nmp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); + tdrpc->haskproc = 1; + ret = kproc_create(start_writedsdorpc, (void *)tdrpc, + NULL, 0, 0, "nfsdpnfs"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, NULL, + tdrpc->m, cred, p); + if (error == 0 && ret != 0) + error = ret; + } + } + m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, &na, m, cred, p); + if (error == 0 && ret != 0) + error = ret; + if (error == 0) + error = nfsrv_setextattr(vp, &na, p); + NFSD_DEBUG(4, "nfsrv_writedsrpc: aft setextat=%d\n", + error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDWRPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDWRPCLOCKMUTEXPTR, PVFS, + "nfspw", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDWRPCUNLOCK(); + } + free(drpc, M_TEMP); return (error); } From owner-svn-src-projects@freebsd.org Wed Aug 16 00:04:59 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F3528DD6C2F for ; Wed, 16 Aug 2017 00:04:58 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BF468658ED; Wed, 16 Aug 2017 00:04:58 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7G04vtY021362; Wed, 16 Aug 2017 00:04:57 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7G04vWT021359; Wed, 16 Aug 2017 00:04:57 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708160004.v7G04vWT021359@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 00:04:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322554 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322554 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 00:04:59 -0000 Author: rmacklem Date: Wed Aug 16 00:04:57 2017 New Revision: 322554 URL: https://svnweb.freebsd.org/changeset/base/322554 Log: Add support for DS writes to mirrors. Also, modify the code that handles DS file creation/removal for mirrors so that it only malloc()s data structures when there are mirrors. This was done since these large number of malloc()s were resulting in significant unnecessary overhead for the non-mirror case. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server/sys/fs/nfs/nfsport.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Tue Aug 15 23:59:56 2017 (r322553) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Wed Aug 16 00:04:57 2017 (r322554) @@ -68,6 +68,7 @@ int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; struct mtx nfsrv_dsrmlock_mtx; +struct mtx nfsrv_dwrpclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -720,6 +721,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); + mtx_init(&nfsrv_dwrpclock_mtx, "nfsdwrpc", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -750,6 +752,7 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_dslock_mtx); mtx_destroy(&nfsrv_dsclock_mtx); mtx_destroy(&nfsrv_dsrmlock_mtx); + mtx_destroy(&nfsrv_dwrpclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Tue Aug 15 23:59:56 2017 (r322553) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Wed Aug 16 00:04:57 2017 (r322554) @@ -719,6 +719,9 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDSRMLOCKMUTEXPTR (&nfsrv_dsrmlock_mtx) #define NFSDSRMLOCK() mtx_lock(&nfsrv_dsrmlock_mtx) #define NFSDSRMUNLOCK() mtx_unlock(&nfsrv_dsrmlock_mtx) +#define NFSDWRPCLOCKMUTEXPTR (&nfsrv_dwrpclock_mtx) +#define NFSDWRPCLOCK() mtx_lock(&nfsrv_dwrpclock_mtx) +#define NFSDWRPCUNLOCK() mtx_unlock(&nfsrv_dwrpclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Tue Aug 15 23:59:56 2017 (r322553) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 00:04:57 2017 (r322554) @@ -69,6 +69,7 @@ extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; extern struct mtx nfsrv_dsrmlock_mtx; +extern struct mtx nfsrv_dwrpclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -3615,11 +3616,12 @@ struct nfsrvdscreate { fhandle_t fh; struct vattr va; struct vattr createva; - struct pnfsdsattr dsattr; }; static int -nfsrv_dscreate(struct nfsrvdscreate *dsc) +nfsrv_dscreate(struct vnode *dvp, struct vattr *vap, struct vattr *nvap, + fhandle_t *fhp, struct pnfsdsfile *pf, struct pnfsdsattr *dsa, + struct ucred *tcred, NFSPROC_T *p) { struct vnode *nvp; struct nameidata named; @@ -3630,23 +3632,22 @@ nfsrv_dscreate(struct nfsrvdscreate *dsc) struct nfsmount *nmp; int error; - NFSNAMEICNDSET(&named.ni_cnd, dsc->tcred, CREATE, + NFSNAMEICNDSET(&named.ni_cnd, tcred, CREATE, LOCKPARENT | LOCKLEAF | SAVESTART | NOCACHE); nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_lkflags = LK_EXCLUSIVE; - named.ni_cnd.cn_thread = dsc->p; + named.ni_cnd.cn_thread = p; named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = nfsrv_putfhname(&dsc->fh, bufp); + named.ni_cnd.cn_namelen = nfsrv_putfhname(fhp, bufp); /* Create the date file in the DS mount. */ - error = NFSVOPLOCK(dsc->dvp, LK_EXCLUSIVE); + error = NFSVOPLOCK(dvp, LK_EXCLUSIVE); if (error == 0) { - error = VOP_CREATE(dsc->dvp, &nvp, &named.ni_cnd, - &dsc->createva); - NFSVOPUNLOCK(dsc->dvp, 0); + error = VOP_CREATE(dvp, &nvp, &named.ni_cnd, vap); + NFSVOPUNLOCK(dvp, 0); if (error == 0) { /* Set the ownership of the file. */ - error = VOP_SETATTR(nvp, &dsc->va, dsc->tcred); + error = VOP_SETATTR(nvp, nvap, tcred); NFSD_DEBUG(4, "nfsrv_dscreate:" " setattr-uid=%d\n", error); if (error != 0) @@ -3670,24 +3671,26 @@ nfsrv_dscreate(struct nfsrvdscreate *dsc) error = ENOENT; } - /* Get the attributes of the DS file. */ - if (error == 0) - error = VOP_GETATTR(nvp, &va, dsc->tcred); /* Set extattrs for the DS on the MDS file. */ if (error == 0) { - if (dsc->dsattr.dsa_filerev != UINT64_MAX) { - dsc->dsattr.dsa_filerev = va.va_filerev; - dsc->dsattr.dsa_size = va.va_size; - dsc->dsattr.dsa_atime = va.va_atime; - dsc->dsattr.dsa_mtime = va.va_mtime; + if (dsa != NULL) { + error = VOP_GETATTR(nvp, &va, tcred); + if (error == 0) { + dsa->dsa_filerev = va.va_filerev; + dsa->dsa_size = va.va_size; + dsa->dsa_atime = va.va_atime; + dsa->dsa_mtime = va.va_mtime; + } } - NFSBCOPY(np->n_fhp->nfh_fh, &dsc->pf->dsf_fh, - NFSX_MYFH); - NFSBCOPY(nmp->nm_nam, &dsc->pf->dsf_sin, - nmp->nm_nam->sa_len); - NFSBCOPY(named.ni_cnd.cn_nameptr, - dsc->pf->dsf_filename, - sizeof(dsc->pf->dsf_filename)); + if (error == 0) { + NFSBCOPY(np->n_fhp->nfh_fh, &pf->dsf_fh, + NFSX_MYFH); + NFSBCOPY(nmp->nm_nam, &pf->dsf_sin, + nmp->nm_nam->sa_len); + NFSBCOPY(named.ni_cnd.cn_nameptr, + pf->dsf_filename, + sizeof(pf->dsf_filename)); + } } else printf("pNFS: pnfscreate can't get DS" " attr=%d\n", error); @@ -3706,7 +3709,8 @@ start_dscreate(void *arg) struct nfsrvdscreate *dsc; dsc = (struct nfsrvdscreate *)arg; - dsc->err = nfsrv_dscreate(dsc); + dsc->err = nfsrv_dscreate(dsc->dvp, &dsc->createva, &dsc->va, &dsc->fh, + dsc->pf, NULL, dsc->tcred, dsc->p); NFSDSCLOCK(); dsc->haskproc = 0; wakeup(dsc); @@ -3726,58 +3730,56 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, struct mount *mp; struct pnfsdsfile *pf, *tpf; struct pnfsdsattr dsattr; + struct vattr va; + struct vnode *dvp[NFSDEV_MAXMIRRORS]; + fhandle_t fh; uid_t vauid; gid_t vagid; u_short vamode; struct ucred *tcred; - int error, haskproc, i, mirrorcnt, ret; + int dsdir[NFSDEV_MAXMIRRORS], error, haskproc, i, mirrorcnt, ret; /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; - tdsc = dsc = malloc(sizeof(*dsc) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | - M_ZERO); - tpf = pf = malloc(sizeof(*pf) * NFSDEV_MAXMIRRORS, M_TEMP, M_WAITOK | - M_ZERO); NFSDDSLOCK(); ds = TAILQ_FIRST(&nfsrv_devidhead); if (ds == NULL) { NFSDDSUNLOCK(); - free(dsc, M_TEMP); - free(pf, M_TEMP); NFSD_DEBUG(4, "nfsrv_pnfscreate: no srv\n"); return; } /* Put at end of list to implement round-robin usage. */ TAILQ_REMOVE(&nfsrv_devidhead, ds, nfsdev_list); TAILQ_INSERT_TAIL(&nfsrv_devidhead, ds, nfsdev_list); - i = pf->dsf_dir = ds->nfsdev_nextdir; + i = dsdir[0] = ds->nfsdev_nextdir; ds->nfsdev_nextdir = (ds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - dsc->dvp = ds->nfsdev_dsdir[i]; + dvp[0] = ds->nfsdev_dsdir[i]; TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { - tpf++; - tdsc++; - i = tpf->dsf_dir = mds->nfsdev_nextdir; + i = dsdir[mirrorcnt] = mds->nfsdev_nextdir; mds->nfsdev_nextdir = (mds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; - tdsc->dvp = mds->nfsdev_dsdir[i]; + dvp[mirrorcnt] = mds->nfsdev_dsdir[i]; mirrorcnt++; } NFSDDSUNLOCK(); - tpf = pf; - tdsc = dsc; + dsc = NULL; + if (mirrorcnt > 1) + tdsc = dsc = malloc(sizeof(*dsc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK | M_ZERO); + tpf = pf = malloc(sizeof(*pf) * mirrorcnt, M_TEMP, M_WAITOK | M_ZERO); - error = nfsvno_getfh(vp, &dsc->fh, p); + error = nfsvno_getfh(vp, &fh, p); if (error == 0) - error = VOP_GETATTR(vp, &dsc->va, cred); + error = VOP_GETATTR(vp, &va, cred); if (error == 0) { /* Set the three attributes for "vp" to Setattr the DS vp. */ - vauid = dsc->va.va_uid; - vagid = dsc->va.va_gid; - vamode = dsc->va.va_mode; - VATTR_NULL(&dsc->va); - dsc->va.va_uid = vauid; - dsc->va.va_gid = vagid; - dsc->va.va_mode = vamode; + vauid = va.va_uid; + vagid = va.va_gid; + vamode = va.va_mode; + VATTR_NULL(&va); + va.va_uid = vauid; + va.va_gid = vagid; + va.va_mode = vamode; } else printf("pNFS: pnfscreate getfh+attr=%d\n", error); @@ -3791,43 +3793,37 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, * additional mirrors. */ haskproc = 0; - for (i = 0; i < mirrorcnt && error == 0; i++, tpf++, tdsc++) { + for (i = 0; i < mirrorcnt - 1 && error == 0; i++, tpf++, tdsc++) { + tpf->dsf_dir = dsdir[i]; tdsc->tcred = tcred; tdsc->p = p; tdsc->pf = tpf; tdsc->createva = *vap; - if (i > 0) { - tdsc->fh = dsc->fh; - tdsc->va = dsc->va; - } - if (i != mirrorcnt - 1) - tdsc->dsattr.dsa_filerev = UINT64_MAX; - - /* - * Do the last create outselves instead of forking a process. - * (This avoids creating kernel processes unless mirrors are - * in use.) - * tdsc->haskproc marks a create with a kernel process. - * haskproc is set non-zero to indicate at least one kernel - * process has been created. - */ - ret = ENXIO; - if (i < mirrorcnt - 1) { - tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, - 0, 0, "nfsdpnfs"); - } + tdsc->fh = fh; + tdsc->va = va; + tdsc->dvp = dvp[i]; + tdsc->haskproc = 1; + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, + 0, 0, "nfsdpnfs"); if (ret == 0) haskproc = 1; else { tdsc->haskproc = 0; - error = nfsrv_dscreate(dsc); + ret = nfsrv_dscreate(dvp[i], vap, &va, &fh, tpf, NULL, + tcred, p); + if (error == 0 && ret != 0) + error = ret; } } + if (error == 0) { + tpf->dsf_dir = dsdir[mirrorcnt - 1]; + error = nfsrv_dscreate(dvp[mirrorcnt - 1], vap, &va, &fh, tpf, + &dsattr, tcred, p); + } if (haskproc != 0) { /* Wait for kernel proc(s) to complete. */ NFSDSCLOCK(); - for (tdsc = dsc, i = 0; i < mirrorcnt; i++, tdsc++) { + for (tdsc = dsc, i = 0; i < mirrorcnt - 1; i++, tdsc++) { while (tdsc->haskproc != 0) mtx_sleep(tdsc, NFSDSCLOCKMUTEXPTR, PVFS, "nfspcr", 0); @@ -3847,7 +3843,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (error == 0) error = vn_extattr_set(vp, IO_NODELOCKED, EXTATTR_NAMESPACE_SYSTEM, "pnfsd.dsattr", - sizeof(dsattr), (char *)&dsc->dsattr, p); + sizeof(dsattr), (char *)&dsattr, p); vn_finished_write(mp); if (error != 0) printf("pNFS: pnfscreate setextattr=%d\n", @@ -3920,7 +3916,8 @@ struct nfsrvdsremove { }; static void -nfsrv_dsremove(struct nfsrvdsremove *dsrm) +nfsrv_dsremove(struct vnode *dvp, char *fname, struct ucred *tcred, + NFSPROC_T *p) { struct nameidata named; struct vnode *nvp; @@ -3930,19 +3927,19 @@ nfsrv_dsremove(struct nfsrvdsremove *dsrm) named.ni_cnd.cn_nameiop = DELETE; named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; - named.ni_cnd.cn_cred = dsrm->tcred; - named.ni_cnd.cn_thread = dsrm->p; + named.ni_cnd.cn_cred = tcred; + named.ni_cnd.cn_thread = p; named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; - named.ni_cnd.cn_namelen = strlen(dsrm->fname); - strlcpy(bufp, dsrm->fname, NAME_MAX); + named.ni_cnd.cn_namelen = strlen(fname); + strlcpy(bufp, fname, NAME_MAX); NFSD_DEBUG(4, "nfsrv_pnfsremove: filename=%s\n", bufp); - error = VOP_LOOKUP(dsrm->dvp, &nvp, &named.ni_cnd); + error = VOP_LOOKUP(dvp, &nvp, &named.ni_cnd); NFSD_DEBUG(4, "nfsrv_pnfsremove: aft LOOKUP=%d\n", error); if (error == 0) { - error = VOP_REMOVE(dsrm->dvp, nvp, &named.ni_cnd); + error = VOP_REMOVE(dvp, nvp, &named.ni_cnd); vput(nvp); } nfsvno_relpathbuf(&named); @@ -3959,7 +3956,7 @@ start_dsremove(void *arg) struct nfsrvdsremove *dsrm; dsrm = (struct nfsrvdsremove *)arg; - nfsrv_dsremove(dsrm); + nfsrv_dsremove(dsrm->dvp, dsrm->fname, dsrm->tcred, dsrm->p); NFSDSRMLOCK(); dsrm->haskproc = 0; wakeup(dsrm); @@ -3980,44 +3977,35 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch int haskproc, i, ret; tcred = newnfs_getcred(); - tdsrm = dsrm = malloc(sizeof(*dsrm) * NFSDEV_MAXMIRRORS, M_TEMP, - M_WAITOK); + dsrm = NULL; + if (mirrorcnt > 1) + dsrm = malloc(sizeof(*dsrm) * mirrorcnt - 1, M_TEMP, M_WAITOK); /* * Remove the file on each DS mirror, using kernel process(es) for the * additional mirrors. */ haskproc = 0; - for (i = 0; i < mirrorcnt; i++, tdsrm++) { + for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { tdsrm->tcred = tcred; tdsrm->p = p; tdsrm->dvp = dvp[i]; strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); - - /* - * Do the last remove outselves instead of forking a process. - * (This avoids creating kernel processes unless mirrors are - * in use.) - * tdsrm->haskproc marks a create with a kernel process. - * haskproc is set non-zero to indicate at least one kernel - * process has been created. - */ - ret = ENXIO; - if (i < mirrorcnt - 1) { - tdsrm->haskproc = 1; - ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, - 0, 0, "nfsdpnfs"); - } + tdsrm->haskproc = 1; + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, + 0, 0, "nfsdpnfs"); if (ret == 0) haskproc = 1; else { tdsrm->haskproc = 0; - nfsrv_dsremove(tdsrm); + nfsrv_dsremove(tdsrm->dvp, tdsrm->fname, tdsrm->tcred, + tdsrm->p); } } + nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); if (haskproc != 0) { /* Wait for kernel proc(s) to complete. */ NFSDSRMLOCK(); - for (tdsrm = dsrm, i = 0; i < mirrorcnt; i++, tdsrm++) { + for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { while (tdsrm->haskproc != 0) mtx_sleep(tdsrm, NFSDSRMLOCKMUTEXPTR, PVFS, "nfsprm", 0); @@ -4422,35 +4410,37 @@ nfsmout: return (error); } +/* + * Do a write RPC on a DS data file, using this structure for the arguments, + * so that this function can be executed by a separate kernel process. + */ +struct nfsrvwritedsdorpc { + fhandle_t fh; + off_t off; + int len; + struct nfsmount *nmp; + struct ucred *cred; + NFSPROC_T *p; + struct mbuf *m; + nfsv4stateid_t st; + int haskproc; + int err; +}; + static int -nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, - NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, - char *cp) +nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, + nfsv4stateid_t *stp, struct nfsvattr *nap, struct mbuf *m, + struct ucred *cred, NFSPROC_T *p) { uint32_t *tl; struct nfsrv_descript *nd; - nfsv4stateid_t st; - struct mbuf *m; - struct nfsvattr na; nfsattrbit_t attrbits; - int commit, error, retlen, offs; + int commit, error, retlen; - NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); - KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); - /* - * Use a stateid where other is an alternating 01010 pattern and - * seqid is 0xffffffff. This value is not defined as special by - * the RFC and is used by the FreeBSD NFS server to indicate an - * MDS->DS proxy operation. - */ - st.other[0] = 0x55555555; - st.other[1] = 0x55555555; - st.other[2] = 0x55555555; - st.seqid = 0xffffffff; - nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, sizeof(*fhp), - NULL, NULL); - nfsm_stateidtom(nd, &st, NFSSTATEID_PUTSTATEID); + nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, + sizeof(fhandle_t), NULL, NULL); + nfsm_stateidtom(nd, stp, NFSSTATEID_PUTSTATEID); NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED); txdr_hyper(off, tl); tl += 2; @@ -4462,13 +4452,8 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s */ *tl++ = txdr_unsigned(NFSWRITE_FILESYNC); *tl = txdr_unsigned(len); - NFSD_DEBUG(4, "nfsrv_writedsrpc: len=%d\n", len); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: len=%d\n", len); - /* Calculate offset in mbuf chain that data starts. */ - offs = cp - mtod(*mpp, char *); - NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); - m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - /* Put data in mbuf chain. */ nd->nd_mb->m_next = m; @@ -4477,7 +4462,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s m = m->m_next; nd->nd_mb = m; nd->nd_bpos = mtod(m, char *) + m->m_len; - NFSD_DEBUG(4, "nfsrv_writedsrpc: lastmb len=%d\n", m->m_len); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: lastmb len=%d\n", m->m_len); /* Do a Getattr for Size, Change and Modify Time. */ NFSZERO_ATTRBIT(&attrbits); @@ -4488,20 +4473,20 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(NFSV4OP_GETATTR); (void) nfsrv_putattrbit(nd, &attrbits); - error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, cred, - NFS_PROG, NFS_VER4, NULL, 1, NULL, NULL); + error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, + cred, NFS_PROG, NFS_VER4, NULL, 1, NULL, NULL); if (error != 0) { free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft writerpc=%d\n", nd->nd_repstat); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft writerpc=%d\n", nd->nd_repstat); /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, &na, NULL, + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); - NFSD_DEBUG(4, "nfsrv_writedsrpc: wcc attr=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; /* @@ -4517,7 +4502,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s commit = fxdr_unsigned(int, *tl); if (commit != NFSWRITE_FILESYNC) error = NFSERR_IO; - NFSD_DEBUG(4, "nfsrv_writedsrpc:retlen=%d commit=%d error=%d\n", + NFSD_DEBUG(4, "nfsrv_writedsdorpc:retlen=%d commit=%d err=%d\n", retlen, commit, error); } else error = nd->nd_repstat; @@ -4530,18 +4515,118 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, &na, NULL, NULL, 0, + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft loadattr=%d\n", error); - if (error == 0) - error = nfsrv_setextattr(vp, &na, p); - NFSD_DEBUG(4, "nfsrv_writedsrpc: aft setextat=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: m_freem(nd->nd_mrep); free(nd, M_TEMP); - NFSD_DEBUG(4, "nfsrv_writedsrpc error=%d\n", error); + NFSD_DEBUG(4, "nfsrv_writedsdorpc error=%d\n", error); + return (error); +} + +/* + * Start up the thread that will execute nfsrv_writedsdorpc(). + */ +static void +start_writedsdorpc(void *arg) +{ + struct nfsrvwritedsdorpc *drpc; + + drpc = (struct nfsrvwritedsdorpc *)arg; + drpc->err = nfsrv_writedsdorpc(drpc->nmp, &drpc->fh, drpc->off, + drpc->len, &drpc->st, NULL, drpc->m, drpc->cred, drpc->p); + NFSDWRPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDWRPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, + NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, + char *cp) +{ + struct nfsrvwritedsdorpc *drpc, *tdrpc; + nfsv4stateid_t st; + struct nfsvattr na; + struct mbuf *m; + int error, haskproc, i, offs, ret, mirrorcnt = 1; + + NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); + KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* Calculate offset in mbuf chain that data starts. */ + offs = cp - mtod(*mpp, char *); + NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); + + /* + * Use a stateid where other is an alternating 01010 pattern and + * seqid is 0xffffffff. This value is not defined as special by + * the RFC and is used by the FreeBSD NFS server to indicate an + * MDS->DS proxy operation. + */ + st.other[0] = 0x55555555; + st.other[1] = 0x55555555; + st.other[2] = 0x55555555; + st.seqid = 0xffffffff; + + /* + * Do the write RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->st = st; + tdrpc->fh = *fhp; + tdrpc->off = off; + tdrpc->len = len; + tdrpc->nmp = nmp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); + tdrpc->haskproc = 1; + ret = kproc_create(start_writedsdorpc, (void *)tdrpc, + NULL, 0, 0, "nfsdpnfs"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, NULL, + tdrpc->m, cred, p); + if (error == 0 && ret != 0) + error = ret; + } + } + m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, &na, m, cred, p); + if (error == 0 && ret != 0) + error = ret; + if (error == 0) + error = nfsrv_setextattr(vp, &na, p); + NFSD_DEBUG(4, "nfsrv_writedsrpc: aft setextat=%d\n", + error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDWRPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDWRPCLOCKMUTEXPTR, PVFS, + "nfspw", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDWRPCUNLOCK(); + } + free(drpc, M_TEMP); return (error); } From owner-svn-src-projects@freebsd.org Wed Aug 16 01:27:49 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DA7F1DDC04D for ; Wed, 16 Aug 2017 01:27:49 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AA4CB68B39; Wed, 16 Aug 2017 01:27:49 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7G1RmFh054238; Wed, 16 Aug 2017 01:27:48 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7G1Rm8T054237; Wed, 16 Aug 2017 01:27:48 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708160127.v7G1Rm8T054237@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Wed, 16 Aug 2017 01:27:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322563 - projects/runtime-coverage X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage X-SVN-Commit-Revision: 322563 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 01:27:50 -0000 Author: ngie Date: Wed Aug 16 01:27:48 2017 New Revision: 322563 URL: https://svnweb.freebsd.org/changeset/base/322563 Log: Disable MK_COVERAGE with LIB32, LIBSOFT, etc Baking coverage into binaries won't work because the architecture is baked into the tool chain. Plus enabling it here doesn't really make a whole lot of sense. Modified: projects/runtime-coverage/Makefile.libcompat Modified: projects/runtime-coverage/Makefile.libcompat ============================================================================== --- projects/runtime-coverage/Makefile.libcompat Wed Aug 16 01:03:04 2017 (r322562) +++ projects/runtime-coverage/Makefile.libcompat Wed Aug 16 01:27:48 2017 (r322563) @@ -123,6 +123,7 @@ LIBCOMPATWMAKEFLAGS+= CC="${XCC} ${LIBCOMPATCFLAGS}" \ CPP="${XCPP} ${LIBCOMPATCFLAGS}" \ DESTDIR=${LIBCOMPATTMP} \ -DNO_CPU_CFLAGS \ + MK_COVERAGE=no \ MK_CTF=no \ -DNO_LINT \ MK_TESTS=no From owner-svn-src-projects@freebsd.org Wed Aug 16 06:43:58 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5BB1EDC8D40 for ; Wed, 16 Aug 2017 06:43:58 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D083772B4A; Wed, 16 Aug 2017 06:43:57 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7G6hvY2084398; Wed, 16 Aug 2017 06:43:57 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7G6hqV6084347; Wed, 16 Aug 2017 06:43:52 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201708160643.v7G6hqV6084347@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 16 Aug 2017 06:43:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322568 - in projects/krb5: . bin/cat bin/chmod bin/date bin/dd bin/df bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests bin/sh/tests/invocation bin... X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5: . bin/cat bin/chmod bin/date bin/dd bin/df bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests bin/sh/tests/invocation bin/sleep bin/test cddl/cont... X-SVN-Commit-Revision: 322568 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 06:43:58 -0000 Author: cy Date: Wed Aug 16 06:43:50 2017 New Revision: 322568 URL: https://svnweb.freebsd.org/changeset/base/322568 Log: MFH r320793-r322566 inclusive, bringing in the latest llvm updates. Added: projects/krb5/bin/sh/tests/invocation/ - copied from r322566, head/bin/sh/tests/invocation/ projects/krb5/contrib/gcc/config/riscv/ - copied from r322566, head/contrib/gcc/config/riscv/ projects/krb5/contrib/mdocml/compat_recallocarray.c - copied unchanged from r321810, head/contrib/mdocml/compat_recallocarray.c projects/krb5/contrib/mdocml/mandoc_xr.c - copied unchanged from r321810, head/contrib/mdocml/mandoc_xr.c projects/krb5/contrib/mdocml/mandoc_xr.h - copied unchanged from r321810, head/contrib/mdocml/mandoc_xr.h projects/krb5/contrib/mdocml/test-recallocarray.c - copied unchanged from r321810, head/contrib/mdocml/test-recallocarray.c projects/krb5/lib/libcasper/services/tests/ - copied from r322566, head/lib/libcasper/services/tests/ projects/krb5/lib/libcasper/tests/ - copied from r322566, head/lib/libcasper/tests/ projects/krb5/sys/dev/iicbus/ds13rtc.c - copied unchanged from r322566, head/sys/dev/iicbus/ds13rtc.c projects/krb5/sys/modules/i2c/ds1307/ - copied from r321831, head/sys/modules/i2c/ds1307/ projects/krb5/sys/modules/i2c/ds13rtc/ - copied from r322566, head/sys/modules/i2c/ds13rtc/ projects/krb5/sys/modules/i2c/ds3231/ - copied from r321831, head/sys/modules/i2c/ds3231/ projects/krb5/sys/modules/i2c/nxprtc/ - copied from r321831, head/sys/modules/i2c/nxprtc/ projects/krb5/sys/modules/i2c/s35390a/ - copied from r322566, head/sys/modules/i2c/s35390a/ projects/krb5/tests/Makefile.inc0 - copied unchanged from r322566, head/tests/Makefile.inc0 projects/krb5/tests/etc/Makefile.inc - copied unchanged from r322566, head/tests/etc/Makefile.inc projects/krb5/tests/sys/geom/class/Makefile.inc - copied unchanged from r322566, head/tests/sys/geom/class/Makefile.inc projects/krb5/tests/sys/pjdfstest/Makefile.inc - copied unchanged from r322566, head/tests/sys/pjdfstest/Makefile.inc projects/krb5/tests/sys/pjdfstest/tests/Makefile.inc - copied unchanged from r322566, head/tests/sys/pjdfstest/tests/Makefile.inc projects/krb5/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX - copied unchanged from r322566, head/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX Deleted: projects/krb5/contrib/gcc/config/riscv64/ projects/krb5/contrib/jemalloc/src/spin.c projects/krb5/sys/boot/fdt/dts/riscv/ projects/krb5/sys/dev/iicbus/ds133x.c projects/krb5/sys/dev/iicbus/ds1374.c projects/krb5/sys/riscv/conf/LOWRISC projects/krb5/sys/riscv/conf/LOWRISC.hints projects/krb5/sys/riscv/conf/QEMU projects/krb5/sys/riscv/conf/ROCKET projects/krb5/sys/riscv/conf/SPIKE projects/krb5/sys/riscv/riscv/sbi.S Modified: projects/krb5/Makefile projects/krb5/Makefile.inc1 projects/krb5/Makefile.libcompat projects/krb5/UPDATING projects/krb5/bin/cat/Makefile projects/krb5/bin/cat/cat.c projects/krb5/bin/chmod/Makefile projects/krb5/bin/date/Makefile projects/krb5/bin/dd/Makefile projects/krb5/bin/df/df.1 projects/krb5/bin/df/df.c projects/krb5/bin/echo/Makefile projects/krb5/bin/expr/Makefile projects/krb5/bin/ln/Makefile projects/krb5/bin/ls/Makefile projects/krb5/bin/mv/Makefile projects/krb5/bin/pax/Makefile projects/krb5/bin/pkill/Makefile projects/krb5/bin/pkill/pkill.c projects/krb5/bin/pwait/Makefile projects/krb5/bin/sh/Makefile projects/krb5/bin/sh/tests/Makefile projects/krb5/bin/sleep/Makefile projects/krb5/bin/test/Makefile projects/krb5/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c projects/krb5/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h projects/krb5/contrib/compiler-rt/lib/builtins/int_lib.h projects/krb5/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h projects/krb5/contrib/elftoolchain/libelf/_libelf_config.h projects/krb5/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h projects/krb5/contrib/jemalloc/include/jemalloc/internal/spin.h projects/krb5/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h projects/krb5/contrib/libc++/include/__bsd_locale_defaults.h projects/krb5/contrib/libc++/include/__bsd_locale_fallbacks.h projects/krb5/contrib/libc++/include/__locale projects/krb5/contrib/libc++/include/mutex projects/krb5/contrib/libc++/include/sstream projects/krb5/contrib/llvm/include/llvm/Analysis/ValueTracking.h projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineFunction.h projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineInstr.h projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/krb5/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/krb5/contrib/llvm/lib/CodeGen/MachineFunction.cpp projects/krb5/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/krb5/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/krb5/contrib/llvm/lib/CodeGen/StackColoring.cpp projects/krb5/contrib/llvm/lib/IR/ConstantFold.cpp projects/krb5/contrib/llvm/lib/Object/COFFImportFile.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/krb5/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp projects/krb5/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/krb5/contrib/llvm/lib/Transforms/Utils/CloneModule.cpp projects/krb5/contrib/llvm/projects/libunwind/include/__libunwind_config.h projects/krb5/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S projects/krb5/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S projects/krb5/contrib/llvm/projects/libunwind/src/config.h projects/krb5/contrib/llvm/projects/libunwind/src/libunwind.cpp projects/krb5/contrib/llvm/tools/clang/include/clang/AST/StmtCXX.h projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/krb5/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/krb5/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/krb5/contrib/llvm/tools/clang/lib/AST/ODRHash.cpp projects/krb5/contrib/llvm/tools/clang/lib/AST/StmtCXX.cpp projects/krb5/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp projects/krb5/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h projects/krb5/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h projects/krb5/contrib/llvm/tools/clang/lib/Headers/avxintrin.h projects/krb5/contrib/llvm/tools/clang/lib/Headers/float.h projects/krb5/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/krb5/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/krb5/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/krb5/contrib/llvm/tools/lld/ELF/Driver.cpp projects/krb5/contrib/llvm/tools/lldb/include/lldb/Target/Platform.h projects/krb5/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/POSIXStopInfo.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/POSIXStopInfo.h projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp projects/krb5/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp projects/krb5/contrib/llvm/tools/lldb/source/Target/Platform.cpp projects/krb5/contrib/mdocml/INSTALL projects/krb5/contrib/mdocml/LICENSE projects/krb5/contrib/mdocml/Makefile projects/krb5/contrib/mdocml/Makefile.depend projects/krb5/contrib/mdocml/NEWS projects/krb5/contrib/mdocml/TODO projects/krb5/contrib/mdocml/apropos.1 projects/krb5/contrib/mdocml/att.c projects/krb5/contrib/mdocml/cgi.c projects/krb5/contrib/mdocml/chars.c projects/krb5/contrib/mdocml/config.h projects/krb5/contrib/mdocml/configure projects/krb5/contrib/mdocml/configure.local.example projects/krb5/contrib/mdocml/demandoc.c projects/krb5/contrib/mdocml/eqn.7 projects/krb5/contrib/mdocml/eqn.c projects/krb5/contrib/mdocml/eqn_html.c projects/krb5/contrib/mdocml/eqn_term.c projects/krb5/contrib/mdocml/gmdiff projects/krb5/contrib/mdocml/html.c projects/krb5/contrib/mdocml/html.h projects/krb5/contrib/mdocml/lib.c projects/krb5/contrib/mdocml/libmandoc.h projects/krb5/contrib/mdocml/libroff.h projects/krb5/contrib/mdocml/main.c projects/krb5/contrib/mdocml/man.7 projects/krb5/contrib/mdocml/man.c projects/krb5/contrib/mdocml/man.options.1 projects/krb5/contrib/mdocml/man_html.c projects/krb5/contrib/mdocml/man_macro.c projects/krb5/contrib/mdocml/man_term.c projects/krb5/contrib/mdocml/man_validate.c projects/krb5/contrib/mdocml/manconf.h projects/krb5/contrib/mdocml/mandoc.1 projects/krb5/contrib/mdocml/mandoc.3 projects/krb5/contrib/mdocml/mandoc.c projects/krb5/contrib/mdocml/mandoc.css projects/krb5/contrib/mdocml/mandoc.h projects/krb5/contrib/mdocml/mandoc_aux.c projects/krb5/contrib/mdocml/mandoc_aux.h projects/krb5/contrib/mdocml/mandoc_char.7 projects/krb5/contrib/mdocml/mandoc_escape.3 projects/krb5/contrib/mdocml/mandoc_headers.3 projects/krb5/contrib/mdocml/mandoc_html.3 projects/krb5/contrib/mdocml/mandocd.c projects/krb5/contrib/mdocml/mandocdb.c projects/krb5/contrib/mdocml/manpath.c projects/krb5/contrib/mdocml/mansearch.c projects/krb5/contrib/mdocml/mdoc.7 projects/krb5/contrib/mdocml/mdoc.c projects/krb5/contrib/mdocml/mdoc_html.c projects/krb5/contrib/mdocml/mdoc_man.c projects/krb5/contrib/mdocml/mdoc_markdown.c projects/krb5/contrib/mdocml/mdoc_term.c projects/krb5/contrib/mdocml/mdoc_validate.c projects/krb5/contrib/mdocml/msec.in projects/krb5/contrib/mdocml/out.c projects/krb5/contrib/mdocml/out.h projects/krb5/contrib/mdocml/read.c projects/krb5/contrib/mdocml/roff.7 projects/krb5/contrib/mdocml/roff.c projects/krb5/contrib/mdocml/roff.h projects/krb5/contrib/mdocml/roff_html.c projects/krb5/contrib/mdocml/roff_int.h projects/krb5/contrib/mdocml/roff_term.c projects/krb5/contrib/mdocml/roff_validate.c projects/krb5/contrib/mdocml/soelim.1 projects/krb5/contrib/mdocml/st.c projects/krb5/contrib/mdocml/st.in projects/krb5/contrib/mdocml/tbl.7 projects/krb5/contrib/mdocml/tbl.c projects/krb5/contrib/mdocml/tbl_data.c projects/krb5/contrib/mdocml/tbl_html.c projects/krb5/contrib/mdocml/tbl_layout.c projects/krb5/contrib/mdocml/tbl_term.c projects/krb5/contrib/mdocml/term.c projects/krb5/contrib/mdocml/term.h projects/krb5/contrib/mdocml/term_ascii.c projects/krb5/contrib/mdocml/term_tab.c projects/krb5/contrib/mdocml/tree.c projects/krb5/contrib/netbsd-tests/lib/libc/gen/t_dir.c projects/krb5/contrib/netbsd-tests/lib/libc/regex/data/repet_bounded.in projects/krb5/contrib/netbsd-tests/lib/libc/regex/data/repet_multi.in projects/krb5/contrib/netbsd-tests/lib/libc/sys/t_mlock.c projects/krb5/contrib/sqlite3/Makefile.msc projects/krb5/contrib/sqlite3/configure projects/krb5/contrib/sqlite3/configure.ac projects/krb5/contrib/sqlite3/shell.c projects/krb5/contrib/sqlite3/sqlite3.c projects/krb5/contrib/sqlite3/sqlite3.h projects/krb5/contrib/sqlite3/sqlite3ext.h projects/krb5/contrib/sqlite3/tea/configure projects/krb5/contrib/sqlite3/tea/configure.ac projects/krb5/contrib/sqlite3/tea/generic/tclsqlite3.c projects/krb5/contrib/subversion/CHANGES projects/krb5/contrib/subversion/NOTICE projects/krb5/contrib/subversion/build-outputs.mk projects/krb5/contrib/subversion/configure projects/krb5/contrib/subversion/subversion/include/svn_version.h projects/krb5/contrib/subversion/subversion/libsvn_client/copy.c projects/krb5/contrib/subversion/subversion/libsvn_client/merge.c projects/krb5/contrib/subversion/subversion/libsvn_fs_fs/cached_data.c projects/krb5/contrib/subversion/subversion/libsvn_fs_fs/cached_data.h projects/krb5/contrib/subversion/subversion/libsvn_fs_fs/rep-cache-db.h projects/krb5/contrib/subversion/subversion/libsvn_fs_fs/rep-cache.c projects/krb5/contrib/subversion/subversion/libsvn_fs_fs/transaction.c projects/krb5/contrib/subversion/subversion/libsvn_fs_x/rep-cache-db.h projects/krb5/contrib/subversion/subversion/libsvn_ra_svn/client.c projects/krb5/contrib/subversion/subversion/libsvn_repos/dump.c projects/krb5/contrib/subversion/subversion/libsvn_subr/config_file.c projects/krb5/contrib/subversion/subversion/libsvn_subr/internal_statements.h projects/krb5/contrib/subversion/subversion/libsvn_subr/io.c projects/krb5/contrib/subversion/subversion/libsvn_subr/version.c projects/krb5/contrib/subversion/subversion/libsvn_wc/wc-checks.h projects/krb5/contrib/subversion/subversion/libsvn_wc/wc-metadata.h projects/krb5/contrib/subversion/subversion/libsvn_wc/wc-queries.h projects/krb5/contrib/subversion/subversion/svnadmin/svnadmin.c projects/krb5/contrib/subversion/win-tests.py projects/krb5/contrib/top/machine.h projects/krb5/contrib/top/top.c projects/krb5/contrib/top/top.xs projects/krb5/contrib/zstd/lib/common/xxhash.c projects/krb5/etc/mtree/BSD.tests.dist projects/krb5/etc/periodic/daily/Makefile projects/krb5/etc/rc.d/Makefile projects/krb5/gnu/usr.bin/binutils/Makefile.inc0 projects/krb5/gnu/usr.bin/binutils/ld/Makefile.arm projects/krb5/gnu/usr.bin/binutils/libbfd/Makefile.arm projects/krb5/gnu/usr.bin/cc/Makefile.inc projects/krb5/gnu/usr.bin/cc/Makefile.tgt projects/krb5/gnu/usr.bin/gdb/Makefile.inc projects/krb5/gnu/usr.bin/gdb/libgdb/Makefile projects/krb5/lib/atf/libatf-c++/Makefile projects/krb5/lib/atf/libatf-c/Makefile projects/krb5/lib/clang/include/clang/Basic/Version.inc projects/krb5/lib/clang/include/lld/Config/Version.inc projects/krb5/lib/clang/include/llvm/Support/VCSRevision.h projects/krb5/lib/csu/riscv/crt1.c projects/krb5/lib/csu/riscv/crti.S projects/krb5/lib/libarchive/Makefile projects/krb5/lib/libc/Makefile projects/krb5/lib/libc/gen/fnmatch.c projects/krb5/lib/libc/gen/tls.c projects/krb5/lib/libc/regex/engine.c projects/krb5/lib/libc/regex/regcomp.c projects/krb5/lib/libc/riscv/gen/fabs.S projects/krb5/lib/libc/stdlib/jemalloc/Makefile.inc projects/krb5/lib/libc/stdlib/set_constraint_handler_s.c projects/krb5/lib/libc/string/memset_s.c projects/krb5/lib/libc/sys/getsockopt.2 projects/krb5/lib/libc/sys/shmget.2 projects/krb5/lib/libc/tests/gen/fnmatch_testcases.h projects/krb5/lib/libc/tests/string/memset_s_test.c projects/krb5/lib/libc/x86/sys/__vdso_gettc.c projects/krb5/lib/libcam/Makefile projects/krb5/lib/libcapsicum/capsicum_helpers.h projects/krb5/lib/libcasper/Makefile projects/krb5/lib/libcasper/services/Makefile projects/krb5/lib/libcasper/services/cap_dns/Makefile projects/krb5/lib/libcasper/services/cap_dns/tests/dns_test.c projects/krb5/lib/libcasper/services/cap_grp/Makefile projects/krb5/lib/libcasper/services/cap_grp/tests/grp_test.c projects/krb5/lib/libcasper/services/cap_pwd/Makefile projects/krb5/lib/libcasper/services/cap_pwd/tests/pwd_test.c projects/krb5/lib/libcasper/services/cap_sysctl/Makefile projects/krb5/lib/libcasper/services/cap_sysctl/tests/Makefile projects/krb5/lib/libcasper/services/cap_sysctl/tests/sysctl_test.c projects/krb5/lib/libcompiler_rt/Makefile.inc projects/krb5/lib/libcrypt/Makefile projects/krb5/lib/libkvm/Makefile projects/krb5/lib/libmp/Makefile projects/krb5/lib/libnv/Makefile projects/krb5/lib/libpathconv/Makefile projects/krb5/lib/libproc/Makefile projects/krb5/lib/libproc/proc_bkpt.c projects/krb5/lib/libproc/proc_regs.c projects/krb5/lib/librt/Makefile projects/krb5/lib/libsbuf/Makefile projects/krb5/lib/libthr/Makefile projects/krb5/lib/libusb/libusb.h projects/krb5/lib/libusb/libusb10_desc.c projects/krb5/lib/libutil/Makefile projects/krb5/lib/libutil/pidfile.c projects/krb5/lib/libxo/Makefile projects/krb5/lib/msun/Makefile projects/krb5/lib/ncurses/ncurses/termcap.c projects/krb5/libexec/atf/atf-check/Makefile projects/krb5/libexec/atf/atf-sh/Makefile projects/krb5/libexec/rtld-elf/Makefile projects/krb5/libexec/rtld-elf/riscv/reloc.c projects/krb5/libexec/rtld-elf/rtld.c projects/krb5/release/packages/kernel.ucl projects/krb5/release/packages/runtime.ucl projects/krb5/release/release.sh projects/krb5/sbin/devd/Makefile projects/krb5/sbin/dhclient/Makefile projects/krb5/sbin/fsck_ffs/setup.c projects/krb5/sbin/growfs/Makefile projects/krb5/sbin/ifconfig/Makefile projects/krb5/sbin/ifconfig/ifconfig.c projects/krb5/sbin/mdconfig/Makefile projects/krb5/sbin/newfs/mkfs.c projects/krb5/sbin/pfctl/Makefile projects/krb5/sbin/route/route.8 projects/krb5/share/examples/Makefile projects/krb5/share/man/man4/enc.4 projects/krb5/share/man/man4/geom.4 projects/krb5/share/man/man4/geom_fox.4 projects/krb5/share/man/man5/src.conf.5 projects/krb5/share/man/man7/arch.7 projects/krb5/share/man/man9/Makefile projects/krb5/share/man/man9/config_intrhook.9 projects/krb5/share/man/man9/disk.9 projects/krb5/share/misc/pci_vendors projects/krb5/share/mk/bsd.README projects/krb5/share/mk/bsd.cpu.mk projects/krb5/share/mk/bsd.lib.mk projects/krb5/share/mk/bsd.links.mk projects/krb5/share/mk/bsd.opts.mk projects/krb5/share/mk/bsd.own.mk projects/krb5/share/mk/bsd.prog.mk projects/krb5/share/mk/bsd.stand.mk projects/krb5/share/mk/src.opts.mk projects/krb5/share/mk/suite.test.mk projects/krb5/share/mk/sys.mk projects/krb5/share/zoneinfo/Makefile projects/krb5/sys/amd64/amd64/efirt.c (contents, props changed) projects/krb5/sys/amd64/amd64/machdep.c projects/krb5/sys/amd64/amd64/pmap.c projects/krb5/sys/amd64/amd64/trap.c projects/krb5/sys/amd64/include/cpufunc.h projects/krb5/sys/amd64/include/efi.h projects/krb5/sys/arm/at91/at91_pmc.c projects/krb5/sys/arm/conf/GENERIC projects/krb5/sys/arm/conf/NOTES projects/krb5/sys/arm/mv/armada38x/armada38x_pl310.c projects/krb5/sys/arm/mv/mv_machdep.c projects/krb5/sys/arm/ti/am335x/am335x_prcm.c projects/krb5/sys/arm64/arm64/debug_monitor.c projects/krb5/sys/arm64/arm64/gic_v3.c projects/krb5/sys/arm64/arm64/gic_v3_fdt.c projects/krb5/sys/arm64/arm64/gicv3_its.c projects/krb5/sys/arm64/arm64/machdep.c projects/krb5/sys/arm64/arm64/mp_machdep.c projects/krb5/sys/arm64/arm64/vfp.c projects/krb5/sys/arm64/include/machdep.h projects/krb5/sys/boot/efi/loader/arch/amd64/trap.c projects/krb5/sys/boot/fdt/dts/arm/armada-385-db-ap.dts projects/krb5/sys/boot/fdt/dts/arm/armada-388-gp.dts projects/krb5/sys/boot/fdt/dts/arm/armada-38x-solidrun-microsom.dtsi projects/krb5/sys/boot/fdt/dts/arm/armada-38x.dtsi projects/krb5/sys/boot/i386/boot2/Makefile projects/krb5/sys/cam/ctl/scsi_ctl.c projects/krb5/sys/cam/nvme/nvme_da.c projects/krb5/sys/cddl/compat/opensolaris/sys/atomic.h projects/krb5/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/krb5/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h projects/krb5/sys/cddl/dev/profile/profile.c projects/krb5/sys/compat/linuxkpi/common/include/linux/completion.h projects/krb5/sys/compat/linuxkpi/common/include/linux/device.h projects/krb5/sys/compat/linuxkpi/common/include/linux/hrtimer.h projects/krb5/sys/compat/linuxkpi/common/include/linux/jiffies.h projects/krb5/sys/compat/linuxkpi/common/include/linux/page.h projects/krb5/sys/compat/linuxkpi/common/include/linux/pci.h projects/krb5/sys/compat/linuxkpi/common/include/linux/sched.h projects/krb5/sys/compat/linuxkpi/common/include/linux/sysfs.h projects/krb5/sys/compat/linuxkpi/common/include/linux/timer.h projects/krb5/sys/compat/linuxkpi/common/include/linux/wait.h projects/krb5/sys/compat/linuxkpi/common/src/linux_compat.c projects/krb5/sys/compat/linuxkpi/common/src/linux_hrtimer.c projects/krb5/sys/compat/linuxkpi/common/src/linux_page.c projects/krb5/sys/compat/linuxkpi/common/src/linux_pci.c projects/krb5/sys/compat/linuxkpi/common/src/linux_schedule.c projects/krb5/sys/compat/linuxkpi/common/src/linux_work.c projects/krb5/sys/conf/Makefile.riscv projects/krb5/sys/conf/NOTES projects/krb5/sys/conf/files projects/krb5/sys/conf/files.riscv projects/krb5/sys/conf/kern.mk projects/krb5/sys/dev/ahci/ahci_pci.c projects/krb5/sys/dev/ata/ata-pci.h projects/krb5/sys/dev/ata/chipsets/ata-intel.c projects/krb5/sys/dev/cxgbe/adapter.h projects/krb5/sys/dev/cxgbe/common/t4_hw.c projects/krb5/sys/dev/cxgbe/t4_main.c projects/krb5/sys/dev/cxgbe/t4_sched.c projects/krb5/sys/dev/cxgbe/tom/t4_listen.c projects/krb5/sys/dev/cyapa/cyapa.c projects/krb5/sys/dev/e1000/if_em.h projects/krb5/sys/dev/efidev/efidev.c projects/krb5/sys/dev/fdt/fdt_common.c projects/krb5/sys/dev/hwpmc/hwpmc_piv.c projects/krb5/sys/dev/hyperv/include/hyperv.h projects/krb5/sys/dev/hyperv/netvsc/hn_nvs.c projects/krb5/sys/dev/hyperv/netvsc/hn_nvs.h projects/krb5/sys/dev/hyperv/netvsc/hn_rndis.c projects/krb5/sys/dev/hyperv/netvsc/hn_rndis.h projects/krb5/sys/dev/hyperv/netvsc/if_hn.c projects/krb5/sys/dev/hyperv/netvsc/if_hnreg.h projects/krb5/sys/dev/hyperv/netvsc/if_hnvar.h projects/krb5/sys/dev/hyperv/pcib/vmbus_pcib.c projects/krb5/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c projects/krb5/sys/dev/hyperv/storvsc/hv_vstorage.h projects/krb5/sys/dev/hyperv/utilities/hv_kvp.c projects/krb5/sys/dev/hyperv/utilities/vmbus_timesync.c projects/krb5/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c projects/krb5/sys/dev/hyperv/vmbus/hyperv.c projects/krb5/sys/dev/hyperv/vmbus/vmbus.c projects/krb5/sys/dev/hyperv/vmbus/vmbus_et.c projects/krb5/sys/dev/iicbus/ds1307.c projects/krb5/sys/dev/iicbus/ds3231.c projects/krb5/sys/dev/iicbus/ds3231reg.h projects/krb5/sys/dev/iicbus/nxprtc.c projects/krb5/sys/dev/iicbus/s35390a.c projects/krb5/sys/dev/mlx4/mlx4_en/en.h projects/krb5/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c projects/krb5/sys/dev/mlx4/mlx4_en/mlx4_en_port.c projects/krb5/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c projects/krb5/sys/dev/mlx4/stats.h projects/krb5/sys/dev/mlx5/mlx5_en/mlx5_en_main.c projects/krb5/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c projects/krb5/sys/dev/mly/mly.c projects/krb5/sys/dev/mmc/bridge.h projects/krb5/sys/dev/mmc/mmc.c projects/krb5/sys/dev/mmc/mmcreg.h projects/krb5/sys/dev/mmc/mmcsd.c projects/krb5/sys/dev/mmc/mmcvar.h projects/krb5/sys/dev/mpr/mpr.c projects/krb5/sys/dev/mpr/mpr_config.c projects/krb5/sys/dev/mpr/mpr_sas.c projects/krb5/sys/dev/mpr/mpr_sas_lsi.c projects/krb5/sys/dev/mpr/mpr_user.c projects/krb5/sys/dev/mpr/mprvar.h projects/krb5/sys/dev/mps/mps.c projects/krb5/sys/dev/mps/mps_config.c projects/krb5/sys/dev/mps/mps_sas.c projects/krb5/sys/dev/mps/mps_sas_lsi.c projects/krb5/sys/dev/mps/mps_user.c projects/krb5/sys/dev/mps/mpsvar.h projects/krb5/sys/dev/nvme/nvme.c projects/krb5/sys/dev/nvme/nvme_sim.c projects/krb5/sys/dev/ofw/ofw_bus_subr.c projects/krb5/sys/dev/ofw/ofw_fdt.c projects/krb5/sys/dev/qlnx/qlnxe/qlnx_def.h projects/krb5/sys/dev/qlnx/qlnxe/qlnx_os.c projects/krb5/sys/dev/qlnx/qlnxe/qlnx_ver.h projects/krb5/sys/dev/sound/pci/hda/hdac.c projects/krb5/sys/dev/sound/pci/hda/hdac.h projects/krb5/sys/dev/sym/sym_hipd.c projects/krb5/sys/dev/usb/controller/xhci_pci.c projects/krb5/sys/dev/usb/quirk/usb_quirk.c projects/krb5/sys/dev/xen/timer/timer.c projects/krb5/sys/geom/geom.h projects/krb5/sys/geom/geom_bsd.c projects/krb5/sys/geom/geom_dev.c projects/krb5/sys/geom/geom_disk.c projects/krb5/sys/geom/geom_disk.h projects/krb5/sys/geom/geom_dump.c projects/krb5/sys/geom/geom_fox.c projects/krb5/sys/geom/geom_mbr.c projects/krb5/sys/geom/geom_subr.c projects/krb5/sys/geom/geom_sunlabel.c projects/krb5/sys/geom/geom_vol_ffs.c projects/krb5/sys/geom/journal/g_journal.c projects/krb5/sys/geom/journal/g_journal.h projects/krb5/sys/geom/part/g_part.c projects/krb5/sys/i386/include/md_var.h projects/krb5/sys/isa/rtc.h projects/krb5/sys/kern/kern_ktr.c projects/krb5/sys/kern/kern_sendfile.c projects/krb5/sys/kern/posix4_mib.c projects/krb5/sys/kern/subr_autoconf.c projects/krb5/sys/kern/subr_blist.c projects/krb5/sys/kern/subr_devmap.c projects/krb5/sys/kern/subr_intr.c projects/krb5/sys/kern/subr_smp.c projects/krb5/sys/kern/vfs_aio.c projects/krb5/sys/kern/vfs_bio.c projects/krb5/sys/libkern/x86/crc32_sse42.c projects/krb5/sys/mips/atheros/if_arge.c projects/krb5/sys/mips/conf/XLP.hints projects/krb5/sys/mips/conf/XLR projects/krb5/sys/mips/conf/XLR64 projects/krb5/sys/mips/conf/XLRN32 projects/krb5/sys/mips/conf/std.XLP projects/krb5/sys/mips/rmi/xlr_i2c.c projects/krb5/sys/modules/dtrace/dtraceall/dtraceall.c projects/krb5/sys/modules/i2c/Makefile projects/krb5/sys/modules/qlnx/qlnxe/Makefile projects/krb5/sys/net/if_enc.c projects/krb5/sys/net/if_vlan.c projects/krb5/sys/net/iflib.c projects/krb5/sys/netinet/if_ether.c projects/krb5/sys/netinet/in.h projects/krb5/sys/netipsec/key.c projects/krb5/sys/netpfil/pf/pf_lb.c projects/krb5/sys/riscv/conf/GENERIC projects/krb5/sys/riscv/include/machdep.h projects/krb5/sys/riscv/include/riscvreg.h projects/krb5/sys/riscv/include/sbi.h projects/krb5/sys/riscv/riscv/cpufunc_asm.S projects/krb5/sys/riscv/riscv/exception.S projects/krb5/sys/riscv/riscv/intr_machdep.c projects/krb5/sys/riscv/riscv/locore.S projects/krb5/sys/riscv/riscv/machdep.c projects/krb5/sys/riscv/riscv/nexus.c projects/krb5/sys/riscv/riscv/pmap.c projects/krb5/sys/riscv/riscv/riscv_console.c projects/krb5/sys/riscv/riscv/swtch.S projects/krb5/sys/riscv/riscv/timer.c projects/krb5/sys/riscv/riscv/trap.c projects/krb5/sys/riscv/riscv/vm_machdep.c projects/krb5/sys/sparc64/sparc64/pmap.c projects/krb5/sys/sys/blist.h projects/krb5/sys/sys/cdefs.h projects/krb5/sys/sys/kernel.h projects/krb5/sys/sys/kerneldump.h projects/krb5/sys/sys/types.h projects/krb5/sys/ufs/ffs/ffs_snapshot.c projects/krb5/sys/ufs/ffs/fs.h projects/krb5/sys/vm/vm_glue.c projects/krb5/sys/vm/vm_kern.c projects/krb5/sys/vm/vm_page.c projects/krb5/sys/vm/vm_page.h projects/krb5/sys/x86/acpica/madt.c projects/krb5/sys/x86/acpica/srat.c projects/krb5/sys/x86/include/apicvar.h projects/krb5/sys/x86/include/x86_smp.h projects/krb5/sys/x86/include/x86_var.h projects/krb5/sys/x86/isa/atrtc.c projects/krb5/sys/x86/x86/identcpu.c projects/krb5/sys/x86/x86/local_apic.c projects/krb5/sys/x86/x86/mp_x86.c projects/krb5/sys/x86/x86/mptable.c projects/krb5/sys/x86/xen/pvcpu_enum.c projects/krb5/tests/Makefile projects/krb5/tests/sys/Makefile.inc projects/krb5/tests/sys/file/newfileops_on_fork_test.c projects/krb5/tests/sys/netinet/fibs_test.sh (contents, props changed) projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc projects/krb5/usr.bin/apply/Makefile projects/krb5/usr.bin/basename/Makefile projects/krb5/usr.bin/bsdcat/Makefile projects/krb5/usr.bin/calendar/Makefile projects/krb5/usr.bin/calendar/calendars/calendar.freebsd projects/krb5/usr.bin/cmp/Makefile projects/krb5/usr.bin/col/Makefile projects/krb5/usr.bin/comm/Makefile projects/krb5/usr.bin/compress/Makefile projects/krb5/usr.bin/cpio/Makefile projects/krb5/usr.bin/csplit/Makefile projects/krb5/usr.bin/cut/Makefile projects/krb5/usr.bin/diff/Makefile projects/krb5/usr.bin/diff3/Makefile projects/krb5/usr.bin/dirname/Makefile projects/krb5/usr.bin/du/Makefile projects/krb5/usr.bin/du/du.1 projects/krb5/usr.bin/du/du.c projects/krb5/usr.bin/du/tests/du_test.sh projects/krb5/usr.bin/file2c/Makefile projects/krb5/usr.bin/getconf/Makefile projects/krb5/usr.bin/grep/Makefile projects/krb5/usr.bin/gzip/Makefile projects/krb5/usr.bin/hexdump/Makefile projects/krb5/usr.bin/ident/Makefile projects/krb5/usr.bin/indent/Makefile projects/krb5/usr.bin/indent/indent.1 projects/krb5/usr.bin/indent/indent.c projects/krb5/usr.bin/join/Makefile projects/krb5/usr.bin/jot/Makefile projects/krb5/usr.bin/lastcomm/Makefile projects/krb5/usr.bin/ldd/ldd.c projects/krb5/usr.bin/limits/Makefile projects/krb5/usr.bin/m4/Makefile projects/krb5/usr.bin/mandoc/Makefile projects/krb5/usr.bin/mkesdb/yacc.y projects/krb5/usr.bin/mkimg/Makefile projects/krb5/usr.bin/mt/mt.1 projects/krb5/usr.bin/ncal/Makefile projects/krb5/usr.bin/pr/Makefile projects/krb5/usr.bin/printf/Makefile projects/krb5/usr.bin/procstat/Makefile projects/krb5/usr.bin/sdiff/Makefile projects/krb5/usr.bin/sed/Makefile projects/krb5/usr.bin/soelim/Makefile projects/krb5/usr.bin/stat/Makefile projects/krb5/usr.bin/tail/Makefile projects/krb5/usr.bin/tar/Makefile projects/krb5/usr.bin/timeout/Makefile projects/krb5/usr.bin/top/machine.c projects/krb5/usr.bin/tr/Makefile projects/krb5/usr.bin/truncate/Makefile projects/krb5/usr.bin/uniq/Makefile projects/krb5/usr.bin/units/Makefile projects/krb5/usr.bin/units/units.1 projects/krb5/usr.bin/uudecode/Makefile projects/krb5/usr.bin/uuencode/Makefile projects/krb5/usr.bin/vmstat/vmstat.c projects/krb5/usr.bin/xargs/Makefile projects/krb5/usr.bin/xinstall/Makefile projects/krb5/usr.bin/xlint/lint1/param.h projects/krb5/usr.bin/xo/Makefile projects/krb5/usr.bin/yacc/Makefile projects/krb5/usr.sbin/acpi/acpidump/acpi.c projects/krb5/usr.sbin/bluetooth/bthidcontrol/sdp.c projects/krb5/usr.sbin/bluetooth/bthidd/bthid_config.h projects/krb5/usr.sbin/bluetooth/bthidd/bthidd.conf.sample projects/krb5/usr.sbin/bluetooth/bthidd/bthidd.h projects/krb5/usr.sbin/bluetooth/bthidd/hid.c projects/krb5/usr.sbin/bluetooth/bthidd/lexer.l projects/krb5/usr.sbin/bluetooth/bthidd/parser.y projects/krb5/usr.sbin/bluetooth/bthidd/server.c projects/krb5/usr.sbin/bluetooth/bthidd/session.c projects/krb5/usr.sbin/bluetooth/rfcomm_pppd/rfcomm_pppd.8 projects/krb5/usr.sbin/bsdinstall/scripts/netconfig_ipv4 projects/krb5/usr.sbin/chown/Makefile projects/krb5/usr.sbin/cpucontrol/cpucontrol.8 projects/krb5/usr.sbin/etcupdate/Makefile projects/krb5/usr.sbin/extattr/Makefile projects/krb5/usr.sbin/fstyp/Makefile projects/krb5/usr.sbin/makefs/Makefile projects/krb5/usr.sbin/newsyslog/Makefile projects/krb5/usr.sbin/nmtree/Makefile projects/krb5/usr.sbin/pw/Makefile projects/krb5/usr.sbin/rpcbind/Makefile projects/krb5/usr.sbin/sa/Makefile projects/krb5/usr.sbin/tzsetup/tzsetup.c Directory Properties: projects/krb5/ (props changed) projects/krb5/cddl/ (props changed) projects/krb5/cddl/contrib/opensolaris/ (props changed) projects/krb5/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/krb5/contrib/compiler-rt/ (props changed) projects/krb5/contrib/elftoolchain/ (props changed) projects/krb5/contrib/gcc/ (props changed) projects/krb5/contrib/libc++/ (props changed) projects/krb5/contrib/llvm/ (props changed) projects/krb5/contrib/llvm/projects/libunwind/ (props changed) projects/krb5/contrib/llvm/tools/clang/ (props changed) projects/krb5/contrib/llvm/tools/lld/ (props changed) projects/krb5/contrib/llvm/tools/lldb/ (props changed) projects/krb5/contrib/mdocml/ (props changed) projects/krb5/contrib/netbsd-tests/ (props changed) projects/krb5/contrib/sqlite3/ (props changed) projects/krb5/contrib/subversion/ (props changed) projects/krb5/contrib/top/ (props changed) projects/krb5/contrib/zstd/ (props changed) projects/krb5/gnu/usr.bin/binutils/ (props changed) projects/krb5/gnu/usr.bin/gdb/ (props changed) projects/krb5/sys/cddl/contrib/opensolaris/ (props changed) projects/krb5/tests/etc/rc.d/routing_test.sh (props changed) projects/krb5/tests/sys/acl/aclfuzzer.sh (props changed) projects/krb5/tests/sys/acl/mktrivial.sh (props changed) projects/krb5/tests/sys/file/flock_test.sh (props changed) projects/krb5/tests/sys/geom/class/eli/conf.sh (props changed) projects/krb5/tests/sys/geom/class/eli/init_alias_test.sh (props changed) projects/krb5/tests/sys/geom/class/gate/ggate_test.sh (props changed) projects/krb5/tests/sys/geom/class/mirror/8_test.sh (props changed) projects/krb5/tests/sys/geom/class/mirror/9_test.sh (props changed) projects/krb5/tests/sys/geom/class/nop/nop_test.sh (props changed) projects/krb5/tests/sys/geom/class/uzip/conf.sh (props changed) projects/krb5/tests/sys/kern/coredump_phnum_test.sh (props changed) projects/krb5/tests/sys/kqueue/libkqueue/kqueue_test.sh (props changed) projects/krb5/tests/sys/mac/portacl/misc.sh (props changed) projects/krb5/tests/sys/mac/portacl/nobody_test.sh (props changed) projects/krb5/tests/sys/mac/portacl/root_test.sh (props changed) projects/krb5/tests/sys/mqueue/mqueue_test.sh (props changed) projects/krb5/tests/sys/opencrypto/runtests.sh (props changed) projects/krb5/tests/sys/vfs/trailing_slash.sh (props changed) Modified: projects/krb5/Makefile ============================================================================== --- projects/krb5/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -245,12 +245,17 @@ _MAKE+= MK_META_MODE=no .endif # !exists(/dev/filemon) && !defined(NO_FILEMON) .endif # !defined(_CAN_USE_META_MODE) -# Guess machine architecture from machine type, and vice versa. +# Guess target architecture from target type, and vice versa, based on +# historic FreeBSD practice of tending to have TARGET == TARGET_ARCH +# expanding to TARGET == TARGET_CPUARCH in recent times, with known +# exceptions. .if !defined(TARGET_ARCH) && defined(TARGET) +# T->TA mapping is usually TARGET with arm64 the odd man out _TARGET_ARCH= ${TARGET:S/arm64/aarch64/} .elif !defined(TARGET) && defined(TARGET_ARCH) && \ ${TARGET_ARCH} != ${MACHINE_ARCH} -_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/powerpcspe/powerpc/:C/riscv64(sf)?/riscv/} +# TA->T mapping is accidentally CPUARCH with aarch64 the odd man out +_TARGET= ${TARGET_ARCH:${__TO_CPUARCH}:C/aarch64/arm64/} .endif .if defined(TARGET) && !defined(_TARGET) _TARGET=${TARGET} Modified: projects/krb5/Makefile.inc1 ============================================================================== --- projects/krb5/Makefile.inc1 Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/Makefile.inc1 Wed Aug 16 06:43:50 2017 (r322568) @@ -346,6 +346,12 @@ SVN= ${_P}/${_S} . endfor .endif SVNFLAGS?= -r HEAD +.if !defined(VCS_REVISION) && empty(VCS_REVISION) +_VCS_REVISION?= $$(eval ${SVNVERSION_CMD} ${SRCDIR}) +. if !empty(_VCS_REVISION) +VCS_REVISION= $$(echo r${_VCS_REVISION}) +. endif +.endif .if !defined(OSRELDATE) .if exists(/usr/include/osreldate.h) @@ -1493,20 +1499,24 @@ packagekernel: .PHONY @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .else @@ -1515,17 +1525,21 @@ packagekernel: .PHONY tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .endif @@ -1618,7 +1632,10 @@ create-world-package-${pkgname}: .PHONY @awk -F\" ' \ /^name/ { printf("===> Creating %s-", $$2); next } \ /^version/ { print $$2; next } \ - ' ${WSTAGEDIR}/${pkgname}.ucl ; \ + ' ${WSTAGEDIR}/${pkgname}.ucl + @if [ "${pkgname}" == "runtime" ]; then \ + sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ + fi ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${WSTAGEDIR}/${pkgname}.ucl \ -p ${WSTAGEDIR}/${pkgname}.plist \ @@ -1629,7 +1646,10 @@ create-world-package-${pkgname}: .PHONY create-kernel-packages: .PHONY _default_flavor= -default .if exists(${KSTAGEDIR}/kernel.meta) -.for flavor in "" -debug +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},} create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/${DISTDIR} ; \ @@ -1644,6 +1664,7 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul -e "s/%DESC%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ awk -F\" ' \ @@ -1655,12 +1676,15 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} -.endfor +. endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" -.for _kernel in ${BUILDKERNELS:[2..-1]} -.if exists(${KSTAGEDIR}/kernel.${_kernel}.meta) -.for flavor in "" -debug +. for _kernel in ${BUILDKERNELS:[2..-1]} +. if exists(${KSTAGEDIR}/kernel.${_kernel}.meta) +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel} create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/kernel.${_kernel} ; \ @@ -1675,6 +1699,7 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ -e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ awk -F\" ' \ @@ -1686,10 +1711,10 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} -.endfor +. endfor +. endif +. endfor .endif -.endfor -.endif sign-packages: _pkgbootstrap .PHONY @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ @@ -2742,8 +2767,7 @@ CD2CFLAGS+= -isystem ${XDDESTDIR}/usr/include -L${XDDE # combined with --sysroot. CD2CFLAGS+= -B${XDDESTDIR}/usr/lib # Force using libc++ for external GCC. -# XXX: This should be checking MK_GNUCXX == no -.if ${X_COMPILER_VERSION} >= 40800 +.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 CD2CXXFLAGS+= -isystem ${XDDESTDIR}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ .endif Modified: projects/krb5/Makefile.libcompat ============================================================================== --- projects/krb5/Makefile.libcompat Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/Makefile.libcompat Wed Aug 16 06:43:50 2017 (r322568) @@ -99,8 +99,7 @@ LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat # sysroot path which --sysroot does not actually do for headers. LIBCOMPATCFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include # Force using libc++ for external GCC. -# XXX: This should be checking MK_GNUCXX == no -.if ${X_COMPILER_VERSION} >= 40800 && \ +.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 && \ (${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no") LIBCOMPATCXXFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include/c++/v1 -std=c++11 \ -nostdinc++ Modified: projects/krb5/UPDATING ============================================================================== --- projects/krb5/UPDATING Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/UPDATING Wed Aug 16 06:43:50 2017 (r322568) @@ -51,6 +51,40 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170814: + "make check" behavior (made in ^/head@r295380) has been changed to + execute from a limited sandbox, as opposed to executing from + ${TESTSDIR}. + + Behavioral changes: + - The "beforecheck" and "aftercheck" targets are now specified. + - ${CHECKDIR} (added in commit noted above) has been removed. + - Legacy behavior can be enabled by setting + WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. + + If the limited sandbox mode is enabled, "make check" will execute + "make distribution", then install, execute the tests, and clean up the + sandbox if successful. + + The "make distribution" and "make install" targets are typically run as + root to set appropriate permissions and ownership at installation time. + The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the + environment if executing "make check" with limited sandbox mode using + an unprivileged user. + +20170808: + Since the switch to GPT disk labels, fsck for UFS/FFS has been + unable to automatically find alternate superblocks. As of r322297, + the information needed to find alternate superblocks has been + moved to the end of the area reserved for the boot block. + Filesystems created with a newfs of this vintage or later + will create the recovery information. If you have a filesystem + created prior to this change and wish to have a recovery block + created for your filesystem, you can do so by running fsck in + forground mode (i.e., do not use the -p or -y options). As it + starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS'' + to which you should answer yes. + 20170728: As of r321665, an NFSv4 server configuration that services Kerberos mounts or clients that do not support the uid/gid in @@ -64,8 +98,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: and upgrading, if you are not already using clang 3.5.0 or higher. 20170701: - WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need them to be - built with the base system. + WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the + r-commands (rlogin, rsh, etc.) to be built with the base system. 20170625: The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is Modified: projects/krb5/bin/cat/Makefile ============================================================================== --- projects/krb5/bin/cat/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/cat/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= cat +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/cat/cat.c ============================================================================== --- projects/krb5/bin/cat/cat.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/cat/cat.c Wed Aug 16 06:43:50 2017 (r322568) @@ -51,12 +51,12 @@ __FBSDID("$FreeBSD$"); #ifndef NO_UDOM_SUPPORT #include #include -#include #include #endif #include #include +#include #include #include #include Modified: projects/krb5/bin/chmod/Makefile ============================================================================== --- projects/krb5/bin/chmod/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/chmod/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= chmod +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/date/Makefile ============================================================================== --- projects/krb5/bin/date/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/date/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -7,6 +7,7 @@ PACKAGE=runtime PROG= date SRCS= date.c netdate.c vary.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/dd/Makefile ============================================================================== --- projects/krb5/bin/dd/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/dd/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -38,6 +38,7 @@ test: ${PROG} gen @rm -f gen 1M_zeroes* obs_zeroes +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/df/df.1 ============================================================================== --- projects/krb5/bin/df/df.1 Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/df/df.1 Wed Aug 16 06:43:50 2017 (r322568) @@ -29,7 +29,7 @@ .\" @(#)df.1 8.3 (Berkeley) 5/8/95 .\" $FreeBSD$ .\" -.Dd December 1, 2015 +.Dd August 8, 2017 .Dt DF 1 .Os .Sh NAME @@ -97,7 +97,7 @@ output. Use unit suffixes: Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte and Pebibyte (based on powers of 1024) in order to reduce the number of digits to four or fewer. -.It Fl H +.It Fl H , Fl Fl si .Dq Human-readable output. Use unit suffixes: Byte, Kilobyte, Megabyte, Modified: projects/krb5/bin/df/df.c ============================================================================== --- projects/krb5/bin/df/df.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/df/df.c Wed Aug 16 06:43:50 2017 (r322568) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include #endif #include +#include #include #include #ifdef MOUNT_CHAR_DEVS @@ -107,6 +108,12 @@ static int thousands; static struct ufs_args mdev; #endif +static const struct option long_options[] = +{ + { "si", no_argument, NULL, 'H' }, + { NULL, no_argument, NULL, 0 }, +}; + int main(int argc, char *argv[]) { @@ -142,7 +149,8 @@ main(int argc, char *argv[]) if (argc < 0) exit(1); - while ((ch = getopt(argc, argv, "abcgHhiklmnPt:T,")) != -1) + while ((ch = getopt_long(argc, argv, "+abcgHhiklmnPt:T,", long_options, + NULL)) != -1) switch (ch) { case 'a': aflag = 1; Modified: projects/krb5/bin/echo/Makefile ============================================================================== --- projects/krb5/bin/echo/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/echo/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= echo +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/expr/Makefile ============================================================================== --- projects/krb5/bin/expr/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/expr/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -12,6 +12,7 @@ CFLAGS+= -fwrapv NO_WMISSING_VARIABLE_DECLARATIONS= +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/ln/Makefile ============================================================================== --- projects/krb5/bin/ln/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/ln/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -10,6 +10,7 @@ MAN= ln.1 symlink.7 LINKS= ${BINDIR}/ln ${BINDIR}/link MLINKS= ln.1 link.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/ls/Makefile ============================================================================== --- projects/krb5/bin/ls/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/ls/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -14,6 +14,7 @@ CFLAGS+= -DCOLORLS LIBADD+= termcapw .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/mv/Makefile ============================================================================== --- projects/krb5/bin/mv/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/mv/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= mv +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/pax/Makefile ============================================================================== --- projects/krb5/bin/pax/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/pax/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -33,6 +33,7 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \ tables.c tar.c tty_subs.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/pkill/Makefile ============================================================================== --- projects/krb5/bin/pkill/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/pkill/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -19,6 +19,7 @@ MLINKS= pkill.1 pgrep.1 SYMLINKS= ../..${BINDIR}/pkill /usr/bin/pkill SYMLINKS+= ../..${BINDIR}/pgrep /usr/bin/pgrep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/pkill/pkill.c ============================================================================== --- projects/krb5/bin/pkill/pkill.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/pkill/pkill.c Wed Aug 16 06:43:50 2017 (r322568) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -656,10 +657,12 @@ killact(const struct kinfo_proc *kp) static int grepact(const struct kinfo_proc *kp) { + static bool first = true; - show_process(kp); - if (!quiet) + if (!quiet && !first) printf("%s", delim); + show_process(kp); + first = false; return (1); } Modified: projects/krb5/bin/pwait/Makefile ============================================================================== --- projects/krb5/bin/pwait/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/pwait/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -5,6 +5,7 @@ PACKAGE=runtime PROG= pwait +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/sh/Makefile ============================================================================== --- projects/krb5/bin/sh/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/sh/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -64,6 +64,7 @@ syntax.c syntax.h: mksyntax token.h: mktokens sh ${.CURDIR}/mktokens +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/sh/tests/Makefile ============================================================================== --- projects/krb5/bin/sh/tests/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/sh/tests/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ TESTS_SUBDIRS+= builtins TESTS_SUBDIRS+= errors TESTS_SUBDIRS+= execution TESTS_SUBDIRS+= expansion +TESTS_SUBDIRS+= invocation TESTS_SUBDIRS+= parameters TESTS_SUBDIRS+= parser TESTS_SUBDIRS+= set-e Modified: projects/krb5/bin/sleep/Makefile ============================================================================== --- projects/krb5/bin/sleep/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/sleep/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= sleep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/bin/test/Makefile ============================================================================== --- projects/krb5/bin/test/Makefile Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/bin/test/Makefile Wed Aug 16 06:43:50 2017 (r322568) @@ -8,6 +8,7 @@ PROG= test LINKS= ${BINDIR}/test ${BINDIR}/[ MLINKS= test.1 [.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/krb5/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/cmd/ztest/ztest.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/cmd/ztest/ztest.c Wed Aug 16 06:43:50 2017 (r322568) @@ -1838,7 +1838,6 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, z uint64_t object = lr->lr_foid; uint64_t offset = lr->lr_offset; uint64_t size = lr->lr_length; - blkptr_t *bp = &lr->lr_blkptr; uint64_t txg = lr->lr_common.lrc_txg; uint64_t crtxg; dmu_object_info_t doi; @@ -1892,11 +1891,7 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, z DMU_READ_NO_PREFETCH); if (error == 0) { - blkptr_t *obp = dmu_buf_get_blkptr(db); - if (obp) { - ASSERT(BP_IS_HOLE(bp)); - *bp = *obp; - } + blkptr_t *bp = &lr->lr_blkptr; zgd->zgd_db = db; zgd->zgd_bp = bp; Modified: projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c Wed Aug 16 06:43:50 2017 (r322568) @@ -250,7 +250,7 @@ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__L dofr[j].dofr_offset + 4; rel->r_info = ELF32_R_INFO(count + dep->de_global, R_PPC_REL32); -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__); #else @@ -430,7 +430,7 @@ prepare_elf64(dtrace_hdl_t *dtp, const dof_hdr_t *dof, dofr[j].dofr_offset; rel->r_info = ELF64_R_INFO(count + dep->de_global, R_PPC64_REL64); -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ #elif defined(__i386) || defined(__amd64) rel->r_offset = s->dofs_offset + @@ -904,7 +904,7 @@ dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, return (0); } -#elif defined(__riscv__) +#elif defined(__riscv) /* XXX */ static int dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela, Modified: projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c Wed Aug 16 06:43:50 2017 (r322568) @@ -311,7 +311,7 @@ pfprint_fp(dtrace_hdl_t *dtp, FILE *fp, const char *fo return (dt_printf(dtp, fp, format, *((double *)addr) / n)); #if !defined(__arm__) && !defined(__powerpc__) && \ - !defined(__mips__) && !defined(__riscv__) + !defined(__mips__) && !defined(__riscv) case sizeof (long double): return (dt_printf(dtp, fp, format, *((long double *)addr) / ldn)); Modified: projects/krb5/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Wed Aug 16 06:43:50 2017 (r322568) @@ -103,7 +103,6 @@ zfs_validate_name(libzfs_handle_t *hdl, const char *pa namecheck_err_t why; char what; - (void) zfs_prop_get_table(); if (entity_namecheck(path, &why, &what) != 0) { if (hdl != NULL) { switch (why) { @@ -3958,14 +3957,19 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap, bo } /* - * We rely on zfs_iter_children() to verify that there are no - * newer snapshots for the given dataset. Therefore, we can - * simply pass the name on to the ioctl() call. There is still - * an unlikely race condition where the user has taken a - * snapshot since we verified that this was the most recent. + * Pass both the filesystem and the wanted snapshot names, + * we would get an error back if the snapshot is destroyed or + * a new snapshot is created before this request is processed. */ - err = lzc_rollback(zhp->zfs_name, NULL, 0); - if (err != 0) { + err = lzc_rollback_to(zhp->zfs_name, snap->zfs_name); + if (err == EXDEV) { + zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, + "'%s' is not the latest snapshot"), snap->zfs_name); + (void) zfs_error_fmt(zhp->zfs_hdl, EZFS_BUSY, + dgettext(TEXT_DOMAIN, "cannot rollback '%s'"), + zhp->zfs_name); + return (err); + } else if (err != 0) { (void) zfs_standard_error_fmt(zhp->zfs_hdl, errno, dgettext(TEXT_DOMAIN, "cannot rollback '%s'"), zhp->zfs_name); Modified: projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c Wed Aug 16 06:43:50 2017 (r322568) @@ -765,6 +765,9 @@ lzc_receive_with_header(const char *snapname, nvlist_t * Roll back this filesystem or volume to its most recent snapshot. * If snapnamebuf is not NULL, it will be filled in with the name * of the most recent snapshot. + * Note that the latest snapshot may change if a new one is concurrently + * created or the current one is destroyed. lzc_rollback_to can be used + * to roll back to a specific latest snapshot. * * Return 0 on success or an errno on failure. */ @@ -784,6 +787,27 @@ lzc_rollback(const char *fsname, char *snapnamebuf, in } nvlist_free(result); + return (err); +} + +/* + * Roll back this filesystem or volume to the specified snapshot, + * if possible. + * + * Return 0 on success or an errno on failure. + */ +int +lzc_rollback_to(const char *fsname, const char *snapname) +{ + nvlist_t *args; + nvlist_t *result; + int err; + + args = fnvlist_alloc(); + fnvlist_add_string(args, "target", snapname); + err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result); + nvlist_free(args); + nvlist_free(result); return (err); } Modified: projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h ============================================================================== --- projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h Wed Aug 16 06:43:50 2017 (r322568) @@ -84,6 +84,7 @@ int lzc_receive_with_header(const char *, nvlist_t *, boolean_t lzc_exists(const char *); int lzc_rollback(const char *, char *, int); +int lzc_rollback_to(const char *, const char *); #ifdef __cplusplus } Modified: projects/krb5/contrib/compiler-rt/lib/builtins/int_lib.h ============================================================================== --- projects/krb5/contrib/compiler-rt/lib/builtins/int_lib.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/compiler-rt/lib/builtins/int_lib.h Wed Aug 16 06:43:50 2017 (r322568) @@ -92,7 +92,7 @@ * does not have dedicated bit counting instructions. */ #if defined(__FreeBSD__) && (defined(__sparc64__) || \ - defined(__mips_n64) || defined(__mips_o64) || defined(__riscv__)) + defined(__mips_n64) || defined(__mips_o64) || defined(__riscv)) si_int __clzsi2(si_int); si_int __ctzsi2(si_int); #define __builtin_clz __clzsi2 Modified: projects/krb5/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ============================================================================== --- projects/krb5/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h Wed Aug 16 06:43:50 2017 (r322568) @@ -83,7 +83,7 @@ namespace __sanitizer { #elif defined(__powerpc64__) const unsigned struct_kernel_stat_sz = 144; const unsigned struct_kernel_stat64_sz = 104; -#elif defined(__riscv__) +#elif defined(__riscv) /* RISCVTODO: check that these values are correct */ const unsigned struct_kernel_stat_sz = 128; const unsigned struct_kernel_stat64_sz = 128; @@ -126,7 +126,7 @@ namespace __sanitizer { #if SANITIZER_LINUX || SANITIZER_FREEBSD -#if defined(__powerpc64__) || defined(__riscv__) || defined(__s390__) +#if defined(__powerpc64__) || defined(__riscv) || defined(__s390__) const unsigned struct___old_kernel_stat_sz = 0; #elif !defined(__sparc__) const unsigned struct___old_kernel_stat_sz = 32; @@ -554,7 +554,7 @@ namespace __sanitizer { typedef long __sanitizer___kernel_off_t; #endif -#if defined(__powerpc__) || defined(__mips__) || defined(__riscv__) +#if defined(__powerpc__) || defined(__mips__) || defined(__riscv) typedef unsigned int __sanitizer___kernel_old_uid_t; typedef unsigned int __sanitizer___kernel_old_gid_t; #else Modified: projects/krb5/contrib/elftoolchain/libelf/_libelf_config.h ============================================================================== --- projects/krb5/contrib/elftoolchain/libelf/_libelf_config.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/elftoolchain/libelf/_libelf_config.h Wed Aug 16 06:43:50 2017 (r322568) @@ -97,7 +97,7 @@ #define LIBELF_BYTEORDER ELFDATA2MSB #define LIBELF_CLASS ELFCLASS32 -#elif defined(__riscv64) +#elif defined(__riscv) && (__riscv_xlen == 64) #define LIBELF_ARCH EM_RISCV #define LIBELF_BYTEORDER ELFDATA2LSB Modified: projects/krb5/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h ============================================================================== --- projects/krb5/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h Wed Aug 16 06:43:50 2017 (r322568) @@ -88,7 +88,7 @@ typedef int malloc_cpuid_t; # ifdef __powerpc__ # define LG_QUANTUM 4 # endif -# ifdef __riscv__ +# ifdef __riscv # define LG_QUANTUM 4 # endif # ifdef __s390__ Modified: projects/krb5/contrib/jemalloc/include/jemalloc/internal/spin.h ============================================================================== --- projects/krb5/contrib/jemalloc/include/jemalloc/internal/spin.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/jemalloc/include/jemalloc/internal/spin.h Wed Aug 16 06:43:50 2017 (r322568) @@ -1,19 +1,13 @@ #ifndef JEMALLOC_INTERNAL_SPIN_H #define JEMALLOC_INTERNAL_SPIN_H -#ifdef JEMALLOC_SPIN_C_ -# define SPIN_INLINE extern inline -#else -# define SPIN_INLINE inline -#endif - #define SPIN_INITIALIZER {0U} typedef struct { unsigned iteration; } spin_t; -SPIN_INLINE void +static inline void spin_adaptive(spin_t *spin) { volatile uint32_t i; Modified: projects/krb5/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h ============================================================================== --- projects/krb5/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h Wed Aug 16 06:43:50 2017 (r322568) @@ -67,7 +67,7 @@ # define LG_VADDR 32 # define LG_SIZEOF_PTR 2 #endif -#ifdef __riscv__ +#ifdef __riscv # define LG_VADDR 64 # define LG_SIZEOF_PTR 3 #endif Modified: projects/krb5/contrib/libc++/include/__bsd_locale_defaults.h ============================================================================== --- projects/krb5/contrib/libc++/include/__bsd_locale_defaults.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/libc++/include/__bsd_locale_defaults.h Wed Aug 16 06:43:50 2017 (r322568) @@ -15,6 +15,10 @@ #ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H #define _LIBCPP_BSD_LOCALE_DEFAULTS_H +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + #define __libcpp_mb_cur_max_l(loc) MB_CUR_MAX_L(loc) #define __libcpp_btowc_l(ch, loc) btowc_l(ch, loc) #define __libcpp_wctob_l(wch, loc) wctob_l(wch, loc) Modified: projects/krb5/contrib/libc++/include/__bsd_locale_fallbacks.h ============================================================================== --- projects/krb5/contrib/libc++/include/__bsd_locale_fallbacks.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/libc++/include/__bsd_locale_fallbacks.h Wed Aug 16 06:43:50 2017 (r322568) @@ -18,6 +18,10 @@ #include #include +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + _LIBCPP_BEGIN_NAMESPACE_STD inline _LIBCPP_ALWAYS_INLINE Modified: projects/krb5/contrib/libc++/include/__locale ============================================================================== --- projects/krb5/contrib/libc++/include/__locale Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/libc++/include/__locale Wed Aug 16 06:43:50 2017 (r322568) @@ -34,7 +34,7 @@ # include #elif defined(_NEWLIB_VERSION) # include -#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \ +#elif (defined(__APPLE__) || defined(__FreeBSD__) \ || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) # include #elif defined(__Fuchsia__) Modified: projects/krb5/contrib/libc++/include/mutex ============================================================================== --- projects/krb5/contrib/libc++/include/mutex Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/libc++/include/mutex Wed Aug 16 06:43:50 2017 (r322568) @@ -116,7 +116,7 @@ class scoped_lock // C++17 (public) using mutex_type = Mutex; // If MutexTypes... consists of the single type Mutex explicit scoped_lock(MutexTypes&... m); - scoped_lock(MutexTypes&... m, adopt_lock_t); + scoped_lock(adopt_lock_t, MutexTypes&... m); ~scoped_lock(); scoped_lock(scoped_lock const&) = delete; scoped_lock& operator=(scoped_lock const&) = delete; @@ -500,7 +500,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock<_Mutex> { (publ ~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();} _LIBCPP_INLINE_VISIBILITY - explicit scoped_lock(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m)) + explicit scoped_lock(adopt_lock_t, mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m)) : __m_(__m) {} scoped_lock(scoped_lock const&) = delete; @@ -522,7 +522,7 @@ class _LIBCPP_TEMPLATE_VIS scoped_lock (public) } _LIBCPP_INLINE_VISIBILITY - scoped_lock(_MArgs&... __margs, adopt_lock_t) + scoped_lock(adopt_lock_t, _MArgs&... __margs) : __t_(__margs...) { } Modified: projects/krb5/contrib/libc++/include/sstream ============================================================================== --- projects/krb5/contrib/libc++/include/sstream Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/libc++/include/sstream Wed Aug 16 06:43:50 2017 (r322568) @@ -249,7 +249,8 @@ basic_stringbuf<_CharT, _Traits, _Allocator>::basic_st template basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(const string_type& __s, ios_base::openmode __wch) - : __hm_(0), + : __str_(__s.get_allocator()), + __hm_(0), __mode_(__wch) { str(__s); Modified: projects/krb5/contrib/llvm/include/llvm/Analysis/ValueTracking.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/Analysis/ValueTracking.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/include/llvm/Analysis/ValueTracking.h Wed Aug 16 06:43:50 2017 (r322568) @@ -312,6 +312,12 @@ template class ArrayRef; const DataLayout &DL, LoopInfo *LI = nullptr, unsigned MaxLookup = 6); + /// This is a wrapper around GetUnderlyingObjects and adds support for basic + /// ptrtoint+arithmetic+inttoptr sequences. + void getUnderlyingObjectsForCodeGen(const Value *V, + SmallVectorImpl &Objects, + const DataLayout &DL); + /// Return true if the only users of this pointer are lifetime markers. bool onlyUsedByLifetimeMarkers(const Value *V); Modified: projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineFunction.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineFunction.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineFunction.h Wed Aug 16 06:43:50 2017 (r322568) @@ -661,6 +661,12 @@ class MachineFunction { (public) MachineMemOperand *getMachineMemOperand(const MachineMemOperand *MMO, int64_t Offset, uint64_t Size); + /// Allocate a new MachineMemOperand by copying an existing one, + /// replacing only AliasAnalysis information. MachineMemOperands are owned + /// by the MachineFunction and need not be explicitly deallocated. + MachineMemOperand *getMachineMemOperand(const MachineMemOperand *MMO, + const AAMDNodes &AAInfo); + using OperandCapacity = ArrayRecycler::Capacity; /// Allocate an array of MachineOperands. This is only intended for use by Modified: projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineInstr.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineInstr.h Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/include/llvm/CodeGen/MachineInstr.h Wed Aug 16 06:43:50 2017 (r322568) @@ -379,6 +379,9 @@ class MachineInstr (public) return NumMemRefs == 1; } + /// Return the number of memory operands. + unsigned getNumMemOperands() const { return NumMemRefs; } + /// API for querying MachineInstr properties. They are the same as MCInstrDesc /// queries but they are bundle aware. Modified: projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp Wed Aug 16 06:43:50 2017 (r322568) @@ -3277,6 +3277,69 @@ void llvm::GetUnderlyingObjects(Value *V, SmallVectorI } while (!Worklist.empty()); } +/// This is the function that does the work of looking through basic +/// ptrtoint+arithmetic+inttoptr sequences. +static const Value *getUnderlyingObjectFromInt(const Value *V) { + do { + if (const Operator *U = dyn_cast(V)) { + // If we find a ptrtoint, we can transfer control back to the + // regular getUnderlyingObjectFromInt. + if (U->getOpcode() == Instruction::PtrToInt) + return U->getOperand(0); + // If we find an add of a constant, a multiplied value, or a phi, it's + // likely that the other operand will lead us to the base + // object. We don't have to worry about the case where the + // object address is somehow being computed by the multiply, + // because our callers only care when the result is an + // identifiable object. + if (U->getOpcode() != Instruction::Add || + (!isa(U->getOperand(1)) && + Operator::getOpcode(U->getOperand(1)) != Instruction::Mul && + !isa(U->getOperand(1)))) + return V; + V = U->getOperand(0); + } else { + return V; + } + assert(V->getType()->isIntegerTy() && "Unexpected operand type!"); + } while (true); +} + +/// This is a wrapper around GetUnderlyingObjects and adds support for basic +/// ptrtoint+arithmetic+inttoptr sequences. +void llvm::getUnderlyingObjectsForCodeGen(const Value *V, + SmallVectorImpl &Objects, + const DataLayout &DL) { + SmallPtrSet Visited; + SmallVector Working(1, V); + do { + V = Working.pop_back_val(); + + SmallVector Objs; + GetUnderlyingObjects(const_cast(V), Objs, DL); + + for (Value *V : Objs) { + if (!Visited.insert(V).second) + continue; + if (Operator::getOpcode(V) == Instruction::IntToPtr) { + const Value *O = + getUnderlyingObjectFromInt(cast(V)->getOperand(0)); + if (O->getType()->isPointerTy()) { + Working.push_back(O); + continue; + } + } + // If GetUnderlyingObjects fails to find an identifiable object, + // getUnderlyingObjectsForCodeGen also fails for safety. + if (!isIdentifiedObject(V)) { + Objects.clear(); + return; + } + Objects.push_back(const_cast(V)); + } + } while (!Working.empty()); +} + /// Return true if the only users of this pointer are lifetime markers. bool llvm::onlyUsedByLifetimeMarkers(const Value *V) { for (const User *U : V->users()) { Modified: projects/krb5/contrib/llvm/lib/CodeGen/BranchFolding.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/BranchFolding.cpp Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/lib/CodeGen/BranchFolding.cpp Wed Aug 16 06:43:50 2017 (r322568) @@ -1475,13 +1475,14 @@ ReoptimizeBlock: bool PredAnalyzable = !TII->analyzeBranch(*Pred, PredTBB, PredFBB, PredCond, true); - if (PredAnalyzable && !PredCond.empty() && PredTBB == MBB) { + if (PredAnalyzable && !PredCond.empty() && PredTBB == MBB && + PredTBB != PredFBB) { // The predecessor has a conditional branch to this block which consists // of only a tail call. Try to fold the tail call into the conditional // branch. if (TII->canMakeTailCallConditional(PredCond, TailCall)) { // TODO: It would be nice if analyzeBranch() could provide a pointer - // to the branch insturction so replaceBranchWithTailCall() doesn't + // to the branch instruction so replaceBranchWithTailCall() doesn't // have to search for it. TII->replaceBranchWithTailCall(*Pred, PredCond, TailCall); ++NumTailCalls; Modified: projects/krb5/contrib/llvm/lib/CodeGen/MachineFunction.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/MachineFunction.cpp Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/lib/CodeGen/MachineFunction.cpp Wed Aug 16 06:43:50 2017 (r322568) @@ -330,6 +330,20 @@ MachineFunction::getMachineMemOperand(const MachineMem MMO->getOrdering(), MMO->getFailureOrdering()); } +MachineMemOperand * +MachineFunction::getMachineMemOperand(const MachineMemOperand *MMO, + const AAMDNodes &AAInfo) { + MachinePointerInfo MPI = MMO->getValue() ? + MachinePointerInfo(MMO->getValue(), MMO->getOffset()) : + MachinePointerInfo(MMO->getPseudoValue(), MMO->getOffset()); + + return new (Allocator) + MachineMemOperand(MPI, MMO->getFlags(), MMO->getSize(), + MMO->getBaseAlignment(), AAInfo, + MMO->getRanges(), MMO->getSyncScopeID(), + MMO->getOrdering(), MMO->getFailureOrdering()); +} + MachineInstr::mmo_iterator MachineFunction::allocateMemRefsArray(unsigned long Num) { return Allocator.Allocate(Num); Modified: projects/krb5/contrib/llvm/lib/CodeGen/MachineInstr.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/MachineInstr.cpp Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/lib/CodeGen/MachineInstr.cpp Wed Aug 16 06:43:50 2017 (r322568) @@ -578,10 +578,8 @@ bool MachinePointerInfo::isDereferenceable(unsigned Si if (BasePtr == nullptr) return false; - return isDereferenceableAndAlignedPointer(BasePtr, 1, - APInt(DL.getPointerSize(), - Offset + Size), - DL); + return isDereferenceableAndAlignedPointer( + BasePtr, 1, APInt(DL.getPointerSizeInBits(), Offset + Size), DL); } /// getConstantPool - Return a MachinePointerInfo record that refers to the Modified: projects/krb5/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp Wed Aug 16 06:33:48 2017 (r322567) +++ projects/krb5/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp Wed Aug 16 06:43:50 2017 (r322568) @@ -121,63 +121,6 @@ ScheduleDAGInstrs::ScheduleDAGInstrs(MachineFunction & SchedModel.init(ST.getSchedModel(), &ST, TII); } -/// This is the function that does the work of looking through basic -/// ptrtoint+arithmetic+inttoptr sequences. -static const Value *getUnderlyingObjectFromInt(const Value *V) { - do { - if (const Operator *U = dyn_cast(V)) { - // If we find a ptrtoint, we can transfer control back to the - // regular getUnderlyingObjectFromInt. - if (U->getOpcode() == Instruction::PtrToInt) - return U->getOperand(0); - // If we find an add of a constant, a multiplied value, or a phi, it's - // likely that the other operand will lead us to the base *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Wed Aug 16 08:19:46 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3ED81DCCC3B for ; Wed, 16 Aug 2017 08:19:46 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1633B7562C; Wed, 16 Aug 2017 08:19:46 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7G8Jjb1021273; Wed, 16 Aug 2017 08:19:45 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7G8JiO9021268; Wed, 16 Aug 2017 08:19:44 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201708160819.v7G8JiO9021268@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 16 Aug 2017 08:19:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322570 - in projects/krb5/sys: compat/linuxkpi/common/include/linux modules/i2c modules/i2c/ds1307 modules/i2c/ds3231 modules/i2c/nxprtc X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5/sys: compat/linuxkpi/common/include/linux modules/i2c modules/i2c/ds1307 modules/i2c/ds3231 modules/i2c/nxprtc X-SVN-Commit-Revision: 322570 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 08:19:46 -0000 Author: cy Date: Wed Aug 16 08:19:44 2017 New Revision: 322570 URL: https://svnweb.freebsd.org/changeset/base/322570 Log: MFH five files missed in 322568. Replaced: projects/krb5/sys/modules/i2c/Makefile - copied unchanged from r322566, head/sys/modules/i2c/Makefile projects/krb5/sys/modules/i2c/ds1307/Makefile - copied unchanged from r322566, head/sys/modules/i2c/ds1307/Makefile projects/krb5/sys/modules/i2c/ds3231/Makefile - copied unchanged from r322566, head/sys/modules/i2c/ds3231/Makefile projects/krb5/sys/modules/i2c/nxprtc/Makefile - copied unchanged from r322566, head/sys/modules/i2c/nxprtc/Makefile Modified: projects/krb5/sys/compat/linuxkpi/common/include/linux/device.h Directory Properties: projects/krb5/ (props changed) Modified: projects/krb5/sys/compat/linuxkpi/common/include/linux/device.h ============================================================================== --- projects/krb5/sys/compat/linuxkpi/common/include/linux/device.h Wed Aug 16 07:59:57 2017 (r322569) +++ projects/krb5/sys/compat/linuxkpi/common/include/linux/device.h Wed Aug 16 08:19:44 2017 (r322570) @@ -113,6 +113,9 @@ struct device { unsigned int msix; unsigned int msix_max; const struct attribute_group **groups; + + spinlock_t devres_lock; + struct list_head devres_head; }; extern struct device linux_root_device; @@ -290,6 +293,9 @@ device_initialize(struct device *dev) dev->bsddev = bsddev; MPASS(dev->bsddev != NULL); kobject_init(&dev->kobj, &linux_dev_ktype); + + spin_lock_init(&dev->devres_lock); + INIT_LIST_HEAD(&dev->devres_head); } static inline int Copied: projects/krb5/sys/modules/i2c/Makefile (from r322566, head/sys/modules/i2c/Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/modules/i2c/Makefile Wed Aug 16 08:19:44 2017 (r322570, copy of r322566, head/sys/modules/i2c/Makefile) @@ -0,0 +1,22 @@ +# $FreeBSD$ + +SUBDIR = \ + controllers \ + cyapa \ + ds1307 \ + ds13rtc \ + ds3231 \ + if_ic \ + iic \ + iicbb \ + iicbus \ + iicsmb \ + isl \ + isl12xx \ + jedec_ts \ + nxprtc \ + s35390a \ + smb \ + smbus \ + +.include Copied: projects/krb5/sys/modules/i2c/ds1307/Makefile (from r322566, head/sys/modules/i2c/ds1307/Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/modules/i2c/ds1307/Makefile Wed Aug 16 08:19:44 2017 (r322570, copy of r322566, head/sys/modules/i2c/ds1307/Makefile) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/iicbus +KMOD = ds1307 +SRCS = ds1307.c bus_if.h clock_if.h device_if.h iicbus_if.h ofw_bus_if.h + +.include Copied: projects/krb5/sys/modules/i2c/ds3231/Makefile (from r322566, head/sys/modules/i2c/ds3231/Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/modules/i2c/ds3231/Makefile Wed Aug 16 08:19:44 2017 (r322570, copy of r322566, head/sys/modules/i2c/ds3231/Makefile) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/iicbus +KMOD = ds3231 +SRCS = ds3231.c bus_if.h clock_if.h device_if.h iicbus_if.h ofw_bus_if.h + +.include Copied: projects/krb5/sys/modules/i2c/nxprtc/Makefile (from r322566, head/sys/modules/i2c/nxprtc/Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/modules/i2c/nxprtc/Makefile Wed Aug 16 08:19:44 2017 (r322570, copy of r322566, head/sys/modules/i2c/nxprtc/Makefile) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/iicbus +KMOD = nxprtc +SRCS = nxprtc.c bus_if.h clock_if.h device_if.h iicbus_if.h ofw_bus_if.h + +.include From owner-svn-src-projects@freebsd.org Wed Aug 16 13:52:08 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7AEFADDD0B5 for ; Wed, 16 Aug 2017 13:52:08 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 514B184479; Wed, 16 Aug 2017 13:52:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 83BC810AB01; Wed, 16 Aug 2017 09:52:06 -0400 (EDT) From: John Baldwin To: Ngie Cooper Cc: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r322551 - in projects/runtime-coverage/sys/boot: efi/boot1 efi/loader geli i386/boot2 i386/btx/lib i386/gptboot i386/gptzfsboot i386/loader i386/zfsboot mips/beri/loader powerpc/kboot p... Date: Wed, 16 Aug 2017 06:41:24 -0700 Message-ID: <4555783.zflod2nrqZ@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201708152027.v7FKR89U031476@repo.freebsd.org> References: <201708152027.v7FKR89U031476@repo.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Wed, 16 Aug 2017 09:52:06 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 13:52:08 -0000 On Tuesday, August 15, 2017 08:27:08 PM Ngie Cooper wrote: > Author: ngie > Date: Tue Aug 15 20:27:07 2017 > New Revision: 322551 > URL: https://svnweb.freebsd.org/changeset/base/322551 > > Log: > Disable MK_COVERAGE in sys/boot/... > > None of this should be compiled with MK_COVERAGE enabled, and it > fails to compile with it enabled due to unresolved symbols. Would it be a smaller change to make use of Makefile.inc for this? It looks like there is already a sys/boot/Makefile.inc to set other settings that affect all of sys/boot and the various subdirectories of sys/boot all have Makefile.inc's that include ../Makefile.inc. -- John Baldwin From owner-svn-src-projects@freebsd.org Wed Aug 16 15:01:45 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3FDC2DE0D3F for ; Wed, 16 Aug 2017 15:01:45 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x233.google.com (mail-io0-x233.google.com [IPv6:2607:f8b0:4001:c06::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0433D1EDB for ; Wed, 16 Aug 2017 15:01:45 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x233.google.com with SMTP id c74so13884348iod.4 for ; Wed, 16 Aug 2017 08:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=XjIL10xyQvzwn6ddRncZgYZAQL7HOQbP4A5kED68byc=; b=LO5MsNtlBk7AOyzLhwIFqmBDSVyxmqmePD070hM4o6mgp1mH1IMyVzMtDrM2nWuWaV eo2Ud7MHXo0qGW6Lsx/MuYyya+YxiedY0/Q+44lBV9zhRAWq2p5ZYM8uhxf49DoUQl0y Q8/4+4CjtiUdhwEW3cNM1RL/0VbLvfFfU86XD1bgvy1OpuX8/xGu3gQhyYDVpSYfVWPb Fz0JmRTaKlPHo0WqkoiV7AjObc34xXK3y6h3IV9Xq3dAVaXdROuACH0xP9DIpsOPxR6I rlLbmCNTlU4jEC4gfh04yt6gd5ABwdlpcCIiV2zaQ+2WYTCiE17x03rkd8imkMBLWjtv HvOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=XjIL10xyQvzwn6ddRncZgYZAQL7HOQbP4A5kED68byc=; b=MwEAgbRpphIXf+cO8Pi50u62e6Ta+1nxMsrOP33dHfSXBlPCObXD5vVdtnEclCf5ua I6YLRfqp++On2t5xVgxfYweCnoJc0IXo2V/i6sGaddZ2FiIIKcHX5aUcrEl29RzwNzxL cznBPIJbwlb9uMK/3CrxEhVnp54pXXnLcxcuN1Fifo3znynXs8noOZCpAkk3QVNAGBSE sH4uo1ehnszIhroviaQJxIhHfAg3lpfhUHh6v/37HIk/i3KRTxEG90Ei9YSZsk6tfdhX Tmoor8C8tZZ+QUNwcY8ZgPhmNA/VMl+12sUh51Kylj+bnagJBLV0cKrxcuOdn6c1aoDc kDuw== X-Gm-Message-State: AHYfb5jQqZO9Q2xnfEG5+LrD5t/FIyW3dlbFwcuxxEeJNyJuCcvBh6kT 0q7bw0yikk2BLQ6JRMkMadLGZdpWFOQt X-Received: by 10.107.136.104 with SMTP id k101mr1696508iod.62.1502895702985; Wed, 16 Aug 2017 08:01:42 -0700 (PDT) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.10.71 with HTTP; Wed, 16 Aug 2017 08:01:42 -0700 (PDT) X-Originating-IP: [50.253.99.174] In-Reply-To: <4555783.zflod2nrqZ@ralph.baldwin.cx> References: <201708152027.v7FKR89U031476@repo.freebsd.org> <4555783.zflod2nrqZ@ralph.baldwin.cx> From: Warner Losh Date: Wed, 16 Aug 2017 09:01:42 -0600 X-Google-Sender-Auth: V-M8JikUaBJjxDs92CSNFUW0h_Q Message-ID: Subject: Re: svn commit: r322551 - in projects/runtime-coverage/sys/boot: efi/boot1 efi/loader geli i386/boot2 i386/btx/lib i386/gptboot i386/gptzfsboot i386/loader i386/zfsboot mips/beri/loader powerpc/kboot p... To: John Baldwin Cc: Ngie Cooper , src-committers , svn-src-projects@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 15:01:45 -0000 On Wed, Aug 16, 2017 at 7:41 AM, John Baldwin wrote: > On Tuesday, August 15, 2017 08:27:08 PM Ngie Cooper wrote: > > Author: ngie > > Date: Tue Aug 15 20:27:07 2017 > > New Revision: 322551 > > URL: https://svnweb.freebsd.org/changeset/base/322551 > > > > Log: > > Disable MK_COVERAGE in sys/boot/... > > > > None of this should be compiled with MK_COVERAGE enabled, and it > > fails to compile with it enabled due to unresolved symbols. > > Would it be a smaller change to make use of Makefile.inc for this? > > It looks like there is already a sys/boot/Makefile.inc to set other > settings that affect all of sys/boot and the various subdirectories of > sys/boot all have Makefile.inc's that include ../Makefile.inc. > I think something like this is preferable. We have way too much duplication in these makefiles as it is and this makes it incrementally worse. If someone else doesn't beat me to it, I'll give it a shot. IIRC, at least in the past there's some thorny issues with doing multiple levels of include like this, but that may just be in the old fmake, not the current bmake. Warner From owner-svn-src-projects@freebsd.org Wed Aug 16 20:24:31 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B938DCE8BA for ; Wed, 16 Aug 2017 20:24:31 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 32AE46E3A9; Wed, 16 Aug 2017 20:24:31 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7GKOUI5020464; Wed, 16 Aug 2017 20:24:30 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7GKOUJC020463; Wed, 16 Aug 2017 20:24:30 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708162024.v7GKOUJC020463@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 20:24:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322594 - projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Commit-Revision: 322594 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 20:24:31 -0000 Author: rmacklem Date: Wed Aug 16 20:24:29 2017 New Revision: 322594 URL: https://svnweb.freebsd.org/changeset/base/322594 Log: Cleanup of the code changes for support of mirrors. Mostly indentation changes and a few simplification of arguments. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:09:39 2017 (r322593) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:24:29 2017 (r322594) @@ -3786,8 +3786,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, tdsc->va = va; tdsc->dvp = dvp[i]; tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, 0, 0, + "nfsdpcr"); if (ret == 0) haskproc = 1; else { @@ -3912,8 +3912,7 @@ nfsrv_dsremove(struct vnode *dvp, char *fname, struct named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; named.ni_cnd.cn_cred = tcred; named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | - SAVENAME; + named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; named.ni_cnd.cn_namelen = strlen(fname); @@ -3974,14 +3973,13 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch tdsrm->dvp = dvp[i]; strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); tdsrm->haskproc = 1; - ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, 0, 0, + "nfsdprm"); if (ret == 0) haskproc = 1; else { tdsrm->haskproc = 0; - nfsrv_dsremove(tdsrm->dvp, tdsrm->fname, tdsrm->tcred, - tdsrm->p); + nfsrv_dsremove(dvp[i], fname, tcred, p); } } nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); @@ -4405,25 +4403,35 @@ struct nfsrvwritedsdorpc { struct ucred *cred; NFSPROC_T *p; struct mbuf *m; - nfsv4stateid_t st; int haskproc; int err; }; static int nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, - nfsv4stateid_t *stp, struct nfsvattr *nap, struct mbuf *m, - struct ucred *cred, NFSPROC_T *p) + struct nfsvattr *nap, struct mbuf *m, struct ucred *cred, NFSPROC_T *p) { uint32_t *tl; struct nfsrv_descript *nd; nfsattrbit_t attrbits; + nfsv4stateid_t st; int commit, error, retlen; nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, sizeof(fhandle_t), NULL, NULL); - nfsm_stateidtom(nd, stp, NFSSTATEID_PUTSTATEID); + + /* + * Use a stateid where other is an alternating 01010 pattern and + * seqid is 0xffffffff. This value is not defined as special by + * the RFC and is used by the FreeBSD NFS server to indicate an + * MDS->DS proxy operation. + */ + st.other[0] = 0x55555555; + st.other[1] = 0x55555555; + st.other[2] = 0x55555555; + st.seqid = 0xffffffff; + nfsm_stateidtom(nd, &st, NFSSTATEID_PUTSTATEID); NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED); txdr_hyper(off, tl); tl += 2; @@ -4466,9 +4474,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, nap, NULL, - NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -4498,9 +4505,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: @@ -4520,7 +4526,7 @@ start_writedsdorpc(void *arg) drpc = (struct nfsrvwritedsdorpc *)arg; drpc->err = nfsrv_writedsdorpc(drpc->nmp, &drpc->fh, drpc->off, - drpc->len, &drpc->st, NULL, drpc->m, drpc->cred, drpc->p); + drpc->len, NULL, drpc->m, drpc->cred, drpc->p); NFSDWRPCLOCK(); drpc->haskproc = 0; wakeup(drpc); @@ -4534,7 +4540,6 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s char *cp) { struct nfsrvwritedsdorpc *drpc, *tdrpc; - nfsv4stateid_t st; struct nfsvattr na; struct mbuf *m; int error, haskproc, i, offs, ret, mirrorcnt = 1; @@ -4551,24 +4556,12 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); /* - * Use a stateid where other is an alternating 01010 pattern and - * seqid is 0xffffffff. This value is not defined as special by - * the RFC and is used by the FreeBSD NFS server to indicate an - * MDS->DS proxy operation. - */ - st.other[0] = 0x55555555; - st.other[1] = 0x55555555; - st.other[2] = 0x55555555; - st.seqid = 0xffffffff; - - /* * Do the write RPC for every DS, using a separate kernel process * for every DS except the last one. */ haskproc = 0; error = 0; for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { - tdrpc->st = st; tdrpc->fh = *fhp; tdrpc->off = off; tdrpc->len = len; @@ -4577,20 +4570,20 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->p = p; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); tdrpc->haskproc = 1; - ret = kproc_create(start_writedsdorpc, (void *)tdrpc, - NULL, 0, 0, "nfsdpnfs"); + ret = kproc_create(start_writedsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdpw"); if (ret == 0) haskproc = 1; else { tdrpc->haskproc = 0; - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, NULL, + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, NULL, tdrpc->m, cred, p); if (error == 0 && ret != 0) error = ret; } } m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, &na, m, cred, p); + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &na, m, cred, p); if (error == 0 && ret != 0) error = ret; if (error == 0) From owner-svn-src-projects@freebsd.org Wed Aug 16 20:29:02 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1E8B7DCEC9B for ; Wed, 16 Aug 2017 20:29:02 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EA1176E5C4; Wed, 16 Aug 2017 20:29:01 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7GKT1j3020656; Wed, 16 Aug 2017 20:29:01 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7GKT1Dh020655; Wed, 16 Aug 2017 20:29:01 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708162029.v7GKT1Dh020655@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 20:29:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322595 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 322595 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 20:29:02 -0000 Author: rmacklem Date: Wed Aug 16 20:29:00 2017 New Revision: 322595 URL: https://svnweb.freebsd.org/changeset/base/322595 Log: Cleanup of the code changes for support of mirrors. Mostly indentation changes and a few simplification of arguments. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:24:29 2017 (r322594) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:29:00 2017 (r322595) @@ -3803,8 +3803,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, tdsc->va = va; tdsc->dvp = dvp[i]; tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, 0, 0, + "nfsdpcr"); if (ret == 0) haskproc = 1; else { @@ -3929,8 +3929,7 @@ nfsrv_dsremove(struct vnode *dvp, char *fname, struct named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; named.ni_cnd.cn_cred = tcred; named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | - SAVENAME; + named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; named.ni_cnd.cn_namelen = strlen(fname); @@ -3991,14 +3990,13 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch tdsrm->dvp = dvp[i]; strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); tdsrm->haskproc = 1; - ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, 0, 0, + "nfsdprm"); if (ret == 0) haskproc = 1; else { tdsrm->haskproc = 0; - nfsrv_dsremove(tdsrm->dvp, tdsrm->fname, tdsrm->tcred, - tdsrm->p); + nfsrv_dsremove(dvp[i], fname, tcred, p); } } nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); @@ -4422,25 +4420,35 @@ struct nfsrvwritedsdorpc { struct ucred *cred; NFSPROC_T *p; struct mbuf *m; - nfsv4stateid_t st; int haskproc; int err; }; static int nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, - nfsv4stateid_t *stp, struct nfsvattr *nap, struct mbuf *m, - struct ucred *cred, NFSPROC_T *p) + struct nfsvattr *nap, struct mbuf *m, struct ucred *cred, NFSPROC_T *p) { uint32_t *tl; struct nfsrv_descript *nd; nfsattrbit_t attrbits; + nfsv4stateid_t st; int commit, error, retlen; nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, sizeof(fhandle_t), NULL, NULL); - nfsm_stateidtom(nd, stp, NFSSTATEID_PUTSTATEID); + + /* + * Use a stateid where other is an alternating 01010 pattern and + * seqid is 0xffffffff. This value is not defined as special by + * the RFC and is used by the FreeBSD NFS server to indicate an + * MDS->DS proxy operation. + */ + st.other[0] = 0x55555555; + st.other[1] = 0x55555555; + st.other[2] = 0x55555555; + st.seqid = 0xffffffff; + nfsm_stateidtom(nd, &st, NFSSTATEID_PUTSTATEID); NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED); txdr_hyper(off, tl); tl += 2; @@ -4483,9 +4491,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, nap, NULL, - NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -4515,9 +4522,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: @@ -4537,7 +4543,7 @@ start_writedsdorpc(void *arg) drpc = (struct nfsrvwritedsdorpc *)arg; drpc->err = nfsrv_writedsdorpc(drpc->nmp, &drpc->fh, drpc->off, - drpc->len, &drpc->st, NULL, drpc->m, drpc->cred, drpc->p); + drpc->len, NULL, drpc->m, drpc->cred, drpc->p); NFSDWRPCLOCK(); drpc->haskproc = 0; wakeup(drpc); @@ -4551,7 +4557,6 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s char *cp) { struct nfsrvwritedsdorpc *drpc, *tdrpc; - nfsv4stateid_t st; struct nfsvattr na; struct mbuf *m; int error, haskproc, i, offs, ret, mirrorcnt = 1; @@ -4568,24 +4573,12 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); /* - * Use a stateid where other is an alternating 01010 pattern and - * seqid is 0xffffffff. This value is not defined as special by - * the RFC and is used by the FreeBSD NFS server to indicate an - * MDS->DS proxy operation. - */ - st.other[0] = 0x55555555; - st.other[1] = 0x55555555; - st.other[2] = 0x55555555; - st.seqid = 0xffffffff; - - /* * Do the write RPC for every DS, using a separate kernel process * for every DS except the last one. */ haskproc = 0; error = 0; for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { - tdrpc->st = st; tdrpc->fh = *fhp; tdrpc->off = off; tdrpc->len = len; @@ -4594,20 +4587,20 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->p = p; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); tdrpc->haskproc = 1; - ret = kproc_create(start_writedsdorpc, (void *)tdrpc, - NULL, 0, 0, "nfsdpnfs"); + ret = kproc_create(start_writedsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdpw"); if (ret == 0) haskproc = 1; else { tdrpc->haskproc = 0; - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, NULL, + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, NULL, tdrpc->m, cred, p); if (error == 0 && ret != 0) error = ret; } } m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, &na, m, cred, p); + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &na, m, cred, p); if (error == 0 && ret != 0) error = ret; if (error == 0) From owner-svn-src-projects@freebsd.org Wed Aug 16 22:47:00 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EB23CDD77B9 for ; Wed, 16 Aug 2017 22:47:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B3EC4730E4; Wed, 16 Aug 2017 22:47:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7GMkxEH077054; Wed, 16 Aug 2017 22:46:59 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7GMkxxo077053; Wed, 16 Aug 2017 22:46:59 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708162246.v7GMkxxo077053@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 22:46:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322598 - projects/pnfs-planb-server-stable11/sys/fs/nfs X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/sys/fs/nfs X-SVN-Commit-Revision: 322598 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 22:47:01 -0000 Author: rmacklem Date: Wed Aug 16 22:46:59 2017 New Revision: 322598 URL: https://svnweb.freebsd.org/changeset/base/322598 Log: Add the hook for setting ACLs on the DS data files, which was missed during the code merge. Without this patch, a pNFS service with ACLs enabled would not have enforced the ACL for data access. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonacl.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonacl.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonacl.c Wed Aug 16 22:00:56 2017 (r322597) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonacl.c Wed Aug 16 22:46:59 2017 (r322598) @@ -471,6 +471,11 @@ nfsrv_setacl(vnode_t vp, NFSACL_T *aclp, struct ucred goto out; } error = VOP_SETACL(vp, ACL_TYPE_NFS4, aclp, cred, p); + if (error == 0) { + error = nfsrv_dssetacl(vp, aclp, cred, p); + if (error == ENOENT) + error = 0; + } out: NFSEXITCODE(error); From owner-svn-src-projects@freebsd.org Wed Aug 16 22:48:54 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 51065DD78EF for ; Wed, 16 Aug 2017 22:48:54 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1B3277320C; Wed, 16 Aug 2017 22:48:54 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7GMmrjp077155; Wed, 16 Aug 2017 22:48:53 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7GMmrhS077154; Wed, 16 Aug 2017 22:48:53 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708162248.v7GMmrhS077154@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 22:48:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322599 - projects/pnfs-planb-server/sys/fs/nfs X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfs X-SVN-Commit-Revision: 322599 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 22:48:54 -0000 Author: rmacklem Date: Wed Aug 16 22:48:52 2017 New Revision: 322599 URL: https://svnweb.freebsd.org/changeset/base/322599 Log: Add the hook for setting ACLs on the DS data files, which was missed during the code merge. Without this patch, a pNFS service with ACLs enabled would not have enforced the ACL for data access. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonacl.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonacl.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonacl.c Wed Aug 16 22:46:59 2017 (r322598) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonacl.c Wed Aug 16 22:48:52 2017 (r322599) @@ -471,6 +471,11 @@ nfsrv_setacl(vnode_t vp, NFSACL_T *aclp, struct ucred goto out; } error = VOP_SETACL(vp, ACL_TYPE_NFS4, aclp, cred, p); + if (error == 0) { + error = nfsrv_dssetacl(vp, aclp, cred, p); + if (error == ENOENT) + error = 0; + } out: NFSEXITCODE(error); From owner-svn-src-projects@freebsd.org Thu Aug 17 00:15:43 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 12616DDCB72 for ; Thu, 17 Aug 2017 00:15:43 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C9D9C761FD; Thu, 17 Aug 2017 00:15:42 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7H0FfoW013871; Thu, 17 Aug 2017 00:15:41 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7H0FfNZ013868; Thu, 17 Aug 2017 00:15:41 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708170015.v7H0FfNZ013868@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 17 Aug 2017 00:15:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322602 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322602 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 00:15:43 -0000 Author: rmacklem Date: Thu Aug 17 00:15:41 2017 New Revision: 322602 URL: https://svnweb.freebsd.org/changeset/base/322602 Log: Add support for mirrors to the Setattr RPC proxies to the DS data file. Also, fix the arguments to the RPC functions from nfsrv_proxyds() so that mirrors are handled. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Wed Aug 16 23:40:32 2017 (r322601) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonport.c Thu Aug 17 00:15:41 2017 (r322602) @@ -68,6 +68,8 @@ struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; struct mtx nfsrv_dsrmlock_mtx; struct mtx nfsrv_dwrpclock_mtx; +struct mtx nfsrv_dsrpclock_mtx; +struct mtx nfsrv_darpclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -702,6 +704,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); mtx_init(&nfsrv_dwrpclock_mtx, "nfsdwrpc", NULL, MTX_DEF); + mtx_init(&nfsrv_dsrpclock_mtx, "nfsdsrpc", NULL, MTX_DEF); + mtx_init(&nfsrv_darpclock_mtx, "nfsdarpc", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -733,6 +737,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_dsclock_mtx); mtx_destroy(&nfsrv_dsrmlock_mtx); mtx_destroy(&nfsrv_dwrpclock_mtx); + mtx_destroy(&nfsrv_dsrpclock_mtx); + mtx_destroy(&nfsrv_darpclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Wed Aug 16 23:40:32 2017 (r322601) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsport.h Thu Aug 17 00:15:41 2017 (r322602) @@ -722,6 +722,12 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDWRPCLOCKMUTEXPTR (&nfsrv_dwrpclock_mtx) #define NFSDWRPCLOCK() mtx_lock(&nfsrv_dwrpclock_mtx) #define NFSDWRPCUNLOCK() mtx_unlock(&nfsrv_dwrpclock_mtx) +#define NFSDSRPCLOCKMUTEXPTR (&nfsrv_dsrpclock_mtx) +#define NFSDSRPCLOCK() mtx_lock(&nfsrv_dsrpclock_mtx) +#define NFSDSRPCUNLOCK() mtx_unlock(&nfsrv_dsrpclock_mtx) +#define NFSDARPCLOCKMUTEXPTR (&nfsrv_darpclock_mtx) +#define NFSDARPCLOCK() mtx_lock(&nfsrv_darpclock_mtx) +#define NFSDARPCUNLOCK() mtx_unlock(&nfsrv_darpclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 23:40:32 2017 (r322601) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Thu Aug 17 00:15:41 2017 (r322602) @@ -70,6 +70,8 @@ extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; extern struct mtx nfsrv_dsrmlock_mtx; extern struct mtx nfsrv_dwrpclock_mtx; +extern struct mtx nfsrv_dsrpclock_mtx; +extern struct mtx nfsrv_darpclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -113,11 +115,12 @@ static int nfsrv_setextattr(struct vnode *, struct nfs static int nfsrv_readdsrpc(fhandle_t *, off_t, int, struct ucred *, NFSPROC_T *, struct nfsmount *, struct mbuf **, struct mbuf **); static int nfsrv_writedsrpc(fhandle_t *, off_t, int, struct ucred *, - NFSPROC_T *, struct vnode *, struct nfsmount *, struct mbuf **, char *); + NFSPROC_T *, struct vnode *, struct nfsmount **, int, struct mbuf **, + char *); static int nfsrv_setacldsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, - struct vnode *, struct nfsmount *, struct acl *); + struct vnode *, struct nfsmount **, int, struct acl *); static int nfsrv_setattrdsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, - struct vnode *, struct nfsmount *, struct nfsvattr *); + struct vnode *, struct nfsmount **, int, struct nfsvattr *); static int nfsrv_getattrdsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, struct vnode *, struct nfsmount *, struct nfsvattr *); static int nfsrv_putfhname(fhandle_t *, char *); @@ -4061,7 +4064,7 @@ nfsrv_proxyds(struct nfsrv_descript *nd, struct vnode struct vnode *dvp[NFSDEV_MAXMIRRORS]; struct pnfsdsattr dsattr; char *buf; - int buflen, error, mirrorcnt; + int buflen, error, i, mirrorcnt; NFSD_DEBUG(4, "in nfsrv_proxyds\n"); /* @@ -4134,17 +4137,18 @@ nfsrv_proxyds(struct nfsrv_descript *nd, struct vnode mpp, mpp2); else if (ioproc == NFSPROC_WRITEDS) error = nfsrv_writedsrpc(fh, off, cnt, cred, p, vp, - nmp[0], mpp, cp); + &nmp[0], mirrorcnt, mpp, cp); else if (ioproc == NFSPROC_SETATTR) - error = nfsrv_setattrdsrpc(fh, cred, p, vp, nmp[0], - nap); + error = nfsrv_setattrdsrpc(fh, cred, p, vp, &nmp[0], + mirrorcnt, nap); else if (ioproc == NFSPROC_SETACL) - error = nfsrv_setacldsrpc(fh, cred, p, vp, nmp[0], - aclp); + error = nfsrv_setacldsrpc(fh, cred, p, vp, &nmp[0], + mirrorcnt, aclp); else - error = nfsrv_getattrdsrpc(fh, cred, p, vp, nmp[0], - nap); - NFSVOPUNLOCK(dvp[0], 0); + error = nfsrv_getattrdsrpc(&fh[mirrorcnt - 1], cred, p, + vp, nmp[mirrorcnt - 1], nap); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dvp[i], 0); NFSD_DEBUG(4, "nfsrv_proxyds: aft RPC=%d\n", error); } else { /* Return ENOENT for any Extended Attribute error. */ @@ -4536,13 +4540,13 @@ start_writedsdorpc(void *arg) static int nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, - NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, - char *cp) + NFSPROC_T *p, struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, + struct mbuf **mpp, char *cp) { struct nfsrvwritedsdorpc *drpc, *tdrpc; struct nfsvattr na; struct mbuf *m; - int error, haskproc, i, offs, ret, mirrorcnt = 1; + int error, haskproc, i, offs, ret; NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); @@ -4565,7 +4569,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->fh = *fhp; tdrpc->off = off; tdrpc->len = len; - tdrpc->nmp = nmp; + tdrpc->nmp = *nmpp; tdrpc->cred = cred; tdrpc->p = p; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); @@ -4576,14 +4580,16 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s haskproc = 1; else { tdrpc->haskproc = 0; - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, NULL, + ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, NULL, tdrpc->m, cred, p); if (error == 0 && ret != 0) error = ret; } + nmpp++; + fhp++; } m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &na, m, cred, p); + ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, &na, m, cred, p); if (error == 0 && ret != 0) error = ret; if (error == 0) @@ -4607,17 +4613,17 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s } static int -nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, - struct vnode *vp, struct nfsmount *nmp, struct nfsvattr *nap) +nfsrv_setattrdsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount *nmp, struct nfsvattr *nap, + struct nfsvattr *dsnap) { uint32_t *tl; struct nfsrv_descript *nd; nfsv4stateid_t st; nfsattrbit_t attrbits; - struct nfsvattr na; int error; - NFSD_DEBUG(4, "in nfsrv_setattrdsrpc\n"); + NFSD_DEBUG(4, "in nfsrv_setattrdsdorpc\n"); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); /* * Use a stateid where other is an alternating 01010 pattern and @@ -4649,15 +4655,14 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setattrrpc=%d\n", + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: aft setattrrpc=%d\n", nd->nd_repstat); /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, &na, NULL, - NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: wcc attr=%d\n", error); + error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, + NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; /* @@ -4679,26 +4684,117 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, &na, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL); + error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, + NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setattr loadattr=%d\n", error); - if (error == 0) - error = nfsrv_setextattr(vp, &na, p); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setextat=%d\n", error); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: aft setattr loadattr=%d\n", error); nfsmout: m_freem(nd->nd_mrep); free(nd, M_TEMP); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc error=%d\n", error); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc error=%d\n", error); return (error); } +struct nfsrvsetattrdsdorpc { + fhandle_t fh; + struct nfsmount *nmp; + struct vnode *vp; + struct ucred *cred; + NFSPROC_T *p; + struct nfsvattr na; + struct nfsvattr dsna; + int haskproc; + int err; +}; + /* + * Start up the thread that will execute nfsrv_setattrdsdorpc(). + */ +static void +start_setattrdsdorpc(void *arg) +{ + struct nfsrvsetattrdsdorpc *drpc; + + drpc = (struct nfsrvsetattrdsdorpc *)arg; + drpc->err = nfsrv_setattrdsdorpc(&drpc->fh, drpc->cred, drpc->p, + drpc->vp, drpc->nmp, &drpc->na, &drpc->dsna); + NFSDSRPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDSRPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, + struct nfsvattr *nap) +{ + struct nfsrvsetattrdsdorpc *drpc, *tdrpc; + struct nfsvattr na; + int error, haskproc, i, ret; + + NFSD_DEBUG(4, "in nfsrv_setattrdsrpc\n"); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* + * Do the setattr RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->fh = *fhp; + tdrpc->nmp = *nmpp; + tdrpc->vp = vp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->na = *nap; + tdrpc->haskproc = 1; + ret = kproc_create(start_setattrdsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdps"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap, + &na); + if (error == 0 && ret != 0) + error = ret; + } + nmpp++; + fhp++; + } + ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap, &na); + if (error == 0 && ret != 0) + error = ret; + if (error == 0) + error = nfsrv_setextattr(vp, &na, p); + NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setextat=%d\n", error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSRPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDSRPCLOCKMUTEXPTR, PVFS, + "nfsps", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDSRPCUNLOCK(); + } + free(drpc, M_TEMP); + return (error); +} + +/* * Do a Setattr of an NFSv4 ACL on the DS file. */ static int -nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, +nfsrv_setacldsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct acl *aclp) { struct nfsrv_descript *nd; @@ -4706,7 +4802,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, nfsattrbit_t attrbits; int error; - NFSD_DEBUG(4, "in nfsrv_setacldsrpc\n"); + NFSD_DEBUG(4, "in nfsrv_setacldsdorpc\n"); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); /* * Use a stateid where other is an alternating 01010 pattern and @@ -4736,11 +4832,101 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_setacldsrpc: aft setaclrpc=%d\n", + NFSD_DEBUG(4, "nfsrv_setacldsdorpc: aft setaclrpc=%d\n", nd->nd_repstat); error = nd->nd_repstat; m_freem(nd->nd_mrep); free(nd, M_TEMP); + return (error); +} + +struct nfsrvsetacldsdorpc { + fhandle_t fh; + struct nfsmount *nmp; + struct vnode *vp; + struct ucred *cred; + NFSPROC_T *p; + struct acl *aclp; + int haskproc; + int err; +}; + +/* + * Start up the thread that will execute nfsrv_setacldsdorpc(). + */ +static void +start_setacldsdorpc(void *arg) +{ + struct nfsrvsetacldsdorpc *drpc; + + drpc = (struct nfsrvsetacldsdorpc *)arg; + drpc->err = nfsrv_setacldsdorpc(&drpc->fh, drpc->cred, drpc->p, + drpc->vp, drpc->nmp, drpc->aclp); + NFSDARPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDARPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, struct acl *aclp) +{ + struct nfsrvsetacldsdorpc *drpc, *tdrpc; + int error, haskproc, i, ret; + + NFSD_DEBUG(4, "in nfsrv_setacldsrpc\n"); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* + * Do the setattr RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->fh = *fhp; + tdrpc->nmp = *nmpp; + tdrpc->vp = vp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->aclp = aclp; + tdrpc->haskproc = 1; + ret = kproc_create(start_setacldsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdpa"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp, + aclp); + if (error == 0 && ret != 0) + error = ret; + } + nmpp++; + fhp++; + } + ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp, aclp); + if (error == 0 && ret != 0) + error = ret; + NFSD_DEBUG(4, "nfsrv_setacldsrpc: aft setextat=%d\n", error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDARPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDARPCLOCKMUTEXPTR, PVFS, + "nfspa", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDARPCUNLOCK(); + } + free(drpc, M_TEMP); return (error); } From owner-svn-src-projects@freebsd.org Thu Aug 17 00:20:51 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EBBB1DDCF6C for ; Thu, 17 Aug 2017 00:20:51 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B50AE763AF; Thu, 17 Aug 2017 00:20:51 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7H0KofZ014129; Thu, 17 Aug 2017 00:20:50 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7H0KoZa014126; Thu, 17 Aug 2017 00:20:50 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708170020.v7H0KoZa014126@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 17 Aug 2017 00:20:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322603 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322603 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 00:20:52 -0000 Author: rmacklem Date: Thu Aug 17 00:20:50 2017 New Revision: 322603 URL: https://svnweb.freebsd.org/changeset/base/322603 Log: Add support for mirrors to the Setattr RPC proxies to the DS data file. Also, fix the arguments to the RPC functions from nfsrv_proxyds() so that mirrors are handled. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server/sys/fs/nfs/nfsport.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Thu Aug 17 00:15:41 2017 (r322602) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Thu Aug 17 00:20:50 2017 (r322603) @@ -69,6 +69,8 @@ struct mtx nfsrv_dslock_mtx; struct mtx nfsrv_dsclock_mtx; struct mtx nfsrv_dsrmlock_mtx; struct mtx nfsrv_dwrpclock_mtx; +struct mtx nfsrv_dsrpclock_mtx; +struct mtx nfsrv_darpclock_mtx; struct nfsdevicehead nfsrv_devidhead; void (*nfsd_call_servertimer)(void) = NULL; void (*ncl_call_invalcaches)(struct vnode *) = NULL; @@ -722,6 +724,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); mtx_init(&nfsrv_dwrpclock_mtx, "nfsdwrpc", NULL, MTX_DEF); + mtx_init(&nfsrv_dsrpclock_mtx, "nfsdsrpc", NULL, MTX_DEF); + mtx_init(&nfsrv_darpclock_mtx, "nfsdarpc", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -753,6 +757,8 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfsrv_dsclock_mtx); mtx_destroy(&nfsrv_dsrmlock_mtx); mtx_destroy(&nfsrv_dwrpclock_mtx); + mtx_destroy(&nfsrv_dsrpclock_mtx); + mtx_destroy(&nfsrv_darpclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Thu Aug 17 00:15:41 2017 (r322602) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Thu Aug 17 00:20:50 2017 (r322603) @@ -722,6 +722,12 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDWRPCLOCKMUTEXPTR (&nfsrv_dwrpclock_mtx) #define NFSDWRPCLOCK() mtx_lock(&nfsrv_dwrpclock_mtx) #define NFSDWRPCUNLOCK() mtx_unlock(&nfsrv_dwrpclock_mtx) +#define NFSDSRPCLOCKMUTEXPTR (&nfsrv_dsrpclock_mtx) +#define NFSDSRPCLOCK() mtx_lock(&nfsrv_dsrpclock_mtx) +#define NFSDSRPCUNLOCK() mtx_unlock(&nfsrv_dsrpclock_mtx) +#define NFSDARPCLOCKMUTEXPTR (&nfsrv_darpclock_mtx) +#define NFSDARPCLOCK() mtx_lock(&nfsrv_darpclock_mtx) +#define NFSDARPCUNLOCK() mtx_unlock(&nfsrv_darpclock_mtx) /* * Use these macros to initialize/free a mutex. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Thu Aug 17 00:15:41 2017 (r322602) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Thu Aug 17 00:20:50 2017 (r322603) @@ -70,6 +70,8 @@ extern struct mtx nfsrv_dslock_mtx; extern struct mtx nfsrv_dsclock_mtx; extern struct mtx nfsrv_dsrmlock_mtx; extern struct mtx nfsrv_dwrpclock_mtx; +extern struct mtx nfsrv_dsrpclock_mtx; +extern struct mtx nfsrv_darpclock_mtx; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; NFSSTATESPINLOCK; @@ -113,11 +115,12 @@ static int nfsrv_setextattr(struct vnode *, struct nfs static int nfsrv_readdsrpc(fhandle_t *, off_t, int, struct ucred *, NFSPROC_T *, struct nfsmount *, struct mbuf **, struct mbuf **); static int nfsrv_writedsrpc(fhandle_t *, off_t, int, struct ucred *, - NFSPROC_T *, struct vnode *, struct nfsmount *, struct mbuf **, char *); + NFSPROC_T *, struct vnode *, struct nfsmount **, int, struct mbuf **, + char *); static int nfsrv_setacldsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, - struct vnode *, struct nfsmount *, struct acl *); + struct vnode *, struct nfsmount **, int, struct acl *); static int nfsrv_setattrdsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, - struct vnode *, struct nfsmount *, struct nfsvattr *); + struct vnode *, struct nfsmount **, int, struct nfsvattr *); static int nfsrv_getattrdsrpc(fhandle_t *, struct ucred *, NFSPROC_T *, struct vnode *, struct nfsmount *, struct nfsvattr *); static int nfsrv_putfhname(fhandle_t *, char *); @@ -4078,7 +4081,7 @@ nfsrv_proxyds(struct nfsrv_descript *nd, struct vnode struct vnode *dvp[NFSDEV_MAXMIRRORS]; struct pnfsdsattr dsattr; char *buf; - int buflen, error, mirrorcnt; + int buflen, error, i, mirrorcnt; NFSD_DEBUG(4, "in nfsrv_proxyds\n"); /* @@ -4151,17 +4154,18 @@ nfsrv_proxyds(struct nfsrv_descript *nd, struct vnode mpp, mpp2); else if (ioproc == NFSPROC_WRITEDS) error = nfsrv_writedsrpc(fh, off, cnt, cred, p, vp, - nmp[0], mpp, cp); + &nmp[0], mirrorcnt, mpp, cp); else if (ioproc == NFSPROC_SETATTR) - error = nfsrv_setattrdsrpc(fh, cred, p, vp, nmp[0], - nap); + error = nfsrv_setattrdsrpc(fh, cred, p, vp, &nmp[0], + mirrorcnt, nap); else if (ioproc == NFSPROC_SETACL) - error = nfsrv_setacldsrpc(fh, cred, p, vp, nmp[0], - aclp); + error = nfsrv_setacldsrpc(fh, cred, p, vp, &nmp[0], + mirrorcnt, aclp); else - error = nfsrv_getattrdsrpc(fh, cred, p, vp, nmp[0], - nap); - NFSVOPUNLOCK(dvp[0], 0); + error = nfsrv_getattrdsrpc(&fh[mirrorcnt - 1], cred, p, + vp, nmp[mirrorcnt - 1], nap); + for (i = 0; i < mirrorcnt; i++) + NFSVOPUNLOCK(dvp[i], 0); NFSD_DEBUG(4, "nfsrv_proxyds: aft RPC=%d\n", error); } else { /* Return ENOENT for any Extended Attribute error. */ @@ -4553,13 +4557,13 @@ start_writedsdorpc(void *arg) static int nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, struct ucred *cred, - NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct mbuf **mpp, - char *cp) + NFSPROC_T *p, struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, + struct mbuf **mpp, char *cp) { struct nfsrvwritedsdorpc *drpc, *tdrpc; struct nfsvattr na; struct mbuf *m; - int error, haskproc, i, offs, ret, mirrorcnt = 1; + int error, haskproc, i, offs, ret; NFSD_DEBUG(4, "in nfsrv_writedsrpc\n"); KASSERT(*mpp != NULL, ("nfsrv_writedsrpc: NULL mbuf chain")); @@ -4582,7 +4586,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->fh = *fhp; tdrpc->off = off; tdrpc->len = len; - tdrpc->nmp = nmp; + tdrpc->nmp = *nmpp; tdrpc->cred = cred; tdrpc->p = p; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); @@ -4593,14 +4597,16 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s haskproc = 1; else { tdrpc->haskproc = 0; - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, NULL, + ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, NULL, tdrpc->m, cred, p); if (error == 0 && ret != 0) error = ret; } + nmpp++; + fhp++; } m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &na, m, cred, p); + ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, &na, m, cred, p); if (error == 0 && ret != 0) error = ret; if (error == 0) @@ -4624,17 +4630,17 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s } static int -nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, - struct vnode *vp, struct nfsmount *nmp, struct nfsvattr *nap) +nfsrv_setattrdsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount *nmp, struct nfsvattr *nap, + struct nfsvattr *dsnap) { uint32_t *tl; struct nfsrv_descript *nd; nfsv4stateid_t st; nfsattrbit_t attrbits; - struct nfsvattr na; int error; - NFSD_DEBUG(4, "in nfsrv_setattrdsrpc\n"); + NFSD_DEBUG(4, "in nfsrv_setattrdsdorpc\n"); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); /* * Use a stateid where other is an alternating 01010 pattern and @@ -4666,15 +4672,14 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setattrrpc=%d\n", + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: aft setattrrpc=%d\n", nd->nd_repstat); /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, &na, NULL, - NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: wcc attr=%d\n", error); + error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, + NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; /* @@ -4696,26 +4701,117 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, &na, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL); + error = nfsv4_loadattr(nd, NULL, dsnap, NULL, NULL, 0, NULL, + NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setattr loadattr=%d\n", error); - if (error == 0) - error = nfsrv_setextattr(vp, &na, p); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setextat=%d\n", error); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc: aft setattr loadattr=%d\n", error); nfsmout: m_freem(nd->nd_mrep); free(nd, M_TEMP); - NFSD_DEBUG(4, "nfsrv_setattrdsrpc error=%d\n", error); + NFSD_DEBUG(4, "nfsrv_setattrdsdorpc error=%d\n", error); return (error); } +struct nfsrvsetattrdsdorpc { + fhandle_t fh; + struct nfsmount *nmp; + struct vnode *vp; + struct ucred *cred; + NFSPROC_T *p; + struct nfsvattr na; + struct nfsvattr dsna; + int haskproc; + int err; +}; + /* + * Start up the thread that will execute nfsrv_setattrdsdorpc(). + */ +static void +start_setattrdsdorpc(void *arg) +{ + struct nfsrvsetattrdsdorpc *drpc; + + drpc = (struct nfsrvsetattrdsdorpc *)arg; + drpc->err = nfsrv_setattrdsdorpc(&drpc->fh, drpc->cred, drpc->p, + drpc->vp, drpc->nmp, &drpc->na, &drpc->dsna); + NFSDSRPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDSRPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, + struct nfsvattr *nap) +{ + struct nfsrvsetattrdsdorpc *drpc, *tdrpc; + struct nfsvattr na; + int error, haskproc, i, ret; + + NFSD_DEBUG(4, "in nfsrv_setattrdsrpc\n"); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* + * Do the setattr RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->fh = *fhp; + tdrpc->nmp = *nmpp; + tdrpc->vp = vp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->na = *nap; + tdrpc->haskproc = 1; + ret = kproc_create(start_setattrdsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdps"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap, + &na); + if (error == 0 && ret != 0) + error = ret; + } + nmpp++; + fhp++; + } + ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap, &na); + if (error == 0 && ret != 0) + error = ret; + if (error == 0) + error = nfsrv_setextattr(vp, &na, p); + NFSD_DEBUG(4, "nfsrv_setattrdsrpc: aft setextat=%d\n", error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDSRPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDSRPCLOCKMUTEXPTR, PVFS, + "nfsps", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDSRPCUNLOCK(); + } + free(drpc, M_TEMP); + return (error); +} + +/* * Do a Setattr of an NFSv4 ACL on the DS file. */ static int -nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, +nfsrv_setacldsdorpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, struct vnode *vp, struct nfsmount *nmp, struct acl *aclp) { struct nfsrv_descript *nd; @@ -4723,7 +4819,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, nfsattrbit_t attrbits; int error; - NFSD_DEBUG(4, "in nfsrv_setacldsrpc\n"); + NFSD_DEBUG(4, "in nfsrv_setacldsdorpc\n"); nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); /* * Use a stateid where other is an alternating 01010 pattern and @@ -4753,11 +4849,101 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, free(nd, M_TEMP); return (error); } - NFSD_DEBUG(4, "nfsrv_setacldsrpc: aft setaclrpc=%d\n", + NFSD_DEBUG(4, "nfsrv_setacldsdorpc: aft setaclrpc=%d\n", nd->nd_repstat); error = nd->nd_repstat; m_freem(nd->nd_mrep); free(nd, M_TEMP); + return (error); +} + +struct nfsrvsetacldsdorpc { + fhandle_t fh; + struct nfsmount *nmp; + struct vnode *vp; + struct ucred *cred; + NFSPROC_T *p; + struct acl *aclp; + int haskproc; + int err; +}; + +/* + * Start up the thread that will execute nfsrv_setacldsdorpc(). + */ +static void +start_setacldsdorpc(void *arg) +{ + struct nfsrvsetacldsdorpc *drpc; + + drpc = (struct nfsrvsetacldsdorpc *)arg; + drpc->err = nfsrv_setacldsdorpc(&drpc->fh, drpc->cred, drpc->p, + drpc->vp, drpc->nmp, drpc->aclp); + NFSDARPCLOCK(); + drpc->haskproc = 0; + wakeup(drpc); + NFSDARPCUNLOCK(); + kproc_exit(0); +} + +static int +nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, NFSPROC_T *p, + struct vnode *vp, struct nfsmount **nmpp, int mirrorcnt, struct acl *aclp) +{ + struct nfsrvsetacldsdorpc *drpc, *tdrpc; + int error, haskproc, i, ret; + + NFSD_DEBUG(4, "in nfsrv_setacldsrpc\n"); + drpc = NULL; + if (mirrorcnt > 1) + tdrpc = drpc = malloc(sizeof(*drpc) * (mirrorcnt - 1), M_TEMP, + M_WAITOK); + + /* + * Do the setattr RPC for every DS, using a separate kernel process + * for every DS except the last one. + */ + haskproc = 0; + error = 0; + for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + tdrpc->fh = *fhp; + tdrpc->nmp = *nmpp; + tdrpc->vp = vp; + tdrpc->cred = cred; + tdrpc->p = p; + tdrpc->aclp = aclp; + tdrpc->haskproc = 1; + ret = kproc_create(start_setacldsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdpa"); + if (ret == 0) + haskproc = 1; + else { + tdrpc->haskproc = 0; + ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp, + aclp); + if (error == 0 && ret != 0) + error = ret; + } + nmpp++; + fhp++; + } + ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp, aclp); + if (error == 0 && ret != 0) + error = ret; + NFSD_DEBUG(4, "nfsrv_setacldsrpc: aft setextat=%d\n", error); + if (haskproc != 0) { + /* Wait for kernel proc(s) to complete. */ + NFSDARPCLOCK(); + for (tdrpc = drpc, i = 0; i < mirrorcnt - 1; i++, tdrpc++) { + while (tdrpc->haskproc != 0) + mtx_sleep(tdrpc, NFSDARPCLOCKMUTEXPTR, PVFS, + "nfspa", 0); + if (error == 0 && tdrpc->err != 0) + error = tdrpc->err; + } + NFSDARPCUNLOCK(); + } + free(drpc, M_TEMP); return (error); } From owner-svn-src-projects@freebsd.org Thu Aug 17 20:04:19 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 12EB8DD3A92 for ; Thu, 17 Aug 2017 20:04:19 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DDDCA2EA4; Thu, 17 Aug 2017 20:04:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7HK4HEs014414; Thu, 17 Aug 2017 20:04:17 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7HK4HRn014413; Thu, 17 Aug 2017 20:04:17 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708172004.v7HK4HRn014413@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Thu, 17 Aug 2017 20:04:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322629 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322629 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 20:04:19 -0000 Author: ngie Date: Thu Aug 17 20:04:17 2017 New Revision: 322629 URL: https://svnweb.freebsd.org/changeset/base/322629 Log: Fix libc_pic.a In order to support coverage binaries and non-coverage binaries with libraries, separate libraries need to be created which don't have coverage symbols (and dependent symbols on libc) in them. libc_pic.a for instance will not link with binaries if it's compiled with --coverage. This allows buildworld to complete, minus rtld-elf -- it's a special snowflake that needs to be resolved with a solution that I don't yet possess. Modified: projects/runtime-coverage/share/mk/bsd.lib.mk Modified: projects/runtime-coverage/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.lib.mk Thu Aug 17 19:39:42 2017 (r322628) +++ projects/runtime-coverage/share/mk/bsd.lib.mk Thu Aug 17 20:04:17 2017 (r322629) @@ -85,7 +85,7 @@ SHARED_CXXFLAGS+= ${_COV_FLAG} # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries # .pico used for PIC object files -.SUFFIXES: .out .o .bc .ll .po .pico .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln +.SUFFIXES: .out .o .bc .ll .po .pico .ppico .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln .if !defined(PICFLAG) .if ${MACHINE_CPUARCH} == "sparc64" @@ -105,21 +105,28 @@ PO_FLAG=-pg ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} +.c.ppico: + ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS:N${_COV_FLAG}} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} + ${CTFCONVERT_CMD} + .cc.po .C.po .cpp.po .cxx.po: ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} .cc.pico .C.pico .cpp.pico .cxx.pico: ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} +.cc.ppico .C.ppico .cpp.ppico .cxx.ppico: + ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS:N${_COV_FLAG}} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} + .f.po: ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} ${CTFCONVERT_CMD} -.f.pico: +.f.pico .f.ppico: ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} ${CTFCONVERT_CMD} -.s.po .s.pico: +.s.po .s.pico .s.ppico: ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} ${CTFCONVERT_CMD} @@ -133,12 +140,17 @@ PO_FLAG=-pg ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} +.asm.ppico: + ${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \ + ${CFLAGS:N${_COV_FLAG}} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} + ${CTFCONVERT_CMD} + .S.po: ${CC:N${CCACHE_BIN}} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \ -o ${.TARGET} ${CTFCONVERT_CMD} -.S.pico: +.S.pico .S.ppico: ${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \ -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} @@ -229,7 +241,12 @@ lib${LIB_PRIVATE}${LIB}.ll: ${LLOBJS} SOBJS+= ${OBJS:.o=.pico} DEPENDOBJS+= ${SOBJS} CLEANFILES+= ${SOBJS} +.if defined(INSTALL_PIC_ARCHIVE) && ${MK_COVERAGE} != "no" +SPOBJS:= ${SOBJS:.pico=.ppico} +DEPENDOBJS+= ${SPOBJS} +CLEANFILES+= ${SPOBJS} .endif +.endif .if defined(SHLIB_NAME) _LIBS+= ${SHLIB_NAME} @@ -246,7 +263,7 @@ SOLINKOPTS+= -Wl,--fatal-warnings SOLINKOPTS+= -Wl,--warn-shared-textrel .if target(beforelinking) -beforelinking: ${SOBJS} +beforelinking: ${SOBJS} ${SPOBJS} ${SHLIB_NAME_FULL}: beforelinking .endif @@ -294,10 +311,10 @@ ${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} .if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" _LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a -lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS} +lib${LIB_PRIVATE}${LIB}_pic.a: ${SPOBJS} @${ECHO} building special pic ${LIB} library @rm -f ${.TARGET} - ${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD} + ${AR} ${ARFLAGS} ${.TARGET} ${SPOBJS} ${ARADD} ${RANLIB} ${RANLIBFLAGS} ${.TARGET} .endif @@ -466,6 +483,7 @@ OBJS_DEPEND_GUESS.${_S:R}.po+= ${_S} defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) .for _S in ${SRCS:N*.[hly]} OBJS_DEPEND_GUESS.${_S:R}.pico+= ${_S} +OBJS_DEPEND_GUESS.${_S:R}.ppico+= ${_S} .endfor .endif From owner-svn-src-projects@freebsd.org Thu Aug 17 20:05:28 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4C77DDD3B16 for ; Thu, 17 Aug 2017 20:05:28 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 16DC32F92; Thu, 17 Aug 2017 20:05:28 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7HK5RtC014504; Thu, 17 Aug 2017 20:05:27 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7HK5Rp4014503; Thu, 17 Aug 2017 20:05:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708172005.v7HK5Rp4014503@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Thu, 17 Aug 2017 20:05:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322630 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322630 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 20:05:28 -0000 Author: ngie Date: Thu Aug 17 20:05:27 2017 New Revision: 322630 URL: https://svnweb.freebsd.org/changeset/base/322630 Log: Handle .ppico suffixed shared object files Modified: projects/runtime-coverage/share/mk/meta.autodep.mk Modified: projects/runtime-coverage/share/mk/meta.autodep.mk ============================================================================== --- projects/runtime-coverage/share/mk/meta.autodep.mk Thu Aug 17 20:04:17 2017 (r322629) +++ projects/runtime-coverage/share/mk/meta.autodep.mk Thu Aug 17 20:05:27 2017 (r322630) @@ -23,7 +23,7 @@ __${_this}__: .NOTMAIN .if defined(SRCS) # it would be nice to be able to query .SUFFIXES -OBJ_EXTENSIONS+= .o .po .lo .pico +OBJ_EXTENSIONS+= .o .po .lo .pico .ppico # explicit dependencies help short-circuit .SUFFIX searches SRCS_DEP_FILTER+= N*.[hly] @@ -179,7 +179,7 @@ DEPEND_SUFFIXES += .c .h .cpp .hpp .cxx .hxx .cc .hh @case "${.MAKE.META.FILES:T:M*.po.*}" in \ *.po.*) mv $@.${.MAKE.PID} $@;; \ *) { cat $@.${.MAKE.PID}; \ - sed 's,\.pico:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \ + sed 's,\.pico:,.o:,;s\.ppico:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \ rm -f $@.${.MAKE.PID};; \ esac .else From owner-svn-src-projects@freebsd.org Thu Aug 17 20:07:13 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 60FD9DD3CC2 for ; Thu, 17 Aug 2017 20:07:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2BB8130C3; Thu, 17 Aug 2017 20:07:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7HK7Cti014609; Thu, 17 Aug 2017 20:07:12 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7HK7C8K014608; Thu, 17 Aug 2017 20:07:12 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708172007.v7HK7C8K014608@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Thu, 17 Aug 2017 20:07:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322631 - projects/runtime-coverage/libexec/rtld-elf X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/libexec/rtld-elf X-SVN-Commit-Revision: 322631 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 20:07:13 -0000 Author: ngie Date: Thu Aug 17 20:07:12 2017 New Revision: 322631 URL: https://svnweb.freebsd.org/changeset/base/322631 Log: Explicitly disable MK_COVERAGE This doesn't work with --coverage enabled. It still doesn't link, but this reduces the linker errors from 50~100 to 1. Modified: projects/runtime-coverage/libexec/rtld-elf/Makefile Modified: projects/runtime-coverage/libexec/rtld-elf/Makefile ============================================================================== --- projects/runtime-coverage/libexec/rtld-elf/Makefile Thu Aug 17 20:05:27 2017 (r322630) +++ projects/runtime-coverage/libexec/rtld-elf/Makefile Thu Aug 17 20:07:12 2017 (r322631) @@ -6,6 +6,7 @@ .include PACKAGE= clibs +MK_COVERAGE= no MK_SSP= no PROG?= ld-elf.so.1 From owner-svn-src-projects@freebsd.org Thu Aug 17 20:10:32 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0EC42DD3ECC for ; Thu, 17 Aug 2017 20:10:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CDA213278; Thu, 17 Aug 2017 20:10:31 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7HKAUhR014799; Thu, 17 Aug 2017 20:10:30 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7HKAUDC014798; Thu, 17 Aug 2017 20:10:30 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708172010.v7HKAUDC014798@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Thu, 17 Aug 2017 20:10:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322632 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322632 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 20:10:32 -0000 Author: ngie Date: Thu Aug 17 20:10:30 2017 New Revision: 322632 URL: https://svnweb.freebsd.org/changeset/base/322632 Log: - Only pass --coverage if NO_SHARED != yes (it doesn't work with static libraries). - Fix typo (${PROGNAME}.full should be ${PROG_FULL} -- this fixes installing usr.sbin/xinstall). - Pass through appropriate sentinel for determining whether or not the program should be compiled with debug symbols, and hence whether or not --coverage should be enabled. Modified: projects/runtime-coverage/share/mk/bsd.prog.mk Modified: projects/runtime-coverage/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.prog.mk Thu Aug 17 20:07:12 2017 (r322631) +++ projects/runtime-coverage/share/mk/bsd.prog.mk Thu Aug 17 20:10:30 2017 (r322632) @@ -37,17 +37,13 @@ MK_DEBUG_FILES= no .if defined(CRUNCH_CFLAGS) CFLAGS+=${CRUNCH_CFLAGS} .else -.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ - empty(DEBUG_FLAGS:M-gdwarf-*) +.if ${MK_DEBUG_FILES} != "no" +.if empty(DEBUG_FLAGS:M-g) && empty(DEBUG_FLAGS:M-gdwarf-*) CFLAGS+= -g CXXFLAGS+= -g CTFFLAGS+= -g .endif -.if ${MK_COVERAGE} != "no" && \ - (${CFLAGS:M-g*} != "" || ${CXXFLAGS:M-g*}) -_COV_FLAG= --coverage -CFLAGS+= ${_COV_FLAG} -CXXFLAGS+= ${_COV_FLAG} +_WANTS_DEBUG= .endif .endif @@ -64,7 +60,13 @@ TAG_ARGS= -T ${TAGS:[*]:S/ /,/g} .if defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO") LDFLAGS+= -static +.else +.if defined(_WANTS_DEBUG) && ${MK_COVERAGE} != "no" +_COV_FLAG= --coverage +CFLAGS+= ${_COV_FLAG} +CXXFLAGS+= ${_COV_FLAG} .endif +.endif .if ${MK_DEBUG_FILES} != "no" PROG_FULL=${PROG}.full @@ -251,7 +253,7 @@ _proginstall: ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${DESTDIR}${COVERAGEDIR}/ .endif ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \ - ${PROGNAME}.full ${DESTDIR}${COVERAGEDIR}/${PROGNAME} + ${PROG_FULL} ${DESTDIR}${COVERAGEDIR}/${PROGNAME} .endif .if defined(DEBUGMKDIR) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -d ${DESTDIR}${DEBUGFILEDIR}/ From owner-svn-src-projects@freebsd.org Fri Aug 18 01:19:48 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 126C9DE42A4 for ; Fri, 18 Aug 2017 01:19:48 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DDAA26CA06; Fri, 18 Aug 2017 01:19:47 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7I1JlKS041456; Fri, 18 Aug 2017 01:19:47 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7I1JkMZ041454; Fri, 18 Aug 2017 01:19:46 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708180119.v7I1JkMZ041454@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 Aug 2017 01:19:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322639 - projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Commit-Revision: 322639 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 01:19:48 -0000 Author: rmacklem Date: Fri Aug 18 01:19:46 2017 New Revision: 322639 URL: https://svnweb.freebsd.org/changeset/base/322639 Log: Fix the searches of the device id lists so that they include the mirror entries. Also, modify nfsrv_dssetsockmnt() so that it only returns ENOENT if none of the DSs were found. This will allow a mirrored system to run in a degraded mode when one mirror is offline. The mirroring is now working for normal operation, although Flex File layout has not yet been tested (all I/O goes through MDS when mirroring is set up). Now, the fun part is to code handling of a DS mirror failure and resilvering of a DS mirror to bring it back online. Also, testing of Flex File layout against a recent Linux client needs to be done. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Fri Aug 18 00:25:27 2017 (r322638) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Fri Aug 18 01:19:46 2017 (r322639) @@ -4171,10 +4171,10 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char struct vnode *dvp, **tdvpp; struct nfsmount *nmp; struct sockaddr *sad; - struct nfsdevice *ds; + struct nfsdevice *ds, *mds; struct pnfsdsfile *pf; uint32_t dsdir; - int error, fhiszero, i, j, mirrorcnt; + int done, error, fhiszero, gotone, i, j, mirrorcnt; *mirrorcntp = 1; fhiszero = 0; @@ -4192,6 +4192,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char buflen != sizeof(*pf) * mirrorcnt)) error = ENOATTR; pf = (struct pnfsdsfile *)buf; + gotone = 0; for (i = 0; i < mirrorcnt && error == 0; i++, pf++) { sad = (struct sockaddr *)&pf->dsf_sin; dsdir = pf->dsf_dir; @@ -4203,8 +4204,21 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char if (NFSBCMP(&zerofh, &pf->dsf_fh, sizeof(zerofh)) == 0) fhiszero = 1; /* Use the socket address to find the mount point. */ + done = 0; NFSDDSLOCK(); TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, + nfsdev_list) { + dvp = mds->nfsdev_dvp; + nmp = VFSTONFS(dvp->v_mount); + if (nfsaddr2_match(sad, nmp->nm_nam)) { + ds = mds; + done = 1; + break; + } + } + if (done != 0) + break; dvp = ds->nfsdev_dvp; nmp = VFSTONFS(dvp->v_mount); if (nfsaddr2_match(sad, nmp->nm_nam)) @@ -4212,6 +4226,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char } NFSDDSUNLOCK(); if (ds != NULL) { + gotone = 1; if (dvpp != NULL || fhiszero != 0) { dvp = ds->nfsdev_dsdir[dsdir]; error = vn_lock(dvp, lktype); @@ -4234,26 +4249,30 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char NFSX_V4DEVICEID); devid += NFSX_V4DEVICEID; } - } else - error = ENOENT; - } - if (error == 0) { - if (dvpp != NULL) { - *tdvpp++ = dvp; - *nmpp++ = nmp; + if (error == 0) { + if (dvpp != NULL) { + *tdvpp++ = dvp; + *nmpp++ = nmp; + } + if (fhp != NULL) + NFSBCOPY(&pf->dsf_fh, fhp++, + NFSX_MYFH); + if (fnamep != NULL && i == 0) + strlcpy(fnamep, + pf->dsf_filename, + sizeof(pf->dsf_filename)); + } else + NFSD_DEBUG(4, "nfsrv_dsgetsockmnt " + "err=%d\n", error); } - if (fhp != NULL) - NFSBCOPY(&pf->dsf_fh, fhp++, NFSX_MYFH); - if (fnamep != NULL && i == 0) - strlcpy(fnamep, pf->dsf_filename, - sizeof(pf->dsf_filename)); - } else - NFSD_DEBUG(4, "nfsrv_dsgetsockmnt err=%d\n", error); + } } + if (error == 0 && gotone == 0) + error = ENOENT; if (error == 0) *mirrorcntp = mirrorcnt; - else if (i > 1 && dvpp != NULL) { + else if (i > 1 && dvpp != NULL && gotone != 0) { /* * If the error didn't occur on the first one and dvpp != NULL, * the one(s) prior to the failure will have locked dvp's that Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 18 00:25:27 2017 (r322638) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 18 01:19:46 2017 (r322639) @@ -6596,8 +6596,8 @@ int nfsrv_getdevinfo(char *devid, int layouttype, uint32_t *maxcnt, uint32_t *notify, int *devaddrlen, char **devaddr) { - struct nfsdevice *ds; - int i; + struct nfsdevice *ds, *mds; + int done, i; if (layouttype != NFSLAYOUT_NFSV4_1_FILES) return (NFSERR_UNKNLAYOUTTYPE); @@ -6607,8 +6607,19 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t * away, but the order changes in the list. As such, the lock only * needs to be held during the search through the list. */ + done = 0; NFSDDSLOCK(); TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { + if (NFSBCMP(devid, mds->nfsdev_deviceid, + NFSX_V4DEVICEID) == 0) { + ds = mds; + done = 1; + break; + } + } + if (done != 0) + break; if (NFSBCMP(devid, ds->nfsdev_deviceid, NFSX_V4DEVICEID) == 0) break; } From owner-svn-src-projects@freebsd.org Fri Aug 18 01:23:55 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9D780DE4648 for ; Fri, 18 Aug 2017 01:23:55 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 74A0B6CDC5; Fri, 18 Aug 2017 01:23:55 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7I1NsBp045283; Fri, 18 Aug 2017 01:23:54 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7I1NsmL045281; Fri, 18 Aug 2017 01:23:54 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708180123.v7I1NsmL045281@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 Aug 2017 01:23:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322640 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 322640 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 01:23:55 -0000 Author: rmacklem Date: Fri Aug 18 01:23:54 2017 New Revision: 322640 URL: https://svnweb.freebsd.org/changeset/base/322640 Log: Fix the searches of the device id lists so that they include the mirror entries. Also, modify nfsrv_dssetsockmnt() so that it only returns ENOENT if none of the DSs were found. This will allow a mirrored system to run in a degraded mode when one mirror is offline. The mirroring is now working for normal operation, although Flex File layout has not yet been tested (all I/O goes through MDS when mirroring is set up). Now, the fun part is to code handling of a DS mirror failure and resilvering of a DS mirror to bring it back online. Also, testing of Flex File layout against a recent Linux client needs to be done. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Fri Aug 18 01:19:46 2017 (r322639) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Fri Aug 18 01:23:54 2017 (r322640) @@ -4188,10 +4188,10 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char struct vnode *dvp, **tdvpp; struct nfsmount *nmp; struct sockaddr *sad; - struct nfsdevice *ds; + struct nfsdevice *ds, *mds; struct pnfsdsfile *pf; uint32_t dsdir; - int error, fhiszero, i, j, mirrorcnt; + int done, error, fhiszero, gotone, i, j, mirrorcnt; *mirrorcntp = 1; fhiszero = 0; @@ -4209,6 +4209,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char buflen != sizeof(*pf) * mirrorcnt)) error = ENOATTR; pf = (struct pnfsdsfile *)buf; + gotone = 0; for (i = 0; i < mirrorcnt && error == 0; i++, pf++) { sad = (struct sockaddr *)&pf->dsf_sin; dsdir = pf->dsf_dir; @@ -4220,8 +4221,21 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char if (NFSBCMP(&zerofh, &pf->dsf_fh, sizeof(zerofh)) == 0) fhiszero = 1; /* Use the socket address to find the mount point. */ + done = 0; NFSDDSLOCK(); TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, + nfsdev_list) { + dvp = mds->nfsdev_dvp; + nmp = VFSTONFS(dvp->v_mount); + if (nfsaddr2_match(sad, nmp->nm_nam)) { + ds = mds; + done = 1; + break; + } + } + if (done != 0) + break; dvp = ds->nfsdev_dvp; nmp = VFSTONFS(dvp->v_mount); if (nfsaddr2_match(sad, nmp->nm_nam)) @@ -4229,6 +4243,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char } NFSDDSUNLOCK(); if (ds != NULL) { + gotone = 1; if (dvpp != NULL || fhiszero != 0) { dvp = ds->nfsdev_dsdir[dsdir]; error = vn_lock(dvp, lktype); @@ -4251,26 +4266,30 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char NFSX_V4DEVICEID); devid += NFSX_V4DEVICEID; } - } else - error = ENOENT; - } - if (error == 0) { - if (dvpp != NULL) { - *tdvpp++ = dvp; - *nmpp++ = nmp; + if (error == 0) { + if (dvpp != NULL) { + *tdvpp++ = dvp; + *nmpp++ = nmp; + } + if (fhp != NULL) + NFSBCOPY(&pf->dsf_fh, fhp++, + NFSX_MYFH); + if (fnamep != NULL && i == 0) + strlcpy(fnamep, + pf->dsf_filename, + sizeof(pf->dsf_filename)); + } else + NFSD_DEBUG(4, "nfsrv_dsgetsockmnt " + "err=%d\n", error); } - if (fhp != NULL) - NFSBCOPY(&pf->dsf_fh, fhp++, NFSX_MYFH); - if (fnamep != NULL && i == 0) - strlcpy(fnamep, pf->dsf_filename, - sizeof(pf->dsf_filename)); - } else - NFSD_DEBUG(4, "nfsrv_dsgetsockmnt err=%d\n", error); + } } + if (error == 0 && gotone == 0) + error = ENOENT; if (error == 0) *mirrorcntp = mirrorcnt; - else if (i > 1 && dvpp != NULL) { + else if (i > 1 && dvpp != NULL && gotone != 0) { /* * If the error didn't occur on the first one and dvpp != NULL, * the one(s) prior to the failure will have locked dvp's that Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 18 01:19:46 2017 (r322639) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 18 01:23:54 2017 (r322640) @@ -6596,8 +6596,8 @@ int nfsrv_getdevinfo(char *devid, int layouttype, uint32_t *maxcnt, uint32_t *notify, int *devaddrlen, char **devaddr) { - struct nfsdevice *ds; - int i; + struct nfsdevice *ds, *mds; + int done, i; if (layouttype != NFSLAYOUT_NFSV4_1_FILES) return (NFSERR_UNKNLAYOUTTYPE); @@ -6607,8 +6607,19 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t * away, but the order changes in the list. As such, the lock only * needs to be held during the search through the list. */ + done = 0; NFSDDSLOCK(); TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { + if (NFSBCMP(devid, mds->nfsdev_deviceid, + NFSX_V4DEVICEID) == 0) { + ds = mds; + done = 1; + break; + } + } + if (done != 0) + break; if (NFSBCMP(devid, ds->nfsdev_deviceid, NFSX_V4DEVICEID) == 0) break; } From owner-svn-src-projects@freebsd.org Fri Aug 18 01:31:36 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 24941DE4B39 for ; Fri, 18 Aug 2017 01:31:36 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E2A896D165; Fri, 18 Aug 2017 01:31:35 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7I1VYqr046981; Fri, 18 Aug 2017 01:31:34 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7I1VYUV046980; Fri, 18 Aug 2017 01:31:34 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708180131.v7I1VYUV046980@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 Aug 2017 01:31:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322641 - projects/pnfs-planb-server-stable11/usr.sbin/nfsd X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/usr.sbin/nfsd X-SVN-Commit-Revision: 322641 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 01:31:36 -0000 Author: rmacklem Date: Fri Aug 18 01:31:34 2017 New Revision: 322641 URL: https://svnweb.freebsd.org/changeset/base/322641 Log: Add the '#' delimiter for use with the "-p" option to indicate that the next DS is a mirror of the current one. This is not yet documented in the man page, since mirroring is only for testing at this time. There is no code to handle mirror failures yet. Modified: projects/pnfs-planb-server-stable11/usr.sbin/nfsd/nfsd.c Modified: projects/pnfs-planb-server-stable11/usr.sbin/nfsd/nfsd.c ============================================================================== --- projects/pnfs-planb-server-stable11/usr.sbin/nfsd/nfsd.c Fri Aug 18 01:23:54 2017 (r322640) +++ projects/pnfs-planb-server-stable11/usr.sbin/nfsd/nfsd.c Fri Aug 18 01:31:34 2017 (r322641) @@ -1174,7 +1174,7 @@ static void parse_dsserver(const char *optarg, struct nfsd_nfsd_args *nfsdargp) { char *ad, *cp, *cp2, *dsaddr, *dshost, *dspath, *dsvol, nfsprt[9]; - char *mirror, mirrorstr[NFSDEV_MIRRORSTR + 1]; + char *mirror, mirrorstr[NFSDEV_MIRRORSTR + 1], *cp3; int adsiz, dsaddrcnt, dshostcnt, dspathcnt, ecode, hostsiz, pathsiz; int mirrorcnt, mirrorstrsiz, mirrorindex; size_t dsaddrsiz, dshostsiz, dspathsiz, nfsprtsiz, mirrorsiz; @@ -1215,12 +1215,26 @@ parse_dsserver(const char *optarg, struct nfsd_nfsd_ar mirrorindex = 0; /* Loop around for each DS server name. */ do { + /* + * If the next DS is separated from the current one with a '#', + * it is a mirror. If the next DS is separated from the current + * one with a ',', it is not a mirror of the previous DS. + */ cp2 = strchr(cp, ','); + cp3 = strchr(cp, '#'); + if (cp3 != NULL && (cp2 == NULL || cp3 < cp2)) + cp2 = cp3; /* A mirror of the previous DS. */ + else + cp3 = NULL; /* Not a mirror of the previous DS. */ if (cp2 != NULL) { + /* Not the last DS in the list. */ *cp2++ = '\0'; if (*cp2 == '\0') usage(); + if (cp3 == NULL) + mirrorindex++; /* Increment if not a mirror. */ } + dsvol = strchr(cp, ':'); if (dsvol == NULL || *(dsvol + 1) == '\0') usage(); @@ -1281,7 +1295,7 @@ printf("pnfs path=%s\n", dsvol); /* Append this mirrorindex to mirror. */ if (snprintf(mirrorstr, NFSDEV_MIRRORSTR + 1, "%d", - mirrorindex++) > NFSDEV_MIRRORSTR) + mirrorindex) > NFSDEV_MIRRORSTR) errx(1, "Too many mirrors"); mirrorstrsiz = strlen(mirrorstr); if (mirrorcnt + mirrorstrsiz + 1 > mirrorsiz) { From owner-svn-src-projects@freebsd.org Fri Aug 18 01:34:39 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 778FBDE4E8F for ; Fri, 18 Aug 2017 01:34:39 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 417956D33F; Fri, 18 Aug 2017 01:34:39 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7I1Yc1U049245; Fri, 18 Aug 2017 01:34:38 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7I1YcFo049244; Fri, 18 Aug 2017 01:34:38 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708180134.v7I1YcFo049244@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 Aug 2017 01:34:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322642 - projects/pnfs-planb-server/usr.sbin/nfsd X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/usr.sbin/nfsd X-SVN-Commit-Revision: 322642 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 01:34:39 -0000 Author: rmacklem Date: Fri Aug 18 01:34:38 2017 New Revision: 322642 URL: https://svnweb.freebsd.org/changeset/base/322642 Log: Add the '#' delimiter for use with the "-p" option to indicate that the next DS is a mirror of the current one. This is not yet documented in the man page, since mirroring is only for testing at this time. There is no code to handle mirror failures yet. Modified: projects/pnfs-planb-server/usr.sbin/nfsd/nfsd.c Modified: projects/pnfs-planb-server/usr.sbin/nfsd/nfsd.c ============================================================================== --- projects/pnfs-planb-server/usr.sbin/nfsd/nfsd.c Fri Aug 18 01:31:34 2017 (r322641) +++ projects/pnfs-planb-server/usr.sbin/nfsd/nfsd.c Fri Aug 18 01:34:38 2017 (r322642) @@ -1175,7 +1175,7 @@ static void parse_dsserver(const char *optarg, struct nfsd_nfsd_args *nfsdargp) { char *ad, *cp, *cp2, *dsaddr, *dshost, *dspath, *dsvol, nfsprt[9]; - char *mirror, mirrorstr[NFSDEV_MIRRORSTR + 1]; + char *mirror, mirrorstr[NFSDEV_MIRRORSTR + 1], *cp3; int adsiz, dsaddrcnt, dshostcnt, dspathcnt, ecode, hostsiz, pathsiz; int mirrorcnt, mirrorstrsiz, mirrorindex; size_t dsaddrsiz, dshostsiz, dspathsiz, nfsprtsiz, mirrorsiz; @@ -1216,12 +1216,26 @@ parse_dsserver(const char *optarg, struct nfsd_nfsd_ar mirrorindex = 0; /* Loop around for each DS server name. */ do { + /* + * If the next DS is separated from the current one with a '#', + * it is a mirror. If the next DS is separated from the current + * one with a ',', it is not a mirror of the previous DS. + */ cp2 = strchr(cp, ','); + cp3 = strchr(cp, '#'); + if (cp3 != NULL && (cp2 == NULL || cp3 < cp2)) + cp2 = cp3; /* A mirror of the previous DS. */ + else + cp3 = NULL; /* Not a mirror of the previous DS. */ if (cp2 != NULL) { + /* Not the last DS in the list. */ *cp2++ = '\0'; if (*cp2 == '\0') usage(); + if (cp3 == NULL) + mirrorindex++; /* Increment if not a mirror. */ } + dsvol = strchr(cp, ':'); if (dsvol == NULL || *(dsvol + 1) == '\0') usage(); @@ -1282,7 +1296,7 @@ printf("pnfs path=%s\n", dsvol); /* Append this mirrorindex to mirror. */ if (snprintf(mirrorstr, NFSDEV_MIRRORSTR + 1, "%d", - mirrorindex++) > NFSDEV_MIRRORSTR) + mirrorindex) > NFSDEV_MIRRORSTR) errx(1, "Too many mirrors"); mirrorstrsiz = strlen(mirrorstr); if (mirrorcnt + mirrorstrsiz + 1 > mirrorsiz) { From owner-svn-src-projects@freebsd.org Fri Aug 18 21:37:31 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2F8E2DD9253 for ; Fri, 18 Aug 2017 21:37:31 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B31B676A17; Fri, 18 Aug 2017 21:37:30 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7ILbTC7045340; Fri, 18 Aug 2017 21:37:29 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7ILbQ5a045305; Fri, 18 Aug 2017 21:37:26 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708182137.v7ILbQ5a045305@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Fri, 18 Aug 2017 21:37:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322676 - in projects/runtime-coverage: . bin/pkill contrib/binutils/bfd contrib/binutils/gas/config contrib/mdocml contrib/zstd/examples etc/periodic/daily etc/rc.d gnu/usr.bin/binutil... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: . bin/pkill contrib/binutils/bfd contrib/binutils/gas/config contrib/mdocml contrib/zstd/examples etc/periodic/daily etc/rc.d gnu/usr.bin/binutils gnu/usr.bin/binutils/ld... X-SVN-Commit-Revision: 322676 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 21:37:31 -0000 Author: ngie Date: Fri Aug 18 21:37:26 2017 New Revision: 322676 URL: https://svnweb.freebsd.org/changeset/base/322676 Log: MFhead@r322675 Added: projects/runtime-coverage/sys/amd64/include/sgx.h - copied unchanged from r322675, head/sys/amd64/include/sgx.h projects/runtime-coverage/sys/amd64/include/sgxreg.h - copied unchanged from r322675, head/sys/amd64/include/sgxreg.h projects/runtime-coverage/sys/amd64/sgx/ - copied from r322675, head/sys/amd64/sgx/ projects/runtime-coverage/sys/modules/sgx/ - copied from r322675, head/sys/modules/sgx/ projects/runtime-coverage/sys/modules/sgx_linux/ - copied from r322675, head/sys/modules/sgx_linux/ Deleted: projects/runtime-coverage/contrib/zstd/examples/ Modified: projects/runtime-coverage/Makefile projects/runtime-coverage/Makefile.inc1 projects/runtime-coverage/Makefile.libcompat projects/runtime-coverage/bin/pkill/pkill.c projects/runtime-coverage/contrib/binutils/bfd/ecoff.c projects/runtime-coverage/contrib/binutils/gas/config/tc-mips.c projects/runtime-coverage/contrib/mdocml/lib.in projects/runtime-coverage/etc/periodic/daily/Makefile projects/runtime-coverage/etc/rc.d/Makefile projects/runtime-coverage/gnu/usr.bin/binutils/Makefile.inc0 projects/runtime-coverage/gnu/usr.bin/binutils/ld/Makefile.arm projects/runtime-coverage/gnu/usr.bin/binutils/libbfd/Makefile.arm projects/runtime-coverage/gnu/usr.bin/cc/Makefile.inc projects/runtime-coverage/gnu/usr.bin/cc/Makefile.tgt projects/runtime-coverage/lib/libc/i386/Makefile.inc projects/runtime-coverage/lib/libcompiler_rt/Makefile.inc projects/runtime-coverage/lib/libfetch/common.c projects/runtime-coverage/lib/libutil/kinfo_getvmmap.3 projects/runtime-coverage/release/packages/kernel.ucl projects/runtime-coverage/release/packages/runtime.ucl projects/runtime-coverage/release/release.sh projects/runtime-coverage/sbin/route/route.8 projects/runtime-coverage/share/man/man4/bge.4 projects/runtime-coverage/share/man/man4/pfsync.4 projects/runtime-coverage/share/man/man9/sbuf.9 projects/runtime-coverage/share/misc/bsd-family-tree projects/runtime-coverage/share/mk/bsd.crunchgen.mk projects/runtime-coverage/share/mk/bsd.lib.mk projects/runtime-coverage/sys/amd64/amd64/minidump_machdep.c projects/runtime-coverage/sys/amd64/include/cpufunc.h projects/runtime-coverage/sys/amd64/include/intr_machdep.h projects/runtime-coverage/sys/arm/arm/minidump_machdep.c projects/runtime-coverage/sys/arm64/arm64/machdep.c projects/runtime-coverage/sys/arm64/arm64/minidump_machdep.c projects/runtime-coverage/sys/boot/common/part.c projects/runtime-coverage/sys/boot/efi/include/efi.h projects/runtime-coverage/sys/boot/efi/loader/arch/amd64/trap.c projects/runtime-coverage/sys/cam/cam_iosched.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/device.h projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_tasklet.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_work.c projects/runtime-coverage/sys/conf/files projects/runtime-coverage/sys/conf/kern.post.mk projects/runtime-coverage/sys/crypto/aesni/aesni_ghash.c projects/runtime-coverage/sys/crypto/aesni/aesni_wrap.c projects/runtime-coverage/sys/ddb/db_textdump.c projects/runtime-coverage/sys/dev/cxgbe/tom/t4_listen.c projects/runtime-coverage/sys/dev/safe/safe.c projects/runtime-coverage/sys/dev/syscons/scterm-teken.c projects/runtime-coverage/sys/dev/syscons/syscons.c projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.c projects/runtime-coverage/sys/dev/vt/vt_core.c projects/runtime-coverage/sys/i386/i386/exception.s projects/runtime-coverage/sys/i386/i386/minidump_machdep.c projects/runtime-coverage/sys/i386/include/intr_machdep.h projects/runtime-coverage/sys/kern/kern_dump.c projects/runtime-coverage/sys/kern/kern_ktr.c projects/runtime-coverage/sys/kern/kern_shutdown.c projects/runtime-coverage/sys/kern/subr_intr.c projects/runtime-coverage/sys/kern/subr_sbuf.c projects/runtime-coverage/sys/kern/subr_smp.c projects/runtime-coverage/sys/mips/atheros/if_arge.c projects/runtime-coverage/sys/mips/mips/minidump_machdep.c projects/runtime-coverage/sys/modules/Makefile projects/runtime-coverage/sys/net/bpf.c projects/runtime-coverage/sys/net/if_vlan.c projects/runtime-coverage/sys/netinet/tcp_usrreq.c projects/runtime-coverage/sys/sparc64/sparc64/dump_machdep.c projects/runtime-coverage/sys/sys/conf.h projects/runtime-coverage/sys/sys/consio.h projects/runtime-coverage/sys/sys/gtaskqueue.h projects/runtime-coverage/sys/sys/kernel.h projects/runtime-coverage/sys/sys/kerneldump.h projects/runtime-coverage/sys/sys/sbuf.h projects/runtime-coverage/sys/sys/taskqueue.h projects/runtime-coverage/sys/teken/sequences projects/runtime-coverage/sys/teken/teken.h projects/runtime-coverage/sys/teken/teken_subr_compat.h projects/runtime-coverage/sys/vm/vm_kern.c projects/runtime-coverage/sys/vm/vm_object.c projects/runtime-coverage/sys/vm/vm_object.h projects/runtime-coverage/sys/vm/vm_page.c projects/runtime-coverage/sys/vm/vm_page.h projects/runtime-coverage/sys/x86/x86/intr_machdep.c projects/runtime-coverage/sys/x86/x86/mp_x86.c projects/runtime-coverage/tools/build/mk/OptionalObsoleteFiles.inc projects/runtime-coverage/usr.bin/calendar/calendars/calendar.freebsd projects/runtime-coverage/usr.bin/grep/util.c projects/runtime-coverage/usr.sbin/bootparamd/bootparamd/bootparamd.c projects/runtime-coverage/usr.sbin/bootparamd/callbootd/callbootd.c projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.1 projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/runtime-coverage/ (props changed) projects/runtime-coverage/contrib/binutils/ (props changed) projects/runtime-coverage/contrib/zstd/ (props changed) Modified: projects/runtime-coverage/Makefile ============================================================================== --- projects/runtime-coverage/Makefile Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/Makefile Fri Aug 18 21:37:26 2017 (r322676) @@ -221,7 +221,7 @@ SUB_MAKE= `test -x ${MYMAKE} && echo ${MYMAKE} || echo SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk .endif -_MAKE= PATH=${PATH} MAKE_CMD=${MAKE} ${SUB_MAKE} -f Makefile.inc1 \ +_MAKE= PATH=${PATH} MAKE_CMD="${MAKE}" ${SUB_MAKE} -f Makefile.inc1 \ TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Only allow meta mode for the whitelisted targets. See META_TGT_WHITELIST Modified: projects/runtime-coverage/Makefile.inc1 ============================================================================== --- projects/runtime-coverage/Makefile.inc1 Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/Makefile.inc1 Fri Aug 18 21:37:26 2017 (r322676) @@ -1635,7 +1635,6 @@ create-world-package-${pkgname}: .PHONY /^version/ { print $$2; next } \ ' ${WSTAGEDIR}/${pkgname}.ucl @if [ "${pkgname}" == "runtime" ]; then \ - sed -i '' -e "s/%KERNCONF%/${INSTALLKERNEL:tl}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ fi ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ Modified: projects/runtime-coverage/Makefile.libcompat ============================================================================== --- projects/runtime-coverage/Makefile.libcompat Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/Makefile.libcompat Fri Aug 18 21:37:26 2017 (r322676) @@ -180,7 +180,7 @@ build${libcompat}: .PHONY .endfor ${_+_}cd ${.CURDIR}; \ ${LIBCOMPATWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) .for _t in ${_obj} all ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIBCOMPATWMAKE} \ -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t} @@ -193,7 +193,7 @@ distribute${libcompat} install${libcompat}: .PHONY .for _dir in ${_LC_LIBDIRS.yes} ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATIMAKE} ${.TARGET:S/${libcompat}$//} .endfor -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \ PROG=ld-elf32.so.1 ${LIBCOMPATIMAKE} ${.TARGET:S/32$//} ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIBCOMPATIMAKE} \ Modified: projects/runtime-coverage/bin/pkill/pkill.c ============================================================================== --- projects/runtime-coverage/bin/pkill/pkill.c Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/bin/pkill/pkill.c Fri Aug 18 21:37:26 2017 (r322676) @@ -568,6 +568,8 @@ main(int argc, char **argv) continue; rv |= (*action)(kp); } + if (rv && pgrep) + putchar('\n'); if (!did_action && !pgrep && longfmt) fprintf(stderr, "No matching processes belonging to you were found\n"); Modified: projects/runtime-coverage/contrib/binutils/bfd/ecoff.c ============================================================================== --- projects/runtime-coverage/contrib/binutils/bfd/ecoff.c Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/contrib/binutils/bfd/ecoff.c Fri Aug 18 21:37:26 2017 (r322676) @@ -1878,7 +1878,7 @@ _bfd_ecoff_sizeof_headers (bfd *abfd, ret = (bfd_coff_filhsz (abfd) + bfd_coff_aoutsz (abfd) + c * bfd_coff_scnhsz (abfd)); - return BFD_ALIGN (ret, 16); + return (int) BFD_ALIGN (ret, 16); } /* Get the contents of a section. */ Modified: projects/runtime-coverage/contrib/binutils/gas/config/tc-mips.c ============================================================================== --- projects/runtime-coverage/contrib/binutils/gas/config/tc-mips.c Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/contrib/binutils/gas/config/tc-mips.c Fri Aug 18 21:37:26 2017 (r322676) @@ -2920,7 +2920,7 @@ append_insn (struct mips_cl_insn *ip, expressionS *add instruction. May want to add this support in the future. */ } /* Never set the bit for $0, which is always zero. */ - mips_gprmask &= ~1 << 0; + mips_gprmask &= ~(1 << 0); } else { @@ -3310,7 +3310,7 @@ macro_end (void) warning now. */ const char *msg = macro_warning (subtype); if (msg != 0) - as_warn (msg); + as_warn ("%s", msg); } else { @@ -14463,7 +14463,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec { const char *msg = macro_warning (fragp->fr_subtype); if (msg != 0) - as_warn_where (fragp->fr_file, fragp->fr_line, msg); + as_warn_where (fragp->fr_file, fragp->fr_line, "%s", msg); } /* Go through all the fixups for the first sequence. Disable them Modified: projects/runtime-coverage/contrib/mdocml/lib.in ============================================================================== --- projects/runtime-coverage/contrib/mdocml/lib.in Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/contrib/mdocml/lib.in Fri Aug 18 21:37:26 2017 (r322676) @@ -34,7 +34,7 @@ LINE("libc", "Standard C\\~Library (libc, \\-lc)") LINE("libc_r", "Reentrant C\\~Library (libc_r, \\-lc_r)") LINE("libcalendar", "Calendar Arithmetic Library (libcalendar, \\-lcalendar)") LINE("libcam", "Common Access Method User Library (libcam, \\-lcam)") -LINE("libcasper", "Casper Library (libcasper, \\-lcapser)") +LINE("libcasper", "Casper Library (libcasper, \\-lcasper)") LINE("libcdk", "Curses Development Kit Library (libcdk, \\-lcdk)") LINE("libcipher", "FreeSec Crypt Library (libcipher, \\-lcipher)") LINE("libcompat", "Compatibility Library (libcompat, \\-lcompat)") Modified: projects/runtime-coverage/etc/periodic/daily/Makefile ============================================================================== --- projects/runtime-coverage/etc/periodic/daily/Makefile Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/etc/periodic/daily/Makefile Fri Aug 18 21:37:26 2017 (r322676) @@ -7,6 +7,7 @@ FILESGROUPS=FILES FILES= 100.clean-disks \ 110.clean-tmps \ 120.clean-preserve \ + 140.clean-rwho \ 200.backup-passwd \ 210.backup-aliases \ 330.news \ @@ -45,14 +46,6 @@ FILES+= 130.clean-msgs FILES+= 480.status-ntpd \ 480.leapfile-ntpd .endif - -.if ${MK_RCMDS} != "no" -FILESGROUPS+= RCMDS -RCMDS+= 140.clean-rwho -.endif -RCMDSDIR= /etc/periodic/daily -RCMDSMODE= ${BINMODE} -RCMDSPACKAGE= rcmds .if ${MK_SENDMAIL} != "no" FILES+= 150.clean-hoststat \ Modified: projects/runtime-coverage/etc/rc.d/Makefile ============================================================================== --- projects/runtime-coverage/etc/rc.d/Makefile Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/etc/rc.d/Makefile Fri Aug 18 21:37:26 2017 (r322676) @@ -100,6 +100,7 @@ FILES= DAEMON \ rpcbind \ rtadvd \ rtsold \ + rwho \ savecore \ securelevel \ serial \ @@ -269,12 +270,6 @@ SSHPACKAGE= ssh .if ${MK_PF} != "no" FILES+= ftp-proxy -.endif - -.if ${MK_RCMDS} != "no" -FILESGROUPS+= RCMDS -RCMDS+= rwho -RCMDSPACKAGE= rcmds .endif .if ${MK_ROUTED} != "no" Modified: projects/runtime-coverage/gnu/usr.bin/binutils/Makefile.inc0 ============================================================================== --- projects/runtime-coverage/gnu/usr.bin/binutils/Makefile.inc0 Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/gnu/usr.bin/binutils/Makefile.inc0 Fri Aug 18 21:37:26 2017 (r322676) @@ -16,7 +16,7 @@ TARGET_VENDOR?= unknown TARGET_OS?= freebsd BINUTILS_ARCH=${TARGET_ARCH:C/amd64/x86_64/} TARGET_TUPLE?= ${BINUTILS_ARCH}-${TARGET_VENDOR}-${TARGET_OS} -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ +.if ${TARGET_ARCH:Marm*eb} != "" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el*} == "") TARGET_BIG_ENDIAN=t .endif Modified: projects/runtime-coverage/gnu/usr.bin/binutils/ld/Makefile.arm ============================================================================== --- projects/runtime-coverage/gnu/usr.bin/binutils/ld/Makefile.arm Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/gnu/usr.bin/binutils/ld/Makefile.arm Fri Aug 18 21:37:26 2017 (r322676) @@ -1,6 +1,6 @@ # $FreeBSD$ -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marm*eb} != "" NATIVE_EMULATION= armelfb_fbsd .else NATIVE_EMULATION= armelf_fbsd Modified: projects/runtime-coverage/gnu/usr.bin/binutils/libbfd/Makefile.arm ============================================================================== --- projects/runtime-coverage/gnu/usr.bin/binutils/libbfd/Makefile.arm Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/gnu/usr.bin/binutils/libbfd/Makefile.arm Fri Aug 18 21:37:26 2017 (r322676) @@ -1,6 +1,6 @@ # $FreeBSD$ -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marm*eb} != "" DEFAULT_VECTOR= bfd_elf32_bigarm_vec .else DEFAULT_VECTOR= bfd_elf32_littlearm_vec @@ -14,7 +14,7 @@ SRCS+= cpu-arm.c \ elflink.c VECS+= ${DEFAULT_VECTOR} -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marm*eb} != "" VECS+= bfd_elf32_littlearm_vec .else VECS+= bfd_elf32_bigarm_vec Modified: projects/runtime-coverage/gnu/usr.bin/cc/Makefile.inc ============================================================================== --- projects/runtime-coverage/gnu/usr.bin/cc/Makefile.inc Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/gnu/usr.bin/cc/Makefile.inc Fri Aug 18 21:37:26 2017 (r322676) @@ -31,7 +31,7 @@ CFLAGS+= -DCROSS_DIRECTORY_STRUCTURE CFLAGS+= -DTARGET_ARM_EABI .endif -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" +.if ${TARGET_ARCH:Marm*eb} != "" CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END .endif .if ${TARGET_ARCH} == "armv6" || ${TARGET_ARCH} == "armv6eb" Modified: projects/runtime-coverage/gnu/usr.bin/cc/Makefile.tgt ============================================================================== --- projects/runtime-coverage/gnu/usr.bin/cc/Makefile.tgt Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/gnu/usr.bin/cc/Makefile.tgt Fri Aug 18 21:37:26 2017 (r322676) @@ -14,7 +14,7 @@ GCC_CPU=${TARGET_CPUARCH:C/amd64/i386/:C/powerpc/rs600 .if ${TARGET_ARCH} == "sparc64" TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc .endif -.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb" || \ +.if ${TARGET_ARCH:Marm*eb} != "" || \ (${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips*el*} == "") TARGET_BIG_ENDIAN=t .endif Modified: projects/runtime-coverage/lib/libc/i386/Makefile.inc ============================================================================== --- projects/runtime-coverage/lib/libc/i386/Makefile.inc Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/lib/libc/i386/Makefile.inc Fri Aug 18 21:37:26 2017 (r322676) @@ -4,3 +4,13 @@ GDTOASRCS+=strtorx.c SRCS+=machdep_ldisx.c SYM_MAPS+=${LIBC_SRCTOP}/i386/Symbol.map + +# XXX force use of ld.bfd for linking i386 libc +# +# lld can successfully link most of a working i386 userland and kernel, +# but produces a broken libc. For now if we're otherwise using lld, and +# ld.bfd is available, explicitly use it for libc. +.include +.if ${LINKER_TYPE} == "lld" && ${MK_BINUTILS_BOOTSTRAP} != "no" +LDFLAGS+=-fuse-ld=bfd +.endif Modified: projects/runtime-coverage/lib/libcompiler_rt/Makefile.inc ============================================================================== --- projects/runtime-coverage/lib/libcompiler_rt/Makefile.inc Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/lib/libcompiler_rt/Makefile.inc Fri Aug 18 21:37:26 2017 (r322676) @@ -184,7 +184,7 @@ SRCF+= umodsi3 .endif # FreeBSD-specific atomic intrinsics. -.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6" +.if ${MACHINE_CPUARCH} == "arm" .PATH: ${SRCTOP}/sys/arm/arm SRCF+= stdatomic Modified: projects/runtime-coverage/lib/libfetch/common.c ============================================================================== --- projects/runtime-coverage/lib/libfetch/common.c Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/lib/libfetch/common.c Fri Aug 18 21:37:26 2017 (r322676) @@ -291,7 +291,7 @@ fetch_resolve(const char *addr, int port, int af) goto syserr; service = sbuf; } else if (*sep != '\0') { - service = sep; + service = sep + 1; } else { service = NULL; } Modified: projects/runtime-coverage/lib/libutil/kinfo_getvmmap.3 ============================================================================== --- projects/runtime-coverage/lib/libutil/kinfo_getvmmap.3 Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/lib/libutil/kinfo_getvmmap.3 Fri Aug 18 21:37:26 2017 (r322676) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 27, 2015 +.Dd August 18, 2017 .Dt KINFO_GETVMMAP 3 .Os .Sh NAME @@ -58,6 +58,13 @@ with the mib. While the kernel returns a packed structure, this function expands the data into a fixed record format. +.Sh CAVEAT +.Fn kinfo_getvmmap +calls can cause significant CPU consumption because calculating the residency +counts requires iterating over all memory pages of the process. +Setting the sysctl variable +.Va kern.proc_vmmap_skip_resident_count +to 1 prevents this calculation. .Sh RETURN VALUES On success the .Fn kinfo_getvmmap Modified: projects/runtime-coverage/release/packages/kernel.ucl ============================================================================== --- projects/runtime-coverage/release/packages/kernel.ucl Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/release/packages/kernel.ucl Fri Aug 18 21:37:26 2017 (r322676) @@ -16,43 +16,6 @@ desc = <mediasize < SIZEOF_METADATA + dumpsize + di->blocksize * 2 + - kerneldumpcrypto_dumpkeysize(di->kdc)) { - error = E2BIG; - goto fail; - } - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= di->blocksize * 2; - dumplo -= kerneldumpcrypto_dumpkeysize(di->kdc); progress = dumpsize; - /* Initialize kernel dump crypto. */ - error = kerneldumpcrypto_init(di->kdc); - if (error) - goto fail; - /* Initialize mdhdr */ bzero(&mdhdr, sizeof(mdhdr)); strcpy(mdhdr.magic, MINIDUMP_MAGIC); @@ -347,24 +327,16 @@ minidumpsys(struct dumperinfo *di) mdhdr.dmapbase = DMAP_MIN_ADDRESS; mdhdr.dmapend = DMAP_MAX_ADDRESS; - mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, dumpsize, - kerneldumpcrypto_dumpkeysize(di->kdc), di->blocksize); + dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, + dumpsize); printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, ptoa((uintmax_t)physmem) / 1048576); - /* Dump leader */ - error = dump_write_header(di, &kdh, 0, dumplo); - if (error) + error = dump_start(di, &kdh, &dumplo); + if (error != 0) goto fail; - dumplo += di->blocksize; - /* Dump key */ - error = dump_write_key(di, 0, dumplo); - if (error) - goto fail; - dumplo += kerneldumpcrypto_dumpkeysize(di->kdc); - /* Dump my header */ bzero(&fakepd, sizeof(fakepd)); bcopy(&mdhdr, &fakepd, sizeof(mdhdr)); @@ -447,14 +419,10 @@ minidumpsys(struct dumperinfo *di) if (error) goto fail; - /* Dump trailer */ - error = dump_write_header(di, &kdh, 0, dumplo); - if (error) + error = dump_finish(di, &kdh, dumplo); + if (error != 0) goto fail; - dumplo += di->blocksize; - /* Signal completion, signoff and exit stage left. */ - dump_write(di, NULL, 0, 0, 0); printf("\nDump complete\n"); return (0); Modified: projects/runtime-coverage/sys/amd64/include/cpufunc.h ============================================================================== --- projects/runtime-coverage/sys/amd64/include/cpufunc.h Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/sys/amd64/include/cpufunc.h Fri Aug 18 21:37:26 2017 (r322676) @@ -834,6 +834,85 @@ intr_restore(register_t rflags) write_rflags(rflags); } +enum { + SGX_ECREATE = 0x0, + SGX_EADD = 0x1, + SGX_EINIT = 0x2, + SGX_EREMOVE = 0x3, + SGX_EDGBRD = 0x4, + SGX_EDGBWR = 0x5, + SGX_EEXTEND = 0x6, + SGX_ELDU = 0x8, + SGX_EBLOCK = 0x9, + SGX_EPA = 0xA, + SGX_EWB = 0xB, + SGX_ETRACK = 0xC, +}; + +enum { + SGX_PT_SECS = 0x00, + SGX_PT_TCS = 0x01, + SGX_PT_REG = 0x02, + SGX_PT_VA = 0x03, + SGX_PT_TRIM = 0x04, +}; + +int sgx_encls(uint32_t eax, uint64_t rbx, uint64_t rcx, uint64_t rdx); + +static __inline int +sgx_ecreate(void *pginfo, void *secs) +{ + + return (sgx_encls(SGX_ECREATE, (uint64_t)pginfo, + (uint64_t)secs, 0)); +} + +static __inline int +sgx_eadd(void *pginfo, void *epc) +{ + + return (sgx_encls(SGX_EADD, (uint64_t)pginfo, + (uint64_t)epc, 0)); +} + +static __inline int +sgx_einit(void *sigstruct, void *secs, void *einittoken) +{ + + return (sgx_encls(SGX_EINIT, (uint64_t)sigstruct, + (uint64_t)secs, (uint64_t)einittoken)); +} + +static __inline int +sgx_eextend(void *secs, void *epc) +{ + + return (sgx_encls(SGX_EEXTEND, (uint64_t)secs, + (uint64_t)epc, 0)); +} + +static __inline int +sgx_epa(void *epc) +{ + + return (sgx_encls(SGX_EPA, SGX_PT_VA, (uint64_t)epc, 0)); +} + +static __inline int +sgx_eldu(uint64_t rbx, uint64_t rcx, + uint64_t rdx) +{ + + return (sgx_encls(SGX_ELDU, rbx, rcx, rdx)); +} + +static __inline int +sgx_eremove(void *epc) +{ + + return (sgx_encls(SGX_EREMOVE, 0, (uint64_t)epc, 0)); +} + #else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ int breakpoint(void); Modified: projects/runtime-coverage/sys/amd64/include/intr_machdep.h ============================================================================== --- projects/runtime-coverage/sys/amd64/include/intr_machdep.h Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/sys/amd64/include/intr_machdep.h Fri Aug 18 21:37:26 2017 (r322676) @@ -130,6 +130,7 @@ struct intsrc { u_long *is_straycount; u_int is_index; u_int is_handlers; + u_int is_cpu; }; struct trapframe; Copied: projects/runtime-coverage/sys/amd64/include/sgx.h (from r322675, head/sys/amd64/include/sgx.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/sys/amd64/include/sgx.h Fri Aug 18 21:37:26 2017 (r322676, copy of r322675, head/sys/amd64/include/sgx.h) @@ -0,0 +1,64 @@ +/*- + * Copyright (c) 2017 Ruslan Bukin + * All rights reserved. + * + * This software was developed by BAE Systems, the University of Cambridge + * Computer Laboratory, and Memorial University under DARPA/AFRL contract + * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing + * (TC) research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* User-visible header. */ + +#ifndef _MACHINE_SGX_H_ +#define _MACHINE_SGX_H_ + +#define SGX_MAGIC 0xA4 +#define SGX_IOC_ENCLAVE_CREATE \ + _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create) +#define SGX_IOC_ENCLAVE_ADD_PAGE \ + _IOW(SGX_MAGIC, 0x01, struct sgx_enclave_add_page) +#define SGX_IOC_ENCLAVE_INIT \ + _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init) + +struct sgx_enclave_create { + uint64_t src; +} __packed; + +struct sgx_enclave_add_page { + uint64_t addr; + uint64_t src; + uint64_t secinfo; + uint16_t mrmask; +} __packed; + +struct sgx_enclave_init { + uint64_t addr; + uint64_t sigstruct; + uint64_t einittoken; +} __packed; + +#endif /* !_MACHINE_SGX_H_ */ Copied: projects/runtime-coverage/sys/amd64/include/sgxreg.h (from r322675, head/sys/amd64/include/sgxreg.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/sys/amd64/include/sgxreg.h Fri Aug 18 21:37:26 2017 (r322676, copy of r322675, head/sys/amd64/include/sgxreg.h) @@ -0,0 +1,155 @@ +/*- + * Copyright (c) 2017 Ruslan Bukin + * All rights reserved. + * + * This software was developed by BAE Systems, the University of Cambridge + * Computer Laboratory, and Memorial University under DARPA/AFRL contract + * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing + * (TC) research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* Machine-defined variables. */ + +#ifndef _MACHINE_SGXREG_H_ +#define _MACHINE_SGXREG_H_ + +/* Error codes. */ +#define SGX_SUCCESS 0 +#define SGX_INVALID_SIG_STRUCT 1 /* EINIT */ +#define SGX_INVALID_ATTRIBUTE 2 /* EINIT, EGETKEY */ +#define SGX_BLSTATE 3 /* EBLOCK */ +#define SGX_INVALID_MEASUREMENT 4 /* EINIT */ +#define SGX_NOTBLOCKABLE 5 /* EBLOCK */ +#define SGX_PG_INVLD 6 /* EBLOCK */ +#define SGX_LOCKFAIL 7 /* EBLOCK, EMODPR, EMODT */ +#define SGX_INVALID_SIGNATURE 8 /* EINIT */ +#define SGX_MAC_COMPARE_FAIL 9 /* ELDB, ELDU */ +#define SGX_PAGE_NOT_BLOCKED 10 /* EWB */ +#define SGX_NOT_TRACKED 11 /* EWB, EACCEPT */ +#define SGX_VA_SLOT_OCCUPIED 12 /* EWB */ +#define SGX_CHILD_PRESENT 13 /* EWB, EREMOVE */ +#define SGX_ENCLAVE_ACT 14 /* EREMOVE */ +#define SGX_ENTRYEPOCH_LOCKED 15 /* EBLOCK */ +#define SGX_INVALID_EINIT_TOKEN 16 /* EINIT */ +#define SGX_PREV_TRK_INCMPL 17 /* ETRACK */ +#define SGX_PG_IS_SECS 18 /* EBLOCK */ +#define SGX_PAGE_ATTRIBUTES_MISMATCH 19 /* EACCEPT, EACCEPTCOPY */ +#define SGX_PAGE_NOT_MODIFIABLE 20 /* EMODPR, EMODT */ +#define SGX_INVALID_CPUSVN 32 /* EINIT, EGETKEY */ +#define SGX_INVALID_ISVSVN 64 /* EGETKEY */ +#define SGX_UNMASKED_EVENT 128 /* EINIT */ +#define SGX_INVALID_KEYNAME 256 /* EGETKEY */ + +/* + * 2.10 Page Information (PAGEINFO) + * PAGEINFO is an architectural data structure that is used as a parameter + * to the EPC-management instructions. It requires 32-Byte alignment. + */ +struct page_info { + uint64_t linaddr; + uint64_t srcpge; + union { + struct secinfo *secinfo; + uint64_t pcmd; + }; + uint64_t secs; +} __aligned(32); + +/* + * 2.11 Security Information (SECINFO) + * The SECINFO data structure holds meta-data about an enclave page. + */ +struct secinfo { + uint64_t flags; +#define SECINFO_FLAGS_PT_S 8 /* Page type shift */ +#define SECINFO_FLAGS_PT_M (0xff << SECINFO_FLAGS_PT_S) + uint64_t reserved[7]; +} __aligned(64); + +/* + * 2.7.1 ATTRIBUTES + * The ATTRIBUTES data structure is comprised of bit-granular fields that + * are used in the SECS, CPUID enumeration, the REPORT and the KEYREQUEST + * structures. + */ +struct secs_attr { + uint8_t reserved1: 1; + uint8_t debug: 1; + uint8_t mode64bit: 1; + uint8_t reserved2: 1; + uint8_t provisionkey: 1; + uint8_t einittokenkey: 1; + uint8_t reserved3: 2; +#define SECS_ATTR_RSV4_SIZE 7 + uint8_t reserved4[SECS_ATTR_RSV4_SIZE]; + uint64_t xfrm; /* X-Feature Request Mask */ +}; + +/* + * 2.7 SGX Enclave Control Structure (SECS) + * The SECS data structure requires 4K-Bytes alignment. + */ +struct secs { + uint64_t size; + uint64_t base; + uint32_t ssa_frame_size; + uint32_t misc_select; +#define SECS_RSV1_SIZE 24 + uint8_t reserved1[SECS_RSV1_SIZE]; + struct secs_attr attributes; + uint8_t mr_enclave[32]; +#define SECS_RSV2_SIZE 32 + uint8_t reserved2[SECS_RSV2_SIZE]; + uint8_t mr_signer[32]; +#define SECS_RSV3_SIZE 96 + uint8_t reserved3[SECS_RSV3_SIZE]; + uint16_t isv_prod_id; + uint16_t isv_svn; +#define SECS_RSV4_SIZE 3836 + uint8_t reserved4[SECS_RSV4_SIZE]; +}; + +/* + * 2.8 Thread Control Structure (TCS) + * Each executing thread in the enclave is associated with a + * Thread Control Structure. It requires 4K-Bytes alignment. + */ +struct tcs { + uint64_t reserved1; + uint64_t flags; + uint64_t ossa; + uint32_t cssa; + uint32_t nssa; + uint64_t oentry; + uint64_t reserved2; + uint64_t ofsbasgx; + uint64_t ogsbasgx; + uint32_t fslimit; + uint32_t gslimit; + uint64_t reserved3[503]; +}; + +#endif /* !_MACHINE_SGXREG_H_ */ Modified: projects/runtime-coverage/sys/arm/arm/minidump_machdep.c ============================================================================== --- projects/runtime-coverage/sys/arm/arm/minidump_machdep.c Fri Aug 18 21:20:38 2017 (r322675) +++ projects/runtime-coverage/sys/arm/arm/minidump_machdep.c Fri Aug 18 21:37:26 2017 (r322676) @@ -53,12 +53,6 @@ __FBSDID("$FreeBSD$"); CTASSERT(sizeof(struct kerneldumpheader) == 512); -/* - * Don't touch the first SIZEOF_METADATA bytes on the dump device. This - * is to protect us from metadata and to protect metadata from us. - */ -#define SIZEOF_METADATA (64*1024) - uint32_t *vm_page_dump; int vm_page_dump_size; @@ -219,7 +213,6 @@ minidumpsys(struct dumperinfo *di) dumpsize = ptesize; dumpsize += round_page(msgbufp->msg_size); dumpsize += round_page(vm_page_dump_size); - for (i = 0; i < vm_page_dump_size / sizeof(*vm_page_dump); i++) { bits = vm_page_dump[i]; while (bits) { @@ -234,26 +227,10 @@ minidumpsys(struct dumperinfo *di) bits &= ~(1ul << bit); } } - dumpsize += PAGE_SIZE; - /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + di->blocksize * 2 + - kerneldumpcrypto_dumpkeysize(di->kdc)) { - error = ENOSPC; - goto fail; - } - - dumplo = di->mediaoffset + di->mediasize - dumpsize; - dumplo -= di->blocksize * 2; - dumplo -= kerneldumpcrypto_dumpkeysize(di->kdc); progress = dumpsize; - /* Initialize kernel dump crypto. */ - error = kerneldumpcrypto_init(di->kdc); - if (error) - goto fail; - /* Initialize mdhdr */ bzero(&mdhdr, sizeof(mdhdr)); strcpy(mdhdr.magic, MINIDUMP_MAGIC); @@ -268,24 +245,16 @@ minidumpsys(struct dumperinfo *di) #else mdhdr.mmuformat = MINIDUMP_MMU_FORMAT_V4; #endif - mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, dumpsize, - kerneldumpcrypto_dumpkeysize(di->kdc), di->blocksize); + dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, + dumpsize); printf("Physical memory: %u MB\n", ptoa((uintmax_t)physmem) / 1048576); printf("Dumping %llu MB:", (long long)dumpsize >> 20); - /* Dump leader */ - error = dump_write_header(di, &kdh, 0, dumplo); - if (error) + error = dump_start(di, &kdh, &dumplo); + if (error != 0) goto fail; - dumplo += di->blocksize; - /* Dump key */ - error = dump_write_key(di, 0, dumplo); - if (error) - goto fail; - dumplo += kerneldumpcrypto_dumpkeysize(di->kdc); - /* Dump my header */ bzero(dumpbuf, sizeof(dumpbuf)); bcopy(&mdhdr, dumpbuf, sizeof(mdhdr)); @@ -360,14 +329,10 @@ minidumpsys(struct dumperinfo *di) if (error) goto fail; - /* Dump trailer */ - error = dump_write_header(di, &kdh, 0, dumplo); - if (error) + error = dump_finish(di, &kdh, dumplo); + if (error != 0) goto fail; - dumplo += di->blocksize; - /* Signal completion, signoff and exit stage left. */ - dump_write(di, NULL, 0, 0, 0); printf("\nDump complete\n"); return (0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sat Aug 19 00:37:32 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C1C15DE3AEA for ; Sat, 19 Aug 2017 00:37:32 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8BAEF8019A; Sat, 19 Aug 2017 00:37:32 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7J0bV4X017788; Sat, 19 Aug 2017 00:37:31 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7J0bVwS017787; Sat, 19 Aug 2017 00:37:31 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708190037.v7J0bVwS017787@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 19 Aug 2017 00:37:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322679 - projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Commit-Revision: 322679 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 00:37:32 -0000 Author: rmacklem Date: Sat Aug 19 00:37:31 2017 New Revision: 322679 URL: https://svnweb.freebsd.org/changeset/base/322679 Log: Set nfsrv_doflexfile == 1 when there are mirrors, since File Layout doesn't support mirrors. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 19 00:32:26 2017 (r322678) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 19 00:37:31 2017 (r322679) @@ -47,6 +47,7 @@ extern struct mtx nfsrv_dslock_mtx; extern int nfsd_debuglevel; extern u_int nfsrv_dsdirsize; extern struct nfsdevicehead nfsrv_devidhead; +extern int nfsrv_doflexfile; NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; @@ -6851,8 +6852,10 @@ nfsrv_setdsserver(char *dspathp, char *mirrorp, NFSPRO i++; if (i > NFSDEV_MAXMIRRORS) error = ENXIO; - else if (i > nfsrv_maxpnfsmirror) + else if (i > nfsrv_maxpnfsmirror) { nfsrv_maxpnfsmirror = i; + nfsrv_doflexfile = 1; /* Force Flex File. */ + } break; } } From owner-svn-src-projects@freebsd.org Sat Aug 19 00:40:05 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AFC05DE3DD1 for ; Sat, 19 Aug 2017 00:40:05 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7EF3C80472; Sat, 19 Aug 2017 00:40:05 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7J0e42W018012; Sat, 19 Aug 2017 00:40:04 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7J0e4Kv018011; Sat, 19 Aug 2017 00:40:04 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708190040.v7J0e4Kv018011@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 19 Aug 2017 00:40:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322681 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 322681 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 00:40:05 -0000 Author: rmacklem Date: Sat Aug 19 00:40:04 2017 New Revision: 322681 URL: https://svnweb.freebsd.org/changeset/base/322681 Log: Set nfsrv_doflexfile == 1 when there are mirrors, since mirrors aren't supported by the File layout. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 19 00:37:33 2017 (r322680) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 19 00:40:04 2017 (r322681) @@ -47,6 +47,7 @@ extern struct mtx nfsrv_dslock_mtx; extern int nfsd_debuglevel; extern u_int nfsrv_dsdirsize; extern struct nfsdevicehead nfsrv_devidhead; +extern int nfsrv_doflexfile; NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; @@ -6851,8 +6852,10 @@ nfsrv_setdsserver(char *dspathp, char *mirrorp, NFSPRO i++; if (i > NFSDEV_MAXMIRRORS) error = ENXIO; - else if (i > nfsrv_maxpnfsmirror) + else if (i > nfsrv_maxpnfsmirror) { nfsrv_maxpnfsmirror = i; + nfsrv_doflexfile = 1; /* Force Flex File. */ + } break; } } From owner-svn-src-projects@freebsd.org Sat Aug 19 18:31:02 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E272DDB1F1 for ; Sat, 19 Aug 2017 18:31:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1A8CE84E4F; Sat, 19 Aug 2017 18:31:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIV1IP060465; Sat, 19 Aug 2017 18:31:01 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIV0AR060462; Sat, 19 Aug 2017 18:31:00 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191831.v7JIV0AR060462@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:31:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322698 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322698 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:31:02 -0000 Author: ngie Date: Sat Aug 19 18:31:00 2017 New Revision: 322698 URL: https://svnweb.freebsd.org/changeset/base/322698 Log: Complete bsd.cov.mk integration Pass through appropriate objects via COV_OBJS in bsd.lib.mk (based on SOBJS), and appropriate objects via bsd.prog.mk (OBJS). While here, do more intelligent things in terms of iterating over COV_OBJS, building lists of items to install with the GCNOS variable/adding GCNOS to FILESGROUPS, etc. This reduces the 2 unrolled .for loops into 1. Modified: projects/runtime-coverage/share/mk/bsd.cov.mk projects/runtime-coverage/share/mk/bsd.lib.mk projects/runtime-coverage/share/mk/bsd.prog.mk Modified: projects/runtime-coverage/share/mk/bsd.cov.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 17:18:27 2017 (r322697) +++ projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 18:31:00 2017 (r322698) @@ -1,31 +1,22 @@ # $FreeBSD$ -.ifdef notyet .include FILESGROUPS?= FILES -_GCNOGROUPS= -.for _obj in ${OBJS} -# XXX (ngie): this is pretty hamfisted -.if !empty(SRCS:T:M${obj:.o=.asm}) || !empty(SRCS:T:M${obj:.o=.s}) -_gcno= ${_obj:.o=.gcno} -_gcno_prefix= ${_gcno:H:tA} -_gcno_dir= ${COVERAGEDIR}${_gcno_prefix} +GCNOS= ${COV_OBJS:.o=.gcno} -_GCNO_GROUPS+= ${_gcno_prefix} -CLEANFILES+= ${_gcno} -${_gcno_prefix}+= ${_gcno} -${_gcno_prefix}DIR= ${_gcno_dir} -${_gcno}: ${_obj} -.endif -.endfor +.if !empty(GCNOS) +FILESGROUPS+= GCNOS +CLEANFILES+= ${GCNOS} -_GCNO_GROUPS:= ${_GCNO_GROUPS:O:u} -FILESGROUPS+= ${_GCNO_GROUPS} -.for _gcno_group in ${_GCNO_GROUPS} -beforeinstall: ${DESTDIR}${${_gcno_group}DIR} -${DESTDIR}${${_gcno_group}DIR}: +.for _gcno in ${GCNOS} +_gcno_dir= ${COVERAGEDIR}${_gcno:H:tA} +GCNOS_${_gcno:T}DIR= ${_gcno_dir} +.if !target(${DESTDIR}${_gcno_dir}) +beforeinstall: ${DESTDIR}${_gcno_dir} +${DESTDIR}${_gcno_dir}: ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${.TARGET} +.endif .endfor .endif Modified: projects/runtime-coverage/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.lib.mk Sat Aug 19 17:18:27 2017 (r322697) +++ projects/runtime-coverage/share/mk/bsd.lib.mk Sat Aug 19 18:31:00 2017 (r322698) @@ -453,6 +453,7 @@ _libinstall: .if !defined(LIBRARIES_ONLY) .include .if defined(_COV_FLAG) +COV_OBJS= ${SOBJS} .include .endif .include Modified: projects/runtime-coverage/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.prog.mk Sat Aug 19 17:18:27 2017 (r322697) +++ projects/runtime-coverage/share/mk/bsd.prog.mk Sat Aug 19 18:31:00 2017 (r322698) @@ -302,6 +302,7 @@ NLSNAME?= ${PROG} .include .if defined(_COV_FLAG) +COV_OBJS= ${OBJS} .include .endif .include From owner-svn-src-projects@freebsd.org Sat Aug 19 18:36:39 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2BC20DDB948 for ; Sat, 19 Aug 2017 18:36:39 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D045C3A1; Sat, 19 Aug 2017 18:36:38 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIacIi063776; Sat, 19 Aug 2017 18:36:38 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIaaRf063761; Sat, 19 Aug 2017 18:36:36 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191836.v7JIaaRf063761@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:36:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322699 - in projects/runtime-coverage: share/man/man4 sys/boot/fdt/dts/arm sys/conf sys/dev/extres/hwreset sys/dev/pci sys/dev/usb sys/dev/usb/input sys/dev/usb/quirk sys/modules sys/m... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: share/man/man4 sys/boot/fdt/dts/arm sys/conf sys/dev/extres/hwreset sys/dev/pci sys/dev/usb sys/dev/usb/input sys/dev/usb/quirk sys/modules sys/modules/armv8crypto sys/mo... X-SVN-Commit-Revision: 322699 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:36:39 -0000 Author: ngie Date: Sat Aug 19 18:36:36 2017 New Revision: 322699 URL: https://svnweb.freebsd.org/changeset/base/322699 Log: MFhead@r322698 Added: projects/runtime-coverage/share/man/man4/wmt.4 - copied unchanged from r322698, head/share/man/man4/wmt.4 projects/runtime-coverage/sys/dev/usb/input/wmt.c - copied unchanged from r322698, head/sys/dev/usb/input/wmt.c projects/runtime-coverage/sys/modules/usb/wmt/ - copied from r322698, head/sys/modules/usb/wmt/ Modified: projects/runtime-coverage/share/man/man4/Makefile projects/runtime-coverage/share/man/man4/ena.4 projects/runtime-coverage/share/man/man4/sa.4 projects/runtime-coverage/share/man/man4/usb_quirk.4 projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2835.dtsi projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2836.dtsi projects/runtime-coverage/sys/conf/files projects/runtime-coverage/sys/conf/files.arm64 projects/runtime-coverage/sys/dev/extres/hwreset/hwreset.h projects/runtime-coverage/sys/dev/pci/pci_host_generic.h projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.c projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.h projects/runtime-coverage/sys/dev/usb/usb_hid.c projects/runtime-coverage/sys/dev/usb/usbhid.h projects/runtime-coverage/sys/modules/Makefile projects/runtime-coverage/sys/modules/armv8crypto/Makefile projects/runtime-coverage/sys/modules/dtb/rpi/Makefile projects/runtime-coverage/sys/modules/usb/Makefile projects/runtime-coverage/usr.sbin/pw/pw_user.c projects/runtime-coverage/usr.sbin/pw/tests/pw_useradd_test.sh projects/runtime-coverage/usr.sbin/pw/tests/pw_usermod_test.sh projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.1 projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/runtime-coverage/ (props changed) Modified: projects/runtime-coverage/share/man/man4/Makefile ============================================================================== --- projects/runtime-coverage/share/man/man4/Makefile Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/share/man/man4/Makefile Sat Aug 19 18:36:36 2017 (r322699) @@ -562,6 +562,7 @@ MAN= aac.4 \ wlan_tkip.4 \ wlan_wep.4 \ wlan_xauth.4 \ + wmt.4 \ ${_wpi.4} \ wsp.4 \ xe.4 \ Modified: projects/runtime-coverage/share/man/man4/ena.4 ============================================================================== --- projects/runtime-coverage/share/man/man4/ena.4 Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/share/man/man4/ena.4 Sat Aug 19 18:36:36 2017 (r322699) @@ -102,7 +102,7 @@ Supported PCI vendor ID/device IDs: .Bl -diag .It ena%d: failed to init mmio read less .Pp -Error occured during initialization of the mmio register read request. +Error occurred during initialization of the mmio register read request. .It ena%d: Can not reset device .Pp Device could not be reset; device may not be responding or is already @@ -123,7 +123,7 @@ was a problem with initialization of the resources. Failed to get attributes of the device from the controller. .It ena%d: Cannot configure aenq groups rc: %d .Pp -Errors occured when trying to configure AENQ groups. +Errors occurred when trying to configure AENQ groups. .El .Ss Driver initialisation/shutdown phase: .Bl -diag @@ -148,13 +148,13 @@ be attached. Device initialization failed; driver will not be attached. .It ena%d: could not activate irq vector: %d .Pp -Error occured when trying to activate interrupt vectors for Admin Queue. +Error occurred when trying to activate interrupt vectors for Admin Queue. .It ena%d: failed to register interrupt handler for irq %ju: %d .Pp -Error occured when trying to register Admin Queue interrupt handler. +Error occurred when trying to register Admin Queue interrupt handler. .It ena%d: Cannot setup mgmnt queue intr .Pp -Error occured during configuration of the Admin Queue interrupts. +Error occurred during configuration of the Admin Queue interrupts. .It ena%d: Enable MSI-X failed .Pp Configuration of the MSI-X for Admin Queue failed; there could be lack @@ -167,7 +167,7 @@ first and then detach routine should be called again. .It ena%d: Unmapped RX DMA tag associations .It ena%d: Unmapped TX DMA tag associations .Pp -Error occured when trying to destroy RX/TX DMA tag. +Error occurred when trying to destroy RX/TX DMA tag. .It ena%d: Cannot init RSS .It ena%d: Cannot fill indirect table .It ena%d: Cannot fill indirect table @@ -175,7 +175,7 @@ Error occured when trying to destroy RX/TX DMA tag. .It ena%d: Cannot fill hash control .It ena%d: WARNING: RSS was not properly initialized, it will affect bandwidth .Pp -Error occured during initialization of one of RSS resources; device is still +Error occurred during initialization of one of RSS resources; device is still going to work but it will affect performance because all RX packets will be passed to queue 0 and there will be no hash information. .It ena%d: failed to tear down irq: %d Modified: projects/runtime-coverage/share/man/man4/sa.4 ============================================================================== --- projects/runtime-coverage/share/man/man4/sa.4 Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/share/man/man4/sa.4 Sat Aug 19 18:36:36 2017 (r322699) @@ -270,7 +270,7 @@ on tape reads. Tape drives normally return sense data (which contains the residual) when the application reads a block that is not the same length as the amount of data requested. -The SILI bit supresses that notification in most cases. +The SILI bit suppresses that notification in most cases. See the SSC-5 spec (available at t10.org), specifically the section on the READ(6) command, for more information. .It eot_warn Modified: projects/runtime-coverage/share/man/man4/usb_quirk.4 ============================================================================== --- projects/runtime-coverage/share/man/man4/usb_quirk.4 Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/share/man/man4/usb_quirk.4 Sat Aug 19 18:36:36 2017 (r322699) @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 17, 2017 +.Dd August 19, 2017 .Dt USB_QUIRK 4 .Os .Sh NAME @@ -98,6 +98,8 @@ select configuration index 4 by default select configuration index 0 by default .It UQ_ASSUME_CM_OVER_DATA assume cm over data feature +.It UQ_WMT_IGNORE +device should be ignored by wmt driver .El .Sh USB Mass Storage quirks: .Bl -tag -width Ds Copied: projects/runtime-coverage/share/man/man4/wmt.4 (from r322698, head/share/man/man4/wmt.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/share/man/man4/wmt.4 Sat Aug 19 18:36:36 2017 (r322699, copy of r322698, head/share/man/man4/wmt.4) @@ -0,0 +1,84 @@ +.\" Copyright (c) 2014-2017 Vladimir Kondratyev +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd August 19, 2017 +.Dt WMT 4 +.Os +.Sh NAME +.Nm wmt +.Nd MS Windows 7/8/10 - compatible USB HID multi-touch device driver +.Sh SYNOPSIS +To compile this driver into the kernel, place the following lines into +your kernel configuration file: +.Bd -ragged -offset indent +.Cd "device wmt" +.Cd "device usb" +.Cd "device evdev" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +wmt_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for the MS Windows 7/8/10 - compatible USB HID +multi-touch devices found in many laptops. +.Pp +To get multi-touch device working in +.Xr X 7 , +install +.Pa ports/x11-drivers/xf86-input-evdev . +.Sh FILES +.Nm +creates a pseudo-device file, +.Pa /dev/input/eventX +which presents the multi-touch device as an input event device. +.Sh SEE ALSO +.Xr usb 4 , +.Xr loader.conf 5 , +.Xr xorg.conf 5 Pq Pa ports/x11/xorg , +.Xr evdev 4 Pq Pa ports/x11-drivers/xf86-input-evdev . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Vladimir Kondratyev Aq Mt wulf@FreeBSD.org . +.Sh BUGS +.Nm +works only with touchscreens now. +Neither pens nor touchpads are supported. +.Pp +.Nm +cannot act like +.Xr sysmouse 4 , +as +.Xr sysmouse 4 +does not support absolute motion events. Modified: projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2835.dtsi ============================================================================== --- projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2835.dtsi Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2835.dtsi Sat Aug 19 18:36:36 2017 (r322699) @@ -439,7 +439,7 @@ interrupts = <24 25 26 27 28 29 30 31 32 33 34 35 36>; interrupt-parent = <&intc>; - broadcom,channels = <0>; /* Set by VideoCore */ + broadcom,channels = <0x7f35>; }; vc_mbox: mbox { Modified: projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2836.dtsi ============================================================================== --- projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2836.dtsi Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/boot/fdt/dts/arm/bcm2836.dtsi Sat Aug 19 18:36:36 2017 (r322699) @@ -432,7 +432,7 @@ interrupts = <24 25 26 27 28 29 30 31 32 33 34 35 36>; interrupt-parent = <&intc>; - broadcom,channels = <0>; /* Set by VideoCore */ + broadcom,channels = <0x7f35>; }; vc_mbox: mbox { Modified: projects/runtime-coverage/sys/conf/files ============================================================================== --- projects/runtime-coverage/sys/conf/files Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/conf/files Sat Aug 19 18:36:36 2017 (r322699) @@ -3220,6 +3220,7 @@ dev/usb/input/uep.c optional uep dev/usb/input/uhid.c optional uhid dev/usb/input/ukbd.c optional ukbd dev/usb/input/ums.c optional ums +dev/usb/input/wmt.c optional wmt dev/usb/input/wsp.c optional wsp # # USB quirks Modified: projects/runtime-coverage/sys/conf/files.arm64 ============================================================================== --- projects/runtime-coverage/sys/conf/files.arm64 Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/conf/files.arm64 Sat Aug 19 18:36:36 2017 (r322699) @@ -146,7 +146,7 @@ contrib/vchiq/interface/vchiq_arm/vchiq_util.c optiona crypto/armv8/armv8_crypto.c optional armv8crypto armv8_crypto_wrap.o optional armv8crypto \ dependency "$S/crypto/armv8/armv8_crypto_wrap.c" \ - compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -march=armv8a+crypto ${.IMPSRC}" \ + compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc:N-mgeneral-regs-only} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -march=armv8-a+crypto ${.IMPSRC}" \ no-implicit-rule \ clean "armv8_crypto_wrap.o" crypto/blowfish/bf_enc.c optional crypto | ipsec | ipsec_support Modified: projects/runtime-coverage/sys/dev/extres/hwreset/hwreset.h ============================================================================== --- projects/runtime-coverage/sys/dev/extres/hwreset/hwreset.h Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/dev/extres/hwreset/hwreset.h Sat Aug 19 18:36:36 2017 (r322699) @@ -40,8 +40,6 @@ typedef struct hwreset *hwreset_t; * Provider interface */ #ifdef FDT -int hwreset_default_ofw_map(device_t provider_dev, phandle_t xref, int ncells, - pcell_t *cells, intptr_t *id); void hwreset_register_ofw_provider(device_t provider_dev); void hwreset_unregister_ofw_provider(device_t provider_dev); #endif Modified: projects/runtime-coverage/sys/dev/pci/pci_host_generic.h ============================================================================== --- projects/runtime-coverage/sys/dev/pci/pci_host_generic.h Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/dev/pci/pci_host_generic.h Sat Aug 19 18:36:36 2017 (r322699) @@ -66,8 +66,6 @@ struct generic_pcie_core_softc { DECLARE_CLASS(generic_pcie_core_driver); -struct resource *pci_host_generic_core_alloc_resource(device_t, - device_t, int, int *, rman_res_t, rman_res_t, rman_res_t, u_int); int pci_host_generic_core_attach(device_t); struct resource *pci_host_generic_core_alloc_resource(device_t, device_t, int, int *, rman_res_t, rman_res_t, rman_res_t, u_int); Copied: projects/runtime-coverage/sys/dev/usb/input/wmt.c (from r322698, head/sys/dev/usb/input/wmt.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/sys/dev/usb/input/wmt.c Sat Aug 19 18:36:36 2017 (r322699, copy of r322698, head/sys/dev/usb/input/wmt.c) @@ -0,0 +1,729 @@ +/*- + * Copyright (c) 2014-2017 Vladimir Kondratyev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * MS Windows 7/8/10 compatible USB HID Multi-touch Device driver. + * https://msdn.microsoft.com/en-us/library/windows/hardware/jj151569(v=vs.85).aspx + * https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "usbdevs.h" +#include +#include +#include +#include + +#include + +#include +#include + +#define USB_DEBUG_VAR wmt_debug +#include + +#ifdef USB_DEBUG +static int wmt_debug = 0; + +static SYSCTL_NODE(_hw_usb, OID_AUTO, wmt, CTLFLAG_RW, 0, + "USB MSWindows 7/8/10 compatible Multi-touch Device"); +SYSCTL_INT(_hw_usb_wmt, OID_AUTO, debug, CTLFLAG_RWTUN, + &wmt_debug, 1, "Debug level"); +#endif + +#define WMT_BSIZE 1024 /* bytes, buffer size */ + +enum { + WMT_INTR_DT, + WMT_N_TRANSFER, +}; + +enum { + WMT_TIP_SWITCH, +#define WMT_SLOT WMT_TIP_SWITCH + WMT_WIDTH, +#define WMT_MAJOR WMT_WIDTH + WMT_HEIGHT, +#define WMT_MINOR WMT_HEIGHT + WMT_ORIENTATION, + WMT_X, + WMT_Y, + WMT_CONTACTID, + WMT_PRESSURE, + WMT_IN_RANGE, + WMT_CONFIDENCE, + WMT_TOOL_X, + WMT_TOOL_Y, + WMT_N_USAGES, +}; + +#define WMT_NO_CODE (ABS_MAX + 10) +#define WMT_NO_USAGE -1 + +struct wmt_hid_map_item { + char name[5]; + int32_t usage; /* HID usage */ + uint32_t code; /* Evdev event code */ + bool required; /* Required for MT Digitizers */ +}; + +static const struct wmt_hid_map_item wmt_hid_map[WMT_N_USAGES] = { + + [WMT_TIP_SWITCH] = { /* WMT_SLOT */ + .name = "TIP", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_TIP_SWITCH), + .code = ABS_MT_SLOT, + .required = true, + }, + [WMT_WIDTH] = { /* WMT_MAJOR */ + .name = "WDTH", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_WIDTH), + .code = ABS_MT_TOUCH_MAJOR, + .required = false, + }, + [WMT_HEIGHT] = { /* WMT_MINOR */ + .name = "HGHT", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_HEIGHT), + .code = ABS_MT_TOUCH_MINOR, + .required = false, + }, + [WMT_ORIENTATION] = { + .name = "ORIE", + .usage = WMT_NO_USAGE, + .code = ABS_MT_ORIENTATION, + .required = false, + }, + [WMT_X] = { + .name = "X", + .usage = HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X), + .code = ABS_MT_POSITION_X, + .required = true, + }, + [WMT_Y] = { + .name = "Y", + .usage = HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y), + .code = ABS_MT_POSITION_Y, + .required = true, + }, + [WMT_CONTACTID] = { + .name = "C_ID", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_CONTACTID), + .code = ABS_MT_TRACKING_ID, + .required = true, + }, + [WMT_PRESSURE] = { + .name = "PRES", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_TIP_PRESSURE), + .code = ABS_MT_PRESSURE, + .required = false, + }, + [WMT_IN_RANGE] = { + .name = "RANG", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_IN_RANGE), + .code = ABS_MT_DISTANCE, + .required = false, + }, + [WMT_CONFIDENCE] = { + .name = "CONF", + .usage = HID_USAGE2(HUP_DIGITIZERS, HUD_CONFIDENCE), + .code = WMT_NO_CODE, + .required = false, + }, + [WMT_TOOL_X] = { /* Shares HID usage with WMT_X */ + .name = "TL_X", + .usage = HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X), + .code = ABS_MT_TOOL_X, + .required = false, + }, + [WMT_TOOL_Y] = { /* Shares HID usage with WMT_Y */ + .name = "TL_Y", + .usage = HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y), + .code = ABS_MT_TOOL_Y, + .required = false, + }, +}; + +struct wmt_absinfo { + int32_t min; + int32_t max; + int32_t res; +}; + +struct wmt_softc +{ + device_t dev; + struct mtx mtx; + struct wmt_absinfo ai[WMT_N_USAGES]; + struct hid_location locs[MAX_MT_SLOTS][WMT_N_USAGES]; + struct hid_location nconts_loc; + + struct usb_xfer *xfer[WMT_N_TRANSFER]; + struct evdev_dev *evdev; + + uint32_t slot_data[WMT_N_USAGES]; + uint32_t caps; + uint32_t isize; + uint32_t nconts_max; + uint8_t report_id; + + uint8_t buf[WMT_BSIZE] __aligned(4); +}; + +#define USAGE_SUPPORTED(caps, usage) ((caps) & (1 << (usage))) +#define WMT_FOREACH_USAGE(caps, usage) \ + for ((usage) = 0; (usage) < WMT_N_USAGES; ++(usage)) \ + if (USAGE_SUPPORTED((caps), (usage))) + +static bool wmt_hid_parse(struct wmt_softc *, const void *, uint16_t); + +static usb_callback_t wmt_intr_callback; + +static device_probe_t wmt_probe; +static device_attach_t wmt_attach; +static device_detach_t wmt_detach; + +static evdev_open_t wmt_ev_open; +static evdev_close_t wmt_ev_close; + +static const struct evdev_methods wmt_evdev_methods = { + .ev_open = &wmt_ev_open, + .ev_close = &wmt_ev_close, +}; + +static const struct usb_config wmt_config[WMT_N_TRANSFER] = { + + [WMT_INTR_DT] = { + .type = UE_INTERRUPT, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_IN, + .flags = { .pipe_bof = 1, .short_xfer_ok = 1 }, + .bufsize = WMT_BSIZE, + .callback = &wmt_intr_callback, + }, +}; + +static int +wmt_probe(device_t dev) +{ + struct usb_attach_arg *uaa = device_get_ivars(dev); + void *d_ptr; + uint16_t d_len; + int err; + + if (uaa->usb_mode != USB_MODE_HOST) + return (ENXIO); + + if (uaa->info.bInterfaceClass != UICLASS_HID) + return (ENXIO); + + if (usb_test_quirk(uaa, UQ_WMT_IGNORE)) + return (ENXIO); + + err = usbd_req_get_hid_desc(uaa->device, NULL, + &d_ptr, &d_len, M_TEMP, uaa->info.bIfaceIndex); + if (err) + return (ENXIO); + + if (wmt_hid_parse(NULL, d_ptr, d_len)) + err = BUS_PROBE_DEFAULT; + else + err = ENXIO; + + free(d_ptr, M_TEMP); + return (err); +} + +static int +wmt_attach(device_t dev) +{ + struct usb_attach_arg *uaa = device_get_ivars(dev); + struct wmt_softc *sc = device_get_softc(dev); + void *d_ptr; + uint16_t d_len; + size_t i; + int err; + + device_set_usb_desc(dev); + sc->dev = dev; + + /* Get HID descriptor */ + err = usbd_req_get_hid_desc(uaa->device, NULL, + &d_ptr, &d_len, M_TEMP, uaa->info.bIfaceIndex); + if (err) { + DPRINTF("usbd_req_get_hid_desc error=%s\n", usbd_errstr(err)); + return (ENXIO); + } + + mtx_init(&sc->mtx, "wmt lock", NULL, MTX_DEF); + + /* Get HID report length */ + sc->isize = hid_report_size(d_ptr, d_len, hid_input, NULL); + if (sc->isize <= 0 || sc->isize > WMT_BSIZE) { + DPRINTF("Input size invalid or too large: %d\n", sc->isize); + goto detach; + } + + err = usbd_transfer_setup(uaa->device, &uaa->info.bIfaceIndex, + sc->xfer, wmt_config, WMT_N_TRANSFER, sc, &sc->mtx); + if (err) { + DPRINTF("usbd_transfer_setup error=%s\n", usbd_errstr(err)); + goto detach; + } + + if (!wmt_hid_parse(sc, d_ptr, d_len)) + goto detach; + + sc->evdev = evdev_alloc(); + evdev_set_name(sc->evdev, device_get_desc(dev)); + evdev_set_phys(sc->evdev, device_get_nameunit(dev)); + evdev_set_id(sc->evdev, BUS_USB, uaa->info.idVendor, + uaa->info.idProduct, 0); + evdev_set_serial(sc->evdev, usb_get_serial(uaa->device)); + evdev_set_methods(sc->evdev, sc, &wmt_evdev_methods); + evdev_set_flag(sc->evdev, EVDEV_FLAG_MT_STCOMPAT); + evdev_support_prop(sc->evdev, INPUT_PROP_DIRECT); + evdev_support_event(sc->evdev, EV_SYN); + evdev_support_event(sc->evdev, EV_ABS); + WMT_FOREACH_USAGE(sc->caps, i) { + if (wmt_hid_map[i].code != WMT_NO_CODE) + evdev_support_abs(sc->evdev, wmt_hid_map[i].code, 0, + sc->ai[i].min, sc->ai[i].max, 0, 0, sc->ai[i].res); + } + + err = evdev_register_mtx(sc->evdev, &sc->mtx); + if (err) + goto detach; + + return (0); + +detach: + free(d_ptr, M_TEMP); + wmt_detach(dev); + return (ENXIO); +} + +static int +wmt_detach(device_t dev) +{ + struct wmt_softc *sc = device_get_softc(dev); + + evdev_free(sc->evdev); + usbd_transfer_unsetup(sc->xfer, WMT_N_TRANSFER); + mtx_destroy(&sc->mtx); + return (0); +} + +static void +wmt_process_report(struct wmt_softc *sc, uint8_t *buf, int len) +{ + size_t usage; + uint32_t *slot_data = sc->slot_data; + uint32_t cont; + uint32_t nconts; + uint32_t width; + uint32_t height; + int32_t slot; + + nconts = hid_get_data_unsigned(buf, len, &sc->nconts_loc); + +#ifdef USB_DEBUG + DPRINTFN(6, "nconts = %u ", (unsigned)nconts); + if (wmt_debug >= 6) { + WMT_FOREACH_USAGE(sc->caps, usage) { + if (wmt_hid_map[usage].usage != WMT_NO_USAGE) + printf(" %-4s", wmt_hid_map[usage].name); + } + printf("\n"); + } +#endif + + if (nconts > sc->nconts_max) { + DPRINTF("Contact count overflow %u\n", (unsigned)nconts); + nconts = sc->nconts_max; + } + + /* Use protocol Type B for reporting events */ + for (cont = 0; cont < nconts; cont++) { + + bzero(slot_data, sizeof(sc->slot_data)); + WMT_FOREACH_USAGE(sc->caps, usage) { + if (sc->locs[cont][usage].size > 0) + slot_data[usage] = hid_get_data_unsigned( + buf, len, &sc->locs[cont][usage]); + } + + slot = evdev_get_mt_slot_by_tracking_id(sc->evdev, + slot_data[WMT_CONTACTID]); + +#ifdef USB_DEBUG + DPRINTFN(6, "cont%01x: data = ", cont); + if (wmt_debug >= 6) { + WMT_FOREACH_USAGE(sc->caps, usage) { + if (wmt_hid_map[usage].usage != WMT_NO_USAGE) + printf("%04x ", slot_data[usage]); + } + printf("slot = %d\n", (int)slot); + } +#endif + + if (slot == -1) { + DPRINTF("Slot overflow for contact_id %u\n", + (unsigned)slot_data[WMT_CONTACTID]); + continue; + } + + if (slot_data[WMT_TIP_SWITCH] != 0 && + !(USAGE_SUPPORTED(sc->caps, WMT_CONFIDENCE) && + slot_data[WMT_CONFIDENCE] == 0)) { + /* This finger is in proximity of the sensor */ + slot_data[WMT_SLOT] = slot; + slot_data[WMT_IN_RANGE] = !slot_data[WMT_IN_RANGE]; + /* Divided by two to match visual scale of touch */ + width = slot_data[WMT_WIDTH] >> 1; + height = slot_data[WMT_HEIGHT] >> 1; + slot_data[WMT_ORIENTATION] = width > height; + slot_data[WMT_MAJOR] = MAX(width, height); + slot_data[WMT_MINOR] = MIN(width, height); + + WMT_FOREACH_USAGE(sc->caps, usage) + if (wmt_hid_map[usage].code != WMT_NO_CODE) + evdev_push_abs(sc->evdev, + wmt_hid_map[usage].code, + slot_data[usage]); + } else { + evdev_push_abs(sc->evdev, ABS_MT_SLOT, slot); + evdev_push_abs(sc->evdev, ABS_MT_TRACKING_ID, -1); + } + } + evdev_sync(sc->evdev); +} + +static void +wmt_intr_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct wmt_softc *sc = usbd_xfer_softc(xfer); + struct usb_page_cache *pc; + uint8_t *buf = sc->buf; + int len; + + usbd_xfer_status(xfer, &len, NULL, NULL, NULL); + + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + pc = usbd_xfer_get_frame(xfer, 0); + + DPRINTFN(6, "sc=%p actlen=%d\n", sc, len); + + if (len >= (int)sc->isize || (len > 0 && sc->report_id != 0)) { + /* Limit report length to the maximum */ + if (len > (int)sc->isize) + len = sc->isize; + + usbd_copy_out(pc, 0, buf, len); + + /* Ignore irrelevant reports */ + if (sc->report_id && *buf != sc->report_id) + goto tr_ignore; + + /* Make sure we don't process old data */ + if (len < sc->isize) + bzero(buf + len, sc->isize - len); + + /* Strip leading "report ID" byte */ + if (sc->report_id) { + len--; + buf++; + } + + wmt_process_report(sc, buf, len); + } else { +tr_ignore: + DPRINTF("Ignored transfer, %d bytes\n", len); + } + + case USB_ST_SETUP: +tr_setup: + usbd_xfer_set_frame_len(xfer, 0, sc->isize); + usbd_transfer_submit(xfer); + break; + default: + if (error != USB_ERR_CANCELLED) { + /* Try clear stall first */ + usbd_xfer_set_stall(xfer); + goto tr_setup; + } + break; + } +} + +static void +wmt_ev_close(struct evdev_dev *evdev, void *ev_softc) +{ + struct wmt_softc *sc = (struct wmt_softc *)ev_softc; + + mtx_assert(&sc->mtx, MA_OWNED); + usbd_transfer_stop(sc->xfer[WMT_INTR_DT]); +} + +static int +wmt_ev_open(struct evdev_dev *evdev, void *ev_softc) +{ + struct wmt_softc *sc = (struct wmt_softc *)ev_softc; + + mtx_assert(&sc->mtx, MA_OWNED); + usbd_transfer_start(sc->xfer[WMT_INTR_DT]); + + return (0); +} + +static bool +wmt_hid_parse(struct wmt_softc *sc, const void *d_ptr, uint16_t d_len) +{ + struct hid_item hi; + struct hid_data *hd; + size_t i; + size_t cont = 0; + uint32_t caps = 0; + int32_t cont_count_max = 0; + uint8_t report_id = 0; + bool touch_coll = false; + bool finger_coll = false; + bool cont_count_found = false; + bool scan_time_found = false; + +#define WMT_HI_ABSOLUTE(hi) \ + (((hi).flags & (HIO_CONST|HIO_VARIABLE|HIO_RELATIVE)) == HIO_VARIABLE) + + /* Parse features for maximum contact count */ + hd = hid_start_parse(d_ptr, d_len, 1 << hid_feature); + while (hid_get_item(hd, &hi)) { + switch (hi.kind) { + case hid_collection: + if (hi.collevel == 1 && hi.usage == + HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHSCREEN)) + touch_coll = true; + break; + case hid_endcollection: + if (hi.collevel == 0 && touch_coll) + touch_coll = false; + break; + case hid_feature: + if (hi.collevel == 1 && touch_coll && + WMT_HI_ABSOLUTE(hi) && hi.usage == + HID_USAGE2(HUP_DIGITIZERS, HUD_CONTACT_MAX)) + cont_count_max = hi.logical_maximum; + break; + default: + break; + } + } + hid_end_parse(hd); + + /* Maximum contact count is required usage */ + if (cont_count_max < 1) + return (false); + + touch_coll = false; + + /* Parse input for other parameters */ + hd = hid_start_parse(d_ptr, d_len, 1 << hid_input); + while (hid_get_item(hd, &hi)) { + switch (hi.kind) { + case hid_collection: + if (hi.collevel == 1 && hi.usage == + HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHSCREEN)) + touch_coll = true; + else if (touch_coll && hi.collevel == 2 && + (report_id == 0 || report_id == hi.report_ID) && + hi.usage == HID_USAGE2(HUP_DIGITIZERS, HUD_FINGER)) + finger_coll = true; + break; + case hid_endcollection: + if (hi.collevel == 1 && finger_coll) { + finger_coll = false; + cont++; + } else if (hi.collevel == 0 && touch_coll) + touch_coll = false; + break; + case hid_input: + /* + * Ensure that all usages are located within the same + * report and proper collection. + */ + if (WMT_HI_ABSOLUTE(hi) && touch_coll && + (report_id == 0 || report_id == hi.report_ID)) + report_id = hi.report_ID; + else + break; + + if (hi.collevel == 1 && hi.usage == + HID_USAGE2(HUP_DIGITIZERS, HUD_CONTACTCOUNT)) { + cont_count_found = true; + if (sc != NULL) + sc->nconts_loc = hi.loc; + break; + } + /* Scan time is required but clobbered by evdev */ + if (hi.collevel == 1 && hi.usage == + HID_USAGE2(HUP_DIGITIZERS, HUD_SCAN_TIME)) { + scan_time_found = true; + break; + } + + if (!finger_coll || hi.collevel != 2) + break; + if (sc == NULL && cont > 0) + break; + if (cont >= MAX_MT_SLOTS) { + DPRINTF("Finger %zu ignored\n", cont); + break; + } + + for (i = 0; i < WMT_N_USAGES; i++) { + if (hi.usage == wmt_hid_map[i].usage) { + if (sc == NULL) { + if (USAGE_SUPPORTED(caps, i)) + continue; + caps |= 1 << i; + break; + } + /* + * HUG_X usage is an array mapped to + * both ABS_MT_POSITION and ABS_MT_TOOL + * events. So don`t stop search if we + * already have HUG_X mapping done. + */ + if (sc->locs[cont][i].size) + continue; + sc->locs[cont][i] = hi.loc; + /* + * Hid parser returns valid logical and + * physical sizes for first finger only + * at least on ElanTS 0x04f3:0x0012. + */ + if (cont > 0) + break; + caps |= 1 << i; + sc->ai[i] = (struct wmt_absinfo) { + .max = hi.logical_maximum, + .min = hi.logical_minimum, + .res = hid_item_resolution(&hi), + }; + break; + } + } + break; + default: + break; + } + } + hid_end_parse(hd); + + /* Check for required HID Usages */ + if (!cont_count_found || !scan_time_found || cont == 0) + return (false); + for (i = 0; i < WMT_N_USAGES; i++) { + if (wmt_hid_map[i].required && !USAGE_SUPPORTED(caps, i)) + return (false); + } + + /* Stop probing here */ + if (sc == NULL) + return (true); + + /* Cap contact count maximum to MAX_MT_SLOTS */ + if (cont_count_max > MAX_MT_SLOTS) { + DPRINTF("Hardware reported %d contacts while only %d is " + "supported\n", (int)cont_count_max, MAX_MT_SLOTS); + cont_count_max = MAX_MT_SLOTS; + } + + /* Set number of MT protocol type B slots */ + sc->ai[WMT_SLOT] = (struct wmt_absinfo) { + .min = 0, + .max = cont_count_max - 1, + .res = 0, + }; + + /* Report touch orientation if both width and height are supported */ + if (USAGE_SUPPORTED(caps, WMT_WIDTH) && + USAGE_SUPPORTED(caps, WMT_HEIGHT)) { + caps |= (1 << WMT_ORIENTATION); + sc->ai[WMT_ORIENTATION].max = 1; + } + + sc->report_id = report_id; + sc->caps = caps; + sc->nconts_max = cont; + + /* Announce information about the touch device */ + device_printf(sc->dev, + "%d contacts and [%s%s%s%s%s]. Report range [%d:%d] - [%d:%d]\n", + (int)cont_count_max, + USAGE_SUPPORTED(sc->caps, WMT_IN_RANGE) ? "R" : "", + USAGE_SUPPORTED(sc->caps, WMT_CONFIDENCE) ? "C" : "", + USAGE_SUPPORTED(sc->caps, WMT_WIDTH) ? "W" : "", + USAGE_SUPPORTED(sc->caps, WMT_HEIGHT) ? "H" : "", + USAGE_SUPPORTED(sc->caps, WMT_PRESSURE) ? "P" : "", + (int)sc->ai[WMT_X].min, (int)sc->ai[WMT_Y].min, + (int)sc->ai[WMT_X].max, (int)sc->ai[WMT_Y].max); + return (true); +} + +static devclass_t wmt_devclass; + +static device_method_t wmt_methods[] = { + DEVMETHOD(device_probe, wmt_probe), + DEVMETHOD(device_attach, wmt_attach), + DEVMETHOD(device_detach, wmt_detach), + + DEVMETHOD_END +}; + +static driver_t wmt_driver = { + .name = "wmt", + .methods = wmt_methods, + .size = sizeof(struct wmt_softc), +}; + +DRIVER_MODULE(wmt, uhub, wmt_driver, wmt_devclass, NULL, 0); +MODULE_DEPEND(wmt, usb, 1, 1, 1); +MODULE_DEPEND(wmt, evdev, 1, 1, 1); +MODULE_VERSION(wmt, 1); Modified: projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.c ============================================================================== --- projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.c Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.c Sat Aug 19 18:36:36 2017 (r322699) @@ -606,6 +606,7 @@ static const char *usb_quirk_str[USB_QUIRK_MAX] = { [UQ_SINGLE_CMD_MIDI] = "UQ_SINGLE_CMD_MIDI", [UQ_MSC_DYMO_EJECT] = "UQ_MSC_DYMO_EJECT", [UQ_AU_SET_SPDIF_CM6206] = "UQ_AU_SET_SPDIF_CM6206", + [UQ_WMT_IGNORE] = "UQ_WMT_IGNORE", }; /*------------------------------------------------------------------------* Modified: projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.h ============================================================================== --- projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.h Sat Aug 19 18:31:00 2017 (r322698) +++ projects/runtime-coverage/sys/dev/usb/quirk/usb_quirk.h Sat Aug 19 18:36:36 2017 (r322699) @@ -110,6 +110,7 @@ enum { UQ_SINGLE_CMD_MIDI, /* at most one command per USB packet */ UQ_MSC_DYMO_EJECT, /* ejects Dymo MSC device */ UQ_AU_SET_SPDIF_CM6206, /* enable S/PDIF audio output */ + UQ_WMT_IGNORE, /* device should be ignored by wmt driver */ USB_QUIRK_MAX }; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sat Aug 19 18:52:14 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 72AEEDDC895 for ; Sat, 19 Aug 2017 18:52:14 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 404E2E33; Sat, 19 Aug 2017 18:52:14 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIqDq8070749; Sat, 19 Aug 2017 18:52:13 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIqDoL070748; Sat, 19 Aug 2017 18:52:13 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191852.v7JIqDoL070748@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:52:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322700 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322700 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:52:14 -0000 Author: ngie Date: Sat Aug 19 18:52:13 2017 New Revision: 322700 URL: https://svnweb.freebsd.org/changeset/base/322700 Log: Use proper spelling for the directory variable It's GCNOSDIR_foo:T, not GCNOS_foo:TDIR. Modified: projects/runtime-coverage/share/mk/bsd.cov.mk Modified: projects/runtime-coverage/share/mk/bsd.cov.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 18:36:36 2017 (r322699) +++ projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 18:52:13 2017 (r322700) @@ -12,7 +12,7 @@ CLEANFILES+= ${GCNOS} .for _gcno in ${GCNOS} _gcno_dir= ${COVERAGEDIR}${_gcno:H:tA} -GCNOS_${_gcno:T}DIR= ${_gcno_dir} +GCNOSDIR_${_gcno:T}= ${_gcno_dir} .if !target(${DESTDIR}${_gcno_dir}) beforeinstall: ${DESTDIR}${_gcno_dir} ${DESTDIR}${_gcno_dir}: From owner-svn-src-projects@freebsd.org Sat Aug 19 18:52:44 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E9223DDC946 for ; Sat, 19 Aug 2017 18:52:44 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B73B0F5F; Sat, 19 Aug 2017 18:52:44 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIqhth071539; Sat, 19 Aug 2017 18:52:43 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIqhYM071538; Sat, 19 Aug 2017 18:52:43 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191852.v7JIqhYM071538@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:52:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322701 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322701 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:52:45 -0000 Author: ngie Date: Sat Aug 19 18:52:43 2017 New Revision: 322701 URL: https://svnweb.freebsd.org/changeset/base/322701 Log: Don't override COVERAGEDIR in bsd.own.mk Modified: projects/runtime-coverage/share/mk/bsd.prog.mk Modified: projects/runtime-coverage/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.prog.mk Sat Aug 19 18:52:13 2017 (r322700) +++ projects/runtime-coverage/share/mk/bsd.prog.mk Sat Aug 19 18:52:43 2017 (r322701) @@ -83,8 +83,8 @@ DEBUGFILEDIR= ${DEBUGDIR}${BINDIR} DEBUGFILEDIR?= ${BINDIR}/.debug .endif .if ${MK_COVERAGE} != "no" -COVERAGEDIR= ${COVDIR}${BINDIR} -.if !exists(${DESTDIR}${COVERAGEDIR}) +_COVERAGEDIR= ${COVERAGEDIR}${BINDIR} +.if !exists(${DESTDIR}${_COVERAGEDIR}) COVERAGEMKDIR= .endif .endif @@ -250,10 +250,10 @@ _proginstall: .if ${MK_DEBUG_FILES} != "no" .if ${MK_COVERAGE} != "no" .if defined(COVERAGEMKDIR) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${DESTDIR}${COVERAGEDIR}/ + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${DESTDIR}${_COVERAGEDIR}/ .endif ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \ - ${PROG_FULL} ${DESTDIR}${COVERAGEDIR}/${PROGNAME} + ${PROG_FULL} ${DESTDIR}${_COVERAGEDIR}/${PROGNAME} .endif .if defined(DEBUGMKDIR) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -d ${DESTDIR}${DEBUGFILEDIR}/ From owner-svn-src-projects@freebsd.org Sat Aug 19 18:57:44 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 63B9BDDCDF7 for ; Sat, 19 Aug 2017 18:57:44 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3382D1200; Sat, 19 Aug 2017 18:57:44 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIvhiH071752; Sat, 19 Aug 2017 18:57:43 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIvhLQ071751; Sat, 19 Aug 2017 18:57:43 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191857.v7JIvhLQ071751@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:57:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322702 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322702 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:57:44 -0000 Author: ngie Date: Sat Aug 19 18:57:43 2017 New Revision: 322702 URL: https://svnweb.freebsd.org/changeset/base/322702 Log: Apparently SOBJS, etc, can have duplicates Modified: projects/runtime-coverage/share/mk/bsd.cov.mk Modified: projects/runtime-coverage/share/mk/bsd.cov.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 18:52:43 2017 (r322701) +++ projects/runtime-coverage/share/mk/bsd.cov.mk Sat Aug 19 18:57:43 2017 (r322702) @@ -7,6 +7,7 @@ FILESGROUPS?= FILES GCNOS= ${COV_OBJS:.o=.gcno} .if !empty(GCNOS) +GCNOS:= ${GCNOS:O:u} FILESGROUPS+= GCNOS CLEANFILES+= ${GCNOS} From owner-svn-src-projects@freebsd.org Sat Aug 19 18:58:45 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 84693DDCECE for ; Sat, 19 Aug 2017 18:58:45 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4E35312FF; Sat, 19 Aug 2017 18:58:45 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JIwiKw071843; Sat, 19 Aug 2017 18:58:44 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JIwiNa071842; Sat, 19 Aug 2017 18:58:44 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191858.v7JIwiNa071842@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 18:58:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322703 - projects/runtime-coverage/gnu/lib/libstdc++ X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/gnu/lib/libstdc++ X-SVN-Commit-Revision: 322703 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 18:58:45 -0000 Author: ngie Date: Sat Aug 19 18:58:44 2017 New Revision: 322703 URL: https://svnweb.freebsd.org/changeset/base/322703 Log: Diff reduce with ^/head; this is no longer required Modified: projects/runtime-coverage/gnu/lib/libstdc++/Makefile Modified: projects/runtime-coverage/gnu/lib/libstdc++/Makefile ============================================================================== --- projects/runtime-coverage/gnu/lib/libstdc++/Makefile Sat Aug 19 18:57:43 2017 (r322702) +++ projects/runtime-coverage/gnu/lib/libstdc++/Makefile Sat Aug 19 18:58:44 2017 (r322703) @@ -1,9 +1,5 @@ # $FreeBSD$ -# XXX (ngie): doesn't build with coverage today; COV_CXXFLAGS is getting passed -# down improperly, resulting in a -Werror issue with strsignal in debug.c. -MK_COVERAGE?= no - .include GCCVER= 4.2 @@ -25,7 +21,6 @@ CFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I. CFLAGS+= -frandom-seed=RepeatabilityConsideredGood CXXFLAGS+= -fno-implicit-templates -ffunction-sections -fdata-sections \ -Wno-deprecated -COV_CXXFLAGS= ${CXXFLAGS:N-ffunction-sections} PO_CXXFLAGS= ${CXXFLAGS:N-ffunction-sections} LIBADD+= m From owner-svn-src-projects@freebsd.org Sat Aug 19 19:06:41 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B4F4CDDD756 for ; Sat, 19 Aug 2017 19:06:41 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 82C651859; Sat, 19 Aug 2017 19:06:41 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7JJ6e0g075879; Sat, 19 Aug 2017 19:06:40 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7JJ6e2O075878; Sat, 19 Aug 2017 19:06:40 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708191906.v7JJ6e2O075878@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 19 Aug 2017 19:06:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322704 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322704 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2017 19:06:41 -0000 Author: ngie Date: Sat Aug 19 19:06:40 2017 New Revision: 322704 URL: https://svnweb.freebsd.org/changeset/base/322704 Log: Don't grok SOBJS directly -- only refer to the .pico files Modified: projects/runtime-coverage/share/mk/bsd.lib.mk Modified: projects/runtime-coverage/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.lib.mk Sat Aug 19 18:58:44 2017 (r322703) +++ projects/runtime-coverage/share/mk/bsd.lib.mk Sat Aug 19 19:06:40 2017 (r322704) @@ -453,7 +453,7 @@ _libinstall: .if !defined(LIBRARIES_ONLY) .include .if defined(_COV_FLAG) -COV_OBJS= ${SOBJS} +COV_OBJS= ${SOBJS:.pico=.o} .include .endif .include