From owner-svn-src-projects@freebsd.org Sun Jul 1 20:52:52 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4291CFDB8C1 for ; Sun, 1 Jul 2018 20:52:52 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CB03B7D883; Sun, 1 Jul 2018 20:52:51 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8C45E23D71; Sun, 1 Jul 2018 20:52:51 +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 w61KqpTZ012490; Sun, 1 Jul 2018 20:52:51 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w61Kqp1r012486; Sun, 1 Jul 2018 20:52:51 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201807012052.w61Kqp1r012486@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Sun, 1 Jul 2018 20:52:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r335853 - in projects/krb5: . bin/csh bin/dd bin/echo bin/sh bin/sleep bin/uuidgen contrib/amd/amq contrib/compiler-rt/lib/sanitizer_common contrib/dma contrib/file/magic/Magdir contrib... X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5: . bin/csh bin/dd bin/echo bin/sh bin/sleep bin/uuidgen contrib/amd/amq contrib/compiler-rt/lib/sanitizer_common contrib/dma contrib/file/magic/Magdir contrib/gcc contrib/libc++/inclu... X-SVN-Commit-Revision: 335853 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2018 20:52:52 -0000 Author: cy Date: Sun Jul 1 20:52:50 2018 New Revision: 335853 URL: https://svnweb.freebsd.org/changeset/base/335853 Log: MFH to r335851, bringing in llvm 6.0.1. Added: projects/krb5/lib/geom/ - copied from r335778, head/lib/geom/ projects/krb5/lib/libcasper/libcasper/libcasper_service.3 - copied unchanged from r335778, head/lib/libcasper/libcasper/libcasper_service.3 projects/krb5/lib/libnv/tests/nvlist_append_test.c - copied unchanged from r335778, head/lib/libnv/tests/nvlist_append_test.c projects/krb5/lib/libveriexec/ - copied from r335778, head/lib/libveriexec/ projects/krb5/sys/arm/broadcom/bcm2835/bcm2835_sdhost.c - copied unchanged from r335808, head/sys/arm/broadcom/bcm2835/bcm2835_sdhost.c projects/krb5/sys/arm64/linux/linux_locore.s - copied unchanged from r335778, head/sys/arm64/linux/linux_locore.s projects/krb5/sys/arm64/linux/linux_machdep.c - copied unchanged from r335778, head/sys/arm64/linux/linux_machdep.c projects/krb5/sys/arm64/linux/linux_ptrace.c - copied unchanged from r335778, head/sys/arm64/linux/linux_ptrace.c projects/krb5/sys/arm64/linux/linux_support.s - copied unchanged from r335778, head/sys/arm64/linux/linux_support.s projects/krb5/sys/arm64/linux/linux_sysvec.c - copied unchanged from r335778, head/sys/arm64/linux/linux_sysvec.c projects/krb5/sys/arm64/linux/linux_vdso.lds.s - copied unchanged from r335778, head/sys/arm64/linux/linux_vdso.lds.s projects/krb5/sys/dev/ixl/ixl_debug.h - copied unchanged from r335778, head/sys/dev/ixl/ixl_debug.h projects/krb5/sys/dev/veriexec/ - copied from r335778, head/sys/dev/veriexec/ projects/krb5/sys/dts/arm/overlays/spigen-rpi-b.dtso - copied unchanged from r335778, head/sys/dts/arm/overlays/spigen-rpi-b.dtso projects/krb5/sys/dts/arm/overlays/spigen-rpi2.dtso - copied unchanged from r335778, head/sys/dts/arm/overlays/spigen-rpi2.dtso projects/krb5/sys/modules/mac_veriexec/ - copied from r335778, head/sys/modules/mac_veriexec/ projects/krb5/sys/modules/mac_veriexec_rmd160/ - copied from r335778, head/sys/modules/mac_veriexec_rmd160/ projects/krb5/sys/modules/mac_veriexec_sha1/ - copied from r335778, head/sys/modules/mac_veriexec_sha1/ projects/krb5/sys/modules/mac_veriexec_sha256/ - copied from r335778, head/sys/modules/mac_veriexec_sha256/ projects/krb5/sys/modules/mac_veriexec_sha384/ - copied from r335778, head/sys/modules/mac_veriexec_sha384/ projects/krb5/sys/modules/mac_veriexec_sha512/ - copied from r335778, head/sys/modules/mac_veriexec_sha512/ projects/krb5/sys/modules/veriexec/ - copied from r335778, head/sys/modules/veriexec/ projects/krb5/sys/powerpc/cpufreq/pmcr.c - copied unchanged from r335778, head/sys/powerpc/cpufreq/pmcr.c projects/krb5/sys/security/mac_veriexec/ - copied from r335778, head/sys/security/mac_veriexec/ projects/krb5/tests/sys/audit/ioctl.c - copied unchanged from r335778, head/tests/sys/audit/ioctl.c projects/krb5/tests/sys/audit/process-control.c - copied, changed from r335778, head/tests/sys/audit/process-control.c projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64 - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_AARCH64 projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_ALL - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_ALL projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_ARM - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_ARM projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_MIPS - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_MIPS projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_POWERPC projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_SPARC - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_SPARC projects/krb5/tools/build/options/WITHOUT_LLVM_TARGET_X86 - copied unchanged from r335778, head/tools/build/options/WITHOUT_LLVM_TARGET_X86 projects/krb5/tools/build/options/WITHOUT_SYSTEM_LINKER - copied unchanged from r335778, head/tools/build/options/WITHOUT_SYSTEM_LINKER projects/krb5/tools/build/options/WITH_LLVM_TARGET_AARCH64 - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_AARCH64 projects/krb5/tools/build/options/WITH_LLVM_TARGET_ALL - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_ALL projects/krb5/tools/build/options/WITH_LLVM_TARGET_ARM - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_ARM projects/krb5/tools/build/options/WITH_LLVM_TARGET_MIPS - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_MIPS projects/krb5/tools/build/options/WITH_LLVM_TARGET_POWERPC - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_POWERPC projects/krb5/tools/build/options/WITH_LLVM_TARGET_SPARC - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_SPARC projects/krb5/tools/build/options/WITH_LLVM_TARGET_X86 - copied unchanged from r335778, head/tools/build/options/WITH_LLVM_TARGET_X86 projects/krb5/tools/build/options/WITH_SYSTEM_LINKER - copied unchanged from r335778, head/tools/build/options/WITH_SYSTEM_LINKER projects/krb5/tools/tools/git/git-svn-rebase - copied unchanged from r335778, head/tools/tools/git/git-svn-rebase projects/krb5/usr.bin/objcopy/ - copied from r335778, head/usr.bin/objcopy/ projects/krb5/usr.bin/sort/tests/ - copied from r335778, head/usr.bin/sort/tests/ projects/krb5/usr.sbin/spi/ - copied from r335778, head/usr.sbin/spi/ Deleted: projects/krb5/sbin/geom/Makefile.inc projects/krb5/sbin/geom/class/ projects/krb5/sbin/geom/core/Makefile projects/krb5/stand/geli/ projects/krb5/usr.bin/elfcopy/ Modified: projects/krb5/.gitignore projects/krb5/Makefile projects/krb5/Makefile.inc1 projects/krb5/Makefile.libcompat projects/krb5/ObsoleteFiles.inc projects/krb5/UPDATING projects/krb5/bin/csh/Makefile projects/krb5/bin/dd/dd.c projects/krb5/bin/echo/echo.c projects/krb5/bin/sh/Makefile projects/krb5/bin/sleep/sleep.c projects/krb5/bin/uuidgen/uuidgen.c projects/krb5/contrib/amd/amq/amq.c projects/krb5/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc projects/krb5/contrib/dma/dma-mbox-create.c projects/krb5/contrib/file/magic/Magdir/dump projects/krb5/contrib/gcc/cppdefault.c projects/krb5/contrib/libc++/include/list projects/krb5/contrib/libc++/src/support/runtime/exception_libcxxabi.ipp projects/krb5/contrib/llvm/include/llvm/CodeGen/TargetInstrInfo.h projects/krb5/contrib/llvm/include/llvm/IR/IntrinsicsPowerPC.td projects/krb5/contrib/llvm/lib/Analysis/GlobalsModRef.cpp projects/krb5/contrib/llvm/lib/Analysis/MemorySSA.cpp projects/krb5/contrib/llvm/lib/CodeGen/IfConversion.cpp projects/krb5/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/krb5/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp projects/krb5/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp projects/krb5/contrib/llvm/lib/CodeGen/TargetInstrInfo.cpp projects/krb5/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp projects/krb5/contrib/llvm/lib/IR/Core.cpp projects/krb5/contrib/llvm/lib/MC/MCObjectFileInfo.cpp projects/krb5/contrib/llvm/lib/Support/Host.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.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/AMDGPU/AMDGPUTargetMachine.cpp projects/krb5/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td projects/krb5/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp projects/krb5/contrib/llvm/lib/Target/ARM/ARMComputeBlockSize.cpp projects/krb5/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/MicroMipsInstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/Mips.td projects/krb5/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/Mips64r6InstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/MipsDSPInstrFormats.td projects/krb5/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td projects/krb5/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td projects/krb5/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsSubtarget.cpp projects/krb5/contrib/llvm/lib/Target/Mips/MipsSubtarget.h projects/krb5/contrib/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp projects/krb5/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86DomainReassignment.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86FastISel.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86FlagsCopyLowering.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86InstrArithmetic.td projects/krb5/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp projects/krb5/contrib/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp projects/krb5/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp projects/krb5/contrib/llvm/lib/Transforms/IPO/MergeFunctions.cpp projects/krb5/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/DivRemPairs.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/krb5/contrib/llvm/lib/Transforms/Utils/FunctionComparator.cpp projects/krb5/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S projects/krb5/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Driver/CLCompatOptions.td projects/krb5/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/krb5/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/krb5/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp projects/krb5/contrib/llvm/tools/clang/lib/Basic/Targets/AArch64.cpp projects/krb5/contrib/llvm/tools/clang/lib/Basic/Targets/Mips.h projects/krb5/contrib/llvm/tools/clang/lib/Basic/Version.cpp projects/krb5/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.cpp projects/krb5/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/krb5/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/krb5/contrib/llvm/tools/clang/lib/Headers/avx512vlbitalgintrin.h projects/krb5/contrib/llvm/tools/clang/lib/Headers/avx512vlvbmi2intrin.h projects/krb5/contrib/llvm/tools/clang/lib/Headers/avx512vlvnniintrin.h projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/krb5/contrib/llvm/tools/clang/tools/driver/driver.cpp projects/krb5/contrib/llvm/tools/lld/COFF/Config.h projects/krb5/contrib/llvm/tools/lld/COFF/Driver.cpp projects/krb5/contrib/llvm/tools/lld/COFF/DriverUtils.cpp projects/krb5/contrib/llvm/tools/lld/COFF/Options.td projects/krb5/contrib/llvm/tools/lld/ELF/Arch/Mips.cpp projects/krb5/contrib/llvm/tools/lld/ELF/Config.h projects/krb5/contrib/llvm/tools/lld/ELF/Driver.cpp projects/krb5/contrib/smbfs/lib/smb/ctx.c projects/krb5/contrib/smbfs/lib/smb/nbns_rq.c projects/krb5/etc/Makefile projects/krb5/etc/defaults/rc.conf projects/krb5/etc/devd/devmatch.conf projects/krb5/etc/mtree/BSD.debug.dist projects/krb5/etc/mtree/BSD.lib32.dist projects/krb5/etc/mtree/BSD.usr.dist projects/krb5/etc/ntp.conf projects/krb5/etc/rc.d/geli projects/krb5/etc/rc.d/nfsd projects/krb5/etc/rc.d/ntpd projects/krb5/gnu/usr.bin/binutils/ld/Makefile projects/krb5/gnu/usr.bin/cc/Makefile.inc projects/krb5/gnu/usr.bin/cc/cc1/Makefile projects/krb5/gnu/usr.bin/cc/cc1plus/Makefile projects/krb5/gnu/usr.bin/cc/cc_tools/Makefile projects/krb5/gnu/usr.bin/cc/cc_tools/freebsd-native.h projects/krb5/lib/Makefile projects/krb5/lib/clang/freebsd_cc_version.h projects/krb5/lib/clang/headers/Makefile projects/krb5/lib/clang/include/clang/Basic/Version.inc projects/krb5/lib/clang/include/clang/Config/config.h projects/krb5/lib/clang/include/lld/Common/Version.inc projects/krb5/lib/clang/include/llvm/Config/AsmParsers.def projects/krb5/lib/clang/include/llvm/Config/AsmPrinters.def projects/krb5/lib/clang/include/llvm/Config/Disassemblers.def projects/krb5/lib/clang/include/llvm/Config/Targets.def projects/krb5/lib/clang/include/llvm/Config/config.h projects/krb5/lib/clang/include/llvm/Config/llvm-config.h projects/krb5/lib/clang/include/llvm/Support/VCSRevision.h projects/krb5/lib/clang/libllvm/Makefile projects/krb5/lib/clang/llvm.build.mk projects/krb5/lib/libc/sys/rename.2 projects/krb5/lib/libc/sys/sigaction.2 projects/krb5/lib/libc/tests/ssp/Makefile projects/krb5/lib/libcapsicum/capsicum_helpers.h projects/krb5/lib/libcasper/libcasper/Makefile projects/krb5/lib/libcasper/libcasper/libcasper.3 projects/krb5/lib/libcasper/libcasper/libcasper.h projects/krb5/lib/libcasper/services/cap_pwd/cap_pwd.3 projects/krb5/lib/libcasper/services/cap_pwd/cap_pwd.c projects/krb5/lib/libclang_rt/Makefile.inc projects/krb5/lib/libmagic/Makefile projects/krb5/lib/libnv/tests/Makefile projects/krb5/lib/libnv/tests/cnv_tests.cc projects/krb5/lib/libnv/tests/nv_array_tests.cc projects/krb5/lib/libpam/static_libpam/Makefile projects/krb5/lib/libusb/libusb20.c projects/krb5/lib/ncurses/ncurses/Makefile projects/krb5/release/packages/generate-ucl.sh projects/krb5/release/packages/runtime.ucl projects/krb5/sbin/Makefile projects/krb5/sbin/decryptcore/decryptcore.c projects/krb5/sbin/devd/devd.cc projects/krb5/sbin/devd/devd.hh projects/krb5/sbin/dhclient/Makefile projects/krb5/sbin/dhclient/bpf.c projects/krb5/sbin/dhclient/clparse.c projects/krb5/sbin/dhclient/conflex.c projects/krb5/sbin/dhclient/dhclient.c projects/krb5/sbin/dhclient/dhcpd.h projects/krb5/sbin/dhclient/dispatch.c projects/krb5/sbin/dhclient/options.c projects/krb5/sbin/dhclient/privsep.c projects/krb5/sbin/dhclient/privsep.h projects/krb5/sbin/dumpon/dumpon.c projects/krb5/sbin/fsck_msdosfs/boot.c projects/krb5/sbin/geom/Makefile projects/krb5/sbin/ifconfig/ifconfig.8 projects/krb5/sbin/ifconfig/ifieee80211.c projects/krb5/sbin/ipfw/ipfw.8 projects/krb5/sbin/md5/md5.c projects/krb5/sbin/newfs/newfs.c projects/krb5/sbin/pfctl/parse.y projects/krb5/sbin/pfctl/pfctl_altq.c projects/krb5/share/examples/Makefile projects/krb5/share/examples/bhyve/vmrun.sh projects/krb5/share/man/man4/carp.4 projects/krb5/share/man/man4/ddb.4 projects/krb5/share/man/man4/pf.4 projects/krb5/share/man/man4/vt.4 projects/krb5/share/man/man5/dir.5 projects/krb5/share/man/man5/pf.conf.5 projects/krb5/share/man/man5/rc.conf.5 projects/krb5/share/man/man5/src.conf.5 projects/krb5/share/man/man7/development.7 projects/krb5/share/man/man8/rc.subr.8 projects/krb5/share/man/man9/Makefile projects/krb5/share/man/man9/OF_getprop.9 projects/krb5/share/man/man9/cnv.9 projects/krb5/share/man/man9/epoch.9 projects/krb5/share/man/man9/fdt_pinctrl.9 projects/krb5/share/man/man9/nv.9 projects/krb5/share/misc/bsd-family-tree projects/krb5/share/misc/committers-src.dot projects/krb5/share/misc/organization.dot projects/krb5/share/mk/bsd.README projects/krb5/share/mk/bsd.compiler.mk projects/krb5/share/mk/bsd.cpu.mk projects/krb5/share/mk/bsd.endian.mk projects/krb5/share/mk/bsd.init.mk projects/krb5/share/mk/bsd.lib.mk projects/krb5/share/mk/bsd.linker.mk projects/krb5/share/mk/bsd.man.mk projects/krb5/share/mk/bsd.own.mk projects/krb5/share/mk/bsd.prog.mk projects/krb5/share/mk/bsd.suffixes.mk projects/krb5/share/mk/local.meta.sys.mk projects/krb5/share/mk/src.opts.mk projects/krb5/share/mk/src.sys.obj.mk projects/krb5/share/mk/sys.mk projects/krb5/share/syscons/scrnmaps/Makefile projects/krb5/share/termcap/Makefile projects/krb5/stand/efi/boot1/boot_module.h projects/krb5/stand/forth/check-password.4th.8 projects/krb5/stand/i386/gptboot/gptboot.c projects/krb5/stand/i386/zfsboot/zfsboot.c projects/krb5/stand/libsa/Makefile projects/krb5/stand/lua/config.lua projects/krb5/stand/mips/beri/boot2/Makefile projects/krb5/sys/amd64/amd64/pmap.c projects/krb5/sys/amd64/conf/GENERIC projects/krb5/sys/amd64/conf/NOTES projects/krb5/sys/amd64/include/asmacros.h projects/krb5/sys/amd64/linux/linux_sysvec.c projects/krb5/sys/amd64/linux32/linux32_sysvec.c projects/krb5/sys/arm/allwinner/aw_mmc.c projects/krb5/sys/arm/allwinner/clkng/aw_clk_nkmp.c projects/krb5/sys/arm/allwinner/clkng/aw_clk_nm.c projects/krb5/sys/arm/allwinner/files.allwinner projects/krb5/sys/arm/arm/generic_timer.c projects/krb5/sys/arm/arm/gic.h projects/krb5/sys/arm/arm/gic_common.h projects/krb5/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c projects/krb5/sys/arm/broadcom/bcm2835/bcm2835_machdep.c projects/krb5/sys/arm/broadcom/bcm2835/bcm2835_spi.c projects/krb5/sys/arm/broadcom/bcm2835/files.bcm283x projects/krb5/sys/arm64/arm64/gic_v3_reg.h projects/krb5/sys/arm64/arm64/pmap.c projects/krb5/sys/arm64/arm64/vm_machdep.c projects/krb5/sys/arm64/include/pmap.h projects/krb5/sys/arm64/rockchip/if_dwc_rk.c projects/krb5/sys/arm64/rockchip/rk_gpio.c projects/krb5/sys/cam/mmc/mmc.h projects/krb5/sys/cam/mmc/mmc_da.c projects/krb5/sys/cam/mmc/mmc_xpt.c projects/krb5/sys/compat/linprocfs/linprocfs.c projects/krb5/sys/compat/linux/linux_fork.c projects/krb5/sys/compat/linux/linux_mib.c projects/krb5/sys/compat/linux/linux_misc.c projects/krb5/sys/compat/linux/linux_sysctl.c projects/krb5/sys/conf/NOTES projects/krb5/sys/conf/files projects/krb5/sys/conf/files.amd64 projects/krb5/sys/conf/files.arm64 projects/krb5/sys/conf/files.powerpc projects/krb5/sys/conf/newvers.sh projects/krb5/sys/conf/options projects/krb5/sys/contrib/dev/acpica/changes.txt projects/krb5/sys/contrib/dev/acpica/common/dmextern.c projects/krb5/sys/contrib/dev/acpica/compiler/aslglobal.h projects/krb5/sys/contrib/dev/acpica/compiler/aslhelpers.y projects/krb5/sys/contrib/dev/acpica/compiler/aslload.c projects/krb5/sys/contrib/dev/acpica/compiler/aslmain.c projects/krb5/sys/contrib/dev/acpica/compiler/aslmessages.c projects/krb5/sys/contrib/dev/acpica/compiler/aslmessages.h projects/krb5/sys/contrib/dev/acpica/compiler/asloptions.c projects/krb5/sys/contrib/dev/acpica/compiler/aslparser.y projects/krb5/sys/contrib/dev/acpica/compiler/aslprimaries.y projects/krb5/sys/contrib/dev/acpica/compiler/asltransform.c projects/krb5/sys/contrib/dev/acpica/compiler/asltypes.y projects/krb5/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c projects/krb5/sys/contrib/dev/acpica/components/namespace/nsaccess.c projects/krb5/sys/contrib/dev/acpica/components/namespace/nseval.c projects/krb5/sys/contrib/dev/acpica/components/namespace/nssearch.c projects/krb5/sys/contrib/dev/acpica/include/aclocal.h projects/krb5/sys/contrib/dev/acpica/include/acpixf.h projects/krb5/sys/contrib/libnv/cnvlist.c projects/krb5/sys/contrib/libnv/nv_impl.h projects/krb5/sys/contrib/libnv/nvlist.c projects/krb5/sys/contrib/libnv/nvpair.c projects/krb5/sys/crypto/aesni/aesni.c projects/krb5/sys/dev/bktr/bktr_core.c projects/krb5/sys/dev/bktr/bktr_os.c projects/krb5/sys/dev/bktr/bktr_reg.h projects/krb5/sys/dev/cxgbe/adapter.h projects/krb5/sys/dev/cxgbe/common/t4_hw.c projects/krb5/sys/dev/cxgbe/cxgbei/cxgbei.c projects/krb5/sys/dev/cxgbe/t4_filter.c projects/krb5/sys/dev/cxgbe/t4_main.c projects/krb5/sys/dev/efidev/efirtc.c projects/krb5/sys/dev/iwn/if_iwn.c projects/krb5/sys/dev/iwn/if_iwn_chip_cfg.h projects/krb5/sys/dev/iwn/if_iwn_devid.h projects/krb5/sys/dev/ixl/i40e_adminq.c projects/krb5/sys/dev/ixl/i40e_adminq.h projects/krb5/sys/dev/ixl/i40e_adminq_cmd.h projects/krb5/sys/dev/ixl/i40e_alloc.h projects/krb5/sys/dev/ixl/i40e_common.c projects/krb5/sys/dev/ixl/i40e_dcb.c projects/krb5/sys/dev/ixl/i40e_dcb.h projects/krb5/sys/dev/ixl/i40e_devids.h projects/krb5/sys/dev/ixl/i40e_hmc.c projects/krb5/sys/dev/ixl/i40e_hmc.h projects/krb5/sys/dev/ixl/i40e_lan_hmc.c projects/krb5/sys/dev/ixl/i40e_lan_hmc.h projects/krb5/sys/dev/ixl/i40e_nvm.c projects/krb5/sys/dev/ixl/i40e_osdep.c projects/krb5/sys/dev/ixl/i40e_osdep.h projects/krb5/sys/dev/ixl/i40e_prototype.h projects/krb5/sys/dev/ixl/i40e_register.h projects/krb5/sys/dev/ixl/i40e_status.h projects/krb5/sys/dev/ixl/i40e_type.h projects/krb5/sys/dev/ixl/if_ixl.c projects/krb5/sys/dev/ixl/if_ixlv.c projects/krb5/sys/dev/ixl/ixl.h projects/krb5/sys/dev/ixl/ixl_iw.c projects/krb5/sys/dev/ixl/ixl_iw.h projects/krb5/sys/dev/ixl/ixl_iw_int.h projects/krb5/sys/dev/ixl/ixl_pf.h projects/krb5/sys/dev/ixl/ixl_pf_i2c.c projects/krb5/sys/dev/ixl/ixl_pf_iov.c projects/krb5/sys/dev/ixl/ixl_pf_iov.h projects/krb5/sys/dev/ixl/ixl_pf_main.c projects/krb5/sys/dev/ixl/ixl_pf_qmgr.c projects/krb5/sys/dev/ixl/ixl_pf_qmgr.h projects/krb5/sys/dev/ixl/ixl_txrx.c projects/krb5/sys/dev/ixl/ixlv.h projects/krb5/sys/dev/ixl/ixlv_vc_mgr.h projects/krb5/sys/dev/ixl/ixlvc.c projects/krb5/sys/dev/ixl/virtchnl.h projects/krb5/sys/dev/ofw/ofw_cpu.c projects/krb5/sys/dev/pccard/pccard.c projects/krb5/sys/dev/psci/smccc.c projects/krb5/sys/dev/psci/smccc.h projects/krb5/sys/dev/rtwn/rtl8812a/r12a_reg.h projects/krb5/sys/dev/rtwn/rtl8812a/usb/r12au.h projects/krb5/sys/dev/rtwn/rtl8812a/usb/r12au_init.c projects/krb5/sys/dev/rtwn/rtl8821a/usb/r21au.h projects/krb5/sys/dev/rtwn/rtl8821a/usb/r21au_attach.c projects/krb5/sys/dev/rtwn/rtl8821a/usb/r21au_init.c projects/krb5/sys/dev/spibus/spibus.c projects/krb5/sys/dev/spibus/spigen.c projects/krb5/sys/dev/usb/usb_request.c projects/krb5/sys/dev/vt/hw/vga/vt_vga.c projects/krb5/sys/dev/xen/grant_table/grant_table.c projects/krb5/sys/dev/xen/netback/netback.c projects/krb5/sys/fs/nfs/nfs.h projects/krb5/sys/fs/nfs/nfs_commonkrpc.c projects/krb5/sys/fs/nfs/nfs_commonsubs.c projects/krb5/sys/fs/nfs/nfs_var.h projects/krb5/sys/fs/nfsclient/nfs_clrpcops.c projects/krb5/sys/fs/nfsclient/nfs_clstate.c projects/krb5/sys/fs/nfsserver/nfs_nfsdport.c projects/krb5/sys/fs/nfsserver/nfs_nfsdstate.c projects/krb5/sys/i386/linux/linux_sysvec.c projects/krb5/sys/kern/init_main.c projects/krb5/sys/kern/kern_cpu.c projects/krb5/sys/kern/kern_environment.c projects/krb5/sys/kern/kern_fork.c projects/krb5/sys/kern/kern_jail.c projects/krb5/sys/kern/kern_proc.c projects/krb5/sys/kern/kern_sig.c projects/krb5/sys/kern/kern_sysctl.c projects/krb5/sys/kern/kern_time.c projects/krb5/sys/kern/subr_bus.c projects/krb5/sys/kern/subr_counter.c projects/krb5/sys/kern/subr_devmap.c projects/krb5/sys/kern/subr_epoch.c projects/krb5/sys/kern/subr_hints.c projects/krb5/sys/kern/subr_kdb.c projects/krb5/sys/kern/subr_witness.c projects/krb5/sys/kern/sys_process.c projects/krb5/sys/kern/vfs_cache.c projects/krb5/sys/libkern/strlcpy.c projects/krb5/sys/mips/malta/malta_machdep.c projects/krb5/sys/modules/Makefile projects/krb5/sys/modules/dtb/rpi/Makefile projects/krb5/sys/modules/ixl/Makefile projects/krb5/sys/modules/ixlv/Makefile projects/krb5/sys/modules/linux64/Makefile projects/krb5/sys/modules/pflog/Makefile projects/krb5/sys/modules/pfsync/Makefile projects/krb5/sys/net/bpf.c projects/krb5/sys/net/bpfdesc.h projects/krb5/sys/net/if_me.c projects/krb5/sys/net/pfvar.h projects/krb5/sys/netinet/in_gif.c projects/krb5/sys/netinet/in_pcb.c projects/krb5/sys/netinet/in_pcb.h projects/krb5/sys/netinet/ip.h projects/krb5/sys/netinet/ip6.h projects/krb5/sys/netinet/ip_carp.c projects/krb5/sys/netinet/ip_gre.c projects/krb5/sys/netinet/raw_ip.c projects/krb5/sys/netinet/tcp_fastopen.c projects/krb5/sys/netinet/tcp_fsm.h projects/krb5/sys/netinet/tcp_hpts.c projects/krb5/sys/netinet/tcp_input.c projects/krb5/sys/netinet/tcp_offload.c projects/krb5/sys/netinet/tcp_output.c projects/krb5/sys/netinet/tcp_stacks/rack.c projects/krb5/sys/netinet/tcp_subr.c projects/krb5/sys/netinet/tcp_timewait.c projects/krb5/sys/netinet/udp_usrreq.c projects/krb5/sys/netinet6/in6_gif.c projects/krb5/sys/netinet6/in6_pcb.c projects/krb5/sys/netinet6/ip6_gre.c projects/krb5/sys/netipsec/key_debug.c projects/krb5/sys/netpfil/pf/if_pfsync.c projects/krb5/sys/netpfil/pf/pf.c projects/krb5/sys/netpfil/pf/pf_ioctl.c projects/krb5/sys/powerpc/aim/trap_subr64.S projects/krb5/sys/powerpc/include/kdb.h projects/krb5/sys/powerpc/include/smp.h projects/krb5/sys/powerpc/include/spr.h projects/krb5/sys/powerpc/powernv/opal_console.c projects/krb5/sys/riscv/conf/GENERIC projects/krb5/sys/riscv/riscv/plic.c projects/krb5/sys/sys/bus.h projects/krb5/sys/sys/cnv.h projects/krb5/sys/sys/cpu.h projects/krb5/sys/sys/dirent.h projects/krb5/sys/sys/epoch.h projects/krb5/sys/sys/event.h projects/krb5/sys/sys/nv.h projects/krb5/sys/sys/proc.h projects/krb5/sys/sys/syscallsubr.h projects/krb5/sys/sys/systm.h projects/krb5/sys/ufs/ffs/ffs_alloc.c projects/krb5/sys/ufs/ffs/ffs_suspend.c projects/krb5/sys/ufs/ffs/ffs_vfsops.c projects/krb5/sys/ufs/ufs/ufsmount.h projects/krb5/sys/vm/uma_core.c projects/krb5/sys/vm/uma_int.h projects/krb5/sys/vm/vm_page.c projects/krb5/sys/vm/vm_phys.c projects/krb5/sys/vm/vm_phys.h projects/krb5/sys/vm/vm_radix.c projects/krb5/sys/vm/vm_unix.c projects/krb5/sys/x86/include/x86_var.h projects/krb5/sys/x86/isa/atrtc.c projects/krb5/sys/x86/x86/cpu_machdep.c projects/krb5/sys/x86/x86/tsc.c projects/krb5/sys/x86/xen/hvm.c projects/krb5/targets/pseudo/userland/Makefile.depend projects/krb5/targets/pseudo/userland/lib/Makefile.depend projects/krb5/tests/sys/audit/Makefile projects/krb5/tests/sys/audit/administrative.c projects/krb5/tests/sys/audit/file-attribute-access.c projects/krb5/tests/sys/audit/file-attribute-modify.c projects/krb5/tests/sys/audit/inter-process.c projects/krb5/tests/sys/audit/network.c projects/krb5/tools/boot/rootgen.sh projects/krb5/tools/build/beinstall.sh projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc projects/krb5/tools/tools/git/HOWTO projects/krb5/usr.bin/Makefile projects/krb5/usr.bin/ar/acplex.l projects/krb5/usr.bin/ar/acpyacc.y projects/krb5/usr.bin/ar/ar.c projects/krb5/usr.bin/ar/ar.h projects/krb5/usr.bin/ar/read.c projects/krb5/usr.bin/ar/util.c projects/krb5/usr.bin/ar/write.c projects/krb5/usr.bin/basename/basename.c projects/krb5/usr.bin/clang/lld/Makefile projects/krb5/usr.bin/cmp/cmp.c projects/krb5/usr.bin/col/col.c projects/krb5/usr.bin/diff/diffreg.c projects/krb5/usr.bin/diff3/diff3.c projects/krb5/usr.bin/dirname/dirname.c projects/krb5/usr.bin/elfdump/elfdump.c projects/krb5/usr.bin/find/find.c projects/krb5/usr.bin/find/function.c projects/krb5/usr.bin/find/getdate.y projects/krb5/usr.bin/find/ls.c projects/krb5/usr.bin/find/main.c projects/krb5/usr.bin/find/misc.c projects/krb5/usr.bin/find/operator.c projects/krb5/usr.bin/find/option.c projects/krb5/usr.bin/getopt/getopt.c projects/krb5/usr.bin/hexdump/display.c projects/krb5/usr.bin/iconv/iconv.c projects/krb5/usr.bin/ident/ident.c projects/krb5/usr.bin/indent/indent.c projects/krb5/usr.bin/jot/jot.c projects/krb5/usr.bin/kdump/kdump.c projects/krb5/usr.bin/ktrdump/ktrdump.c projects/krb5/usr.bin/lam/lam.c projects/krb5/usr.bin/last/last.c projects/krb5/usr.bin/locate/bigram/locate.bigram.c projects/krb5/usr.bin/logname/logname.c projects/krb5/usr.bin/ministat/ministat.c projects/krb5/usr.bin/pom/pom.c projects/krb5/usr.bin/primes/primes.c projects/krb5/usr.bin/printenv/printenv.c projects/krb5/usr.bin/rup/Makefile projects/krb5/usr.bin/rup/rup.c projects/krb5/usr.bin/rusers/rusers.c projects/krb5/usr.bin/rwho/rwho.c projects/krb5/usr.bin/sort/Makefile projects/krb5/usr.bin/sort/file.c projects/krb5/usr.bin/sort/file.h projects/krb5/usr.bin/sort/sort.c projects/krb5/usr.bin/su/Makefile projects/krb5/usr.bin/systat/cmds.c projects/krb5/usr.bin/tee/tee.c projects/krb5/usr.bin/top/Makefile projects/krb5/usr.bin/top/commands.c projects/krb5/usr.bin/top/display.c projects/krb5/usr.bin/top/machine.c projects/krb5/usr.bin/top/machine.h projects/krb5/usr.bin/top/screen.c projects/krb5/usr.bin/top/screen.h projects/krb5/usr.bin/top/top.c projects/krb5/usr.bin/top/top.h projects/krb5/usr.bin/top/utils.c projects/krb5/usr.bin/top/utils.h projects/krb5/usr.bin/tr/tr.c projects/krb5/usr.bin/uniq/uniq.c projects/krb5/usr.bin/units/units.c projects/krb5/usr.bin/users/users.cc projects/krb5/usr.bin/vgrind/Makefile projects/krb5/usr.bin/vi/catalog/Makefile projects/krb5/usr.bin/write/write.c projects/krb5/usr.bin/yes/yes.c projects/krb5/usr.sbin/Makefile projects/krb5/usr.sbin/acpi/acpidump/acpidump.8 projects/krb5/usr.sbin/bhyve/bhyverun.c projects/krb5/usr.sbin/config/config.5 projects/krb5/usr.sbin/config/config.h projects/krb5/usr.sbin/config/config.y projects/krb5/usr.sbin/config/lang.l projects/krb5/usr.sbin/config/main.c projects/krb5/usr.sbin/config/mkmakefile.c projects/krb5/usr.sbin/cxgbetool/cxgbetool.c projects/krb5/usr.sbin/nfsd/nfsd.c projects/krb5/usr.sbin/pnfsdsfile/pnfsdsfile.8 projects/krb5/usr.sbin/pnfsdsfile/pnfsdsfile.c projects/krb5/usr.sbin/portsnap/portsnap/portsnap.8 projects/krb5/usr.sbin/powerd/powerd.c projects/krb5/usr.sbin/rmt/Makefile projects/krb5/usr.sbin/rwhod/rwhod.c projects/krb5/usr.sbin/syslogd/syslogd.c Directory Properties: projects/krb5/ (props changed) projects/krb5/contrib/amd/ (props changed) projects/krb5/contrib/compiler-rt/ (props changed) projects/krb5/contrib/dma/ (props changed) projects/krb5/contrib/file/ (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/pf/ (props changed) projects/krb5/contrib/wpa/ (props changed) projects/krb5/gnu/usr.bin/binutils/ (props changed) projects/krb5/gnu/usr.bin/cc/cc_tools/ (props changed) projects/krb5/sys/contrib/dev/acpica/ (props changed) Modified: projects/krb5/.gitignore ============================================================================== --- projects/krb5/.gitignore Sun Jul 1 20:09:56 2018 (r335852) +++ projects/krb5/.gitignore Sun Jul 1 20:52:50 2018 (r335853) @@ -1,4 +1,5 @@ _.tinderbox.* +_.universe-toolchain _.amd64.* _.arm.* _.arm64.* Modified: projects/krb5/Makefile ============================================================================== --- projects/krb5/Makefile Sun Jul 1 20:09:56 2018 (r335852) +++ projects/krb5/Makefile Sun Jul 1 20:52:50 2018 (r335853) @@ -143,7 +143,7 @@ TGTS= all all-man buildenv buildenvvars buildkernel bu stage-packages \ create-packages-world create-packages-kernel create-packages \ packages installconfig real-packages sign-packages package-pkg \ - print-dir test-system-compiler + print-dir test-system-compiler test-system-linker # These targets require a TARGET and TARGET_ARCH be defined. XTGTS= native-xtools native-xtools-install xdev xdev-build xdev-install \ @@ -168,8 +168,8 @@ META_TGT_WHITELIST+= \ _* build32 buildfiles buildincludes buildkernel buildsoft \ buildworld everything kernel-toolchain kernel-toolchains kernel \ kernels libraries native-xtools showconfig test-system-compiler \ - tinderbox toolchain \ - toolchains universe world worlds xdev xdev-build + test-system-linker tinderbox toolchain \ + toolchains universe universe-toolchain world worlds xdev xdev-build .ORDER: buildworld installworld .ORDER: buildworld distrib-dirs @@ -205,7 +205,7 @@ _MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAK # We often need to use the tree's version of make to build it. # Choices add to complexity though. # We cannot blindly use a make which may not be the one we want -# so be exlicit - until all choice is removed. +# so be explicit - until all choice is removed. WANT_MAKE= bmake .if !empty(.MAKE.MODE:Mmeta) # 20160604 - support missing-meta,missing-filemon and performance improvements @@ -480,7 +480,8 @@ worlds: .PHONY # with a reasonable chance of success, regardless of how old your # existing system is. # -.if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) +.if make(universe) || make(universe_kernels) || make(tinderbox) || \ + make(targets) || make(universe-toolchain) TARGETS?=amd64 arm arm64 i386 mips powerpc riscv sparc64 _UNIVERSE_TARGETS= ${TARGETS} TARGET_ARCHES_arm?= arm armeb armv6 armv7 @@ -542,6 +543,36 @@ universe_prologue: .PHONY .if defined(DOING_TINDERBOX) @rm -f ${FAILFILE} .endif + +universe-toolchain: .PHONY universe_prologue + @echo "--------------------------------------------------------------" + @echo "> Toolchain bootstrap started on `LC_ALL=C date`" + @echo "--------------------------------------------------------------" + ${_+_}@cd ${.CURDIR}; \ + env PATH=${PATH} ${SUB_MAKE} ${JFLAG} kernel-toolchain \ + TARGET=${MACHINE} TARGET_ARCH=${MACHINE_ARCH} \ + OBJTOP="${HOST_OBJTOP}" \ + WITHOUT_SYSTEM_COMPILER=yes \ + WITHOUT_SYSTEM_LINKER=yes \ + TOOLS_PREFIX_UNDEF= \ + kernel-toolchain \ + MK_LLVM_TARGET_ALL=yes \ + > _.${.TARGET} 2>&1 || \ + (echo "${.TARGET} failed," \ + "check _.${.TARGET} for details" | \ + ${MAKEFAIL}; false) + @if [ ! -e "${HOST_OBJTOP}/tmp/usr/bin/cc" ]; then \ + echo "Missing host compiler at ${HOST_OBJTOP}/tmp/usr/bin/cc?" >&2; \ + false; \ + fi + @if [ ! -e "${HOST_OBJTOP}/tmp/usr/bin/ld" ]; then \ + echo "Missing host linker at ${HOST_OBJTOP}/tmp/usr/bin/cc?" >&2; \ + false; \ + fi + @echo "--------------------------------------------------------------" + @echo "> Toolchain bootstrap completed on `LC_ALL=C date`" + @echo "--------------------------------------------------------------" + .for target in ${_UNIVERSE_TARGETS} universe: universe_${target} universe_epilogue: universe_${target} @@ -550,10 +581,58 @@ universe_${target}_prologue: universe_prologue .PHONY @echo ">> ${target} started on `LC_ALL=C date`" universe_${target}_worlds: .PHONY +.if !make(targets) && !make(universe-toolchain) +.for target_arch in ${TARGET_ARCHES_${target}} +.if !defined(_need_clang_${target}_${target_arch}) +_need_clang_${target}_${target_arch} != \ + env TARGET=${target} TARGET_ARCH=${target_arch} \ + ${SUB_MAKE} -C ${.CURDIR} -f Makefile.inc1 test-system-compiler \ + ${MAKE_PARAMS_${target}} -V MK_CLANG_BOOTSTRAP 2>/dev/null || \ + echo unknown +.export _need_clang_${target}_${target_arch} +.endif +.if !defined(_need_lld_${target}_${target_arch}) +_need_lld_${target}_${target_arch} != \ + env TARGET=${target} TARGET_ARCH=${target_arch} \ + ${SUB_MAKE} -C ${.CURDIR} -f Makefile.inc1 test-system-linker \ + ${MAKE_PARAMS_${target}} -V MK_LLD_BOOTSTRAP 2>/dev/null || \ + echo unknown +.export _need_lld_${target}_${target_arch} +.endif +# Setup env for each arch to use the one clang. +.if defined(_need_clang_${target}_${target_arch}) && \ + ${_need_clang_${target}_${target_arch}} == "yes" +# No check on existing XCC or CROSS_BINUTILS_PREFIX, etc, is needed since +# we use the test-system-compiler logic to determine if clang needs to be +# built. It will be no from that logic if already using an external +# toolchain or /usr/bin/cc. +# XXX: Passing HOST_OBJTOP into the PATH would allow skipping legacy, +# bootstrap-tools, and cross-tools. Need to ensure each tool actually +# supports all TARGETS though. +MAKE_PARAMS_${target}+= \ + XCC="${HOST_OBJTOP}/tmp/usr/bin/cc" \ + XCXX="${HOST_OBJTOP}/tmp/usr/bin/c++" \ + XCPP="${HOST_OBJTOP}/tmp/usr/bin/cpp" +.endif +.if defined(_need_lld_${target}_${target_arch}) && \ + ${_need_lld_${target}_${target_arch}} == "yes" +MAKE_PARAMS_${target}+= \ + XLD="${HOST_OBJTOP}/tmp/usr/bin/ld" +.endif +.endfor +.endif # !make(targets) + .if !defined(MAKE_JUST_KERNELS) universe_${target}_done: universe_${target}_worlds .PHONY .for target_arch in ${TARGET_ARCHES_${target}} universe_${target}_worlds: universe_${target}_${target_arch} .PHONY +.if (defined(_need_clang_${target}_${target_arch}) && \ + ${_need_clang_${target}_${target_arch}} == "yes") || \ + (defined(_need_lld_${target}_${target_arch}) && \ + ${_need_lld_${target}_${target_arch}} == "yes") +universe_${target}_${target_arch}: universe-toolchain +universe_${target}_prologue: universe-toolchain +.endif universe_${target}_${target_arch}: universe_${target}_prologue .MAKE .PHONY @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`" @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ @@ -573,13 +652,13 @@ universe_${target}_${target_arch}: universe_${target}_ universe_${target}_done: universe_${target}_kernels .PHONY universe_${target}_kernels: universe_${target}_worlds .PHONY universe_${target}_kernels: universe_${target}_prologue .MAKE .PHONY -.if exists(${KERNSRCDIR}/${target}/conf/NOTES) - @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ + @if [ -e "${KERNSRCDIR}/${target}/conf/NOTES" ]; then \ + (cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ ${SUB_MAKE} LINT \ > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ (echo "${target} 'make LINT' failed," \ - "check _.${target}.makeLINT for details"| ${MAKEFAIL})) -.endif + "check _.${target}.makeLINT for details"| ${MAKEFAIL})); \ + fi @cd ${.CURDIR}; ${SUB_MAKE} ${.MAKEFLAGS} TARGET=${target} \ universe_kernels .endif # !MAKE_JUST_WORLDS @@ -590,10 +669,13 @@ universe_${target}_done: @echo ">> ${target} completed on `LC_ALL=C date`" .endfor .if make(universe_kernconfs) || make(universe_kernels) -universe_kernels: universe_kernconfs .PHONY .if !defined(TARGET) TARGET!= uname -m .endif +universe_kernels_prologue: .PHONY + @echo ">> ${TARGET} kernels started on `LC_ALL=C date`" +universe_kernels: universe_kernconfs .PHONY + @echo ">> ${TARGET} kernels completed on `LC_ALL=C date`" .if defined(MAKE_ALL_KERNELS) _THINNER=cat .elif defined(MAKE_LINT_KERNELS) @@ -606,7 +688,7 @@ KERNCONFS!= cd ${KERNSRCDIR}/${TARGET}/conf && \ -type f -maxdepth 0 \ ! -name DEFAULTS ! -name NOTES | \ ${_THINNER} -universe_kernconfs: .PHONY +universe_kernconfs: universe_kernels_prologue .PHONY .for kernel in ${KERNCONFS} TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/conf && \ config -m ${KERNSRCDIR}/${TARGET}/conf/${kernel} 2> /dev/null | \ @@ -616,6 +698,7 @@ TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR}/${TARGET}/con .endif universe_kernconfs: universe_kernconf_${TARGET}_${kernel} universe_kernconf_${TARGET}_${kernel}: .MAKE + @echo ">> ${TARGET}.${TARGET_ARCH_${kernel}} ${kernel} kernel started on `LC_ALL=C date`" @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ ${SUB_MAKE} ${JFLAG} buildkernel \ TARGET=${TARGET} \ @@ -625,6 +708,7 @@ universe_kernconf_${TARGET}_${kernel}: .MAKE > _.${TARGET}.${kernel} 2>&1 || \ (echo "${TARGET} ${kernel} kernel failed," \ "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) + @echo ">> ${TARGET}.${TARGET_ARCH_${kernel}} ${kernel} kernel completed on `LC_ALL=C date`" .endfor .endif # make(universe_kernels) universe: universe_epilogue Modified: projects/krb5/Makefile.inc1 ============================================================================== --- projects/krb5/Makefile.inc1 Sun Jul 1 20:09:56 2018 (r335852) +++ projects/krb5/Makefile.inc1 Sun Jul 1 20:52:50 2018 (r335853) @@ -50,6 +50,10 @@ .error "Both TARGET and TARGET_ARCH must be defined." .endif +.if make(showconfig) || make(test-system-*) +_MKSHOWCONFIG= t +.endif + SRCDIR?= ${.CURDIR} LOCALBASE?= /usr/local @@ -88,8 +92,8 @@ MK_GCC_BOOTSTRAP= no # running CC from bsd.compiler.mk. .if make(installworld) || make(install) || make(distributeworld) || \ make(stageworld) -.-include "${OBJTOP}/compiler-metadata.mk" -.if !defined(_LOADED_COMPILER_METADATA) +.-include "${OBJTOP}/toolchain-metadata.mk" +.if !defined(_LOADED_TOOLCHAIN_METADATA) .error A build is required first. You may have the wrong MAKEOBJDIRPREFIX set. .endif .endif @@ -97,9 +101,117 @@ MK_GCC_BOOTSTRAP= no # Pull in COMPILER_TYPE and COMPILER_FREEBSD_VERSION early. Pull it from the # tree to be friendlier to foreign OS builds. It's safe to do so unconditionally # here since we will always have the right make, unlike in src/Makefile +# Don't include bsd.linker.mk yet until XBINUTILS is handled (after src.opts.mk) +_NO_INCLUDE_LINKERMK= t .include "share/mk/bsd.compiler.mk" +.undef _NO_INCLUDE_LINKERMK +# src.opts.mk depends on COMPILER_FEATURES .include "share/mk/src.opts.mk" +.if ${TARGET} == ${MACHINE} +TARGET_CPUTYPE?=${CPUTYPE} +.else +TARGET_CPUTYPE?= +.endif +.if !empty(TARGET_CPUTYPE) +_TARGET_CPUTYPE=${TARGET_CPUTYPE} +.else +_TARGET_CPUTYPE=dummy +.endif +.if ${TARGET} == "arm" +.if ${TARGET_ARCH:Marmv[67]*} != "" && ${TARGET_CPUTYPE:M*soft*} == "" +TARGET_ABI= gnueabihf +.else +TARGET_ABI= gnueabi +.endif +.endif +MACHINE_ABI?= unknown +MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/:C/hf$//:S/mipsn32/mips64/}-${MACHINE_ABI}-freebsd12.0 +TARGET_ABI?= unknown +TARGET_TRIPLE?= ${TARGET_ARCH:S/amd64/x86_64/:C/hf$//:S/mipsn32/mips64/}-${TARGET_ABI}-freebsd12.0 +KNOWN_ARCHES?= aarch64/arm64 \ + amd64 \ + arm \ + armeb/arm \ + armv6/arm \ + armv7/arm \ + i386 \ + mips \ + mipsel/mips \ + mips64el/mips \ + mipsn32el/mips \ + mips64/mips \ + mipsn32/mips \ + mipshf/mips \ + mipselhf/mips \ + mips64elhf/mips \ + mips64hf/mips \ + powerpc \ + powerpc64/powerpc \ + powerpcspe/powerpc \ + riscv64/riscv \ + riscv64sf/riscv \ + sparc64 + +.if ${TARGET} == ${TARGET_ARCH} +_t= ${TARGET} +.else +_t= ${TARGET_ARCH}/${TARGET} +.endif +.for _t in ${_t} +.if empty(KNOWN_ARCHES:M${_t}) +.error Unknown target ${TARGET_ARCH}:${TARGET}. +.endif +.endfor + +# If all targets are disabled for system llvm then don't expect it to work +# for cross-builds. +.if !defined(TOOLS_PREFIX) && ${MK_LLVM_TARGET_ALL} == "no" && \ + ${MACHINE} != ${TARGET} && ${MACHINE_ARCH} != ${TARGET_ARCH} && \ + !make(showconfig) +MK_SYSTEM_COMPILER= no +MK_SYSTEM_LINKER= no +.endif + +# Handle external binutils. +.if defined(CROSS_TOOLCHAIN_PREFIX) +CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} +.endif +# If we do not have a bootstrap binutils (because the in-tree one does not +# support the target architecture), provide a default cross-binutils prefix. +# This allows riscv64 builds, for example, to automatically use the +# riscv64-binutils port or package. +.if !make(showconfig) +.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \ + ${MK_LLD_BOOTSTRAP} == "no" && \ + !defined(CROSS_BINUTILS_PREFIX) +CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_TRIPLE}/bin/ +.if !exists(${CROSS_BINUTILS_PREFIX}) +.error In-tree binutils does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-binutils port or package or set CROSS_BINUTILS_PREFIX. +.endif +.endif +.endif +XBINUTILS= AS AR LD NM OBJCOPY RANLIB SIZE STRINGS +.for BINUTIL in ${XBINUTILS} +.if defined(CROSS_BINUTILS_PREFIX) && \ + exists(${CROSS_BINUTILS_PREFIX}/${${BINUTIL}}) +X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX:C,/*$,,}/${${BINUTIL}} +.else +X${BINUTIL}?= ${${BINUTIL}} +.endif +.endfor + +# If a full path to an external linker is given, don't build lld. +.if ${XLD:M/*} +MK_LLD_BOOTSTRAP= no +.endif + +.include "share/mk/bsd.linker.mk" + +# Begin WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD + +# WITH_SYSTEM_COMPILER - Pull in needed values and make a decision. + # Check if there is a local compiler that can satisfy as an external compiler. # Which compiler is expected to be used? .if ${MK_CLANG_BOOTSTRAP} == "yes" @@ -109,7 +221,9 @@ WANT_COMPILER_TYPE= gcc .else WANT_COMPILER_TYPE= .endif -.if !defined(WANT_COMPILER_FREEBSD_VERSION) + +.if !defined(WANT_COMPILER_FREEBSD_VERSION) && !make(showconfig) && \ + !make(test-system-linker) .if ${WANT_COMPILER_TYPE} == "clang" WANT_COMPILER_FREEBSD_VERSION_FILE= lib/clang/freebsd_cc_version.h WANT_COMPILER_FREEBSD_VERSION!= \ @@ -131,23 +245,72 @@ WANT_COMPILER_VERSION!= \ .endif .export WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_VERSION .endif # !defined(WANT_COMPILER_FREEBSD_VERSION) + # It needs to be the same revision as we would build for the bootstrap. # If the expected vs CC is different then we can't skip. # GCC cannot be used for cross-arch yet. For clang we pass -target later if # TARGET_ARCH!=MACHINE_ARCH. .if ${MK_SYSTEM_COMPILER} == "yes" && \ + defined(WANT_COMPILER_FREEBSD_VERSION) && \ (${MK_CLANG_BOOTSTRAP} == "yes" || ${MK_GCC_BOOTSTRAP} == "yes") && \ - !make(showconfig) && !make(xdev*) && \ - ${WANT_COMPILER_TYPE} == ${COMPILER_TYPE} && \ - (${COMPILER_TYPE} == "clang" || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \ - ${COMPILER_VERSION} == ${WANT_COMPILER_VERSION} && \ - ${COMPILER_FREEBSD_VERSION} == ${WANT_COMPILER_FREEBSD_VERSION} + !make(xdev*) && \ + ${X_COMPILER_TYPE} == ${WANT_COMPILER_TYPE} && \ + (${X_COMPILER_TYPE} == "clang" || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \ + ${X_COMPILER_VERSION} == ${WANT_COMPILER_VERSION} && \ + ${X_COMPILER_FREEBSD_VERSION} == ${WANT_COMPILER_FREEBSD_VERSION} # Everything matches, disable the bootstrap compiler. MK_CLANG_BOOTSTRAP= no MK_GCC_BOOTSTRAP= no USING_SYSTEM_COMPILER= yes .endif # ${WANT_COMPILER_TYPE} == ${COMPILER_TYPE} + +# WITH_SYSTEM_LD - Pull in needed values and make a decision. + +# Check if there is a local linker that can satisfy as an external linker. +# Which linker is expected to be used? +.if ${MK_LLD_BOOTSTRAP} == "yes" +WANT_LINKER_TYPE= lld +.elif ${MK_BINUTILS_BOOTSTRAP} == "yes" +# Note that there's no support for bfd in WITH_SYSTEM_LINKER. +WANT_LINKER_TYPE= bfd +.else +WANT_LINKER_TYPE= +.endif + +.if !defined(WANT_LINKER_FREEBSD_VERSION) && !make(showconfig) && \ + !make(test-system-compiler) +.if ${WANT_LINKER_TYPE} == "lld" +WANT_LINKER_FREEBSD_VERSION_FILE= lib/clang/include/lld/Common/Version.inc +WANT_LINKER_FREEBSD_VERSION!= \ + awk '$$2 == "LLD_REVISION_STRING" {gsub(/"/, "", $$3); print $$3}' \ + ${SRCDIR}/${WANT_LINKER_FREEBSD_VERSION_FILE} || echo unknown +WANT_LINKER_VERSION_FILE= lib/clang/include/lld/Common/Version.inc +WANT_LINKER_VERSION!= \ + awk '$$2 == "LLD_VERSION" {split($$3, a, "."); print a[1] * 10000 + a[2] * 100 + a[3]}' \ + ${SRCDIR}/${WANT_LINKER_VERSION_FILE} || echo unknown +.else +WANT_LINKER_FREEBSD_VERSION_FILE= +WANT_LINKER_FREEBSD_VERSION= +.endif +.export WANT_LINKER_FREEBSD_VERSION WANT_LINKER_VERSION +.endif # !defined(WANT_LINKER_FREEBSD_VERSION) + +.if ${MK_SYSTEM_LINKER} == "yes" && \ + defined(WANT_LINKER_FREEBSD_VERSION) && \ + (${MK_LLD_BOOTSTRAP} == "yes") && \ + !make(xdev*) && \ + ${X_LINKER_TYPE} == ${WANT_LINKER_TYPE} && \ + ${X_LINKER_VERSION} == ${WANT_LINKER_VERSION} && \ + ${X_LINKER_FREEBSD_VERSION} == ${WANT_LINKER_FREEBSD_VERSION} +# Everything matches, disable the bootstrap linker. +MK_LLD_BOOTSTRAP= no +USING_SYSTEM_LINKER= yes +.endif # ${WANT_LINKER_TYPE} == ${LINKER_TYPE} + +# WITH_SYSTEM_COMPILER / WITH_SYSTEM_LINKER - Handle defaults and debug. USING_SYSTEM_COMPILER?= no +USING_SYSTEM_LINKER?= no + TEST_SYSTEM_COMPILER_VARS= \ USING_SYSTEM_COMPILER MK_SYSTEM_COMPILER \ MK_CROSS_COMPILER MK_CLANG_BOOTSTRAP MK_GCC_BOOTSTRAP \ @@ -155,84 +318,63 @@ TEST_SYSTEM_COMPILER_VARS= \ WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_FREEBSD_VERSION_FILE \ CC COMPILER_TYPE COMPILER_FEATURES COMPILER_VERSION \ COMPILER_FREEBSD_VERSION \ - X_COMPILER_TYPE X_COMPILER_FEATURES X_COMPILER_VERSION \ - X_COMPILER_FREEBSD_VERSION \ - LINKER_TYPE LINKER_FEATURES LINKER_VERSION \ - X_LINKER_TYPE X_LINKER_FEATURES X_LINKER_VERSION -test-system-compiler: .PHONY -.for v in ${TEST_SYSTEM_COMPILER_VARS} + XCC X_COMPILER_TYPE X_COMPILER_FEATURES X_COMPILER_VERSION \ + X_COMPILER_FREEBSD_VERSION +TEST_SYSTEM_LINKER_VARS= \ + USING_SYSTEM_LINKER MK_SYSTEM_LINKER \ + MK_LLD_BOOTSTRAP MK_BINUTILS_BOOTSTRAP \ + WANT_LINKER_TYPE WANT_LINKER_VERSION WANT_LINKER_VERSION_FILE \ + WANT_LINKER_FREEBSD_VERSION WANT_LINKER_FREEBSD_VERSION_FILE \ + LD LINKER_TYPE LINKER_FEATURES LINKER_VERSION \ + LINKER_FREEBSD_VERSION \ + XLD X_LINKER_TYPE X_LINKER_FEATURES X_LINKER_VERSION \ + X_LINKER_FREEBSD_VERSION + +.for _t in compiler linker +test-system-${_t}: .PHONY +.for v in ${TEST_SYSTEM_${_t:tu}_VARS} ${_+_}@printf "%-35s= %s\n" "${v}" "${${v}}" .endfor -.if ${USING_SYSTEM_COMPILER} == "yes" && \ - (make(buildworld) || make(buildkernel) || make(kernel-toolchain) || \ +.endfor +.if (make(buildworld) || make(buildkernel) || make(kernel-toolchain) || \ make(toolchain) || make(_cross-tools)) +.if ${USING_SYSTEM_COMPILER} == "yes" .info SYSTEM_COMPILER: Determined that CC=${CC} matches the source tree. Not bootstrapping a cross-compiler. +.elif ${MK_CLANG_BOOTSTRAP} == "yes" +.info SYSTEM_COMPILER: libclang will be built for bootstrapping a cross-compiler. .endif - -# For installworld need to ensure that the looked-up compiler metadata is -# passed along rather than trying to run cc from the restricted -# STRICTTMPPATH. -.if ${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no" -.if !defined(X_COMPILER_TYPE) -CROSSENV+= COMPILER_VERSION=${COMPILER_VERSION} \ - COMPILER_TYPE=${COMPILER_TYPE} \ - COMPILER_FEATURES="${COMPILER_FEATURES}" \ - COMPILER_FREEBSD_VERSION=${COMPILER_FREEBSD_VERSION} -.else -CROSSENV+= COMPILER_VERSION=${X_COMPILER_VERSION} \ - COMPILER_FEATURES="${X_COMPILER_FEATURES}" \ - COMPILER_TYPE=${X_COMPILER_TYPE} \ - COMPILER_FREEBSD_VERSION=${X_COMPILER_FREEBSD_VERSION} +.if ${USING_SYSTEM_LINKER} == "yes" +.info SYSTEM_LINKER: Determined that LD=${LD} matches the source tree. Not bootstrapping a cross-linker. +.elif ${MK_LLD_BOOTSTRAP} == "yes" +.info SYSTEM_LINKER: libclang will be built for bootstrapping a cross-linker. .endif .endif + +# End WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD + # Store some compiler metadata for use in installworld where we don't # want to invoke CC at all. -_COMPILER_METADATA_VARS= COMPILER_VERSION \ +_TOOLCHAIN_METADATA_VARS= COMPILER_VERSION \ COMPILER_TYPE \ COMPILER_FEATURES \ COMPILER_FREEBSD_VERSION \ LINKER_VERSION \ LINKER_FEATURES \ - LINKER_TYPE -compiler-metadata.mk: .PHONY .META + LINKER_TYPE \ + LINKER_FREEBSD_VERSION +toolchain-metadata.mk: .PHONY .META @: > ${.TARGET} - @echo ".info Using cached compiler metadata from build at $$(hostname) on $$(date)" \ + @echo ".info Using cached toolchain metadata from build at $$(hostname) on $$(date)" \ > ${.TARGET} - @echo "_LOADED_COMPILER_METADATA=t" >> ${.TARGET} -.for v in ${_COMPILER_METADATA_VARS} + @echo "_LOADED_TOOLCHAIN_METADATA=t" >> ${.TARGET} +.for v in ${_TOOLCHAIN_METADATA_VARS} @echo "${v}=${${v}}" >> ${.TARGET} + @echo "X_${v}=${X_${v}}" >> ${.TARGET} .endfor - @echo ".export ${_COMPILER_METADATA_VARS}" >> ${.TARGET} + @echo ".export ${_TOOLCHAIN_METADATA_VARS}" >> ${.TARGET} + @echo ".export ${_TOOLCHAIN_METADATA_VARS:C,^,X_,}" >> ${.TARGET} -# Handle external binutils. -.if defined(CROSS_TOOLCHAIN_PREFIX) -CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} -.endif -# If we do not have a bootstrap binutils (because the in-tree one does not -# support the target architecture), provide a default cross-binutils prefix. -# This allows riscv64 builds, for example, to automatically use the -# riscv64-binutils port or package. -.if !make(showconfig) -.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \ - ${MK_LLD_BOOTSTRAP} == "no" && \ - !defined(CROSS_BINUTILS_PREFIX) -CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_ARCH}-freebsd/bin/ -.if !exists(${CROSS_BINUTILS_PREFIX}) -.error In-tree binutils does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-binutils port or package or set CROSS_BINUTILS_PREFIX. -.endif -.endif -.endif -XBINUTILS= AS AR LD NM OBJCOPY RANLIB SIZE STRINGS -.for BINUTIL in ${XBINUTILS} -.if defined(CROSS_BINUTILS_PREFIX) && \ - exists(${CROSS_BINUTILS_PREFIX}${${BINUTIL}}) -X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX}${${BINUTIL}} -.else -X${BINUTIL}?= ${${BINUTIL}} -.endif -.endfor - # We must do lib/ and libexec/ before bin/ in case of a mid-install error to # keep the users system reasonably usable. For static->dynamic root upgrades, # we don't want to install a dynamic binary without rtld and the needed @@ -346,6 +488,7 @@ BUILDENV_SHELL?=${SHELL} BUILDENV_SHELL?=/bin/sh .endif +.if !defined(_MKSHOWCONFIG) .if !defined(SVN_CMD) || empty(SVN_CMD) . for _P in /usr/bin /usr/local/bin . for _S in svn svnlite @@ -414,58 +557,15 @@ EXTRA_REVISION= _${_BRANCH:C/.*-p([0-9]+$)/\1/} .endif PKG_VERSION= ${_REVISION}${EXTRA_REVISION} .endif +.endif # !defined(_MKSHOWCONFIG) -KNOWN_ARCHES?= aarch64/arm64 \ - amd64 \ - arm \ - armeb/arm \ - armv6/arm \ - armv7/arm \ - i386 \ - mips \ - mipsel/mips \ - mips64el/mips \ - mipsn32el/mips \ - mips64/mips \ - mipsn32/mips \ - mipshf/mips \ - mipselhf/mips \ - mips64elhf/mips \ - mips64hf/mips \ - powerpc \ - powerpc64/powerpc \ - powerpcspe/powerpc \ - riscv64/riscv \ - riscv64sf/riscv \ - sparc64 - -.if ${TARGET} == ${TARGET_ARCH} -_t= ${TARGET} -.else -_t= ${TARGET_ARCH}/${TARGET} -.endif -.for _t in ${_t} -.if empty(KNOWN_ARCHES:M${_t}) -.error Unknown target ${TARGET_ARCH}:${TARGET}. -.endif -.endfor - -.if ${TARGET} == ${MACHINE} -TARGET_CPUTYPE?=${CPUTYPE} -.else -TARGET_CPUTYPE?= -.endif - -.if !empty(TARGET_CPUTYPE) -_TARGET_CPUTYPE=${TARGET_CPUTYPE} -.else -_TARGET_CPUTYPE=dummy -.endif +.if !defined(_MKSHOWCONFIG) _CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} -f /dev/null \ -m ${.CURDIR}/share/mk MK_AUTO_OBJ=no -V CPUTYPE .if ${_CPUTYPE} != ${_TARGET_CPUTYPE} .error CPUTYPE global should be set with ?=. .endif +.endif .if make(buildworld) BUILD_ARCH!= uname -p .if ${MACHINE_ARCH} != ${BUILD_ARCH} @@ -544,7 +644,7 @@ CROSSENV+= ${TARGET_CFLAGS} # bootstrap-tools stage BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ - TOOLS_PREFIX=${WORLDTMP} \ + TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \ PATH=${BPATH}:${PATH} \ WORLDTMP=${WORLDTMP} \ MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" @@ -561,12 +661,14 @@ BSARGS= DESTDIR= \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ MK_LLDB=no MK_TESTS=no \ - MK_LLD=${MK_LLD_BOOTSTRAP} \ MK_INCLUDES=yes BMAKE= \ ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ ${BSARGS} +.if empty(.MAKEOVERRIDES:MMK_LLVM_TARGET_ALL) +BMAKE+= MK_LLVM_TARGET_ALL=no +.endif # build-tools stage TMAKE= \ @@ -585,13 +687,14 @@ TMAKE= \ # TOOLS_PREFIX set in BMAKE XMAKE= ${BMAKE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_LLD_IS_LD=${MK_LLD_BOOTSTRAP} MK_TESTS=no + MK_GDB=no MK_TESTS=no # kernel-tools stage KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ PATH=${BPATH}:${PATH} \ WORLDTMP=${WORLDTMP} -KTMAKE= TOOLS_PREFIX=${WORLDTMP} \ +KTMAKE= \ + TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \ ${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ DESTDIR= \ OBJTOP='${WORLDTMP}/obj-kernel-tools' \ @@ -644,34 +747,10 @@ BFLAGS+= -B${CROSS_BINUTILS_PREFIX} .if !defined(CROSS_BINUTILS_PREFIX) || !exists(${CROSS_BINUTILS_PREFIX}) BFLAGS+= -B${WORLDTMP}/usr/bin .endif -.if ${TARGET} == "arm" -.if ${TARGET_ARCH:Marmv[67]*} != "" && ${TARGET_CPUTYPE:M*soft*} == "" -TARGET_ABI= gnueabihf -.else -TARGET_ABI= gnueabi -.endif -.endif .if ${WANT_COMPILER_TYPE} == gcc || \ (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) -# GCC requires -isystem and -L when using a cross-compiler. --sysroot -# won't set header path and -L is used to ensure the base library path -# is added before the port PREFIX library path. -XCFLAGS+= -isystem ${WORLDTMP}/usr/include -L${WORLDTMP}/usr/lib -# GCC requires -B to find /usr/lib/crti.o when using a cross-compiler -# combined with --sysroot. -XCFLAGS+= -B${WORLDTMP}/usr/lib -# Force using libc++ for external GCC. -.if defined(X_COMPILER_TYPE) && \ - ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 -XCXXFLAGS+= -isystem ${WORLDTMP}/usr/include/c++/v1 -std=c++11 \ - -nostdinc++ -.endif .elif ${WANT_COMPILER_TYPE} == clang || \ (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == clang) -MACHINE_ABI?= unknown -MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/:C/hf$//:S/mipsn32/mips64/}-${MACHINE_ABI}-freebsd12.0 -TARGET_ABI?= unknown -TARGET_TRIPLE?= ${TARGET_ARCH:S/amd64/x86_64/:C/hf$//:S/mipsn32/mips64/}-${TARGET_ABI}-freebsd12.0 XCFLAGS+= -target ${TARGET_TRIPLE} .endif XCFLAGS+= --sysroot=${WORLDTMP} @@ -695,7 +774,7 @@ LIBCOMPAT= SOFT # to get updated host tools. .if ${MK_META_MODE} == "yes" && defined(NO_CLEAN) && \ !defined(NO_META_IGNORE_HOST) && !defined(NO_META_IGNORE_HOST_HEADERS) && \ - !make(showconfig) + !defined(_MKSHOWCONFIG) # r318736 - ino64 major ABI breakage META_MODE_BAD_ABI_VERS+= 1200031 @@ -773,6 +852,19 @@ IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}" IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}" .endif +DESTDIR_MTREEFLAGS= -deU +# When creating worldtmp we don't need to set the directories as owned by root +# so we also pass -W +WORLDTMP_MTREEFLAGS= -deUW +.if defined(NO_ROOT) +# When building with -DNO_ROOT we shouldn't be changing the directories +# that are created by mtree to be owned by root/wheel. +DESTDIR_MTREEFLAGS+= -W +.endif +MTREE?= mtree +WORLDTMP_MTREE= ${MTREE} ${WORLDTMP_MTREEFLAGS} +DESTDIR_MTREE= ${MTREE} ${DESTDIR_MTREEFLAGS} + # kernel stage KMAKEENV= ${WMAKEENV:NSYSROOT=*} KMAKE= ${KMAKEENV} ${MAKE} ${.MAKEFLAGS} ${KERNEL_FLAGS} KERNEL=${INSTKERNNAME} @@ -813,37 +905,33 @@ _cleanobj_fast_depend_hack: .PHONY # 20180525 r334224 vadvise # 20180604 r334626 brk sbrk .for f in brk exect fstat fstatat fstatfs getdirentries getfsstat sbrk setlogin shmat sigreturn statfs vadvise -.if exists(${OBJTOP}/lib/libc/.depend.${f}.o) - @if egrep -qw '${f}\.[sS]' \ - ${OBJTOP}/lib/libc/.depend.${f}.o; then \ - echo Removing stale dependencies for ${f} syscall wrappers; \ + @if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \ + egrep -qw '${f}\.[sS]' ${OBJTOP}/lib/libc/.depend.${f}.o; then \ + echo "Removing stale dependencies for ${f} syscall wrappers"; \ rm -f ${OBJTOP}/lib/libc/.depend.${f}.* \ ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*}; \ fi -.endif .endfor # 20170607 remove stale dependencies for utimens* wrappers removed in r319663 .for f in futimens utimensat -.if exists(${OBJTOP}/lib/libc/.depend.${f}.o) - @if egrep -q '/${f}.c' \ - ${OBJTOP}/lib/libc/.depend.${f}.o; then \ - echo Removing stale dependencies for ${f} syscall wrappers; \ + @if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \ + egrep -q '/${f}.c' ${OBJTOP}/lib/libc/.depend.${f}.o; then \ + echo "Removing stale dependencies for ${f} syscall wrappers"; \ rm -f ${OBJTOP}/lib/libc/.depend.${f}.* \ ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*}; \ fi -.endif .endfor # 20170523 remove stale generated asm files for functions which are no longer # syscalls after r302092 (pipe) and r318736 (others) .for f in getdents lstat mknod pipe stat -.if exists(${OBJTOP}/lib/libc/${f}.s) || \ - exists(${OBJTOP}/lib/libc/${f}.S) - @echo Removing stale generated ${f} syscall files - @rm -f ${OBJTOP}/lib/libc/${f}.* \ - ${OBJTOP}/lib/libc/.depend.${f}.* \ - ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/${f}.*} \ - ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*} -.endif + @if [ -e "${OBJTOP}/lib/libc/${f}.s" ] || \ + [ -e "${OBJTOP}/lib/libc/${f}.S" ] ; then \ + echo "Removing stale generated ${f} syscall files"; \ + rm -f ${OBJTOP}/lib/libc/${f}.* \ + ${OBJTOP}/lib/libc/.depend.${f}.* \ + ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/${f}.*} \ + ${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*}; \ + fi .endfor _worldtmp: .PHONY @@ -854,11 +942,11 @@ _worldtmp: .PHONY .if !defined(NO_CLEAN) rm -rf ${WORLDTMP} .else -.if exists(${WORLDTMP}) - @echo ">>> Deleting stale files in build tree..." - ${_+_}cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \ - delete-old delete-old-libs >/dev/null -.endif + ${_+_}@if [ -e "${WORLDTMP}" ]; then \ + echo ">>> Deleting stale files in build tree..."; \ + cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \ + delete-old delete-old-libs >/dev/null; \ + fi rm -rf ${WORLDTMP}/legacy/usr/include .if ${USING_SYSTEM_COMPILER} == "yes" .for cc in cc c++ @@ -868,31 +956,34 @@ _worldtmp: .PHONY fi .endfor .endif # ${USING_SYSTEM_COMPILER} == "yes" +.if ${USING_SYSTEM_LINKER} == "yes" + @rm -f ${WORLDTMP}/usr/bin/ld ${WORLDTMP}/usr/bin/ld.lld +.endif # ${USING_SYSTEM_LINKER} == "yes" .endif # !defined(NO_CLEAN) @mkdir -p ${WORLDTMP} @touch ${WORLDTMP}/${.TARGET} .for _dir in \ - lib lib/casper usr legacy/bin legacy/usr + lib lib/casper lib/geom usr legacy/bin legacy/usr mkdir -p ${WORLDTMP}/${_dir} .endfor - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ -p ${WORLDTMP}/legacy/usr >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${WORLDTMP}/legacy/usr/include >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ -p ${WORLDTMP}/usr >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${WORLDTMP}/usr/include >/dev/null ln -sf ${.CURDIR}/sys ${WORLDTMP} .if ${MK_DEBUG_FILES} != "no" - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ -p ${WORLDTMP}/legacy/usr/lib >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ + ${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ -p ${WORLDTMP}/usr/lib >/dev/null .endif .for _mtree in ${LOCAL_MTREE} - mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null + ${WORLDTMP_MTREE} -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null .endfor _legacy: @echo @@ -936,7 +1027,7 @@ _cross-tools: @echo "--------------------------------------------------------------" @echo ">>> stage 3: cross tools" @echo "--------------------------------------------------------------" - @rm -f ${OBJTOP}/compiler-metadata.mk + @rm -f ${OBJTOP}/toolchain-metadata.mk ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools ${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools _build-metadata: @@ -944,7 +1035,7 @@ _build-metadata: @echo "--------------------------------------------------------------" @echo ">>> stage 3.1: recording build metadata" @echo "--------------------------------------------------------------" - ${_+_}cd ${.CURDIR}; ${WMAKE} compiler-metadata.mk + ${_+_}cd ${.CURDIR}; ${WMAKE} toolchain-metadata.mk ${_+_}cd ${.CURDIR}; ${WMAKE} host-osreldate.h _includes: @echo @@ -1054,7 +1145,13 @@ kernel-toolchain: ${KERNEL_TOOLCHAIN_TGTS} .PHONY # installcheck: _installcheck_world _installcheck_kernel .PHONY _installcheck_world: .PHONY + @echo "--------------------------------------------------------------" + @echo ">>> Install check world" + @echo "--------------------------------------------------------------" _installcheck_kernel: .PHONY + @echo "--------------------------------------------------------------" + @echo ">>> Install check kernel" + @echo "--------------------------------------------------------------" # # Require DESTDIR to be set if installing for a different architecture or @@ -1196,42 +1293,42 @@ distributeworld installworld stageworld: _installcheck .if make(distributeworld) .for dist in ${EXTRA_DISTRIBUTIONS} -mkdir ${DESTDIR}/${DISTDIR}/${dist} - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.root.dist \ -p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null .if ${MK_DEBUG_FILES} != "no" - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null .endif .if defined(LIBCOMPAT) - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null .if ${MK_DEBUG_FILES} != "no" - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null .endif .endif .if ${MK_TESTS} != "no" && ${dist} == "tests" -mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null .if ${MK_DEBUG_FILES} != "no" - mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ + ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/${TESTSBASE} >/dev/null .endif .endif .if defined(NO_ROOT) - ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \ + ${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \ sed -e 's#^\./#./${dist}/#' >> ${METALOG} - ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.usr.dist | \ + ${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.usr.dist | \ sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG} - ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \ + ${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \ sed -e 's#^\./#./${dist}/usr/include/#' >> ${METALOG} .if defined(LIBCOMPAT) - ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist | \ + ${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist | \ sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG} .endif .endif @@ -1321,12 +1418,15 @@ restage reinstall: .MAKE .PHONY .endif @echo @echo "--------------------------------------------------------------" - @echo ">>> Installing everything" + @echo ">>> Installing everything started on `LC_ALL=C date`" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install .if defined(LIBCOMPAT) ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install${libcompat} .endif + @echo "--------------------------------------------------------------" + @echo ">>> Installing everything completed on `LC_ALL=C date`" + @echo "--------------------------------------------------------------" redistribute: .MAKE .PHONY @echo "--------------------------------------------------------------" @@ -1389,7 +1489,7 @@ INSTALLKERNEL= BUILDKERNELS+= dummy .endif .for _kernel in ${KERNCONF} -.if exists(${KERNCONFDIR}/${_kernel}) +.if !defined(_MKSHOWCONFIG) && exists(${KERNCONFDIR}/${_kernel}) BUILDKERNELS+= ${_kernel} .if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL) INSTALLKERNEL= ${_kernel} @@ -1403,11 +1503,11 @@ INSTALLKERNEL= ${_kernel} _cleankernobj_fast_depend_hack: .PHONY # 20180320 remove stale generated assym.s after renaming to .inc in r331254 -.if exists(${OBJTOP}/sys/${KERNCONF}/assym.s) - @echo Removing stale generated assym files - @rm -f ${OBJTOP}/sys/${KERNCONF}/assym.* \ - ${OBJTOP}/sys/${KERNCONF}/.depend.assym.* -.endif + @if [ -e "${OBJTOP}/sys/${KERNCONF}/assym.s" ]; then \ + echo "Removing stale generated assym files"; \ + rm -f ${OBJTOP}/sys/${KERNCONF}/assym.* \ + ${OBJTOP}/sys/${KERNCONF}/.depend.assym.*; \ + fi ${WMAKE_TGTS:N_worldtmp:Nbuild${libcompat}} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY @@ -1614,7 +1714,7 @@ PKGSIGNKEY?= # empty .ORDER: create-packages sign-packages _pkgbootstrap: .PHONY -.if !exists(${LOCALBASE}/sbin/pkg) +.if make(*package*) && !exists(${LOCALBASE}/sbin/pkg) @env ASSUME_ALWAYS_YES=YES pkg bootstrap .endif @@ -1700,7 +1800,7 @@ create-world-package-${pkgname}: .PHONY create-kernel-packages: .PHONY _default_flavor= -default -.if exists(${KSTAGEDIR}/kernel.meta) +.if make(*package*) && exists(${KSTAGEDIR}/kernel.meta) . if ${MK_DEBUG_FILES} != "no" _debug=-debug . endif @@ -1711,15 +1811,11 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul env -i LC_COLLATE=C sort ${KSTAGEDIR}/kernel.meta | \ awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ -v kernel=yes -v _kernconf=${INSTALLKERNEL} ; \ - cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \ - pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \ sed -e "s/%VERSION%/${PKG_VERSION}/" \ -e "s/%PKGNAME%/kernel-${INSTALLKERNEL:tl}${flavor}/" \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Mon Jul 2 17:54:34 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2BF73103258D for ; Mon, 2 Jul 2018 17:54:34 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D59D97324B; Mon, 2 Jul 2018 17:54:33 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B6D4610CE2; Mon, 2 Jul 2018 17:54:33 +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 w62HsX3B062415; Mon, 2 Jul 2018 17:54:33 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w62HsXo6062414; Mon, 2 Jul 2018 17:54:33 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807021754.w62HsXo6062414@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 2 Jul 2018 17:54:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r335867 - projects/pnfs-planb-server/sys/rpc X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/rpc X-SVN-Commit-Revision: 335867 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jul 2018 17:54:34 -0000 Author: rmacklem Date: Mon Jul 2 17:54:33 2018 New Revision: 335867 URL: https://svnweb.freebsd.org/changeset/base/335867 Log: Fix the server side krpc so that the kernel nfsd threads terminate. Occationally the kernel nfsd threads would not terminate when a SIGKILL was posted for the kernel process (called nfsd (slave)). When this occurred, the thread associated with the process (called "ismaster") had returned from svc_run_internal() and was sleeping waiting for the other threads to terminate. The other threads (created by kthread_start()) were still in svc_run_internal() handling NFS RPCs. The only way this could occur is for the "ismaster" thread to return from svc_run_internal() without having called svc_exit(). There was only one place in the code where this could happen and this patch stops that from happening. Since the problem is intermittent, I cannot be sure if this has fixed the problem, but I have not seen an occurrence of the problem with this patch applied. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D16087 Modified: projects/pnfs-planb-server/sys/rpc/svc.c Modified: projects/pnfs-planb-server/sys/rpc/svc.c ============================================================================== --- projects/pnfs-planb-server/sys/rpc/svc.c Mon Jul 2 17:50:46 2018 (r335866) +++ projects/pnfs-planb-server/sys/rpc/svc.c Mon Jul 2 17:54:33 2018 (r335867) @@ -1185,7 +1185,8 @@ svc_run_internal(SVCGROUP *grp, bool_t ismaster) /* * Enforce maxthreads count. */ - if (grp->sg_threadcount > grp->sg_maxthreads) + if (!ismaster && grp->sg_threadcount > + grp->sg_maxthreads) break; /* From owner-svn-src-projects@freebsd.org Tue Jul 3 22:54:47 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F2D41103160B for ; Tue, 3 Jul 2018 22:54:46 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A7EB375949; Tue, 3 Jul 2018 22:54: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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 88D3B22832; Tue, 3 Jul 2018 22:54:46 +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 w63MskkB058249; Tue, 3 Jul 2018 22:54:46 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w63Msk9x058248; Tue, 3 Jul 2018 22:54:46 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807032254.w63Msk9x058248@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Tue, 3 Jul 2018 22:54:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r335915 - 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: 335915 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 22:54:47 -0000 Author: rmacklem Date: Tue Jul 3 22:54:46 2018 New Revision: 335915 URL: https://svnweb.freebsd.org/changeset/base/335915 Log: Fix a check for a valid mirror when there are both DSs for all file systems and DSs assigned to specific MDS file systems via the optional "#mds_path" suffix for the entry in the "-p" option. I had not thought that mixing "all DSs" and "specific assigned DS" would make sense, but I now think that this case would be useful and should work correctly. 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 Tue Jul 3 22:11:16 2018 (r335914) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Tue Jul 3 22:54:46 2018 (r335915) @@ -7597,7 +7597,7 @@ nfsrv_delds(char *devid, NFSPROC_T *p) } if (fndds->nfsdev_mdsisset == 0 && nfsrv_faildscnt > 0) fndmirror = 1; - else { + else if (fndds->nfsdev_mdsisset != 0) { /* For the fsid is set case, search for a mirror. */ TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds != fndds && ds->nfsdev_nmp != NULL && @@ -8463,7 +8463,7 @@ nfsrv_findmirroredds(struct nfsmount *nmp) return (fndds); if (fndds->nfsdev_mdsisset == 0 && nfsrv_faildscnt > 0) fndmirror = 1; - else { + else if (fndds->nfsdev_mdsisset != 0) { /* For the fsid is set case, search for a mirror. */ TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds != fndds && ds->nfsdev_nmp != NULL && From owner-svn-src-projects@freebsd.org Tue Jul 3 23:29:19 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AB17D103489E for ; Tue, 3 Jul 2018 23:29:19 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 56CF177452; Tue, 3 Jul 2018 23:29:19 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3725322D1B; Tue, 3 Jul 2018 23:29:19 +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 w63NTJHj073980; Tue, 3 Jul 2018 23:29:19 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w63NTJth073979; Tue, 3 Jul 2018 23:29:19 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807032329.w63NTJth073979@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Tue, 3 Jul 2018 23:29:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r335918 - 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: 335918 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 23:29:19 -0000 Author: rmacklem Date: Tue Jul 3 23:29:18 2018 New Revision: 335918 URL: https://svnweb.freebsd.org/changeset/base/335918 Log: For the case where there is a mix of DSs assigned to specific MDS file systems and DSs for all file systems, modify the algorithm that selects a DS to use one assigned to that MDS file system and only use the DSs for all file systems if there is no assigned one. This will allow a system administrator to set some DSs for "all other exported file systems" and only specify MDS file systems for some DSs. This change does not affect the cases where all DSs are assigned to specified file systems or all DSs are for all file systems. 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 Tue Jul 3 23:09:09 2018 (r335917) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Tue Jul 3 23:29:18 2018 (r335918) @@ -3848,7 +3848,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, NFSPROC_T *p) { struct nfsrvdscreate *dsc, *tdsc; - struct nfsdevice *ds, *mds; + struct nfsdevice *ds, *tds, *fds; struct mount *mp; struct pnfsdsfile *pf, *tpf; struct pnfsdsattr dsattr; @@ -3866,12 +3866,25 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; mp = vp->v_mount; + ds = fds = NULL; NFSDDSLOCK(); - TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { - if (ds->nfsdev_nmp != NULL && (ds->nfsdev_mdsisset == 0 || - (mp->mnt_stat.f_fsid.val[0] == ds->nfsdev_mdsfsid.val[0] && - mp->mnt_stat.f_fsid.val[1] == ds->nfsdev_mdsfsid.val[1]))) - break; + /* + * Search for the first entry that handles this MDS fs, but use the + * first entry for all MDS fs's otherwise. + */ + TAILQ_FOREACH(tds, &nfsrv_devidhead, nfsdev_list) { + if (tds->nfsdev_nmp != NULL) { + if (tds->nfsdev_mdsisset == 0 && ds == NULL) + ds = tds; + else if (tds->nfsdev_mdsisset != 0 && + mp->mnt_stat.f_fsid.val[0] == + tds->nfsdev_mdsfsid.val[0] && + mp->mnt_stat.f_fsid.val[1] == + tds->nfsdev_mdsfsid.val[1]) { + ds = fds = tds; + break; + } + } } if (ds == NULL) { NFSDDSUNLOCK(); @@ -3881,17 +3894,18 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, i = dsdir[0] = ds->nfsdev_nextdir; ds->nfsdev_nextdir = (ds->nfsdev_nextdir + 1) % nfsrv_dsdirsize; dvp[0] = ds->nfsdev_dsdir[i]; - mds = TAILQ_NEXT(ds, nfsdev_list); - if (nfsrv_maxpnfsmirror > 1 && mds != NULL) { - TAILQ_FOREACH_FROM(mds, &nfsrv_devidhead, nfsdev_list) { - if (mds->nfsdev_nmp != NULL && - (mds->nfsdev_mdsisset == 0 || - (mp->mnt_stat.f_fsid.val[0] == - mds->nfsdev_mdsfsid.val[0] && + tds = TAILQ_NEXT(ds, nfsdev_list); + if (nfsrv_maxpnfsmirror > 1 && tds != NULL) { + TAILQ_FOREACH_FROM(tds, &nfsrv_devidhead, nfsdev_list) { + if (tds->nfsdev_nmp != NULL && + ((tds->nfsdev_mdsisset == 0 && fds == NULL) || + (tds->nfsdev_mdsisset != 0 && fds != NULL && + mp->mnt_stat.f_fsid.val[0] == + tds->nfsdev_mdsfsid.val[0] && mp->mnt_stat.f_fsid.val[1] == - mds->nfsdev_mdsfsid.val[1]))) { + tds->nfsdev_mdsfsid.val[1]))) { dsdir[mirrorcnt] = i; - dvp[mirrorcnt] = mds->nfsdev_dsdir[i]; + dvp[mirrorcnt] = tds->nfsdev_dsdir[i]; mirrorcnt++; if (mirrorcnt >= nfsrv_maxpnfsmirror) break; @@ -4495,7 +4509,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char struct nfsmount *nmp, *newnmp; struct sockaddr *sad; struct sockaddr_in *sin; - struct nfsdevice *ds, *fndds; + struct nfsdevice *ds, *tds, *fndds; struct pnfsdsfile *pf; uint32_t dsdir; int error, fhiszero, fnd, gotone, i, mirrorcnt; @@ -4563,6 +4577,7 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char /* Use the socket address to find the mount point. */ fndds = NULL; NFSDDSLOCK(); + /* Find a match for the IP address. */ TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds->nfsdev_nmp != NULL) { dvp = ds->nfsdev_dvp; @@ -4570,25 +4585,41 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char if (nmp != ds->nfsdev_nmp) printf("different2 nmp %p %p\n", nmp, ds->nfsdev_nmp); - if (nfsaddr2_match(sad, nmp->nm_nam)) + if (nfsaddr2_match(sad, nmp->nm_nam)) { fndds = ds; - else if (newnmpp != NULL && - newnmp == NULL && - (*newnmpp == NULL || - fndds == NULL) && - (ds->nfsdev_mdsisset == 0 || - (ds->nfsdev_mdsfsid.val[0] == + break; + } + } + } + if (fndds != NULL && newnmpp != NULL && + newnmp == NULL) { + /* Search for a place to make a mirror copy. */ + TAILQ_FOREACH(tds, &nfsrv_devidhead, + nfsdev_list) { + if (tds->nfsdev_nmp != NULL && + fndds != tds && + ((tds->nfsdev_mdsisset == 0 && + fndds->nfsdev_mdsisset == 0) || + (tds->nfsdev_mdsisset != 0 && + fndds->nfsdev_mdsisset != 0 && + tds->nfsdev_mdsfsid.val[0] == mp->mnt_stat.f_fsid.val[0] && - ds->nfsdev_mdsfsid.val[1] == - mp->mnt_stat.f_fsid.val[1]))) - /* - * Return a destination for the - * copy in newnmpp. Choose the - * last valid one before the - * source mirror, so it isn't - * always the first one. - */ - *newnmpp = nmp; + tds->nfsdev_mdsfsid.val[1] == + mp->mnt_stat.f_fsid.val[1]))) { + *newnmpp = tds->nfsdev_nmp; + break; + } + } + if (tds != NULL) { + /* + * Move this entry to the end of the + * list, so it won't be selected as + * easily the next time. + */ + TAILQ_REMOVE(&nfsrv_devidhead, tds, + nfsdev_list); + TAILQ_INSERT_TAIL(&nfsrv_devidhead, tds, + nfsdev_list); } } NFSDDSUNLOCK(); From owner-svn-src-projects@freebsd.org Thu Jul 5 20:12:35 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0A78F102C182 for ; Thu, 5 Jul 2018 20:12:35 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AFA77746E6; Thu, 5 Jul 2018 20:12:34 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 90EEB1EBE1; Thu, 5 Jul 2018 20:12:34 +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 w65KCYEb057060; Thu, 5 Jul 2018 20:12:34 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w65KCYfD057059; Thu, 5 Jul 2018 20:12:34 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807052012.w65KCYfD057059@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 5 Jul 2018 20:12:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r336014 - 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: 336014 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jul 2018 20:12:35 -0000 Author: rmacklem Date: Thu Jul 5 20:12:34 2018 New Revision: 336014 URL: https://svnweb.freebsd.org/changeset/base/336014 Log: Change the pNFS server so that it does not disable a mirrored DS when a client does a LayoutReturn with an error report of NFSERR_STALE from a DS. The current FreeBSD client can generate these errors for an operational DS while doing a recovery of a mirror after a mirrored DS has been repaired. I am not sure why these errors occur, but my best current guess is a race between the Layout Recall issued by the kernel code run from pnfsdscopymr(8) and a Read operation on the DS for the file bing copied. The errrors are not fatal, since the client falls back on doing I/O through the MDS, which can do the I/O successfully as a proxy. (The fact that the MDS can do this indicates that the file does still exist on the functioning DS.) 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 Thu Jul 5 18:55:42 2018 (r336013) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Thu Jul 5 20:12:34 2018 (r336014) @@ -6750,9 +6750,10 @@ nfsrv_flexlayouterr(struct nfsrv_descript *nd, uint32_ NFSD_DEBUG(4, "flexlayouterr op=%d stat=%d\n", opnum, stat); /* - * Except for NFSERR_ACCES errors, disable the mirror. + * Except for NFSERR_ACCES and NFSERR_STALE errors, + * disable the mirror. */ - if (stat != NFSERR_ACCES) + if (stat != NFSERR_ACCES && stat != NFSERR_STALE) nfsrv_delds(devid, p); } } From owner-svn-src-projects@freebsd.org Thu Jul 5 20:20:07 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8502E102CC45 for ; Thu, 5 Jul 2018 20:20:07 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4539774A76; Thu, 5 Jul 2018 20:20:07 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 21DF41EBE9; Thu, 5 Jul 2018 20:20:07 +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 w65KK6m9057438; Thu, 5 Jul 2018 20:20:06 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w65KK6sn057437; Thu, 5 Jul 2018 20:20:06 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807052020.w65KK6sn057437@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 5 Jul 2018 20:20:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r336015 - projects/pnfs-planb-server/sys/fs/nfsclient X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsclient X-SVN-Commit-Revision: 336015 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jul 2018 20:20:07 -0000 Author: rmacklem Date: Thu Jul 5 20:20:06 2018 New Revision: 336015 URL: https://svnweb.freebsd.org/changeset/base/336015 Log: Change the pNFS client so that it does not report an NFSERR_STALE from an I/O attempt on a DS to the server via LayoutReturn. The current FreeBSD client can generate these errors for an operational DS while doing a recovery of a mirror after a mirrored DS has been repaired. I am not sure why these errors occur, but my best current guess is a race between the Layout Recall issued by the kernel code run from pnfsdscopymr(8) and a Read operation on the DS for the file bing copied. The errrors are not fatal, since the client falls back on doing I/O through the MDS, which can do the I/O successfully as a proxy. (The fact that the MDS can do this indicates that the file does still exist on the functioning DS.) Modified: projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c Modified: projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c Thu Jul 5 20:12:34 2018 (r336014) +++ projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c Thu Jul 5 20:20:06 2018 (r336015) @@ -6040,7 +6040,8 @@ nfscl_dofflayoutio(vnode_t vp, struct uio *uiop, int * *dspp, fhp, dp->nfsdi_vers, dp->nfsdi_minorvers, tcred, p); NFSCL_DEBUG(4, "commitds=%d\n", error); - if (error != 0 && error != EACCES) { + if (error != 0 && error != EACCES && error != + ESTALE) { NFSCL_DEBUG(4, "DS layreterr for commit\n"); nfscl_dserr(NFSV4OP_COMMIT, error, dp, @@ -6065,7 +6066,7 @@ nfscl_dofflayoutio(vnode_t vp, struct uio *uiop, int * off, xfer, fhp, 1, dp->nfsdi_vers, dp->nfsdi_minorvers, tcred, p); NFSCL_DEBUG(4, "readds=%d\n", error); - if (error != 0 && error != EACCES) { + if (error != 0 && error != EACCES && error != ESTALE) { NFSCL_DEBUG(4, "DS layreterr for read\n"); nfscl_dserr(NFSV4OP_READ, error, dp, lyp, *dspp); @@ -6101,7 +6102,8 @@ nfscl_dofflayoutio(vnode_t vp, struct uio *uiop, int * xfer, fhp, m, dp->nfsdi_vers, dp->nfsdi_minorvers, tcred, p); NFSCL_DEBUG(4, "nfsio_writedsmir=%d\n", error); - if (error != 0 && error != EACCES) { + if (error != 0 && error != EACCES && error != + ESTALE) { NFSCL_DEBUG(4, "DS layreterr for write\n"); nfscl_dserr(NFSV4OP_WRITE, error, dp, From owner-svn-src-projects@freebsd.org Fri Jul 6 00:58:53 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 551EA102245E for ; Fri, 6 Jul 2018 00:58:53 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 09C0F7FFB6; Fri, 6 Jul 2018 00:58:53 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DB07521904; Fri, 6 Jul 2018 00:58:52 +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 w660wqLt099816; Fri, 6 Jul 2018 00:58:52 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w660wqK8099813; Fri, 6 Jul 2018 00:58:52 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807060058.w660wqK8099813@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 6 Jul 2018 00:58:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r336018 - in projects/pnfs-planb-server/sys/fs: nfs nfsclient X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsclient X-SVN-Commit-Revision: 336018 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2018 00:58:53 -0000 Author: rmacklem Date: Fri Jul 6 00:58:51 2018 New Revision: 336018 URL: https://svnweb.freebsd.org/changeset/base/336018 Log: Change the pNFS client so that it uses separate TCP connections for same server. This patch changes the pNFS client so that it will use separate TCP connections to the same machine by default. This makes it possible to disable a connection to a DS when multiple DSs reside on the same server. This may be overridden by a sysctl, in case some extant pNFS servers require the same connection to be used for the same server machine. The patch also adds the nfscl_cancelreqs() function to shut down the DS connection if it isn't shared with other DSs. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsclstate.h projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clstate.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsclstate.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsclstate.h Thu Jul 5 22:56:13 2018 (r336017) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsclstate.h Fri Jul 6 00:58:51 2018 (r336018) @@ -94,6 +94,7 @@ struct nfsclds { #define NFSCLDS_MDS 0x0002 #define NFSCLDS_DS 0x0004 #define NFSCLDS_CLOSED 0x0008 +#define NFSCLDS_SAMECONN 0x0010 struct nfsclclient { LIST_ENTRY(nfsclclient) nfsc_list; Modified: projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c Thu Jul 5 22:56:13 2018 (r336017) +++ projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clrpcops.c Fri Jul 6 00:58:51 2018 (r336018) @@ -57,6 +57,10 @@ static int nfsignore_eexist = 0; SYSCTL_INT(_vfs_nfs, OID_AUTO, ignore_eexist, CTLFLAG_RW, &nfsignore_eexist, 0, "NFS ignore EEXIST replies for mkdir/symlink"); +static int nfscl_dssameconn = 0; +SYSCTL_INT(_vfs_nfs, OID_AUTO, dssameconn, CTLFLAG_RW, + &nfscl_dssameconn, 0, "Use same TCP connection to multiple DSs"); + /* * Global variables */ @@ -162,7 +166,7 @@ static int nfsrpc_writedsmir(vnode_t, int *, int *, nf struct nfsclds *, uint64_t, int, struct nfsfh *, struct mbuf *, int, int, struct ucred *, NFSPROC_T *); static enum nfsclds_state nfscl_getsameserver(struct nfsmount *, - struct nfsclds *, struct nfsclds **); + struct nfsclds *, struct nfsclds **, uint32_t *); static int nfsio_commitds(vnode_t, uint64_t, int, struct nfsclds *, struct nfsfh *, int, int, struct nfsclwritedsdorpc *, struct ucred *, NFSPROC_T *); @@ -5498,9 +5502,14 @@ nfsrpc_fillsa(struct nfsmount *nmp, struct sockaddr_in dsp->nfsclds_sockp = nrp; if (vers == NFS_VER4) { NFSLOCKMNT(nmp); - retv = nfscl_getsameserver(nmp, dsp, &tdsp); + retv = nfscl_getsameserver(nmp, dsp, &tdsp, + &sequenceid); NFSCL_DEBUG(3, "getsame ret=%d\n", retv); - if (retv == NFSDSP_USETHISSESSION) { + if (retv == NFSDSP_USETHISSESSION && + nfscl_dssameconn != 0) { + NFSLOCKDS(tdsp); + tdsp->nfsclds_flags |= NFSCLDS_SAMECONN; + NFSUNLOCKDS(tdsp); NFSUNLOCKMNT(nmp); /* * If there is already a session for this @@ -5511,11 +5520,8 @@ nfsrpc_fillsa(struct nfsmount *nmp, struct sockaddr_in *dspp = tdsp; return (0); } - if (retv == NFSDSP_SEQTHISSESSION) + if (retv == NFSDSP_NOTFOUND) sequenceid = - tdsp->nfsclds_sess.nfsess_sequenceid; - else - sequenceid = dsp->nfsclds_sess.nfsess_sequenceid; NFSUNLOCKMNT(nmp); error = nfsrpc_createsession(nmp, &dsp->nfsclds_sess, @@ -6518,15 +6524,16 @@ nfscl_freenfsclds(struct nfsclds *dsp) static enum nfsclds_state nfscl_getsameserver(struct nfsmount *nmp, struct nfsclds *newdsp, - struct nfsclds **retdspp) + struct nfsclds **retdspp, uint32_t *sequencep) { - struct nfsclds *dsp, *cur_dsp; + struct nfsclds *dsp; + int fndseq; /* * Search the list of nfsclds structures for one with the same * server. */ - cur_dsp = NULL; + fndseq = 0; TAILQ_FOREACH(dsp, &nmp->nm_sess, nfsclds_list) { if (dsp->nfsclds_servownlen == newdsp->nfsclds_servownlen && dsp->nfsclds_servownlen != 0 && @@ -6536,24 +6543,22 @@ nfscl_getsameserver(struct nfsmount *nmp, struct nfscl NFSCL_DEBUG(4, "fnd same fdsp=%p dsp=%p flg=0x%x\n", TAILQ_FIRST(&nmp->nm_sess), dsp, dsp->nfsclds_flags); + if (fndseq == 0) { + /* Get sequenceid# from first entry. */ + *sequencep = + dsp->nfsclds_sess.nfsess_sequenceid; + fndseq = 1; + } /* Server major id matches. */ if ((dsp->nfsclds_flags & NFSCLDS_DS) != 0) { *retdspp = dsp; return (NFSDSP_USETHISSESSION); } - /* - * Note the first match, so it can be used for - * sequence'ing new sessions. - */ - if (cur_dsp == NULL) - cur_dsp = dsp; } } - if (cur_dsp != NULL) { - *retdspp = cur_dsp; + if (fndseq != 0) return (NFSDSP_SEQTHISSESSION); - } return (NFSDSP_NOTFOUND); } Modified: projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clstate.c Thu Jul 5 22:56:13 2018 (r336017) +++ projects/pnfs-planb-server/sys/fs/nfsclient/nfs_clstate.c Fri Jul 6 00:58:51 2018 (r336018) @@ -125,6 +125,7 @@ static struct nfscldeleg *nfscl_finddeleg(struct nfscl static void nfscl_retoncloselayout(vnode_t, struct nfsclclient *, uint8_t *, int, struct nfsclrecalllayout **); static void nfscl_reldevinfo_locked(struct nfscldevinfo *); +static void nfscl_cancelreqs(struct nfsclds *); static struct nfscllayout *nfscl_findlayout(struct nfsclclient *, u_int8_t *, int); static struct nfscldevinfo *nfscl_finddevinfo(struct nfsclclient *, uint8_t *); @@ -4975,11 +4976,12 @@ nfscl_retoncloselayout(vnode_t vp, struct nfsclclient */ void nfscl_dserr(uint32_t op, uint32_t stat, struct nfscldevinfo *dp, - struct nfscllayout *lyp, __unused struct nfsclds *dsp) + struct nfscllayout *lyp, struct nfsclds *dsp) { struct nfsclrecalllayout *recallp; uint32_t iomode; + printf("DS being disabled, error=%d\n", stat); /* Set up the return of the layout. */ recallp = malloc(sizeof(*recallp), M_NFSLAYRECALL, M_WAITOK); iomode = 0; @@ -4998,6 +5000,39 @@ nfscl_dserr(uint32_t op, uint32_t stat, struct nfsclde NFSUNLOCKCLSTATE(); free(recallp, M_NFSLAYRECALL); } + + /* If the connection isn't used for other DSs, we can shut it down. */ + if ((dsp->nfsclds_flags & NFSCLDS_SAMECONN) == 0) + nfscl_cancelreqs(dsp); +} + +/* + * Cancel all RPCs for this "dsp" by closing the connection. + * Also, mark the session as defunct. + */ +static void +nfscl_cancelreqs(struct nfsclds *dsp) +{ + struct __rpc_client *cl; + static int non_event; + + NFSLOCKDS(dsp); + if ((dsp->nfsclds_flags & (NFSCLDS_CLOSED | NFSCLDS_SAMECONN)) == 0 && + dsp->nfsclds_sockp != NULL && + dsp->nfsclds_sockp->nr_client != NULL) { + dsp->nfsclds_flags |= NFSCLDS_CLOSED; + cl = dsp->nfsclds_sockp->nr_client; + dsp->nfsclds_sess.nfsess_defunct = 1; + NFSUNLOCKDS(dsp); + CLNT_CLOSE(cl); + /* + * This 1sec sleep is done to give the MDS time to recall + * layouts before this client attempts further I/O. + */ + tsleep(&non_event, PVFS, "ndscls", hz); + return; + } + NFSUNLOCKDS(dsp); } /* From owner-svn-src-projects@freebsd.org Fri Jul 6 19:55:16 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2F92E1025925 for ; Fri, 6 Jul 2018 19:55:16 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C587B94158; Fri, 6 Jul 2018 19:55: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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 99E35552C; Fri, 6 Jul 2018 19:55: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 w66JtFoV086038; Fri, 6 Jul 2018 19:55:15 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w66JtF8j086036; Fri, 6 Jul 2018 19:55:15 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807061955.w66JtF8j086036@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 6 Jul 2018 19:55:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r336048 - in projects/pnfs-planb-server/sys: fs/nfs rpc X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys: fs/nfs rpc X-SVN-Commit-Revision: 336048 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2018 19:55:16 -0000 Author: rmacklem Date: Fri Jul 6 19:55:14 2018 New Revision: 336048 URL: https://svnweb.freebsd.org/changeset/base/336048 Log: Add code the the krpc client so that it sets SO_SBTIMEO on the TCP socket when the CLSET_TIMEOUT option is set. Until this patch CLSET_TIMEOUT was never used and this patch uses it specifically for the case of NFSv4.1 mounts to DSs. This patch gives the code better control over how long the client/MDS will take to fail, due to an unresponsive DS and disable the DS. This is actually a client/krpc patch and does not affect the pNFS server code. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonkrpc.c projects/pnfs-planb-server/sys/rpc/clnt_rc.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonkrpc.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonkrpc.c Fri Jul 6 19:50:44 2018 (r336047) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonkrpc.c Fri Jul 6 19:55:14 2018 (r336048) @@ -195,7 +195,7 @@ newnfs_connect(struct nfsmount *nmp, struct nfssockreq */ if (nrp->nr_cred != NULL) td->td_ucred = nrp->nr_cred; - else + else if (cred != NULL) td->td_ucred = cred; saddr = nrp->nr_nam; @@ -298,6 +298,13 @@ newnfs_connect(struct nfsmount *nmp, struct nfssockreq retries = INT_MAX; if (NFSHASNFSV4N(nmp)) { if (cred != NULL) { + if (NFSHASSOFT(nmp)) { + /* This should be a DS mount. */ + timo.tv_sec = 15; + timo.tv_usec = 0; + CLNT_CONTROL(client, CLSET_TIMEOUT, + &timo); + } /* * Make sure the nfscbd_pool doesn't get * destroyed while doing this. @@ -326,6 +333,9 @@ newnfs_connect(struct nfsmount *nmp, struct nfssockreq * only case where using a "soft" mount is * recommended for NFSv4. */ + timo.tv_sec = 15; + timo.tv_usec = 0; + CLNT_CONTROL(client, CLSET_TIMEOUT, &timo); retries = 2; } } Modified: projects/pnfs-planb-server/sys/rpc/clnt_rc.c ============================================================================== --- projects/pnfs-planb-server/sys/rpc/clnt_rc.c Fri Jul 6 19:50:44 2018 (r336047) +++ projects/pnfs-planb-server/sys/rpc/clnt_rc.c Fri Jul 6 19:55:14 2018 (r336048) @@ -174,10 +174,21 @@ clnt_reconnect_connect(CLIENT *cl) newclient = clnt_dg_create(so, (struct sockaddr *) &rc->rc_addr, rc->rc_prog, rc->rc_vers, rc->rc_sendsz, rc->rc_recvsz); - else + else { + if (rc->rc_timeout.tv_sec > 0 && rc->rc_timeout.tv_usec != -1) { + error = so_setsockopt(so, SOL_SOCKET, SO_SNDTIMEO, + &rc->rc_timeout, sizeof(struct timeval)); + if (error != 0) { + stat = rpc_createerr.cf_stat = RPC_CANTSEND; + rpc_createerr.cf_error.re_errno = error; + td->td_ucred = oldcred; + goto out; + } + } newclient = clnt_vc_create(so, (struct sockaddr *) &rc->rc_addr, rc->rc_prog, rc->rc_vers, rc->rc_sendsz, rc->rc_recvsz, rc->rc_intr); + } td->td_ucred = oldcred; if (!newclient) { From owner-svn-src-projects@freebsd.org Fri Jul 6 21:01:53 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 58B54102C9B7 for ; Fri, 6 Jul 2018 21:01:53 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0A9599707A; Fri, 6 Jul 2018 21:01:53 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E02F16010; Fri, 6 Jul 2018 21:01:52 +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 w66L1qbv021105; Fri, 6 Jul 2018 21:01:52 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w66L1qGn021104; Fri, 6 Jul 2018 21:01:52 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201807062101.w66L1qGn021104@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 6 Jul 2018 21:01:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r336049 - 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: 336049 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.27 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2018 21:01:53 -0000 Author: rmacklem Date: Fri Jul 6 21:01:52 2018 New Revision: 336049 URL: https://svnweb.freebsd.org/changeset/base/336049 Log: Fix the kernel part of pnfsdscopymr() to handle holes in the file being copied. If a mirrored DS is being recovered that has a lot of large sparse files, pnfsdscopymr(8) would use a lot of space on the recovered mirror since it would write the "holes" in the file being mirrored. This patch adds code to check for a "hole" and skip doing the write. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdkrpc.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdkrpc.c Fri Jul 6 19:55:14 2018 (r336048) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdkrpc.c Fri Jul 6 21:01:52 2018 (r336049) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); NFSDLOCKMUTEX; NFSV4ROOTLOCKMUTEX; struct nfsv4lock nfsd_suspend_lock; +char *nfsrv_zeropnfsdat = NULL; /* * Mapping of old NFS Version 2 RPC numbers to generic numbers. @@ -565,6 +566,8 @@ nfsrvd_init(int terminating) nfsrv_freealllayoutsanddevids(); nfsrv_freeallbackchannel_xprts(); svcpool_close(nfsrvd_pool); + free(nfsrv_zeropnfsdat, M_TEMP); + nfsrv_zeropnfsdat = NULL; NFSD_LOCK(); } else { NFSD_UNLOCK(); Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Jul 6 19:55:14 2018 (r336048) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Jul 6 21:01:52 2018 (r336049) @@ -60,6 +60,7 @@ NFSSTATESPINLOCK; extern struct nfsdontlisthead nfsrv_dontlisthead; extern volatile int nfsrv_devidcnt; extern struct nfslayouthead nfsrv_recalllisthead; +extern char *nfsrv_zeropnfsdat; SYSCTL_DECL(_vfs_nfsd); int nfsrv_statehashsize = NFSSTATEHASHSIZE; @@ -8124,9 +8125,15 @@ tryagain2: if (retacl != 0 && retacl != ENOATTR) NFSD_DEBUG(1, "nfsrv_copymr: vop_getacl=%d\n", retacl); dat = malloc(PNFSDS_COPYSIZ, M_TEMP, M_WAITOK); + /* Malloc a block of 0s used to check for holes. */ + if (nfsrv_zeropnfsdat == NULL) + nfsrv_zeropnfsdat = malloc(PNFSDS_COPYSIZ, M_TEMP, + M_WAITOK | M_ZERO); rdpos = wrpos = 0; mp = NULL; ret = vn_start_write(tvp, &mp, V_WAIT | PCATCH); + if (ret == 0) + ret = VOP_GETATTR(fvp, &va, cred); aresid = 0; while (ret == 0 && aresid == 0) { ret = vn_rdwr(UIO_READ, fvp, dat, PNFSDS_COPYSIZ, @@ -8135,9 +8142,16 @@ tryagain2: xfer = PNFSDS_COPYSIZ - aresid; if (ret == 0 && xfer > 0) { rdpos += xfer; - ret = vn_rdwr(UIO_WRITE, tvp, dat, xfer, - wrpos, UIO_SYSSPACE, IO_NODELOCKED, - cred, NULL, NULL, p); + /* + * Skip the write for holes, except for the + * last block. + */ + if (xfer < PNFSDS_COPYSIZ || rdpos == + va.va_size || NFSBCMP(dat, + nfsrv_zeropnfsdat, PNFSDS_COPYSIZ) != 0) + ret = vn_rdwr(UIO_WRITE, tvp, dat, xfer, + wrpos, UIO_SYSSPACE, IO_NODELOCKED, + cred, NULL, NULL, p); if (ret == 0) wrpos += xfer; }