From owner-svn-src-projects@freebsd.org  Sun Aug 13 01:23:20 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <sys/socket.h>
 #include <sys/un.h>
-#include <errno.h>
 #include <netdb.h>
 #endif
 
 #include <ctype.h>
 #include <err.h>
+#include <errno.h>
 #include <fcntl.h>
 #include <locale.h>
 #include <stddef.h>

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 <ufs/ufs/ufsmount.h>
 #endif
 #include <err.h>
+#include <getopt.h>
 #include <libutil.h>
 #include <locale.h>
 #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 <sys/user.h>
 
 #include <assert.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <limits.h>
@@ -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 <name> [-o <role>] [-t type] [-T ttl] -i <ipaddr>[/netmask]\n");
 	fprintf(stderr, "\t-A [-dnv] [-m <name>] [-o <role>] [-S <seed>] [-t <type>]\n");
-	fprintf(stderr, "\t-f <file> [-dnuv]\n");
+	fprintf(stderr, "\t-f <file> [-dnuvR]\n");
 	fprintf(stderr, "\t-F [-dv] [-o <role>] [-t <type>]\n");
 	fprintf(stderr, "\t-l [-dv] [-m <name>] [-t <type>] [-o <role>] [-M <core>] [-N <namelist>]\n");
 	fprintf(stderr, "\t-r [-dnv] [-m <name>] [-o <role>] [-t type] -i <ipaddr>[/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 <stdarg.h>
 #include <memory>
 
+#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 <support/solaris/xlocale.h>
 #elif defined(_NEWLIB_VERSION)
 # include <support/newlib/xlocale.h>
-#elif (defined(__GLIBC__) || defined(__APPLE__)      || defined(__FreeBSD__) \
+#elif (defined(__APPLE__)      || defined(__FreeBSD__) \
     || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
 # include <xlocale.h>
 #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 <class _CharT, class _Traits, class _Allocator>
 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 ($) {
 </tr>
 <tr>
 <td class="header left"></td>
-<td class="header right">June 14, 2017</td>
+<td class="header right">August 3, 2017</td>
 </tr>
 </table></div>
 <p id="title" class="title">libxo: The Easy Way to Generate text, XML, JSON, and HTML output<br><span class="filename">libxo-manual</span></p>

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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <src.opts.mk>
 
+HAS_TESTS=
 SUBDIR.${MK_TESTS}+=	tests
 
 .include <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <src.opts.mk>
 
+HAS_TESTS=
 SUBDIR.${MK_TESTS}=	tests
 
 .include <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <bsd.lib.mk>

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 <src.opts.mk>
 
+HAS_TESTS=
 SUBDIR.${MK_TESTS}+= tests
 
 .include <bsd.lib.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.dep.mk>
 .include <bsd.clang-analyze.mk>
 .include <bsd.obj.mk>

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 <bsd.man.mk>
 .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 <bsd.opts.mk>
+
 # 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 <bsd.prog.mk>

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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <src.opts.mk>
 
+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 <src.opts.mk>
 
+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 <src.opts.mk>
+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 <bsd.own.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <bsd.own.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <src.opts.mk>
+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 <bsd.own.mk>
+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 <bsd.own.mk>
+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 <src.opts.mk>
+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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <cy@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.prog.mk>

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 <sys/socket.h>
 #include <sys/un.h>
-#include <errno.h>
 #include <netdb.h>
 #endif
 
 #include <ctype.h>
 #include <err.h>
+#include <errno.h>
 #include <fcntl.h>
 #include <locale.h>
 #include <stddef.h>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <ufs/ufs/ufsmount.h>
 #endif
 #include <err.h>
+#include <getopt.h>
 #include <libutil.h>
 #include <locale.h>
 #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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <sys/user.h>
 
 #include <assert.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <limits.h>
@@ -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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <bsd.prog.mk>

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 <stdarg.h>
 #include <memory>
 
+#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 <support/solaris/xlocale.h>
 #elif defined(_NEWLIB_VERSION)
 # include <support/newlib/xlocale.h>
-#elif (defined(__GLIBC__) || defined(__APPLE__)      || defined(__FreeBSD__) \
+#elif (defined(__APPLE__)      || defined(__FreeBSD__) \
     || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
 # include <xlocale.h>
 #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 <class _CharT, class _Traits, class _Allocator>
 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 <typename T> 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<Value *> &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<MachineOperand>::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<Operator>(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<ConstantInt>(U->getOperand(1)) &&
+           Operator::getOpcode(U->getOperand(1)) != Instruction::Mul &&
+           !isa<PHINode>(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<Value *> &Objects,
+                          const DataLayout &DL) {
+  SmallPtrSet<const Value *, 16> Visited;
+  SmallVector<const Value *, 4> Working(1, V);
+  do {
+    V = Working.pop_back_val();
+
+    SmallVector<Value *, 4> Objs;
+    GetUnderlyingObjects(const_cast<Value *>(V), Objs, DL);
+
+    for (Value *V : Objs) {
+      if (!Visited.insert(V).second)
+        continue;
+      if (Operator::getOpcode(V) == Instruction::IntToPtr) {
+        const Value *O =
+          getUnderlyingObjectFromInt(cast<User>(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<Value *>(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<MachineMemOperand *>(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<Operator>(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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <cy@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.subdir.mk>

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 <bsd.kmod.mk>

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 <bsd.kmod.mk>

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 <bsd.kmod.mk>

From owner-svn-src-projects@freebsd.org  Wed Aug 16 13:52:08 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <jhb@freebsd.org>
To: Ngie Cooper <ngie@freebsd.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <svn-src-projects@freebsd.org>; 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 <svn-src-projects@freebsd.org>; 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 <imp@bsdimp.com>
Date: Wed, 16 Aug 2017 09:01:42 -0600
X-Google-Sender-Auth: V-M8JikUaBJjxDs92CSNFUW0h_Q
Message-ID: <CANCZdfqSmv1mHMnK9jOQkPZ6MLv0Cv06NoD5NReuRU=9apMdAg@mail.gmail.com>
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 <jhb@freebsd.org>
Cc: Ngie Cooper <ngie@freebsd.org>, src-committers <src-committers@freebsd.org>,
 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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Aug 2017 15:01:45 -0000

On Wed, Aug 16, 2017 at 7:41 AM, John Baldwin <jhb@freebsd.org> 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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <src.opts.mk>
 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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.linker.mk>
+.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 = <<EOD
 %DESC%
 EOD
 scripts: {
-	pre-install = <<EOD
-	case ${ASSUME_ALWAYS_YES} in
-		[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee])
-			exit 0
-			;;
-		*)
-			continue
-			;;
-	esac
-	if [ -z "${TERM}" ]; then
-		exit 0
-	fi
-	echo "****************************************************************"
-	echo "It is recommended to install the FreeBSD-%PKGNAME% package"
-	echo "with:"
-	echo
-	echo "	pkg install FreeBSD-%PKGNAME%"
-	echo
-	echo "and rebooting the system into the new kernel before upgrading"
-	echo "with:"
-	echo
-	echo "	pkg upgrade"
-	echo
-	echo "****************************************************************"
-	echo
-	echo "Do you want to continue anyway? (N/y)"
-	read ANSWER
-	case ${ANSWER} in
-		[Yy])
-			exit 0
-			;;
-		*)
-			kill ${PPID} ${PID}
-			;;
-	esac
-EOD
-
 	post-install = <<EOD
 	/usr/sbin/kldxref ${PKG_ROOTDIR}/boot/kernel
 EOD

Modified: projects/runtime-coverage/release/packages/runtime.ucl
==============================================================================
--- projects/runtime-coverage/release/packages/runtime.ucl	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/release/packages/runtime.ucl	Fri Aug 18 21:37:26 2017	(r322676)
@@ -27,10 +27,6 @@ deps: {
     "FreeBSD-clibs": {
         origin: "base"
         version: "%VERSION%"
-    },
-    "FreeBSD-kernel-%KERNCONF%": {
-        origin: "base"
-        version: "%VERSION%"
     }
 }
 directories {

Modified: projects/runtime-coverage/release/release.sh
==============================================================================
--- projects/runtime-coverage/release/release.sh	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/release/release.sh	Fri Aug 18 21:37:26 2017	(r322676)
@@ -397,7 +397,7 @@ main() {
 	while getopts c: opt; do
 		case ${opt} in
 			c)
-				RELEASECONF="${OPTARG}"
+				RELEASECONF="$(realpath ${OPTARG})"
 				;;
 			\?)
 				usage

Modified: projects/runtime-coverage/sbin/route/route.8
==============================================================================
--- projects/runtime-coverage/sbin/route/route.8	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/sbin/route/route.8	Fri Aug 18 21:37:26 2017	(r322676)
@@ -68,7 +68,7 @@ Specify
 address family as family hint for subcommands.
 .It Fl 6
 Specify
-.Cm inet
+.Cm inet6
 address family as family hint for subcommands.
 .It Fl d
 Run in debug-only mode, i.e., do not actually modify the routing table.

Modified: projects/runtime-coverage/share/man/man4/bge.4
==============================================================================
--- projects/runtime-coverage/share/man/man4/bge.4	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/man/man4/bge.4	Fri Aug 18 21:37:26 2017	(r322676)
@@ -31,7 +31,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 19, 2012
+.Dd August 18, 2017
 .Dt BGE 4
 .Os
 .Sh NAME
@@ -159,6 +159,10 @@ following:
 .It
 3Com 3c996-T (10/100/1000baseTX)
 .It
+Apple Thunderbolt Display (10/100/1000baseTX)
+.It
+Apple Thunderbolt to Gigabit Ethernet Adapter (10/100/1000baseTX)
+.It
 Dell PowerEdge 1750 integrated BCM5704C NIC (10/100/1000baseTX)
 .It
 Dell PowerEdge 2550 integrated BCM5700 NIC (10/100/1000baseTX)
@@ -236,6 +240,9 @@ during initialization.
 The driver failed to initialize PCI shared memory mapping.
 This might
 happen if the card is not in a bus-master slot.
+.It "bge%d: firmware handshake timed out, found 0xffffffff"
+The device was physically disconnected from the system, or there is a problem with
+the device causing it to stop responding to the host it is attached to.
 .It "bge%d: no memory for jumbo buffers!"
 The driver failed to allocate memory for jumbo frames during
 initialization.
@@ -262,3 +269,12 @@ The
 .Nm
 driver was written by
 .An Bill Paul Aq Mt wpaul@windriver.com .
+.Sh BUGS
+Hotplug is not currently supported in
+.Fx ,
+hence, Thunderbolt interfaces need to be connected prior to system power up on
+Apple systems in order for the interface to be detected.
+Also, due to the lack of hotplug support, Thunderbolt-based interfaces must not be removed
+while the system is up as the kernel is currently unable to cope with a
+.Nm
+interface disappearing.

Modified: projects/runtime-coverage/share/man/man4/pfsync.4
==============================================================================
--- projects/runtime-coverage/share/man/man4/pfsync.4	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/man/man4/pfsync.4	Fri Aug 18 21:37:26 2017	(r322676)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd December 20, 2011
+.Dd August 18, 2017
 .Dt PFSYNC 4
 .Os
 .Sh NAME
@@ -90,7 +90,7 @@ interface:
 .Ed
 .Pp
 By default, state change messages are sent out on the synchronisation
-interface using IP multicast packets to the 244.0.0.240 group address.
+interface using IP multicast packets to the 224.0.0.240 group address.
 An alternative destination address for
 .Nm
 packets can be specified using the

Modified: projects/runtime-coverage/share/man/man9/sbuf.9
==============================================================================
--- projects/runtime-coverage/share/man/man9/sbuf.9	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/man/man9/sbuf.9	Fri Aug 18 21:37:26 2017	(r322676)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 5, 2017
+.Dd August 17, 2017
 .Dt SBUF 9
 .Os
 .Sh NAME
@@ -271,6 +271,14 @@ This indicates that the storage buffer may be extended
 as resources allow, to hold additional data.
 .It Dv SBUF_INCLUDENUL
 This causes the final nulterm byte to be counted in the length of the data.
+.It Dv SBUF_DRAINTOEOR
+Treat top-level sections started with
+.Fn sbuf_start_section
+as a record boundary marker that will be used during drain operations to avoid
+records being split.
+If a record grows sufficiently large such that it fills the
+.Fa sbuf
+and therefore cannot be drained without being split, an error of EDEADLK is set.
 .El
 .Pp
 Note that if

Modified: projects/runtime-coverage/share/misc/bsd-family-tree
==============================================================================
--- projects/runtime-coverage/share/misc/bsd-family-tree	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/misc/bsd-family-tree	Fri Aug 18 21:37:26 2017	(r322676)
@@ -350,9 +350,11 @@ FreeBSD 5.2           |      |                 |      
  |                    |      |                 |                       |
  *--FreeBSD         macOS    |            OpenBSD 6.0                  |
  |   11.0           10.12    |                 |                       |
- |                    |   NetBSD 7.1           |                       |
- |                    |      |                 |               DragonFly 4.8.0
- |                    |      |            OpenBSD 6.1                  |
+ |     |              |   NetBSD 7.1           |                       |
+ |     |              |      |                 |               DragonFly 4.8.0
+ |     |              |      |            OpenBSD 6.1                  |
+ |  FreeBSD           |      |                 |                       |
+ |   11.1             |      |                 |                       |
  |                    |      |                 |                       |
 FreeBSD 12 -current   |  NetBSD -current  OpenBSD -current    DragonFly -current
  |                    |      |                 |                       |
@@ -712,6 +714,7 @@ FreeBSD 11.0		2016-10-10 [FBD]
 NetBSD 7.1		2017-03-11 [NBD]
 DragonFly 4.8.0		2017-03-27 [DFB]
 OpenBSD 6.1		2017-04-11 [OBD]
+FreeBSD 11.1		2017-07-26 [FBD]
 
 Bibliography
 ------------------------

Modified: projects/runtime-coverage/share/mk/bsd.crunchgen.mk
==============================================================================
--- projects/runtime-coverage/share/mk/bsd.crunchgen.mk	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/mk/bsd.crunchgen.mk	Fri Aug 18 21:37:26 2017	(r322676)
@@ -114,7 +114,7 @@ CRUNCHENV+= MK_TESTS=no \
 ${OUTPUTS:[1]}: .META
 ${OUTPUTS:[2..-1]}: .NOMETA
 ${OUTPUTS}: ${CONF}
-	MAKE=${MAKE} ${CRUNCHENV:NMK_AUTO_OBJ=*} MAKEOBJDIRPREFIX=${CRUNCHOBJS} \
+	MAKE="${MAKE}" ${CRUNCHENV:NMK_AUTO_OBJ=*} MAKEOBJDIRPREFIX=${CRUNCHOBJS} \
 	    MK_AUTO_OBJ=${MK_AUTO_OBJ} \
 	    ${CRUNCHGEN} -fq -m ${OUTMK} -c ${OUTC} ${CONF}
 	# Avoid redundantly calling 'make objs' which we've done by our

Modified: projects/runtime-coverage/share/mk/bsd.lib.mk
==============================================================================
--- projects/runtime-coverage/share/mk/bsd.lib.mk	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/share/mk/bsd.lib.mk	Fri Aug 18 21:37:26 2017	(r322676)
@@ -359,6 +359,11 @@ _EXTRADEPEND:
 .if !defined(NO_FSCHG)
 SHLINSTALLFLAGS+= -fschg
 .endif
+.endif
+# Install libraries with -S to avoid linker races with WORLDTMP and risk
+# of modifying in-use libraries when installing to a running system.
+# It is safe to avoid this for NO_ROOT builds that are only creating an image.
+.if !defined(NO_SAFE_LIBINSTALL) && !defined(NO_ROOT)
 SHLINSTALLFLAGS+= -S
 .endif
 

Modified: projects/runtime-coverage/sys/amd64/amd64/minidump_machdep.c
==============================================================================
--- projects/runtime-coverage/sys/amd64/amd64/minidump_machdep.c	Fri Aug 18 21:20:38 2017	(r322675)
+++ projects/runtime-coverage/sys/amd64/amd64/minidump_machdep.c	Fri Aug 18 21:37:26 2017	(r322676)
@@ -52,12 +52,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)
-
 uint64_t *vm_page_dump;
 int vm_page_dump_size;
 
@@ -320,22 +314,8 @@ minidumpsys(struct dumperinfo *di)
 	}
 	dumpsize += PAGE_SIZE;
 
-	/* Determine dump offset on device. */
-	if (di->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 <br@bsdpad.com>
+ * 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 <br@bsdpad.com>
+ * 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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <rmacklem@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.own.mk>
 
 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 <bsd.nls.mk>
 .if defined(_COV_FLAG)
+COV_OBJS=	${SOBJS}
 .include <bsd.cov.mk>
 .endif
 .include <bsd.files.mk>

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 <bsd.confs.mk>
 .if defined(_COV_FLAG)
+COV_OBJS=	${OBJS}
 .include <bsd.cov.mk>
 .endif
 .include <bsd.files.mk>

From owner-svn-src-projects@freebsd.org  Sat Aug 19 18:36:39 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <wulf@FreeBSD.org>
+.\" 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 <wulf@FreeBSD.org>
+ * 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 <sys/cdefs.h>
+__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 <sys/param.h>
+#include <sys/bus.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/malloc.h>
+#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/stddef.h>
+#include <sys/sysctl.h>
+#include <sys/systm.h>
+
+#include "usbdevs.h"
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdi_util.h>
+#include <dev/usb/usbhid.h>
+
+#include <dev/usb/quirk/usb_quirk.h>
+
+#include <dev/evdev/evdev.h>
+#include <dev/evdev/input.h>
+
+#define	USB_DEBUG_VAR wmt_debug
+#include <dev/usb/usb_debug.h>
+
+#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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <src.opts.mk>
 
 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: <owner-svn-src-projects@freebsd.org>
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 <svn-src-projects@mailman.ysv.freebsd.org>;
 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 <ngie@FreeBSD.org>
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=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 <bsd.nls.mk>
 .if defined(_COV_FLAG)
-COV_OBJS=	${SOBJS}
+COV_OBJS=	${SOBJS:.pico=.o}
 .include <bsd.cov.mk>
 .endif
 .include <bsd.files.mk>