From owner-svn-src-user@freebsd.org Mon May 23 05:15:09 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D0435B46B48 for ; Mon, 23 May 2016 05:15:09 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8A3641A6A; Mon, 23 May 2016 05:15:09 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4N5F8Es084460; Mon, 23 May 2016 05:15:08 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4N5F6eA084436; Mon, 23 May 2016 05:15:06 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201605230515.u4N5F6eA084436@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 23 May 2016 05:15:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300457 - in user/alc/PQ_LAUNDRY: . bin/ed bin/sh contrib/binutils/gas/config contrib/bmake contrib/bmake/mk contrib/bmake/mk/sys contrib/elftoolchain/addr2line contrib/elftoolchain/bra... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 05:15:09 -0000 Author: markj Date: Mon May 23 05:15:06 2016 New Revision: 300457 URL: https://svnweb.freebsd.org/changeset/base/300457 Log: MFH r300451 Added: user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/elftc_reloc_type_str.3 - copied unchanged from r300451, head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.3 user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c - copied unchanged from r300451, head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c user/alc/PQ_LAUNDRY/contrib/top/commands.h - copied unchanged from r300451, head/contrib/top/commands.h user/alc/PQ_LAUNDRY/contrib/top/username.h - copied unchanged from r300451, head/contrib/top/username.h user/alc/PQ_LAUNDRY/share/man/man9/bus_map_resource.9 - copied unchanged from r300451, head/share/man/man9/bus_map_resource.9 user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhnd_bhndb.c - copied unchanged from r300451, head/sys/dev/bhnd/bhndb/bhnd_bhndb.c user/alc/PQ_LAUNDRY/sys/modules/vnic/ - copied from r300451, head/sys/modules/vnic/ user/alc/PQ_LAUNDRY/tools/build/options/WITHOUT_SYSTEM_COMPILER - copied unchanged from r300451, head/tools/build/options/WITHOUT_SYSTEM_COMPILER user/alc/PQ_LAUNDRY/tools/build/options/WITH_LIBSOFT - copied unchanged from r300451, head/tools/build/options/WITH_LIBSOFT user/alc/PQ_LAUNDRY/tools/build/options/WITH_SYSTEM_COMPILER - copied unchanged from r300451, head/tools/build/options/WITH_SYSTEM_COMPILER Deleted: user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/brk.S user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/sbrk.S Modified: user/alc/PQ_LAUNDRY/Makefile.inc1 user/alc/PQ_LAUNDRY/ObsoleteFiles.inc user/alc/PQ_LAUNDRY/UPDATING user/alc/PQ_LAUNDRY/bin/ed/cbc.c user/alc/PQ_LAUNDRY/bin/sh/parser.c user/alc/PQ_LAUNDRY/contrib/binutils/gas/config/tc-arm.c user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog user/alc/PQ_LAUNDRY/contrib/bmake/Makefile user/alc/PQ_LAUNDRY/contrib/bmake/arch.c user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 user/alc/PQ_LAUNDRY/contrib/bmake/compat.c user/alc/PQ_LAUNDRY/contrib/bmake/job.c user/alc/PQ_LAUNDRY/contrib/bmake/main.c user/alc/PQ_LAUNDRY/contrib/bmake/make.1 user/alc/PQ_LAUNDRY/contrib/bmake/meta.c user/alc/PQ_LAUNDRY/contrib/bmake/meta.h user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog user/alc/PQ_LAUNDRY/contrib/bmake/mk/auto.dep.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/autodep.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/dirdeps.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/dpadd.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/final.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/gendirdeps.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/init.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/install-mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/lib.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/libnames.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta.autodep.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta.sys.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta2deps.py user/alc/PQ_LAUNDRY/contrib/bmake/mk/nls.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/own.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/prog.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/subdir.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/AIX.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/Darwin.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/Generic.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/HP-UX.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/IRIX.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/Linux.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/NetBSD.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/OSF1.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/OpenBSD.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/SunOS.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/sys/UnixWare.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/warnings.mk user/alc/PQ_LAUNDRY/contrib/bmake/parse.c user/alc/PQ_LAUNDRY/contrib/bmake/str.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/addr2line/addr2line.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/brandelf/brandelf.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/common/_elftc.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/common/elfdefinitions.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/cxxfilt/cxxfilt.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/ascii.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/binary.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/elfcopy.1 user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/elfcopy.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/main.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/sections.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/segments.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/symbols.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfdump/elfdump.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libdwarf/libdwarf_reloc.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelf/_libelf_config.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelf/elf_data.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelf/libelf_ar.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelf/libelf_convert.m4 user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/Makefile user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/libelftc.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/libelftc_dem_arm.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/libelftc_dem_gnu2.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libelftc/make-toolchain-version user/alc/PQ_LAUNDRY/contrib/elftoolchain/libpe/libpe_section.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/libpe/pe.h user/alc/PQ_LAUNDRY/contrib/elftoolchain/nm/nm.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/readelf/readelf.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/size/size.c user/alc/PQ_LAUNDRY/contrib/elftoolchain/strings/strings.c user/alc/PQ_LAUNDRY/contrib/gcc/c-typeck.c user/alc/PQ_LAUNDRY/contrib/llvm/tools/clang/lib/Basic/Targets.cpp user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_dir.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_mlock.c user/alc/PQ_LAUNDRY/contrib/top/commands.c user/alc/PQ_LAUNDRY/contrib/top/display.c user/alc/PQ_LAUNDRY/contrib/top/display.h user/alc/PQ_LAUNDRY/contrib/top/machine.h user/alc/PQ_LAUNDRY/contrib/top/screen.c user/alc/PQ_LAUNDRY/contrib/top/screen.h user/alc/PQ_LAUNDRY/contrib/top/top.c user/alc/PQ_LAUNDRY/contrib/top/top.h user/alc/PQ_LAUNDRY/contrib/top/username.c user/alc/PQ_LAUNDRY/contrib/top/utils.h user/alc/PQ_LAUNDRY/contrib/top/version.c user/alc/PQ_LAUNDRY/etc/defaults/periodic.conf user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/cc_tools/Makefile user/alc/PQ_LAUNDRY/gnu/usr.bin/grep/config.h user/alc/PQ_LAUNDRY/include/Makefile user/alc/PQ_LAUNDRY/lib/clang/include/clang/Basic/Version.inc user/alc/PQ_LAUNDRY/lib/csu/aarch64/crt1.c user/alc/PQ_LAUNDRY/lib/libc/aarch64/Symbol.map user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/gen/fts-compat.c user/alc/PQ_LAUNDRY/lib/libc/gen/fts.c user/alc/PQ_LAUNDRY/lib/libc/regex/engine.c user/alc/PQ_LAUNDRY/lib/libc/rpc/getnetconfig.c user/alc/PQ_LAUNDRY/lib/libc/rpc/getrpcent.c user/alc/PQ_LAUNDRY/lib/libc/rpc/netnamer.c user/alc/PQ_LAUNDRY/lib/libc/rpc/rpcb_clnt.c user/alc/PQ_LAUNDRY/lib/libc/rpc/svc_generic.c user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c user/alc/PQ_LAUNDRY/lib/libc/sys/vfork.2 user/alc/PQ_LAUNDRY/lib/libelftc/Makefile user/alc/PQ_LAUNDRY/lib/libelftc/elftc_version.c user/alc/PQ_LAUNDRY/lib/libmt/mtlib.c user/alc/PQ_LAUNDRY/lib/libstand/uuid_from_string.c user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5 user/alc/PQ_LAUNDRY/share/man/man9/Makefile user/alc/PQ_LAUNDRY/share/man/man9/bus_activate_resource.9 user/alc/PQ_LAUNDRY/share/man/man9/bus_alloc_resource.9 user/alc/PQ_LAUNDRY/share/man/man9/rman.9 user/alc/PQ_LAUNDRY/share/man/man9/sglist.9 user/alc/PQ_LAUNDRY/share/mk/bsd.compiler.mk user/alc/PQ_LAUNDRY/share/mk/bsd.dep.mk user/alc/PQ_LAUNDRY/share/mk/local.meta.sys.mk user/alc/PQ_LAUNDRY/share/mk/src.opts.mk user/alc/PQ_LAUNDRY/share/mk/src.sys.env.mk user/alc/PQ_LAUNDRY/share/mk/sys.mk user/alc/PQ_LAUNDRY/sys/amd64/amd64/sys_machdep.c user/alc/PQ_LAUNDRY/sys/amd64/amd64/vm_machdep.c user/alc/PQ_LAUNDRY/sys/amd64/linux/linux_proto.h user/alc/PQ_LAUNDRY/sys/amd64/linux/linux_syscall.h user/alc/PQ_LAUNDRY/sys/amd64/linux/linux_syscalls.c user/alc/PQ_LAUNDRY/sys/amd64/linux/linux_sysent.c user/alc/PQ_LAUNDRY/sys/amd64/linux/linux_systrace_args.c user/alc/PQ_LAUNDRY/sys/amd64/linux/syscalls.master user/alc/PQ_LAUNDRY/sys/amd64/linux32/linux32_proto.h user/alc/PQ_LAUNDRY/sys/amd64/linux32/linux32_syscall.h user/alc/PQ_LAUNDRY/sys/amd64/linux32/linux32_syscalls.c user/alc/PQ_LAUNDRY/sys/amd64/linux32/linux32_sysent.c user/alc/PQ_LAUNDRY/sys/amd64/linux32/linux32_systrace_args.c user/alc/PQ_LAUNDRY/sys/amd64/linux32/syscalls.master user/alc/PQ_LAUNDRY/sys/arm/allwinner/axp209.c user/alc/PQ_LAUNDRY/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/imx6_anatop.c user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/imx_gpio.c user/alc/PQ_LAUNDRY/sys/arm/include/_align.h user/alc/PQ_LAUNDRY/sys/arm/include/param.h user/alc/PQ_LAUNDRY/sys/arm/mv/mpic.c user/alc/PQ_LAUNDRY/sys/arm/mv/mv_ts.c user/alc/PQ_LAUNDRY/sys/arm64/arm64/busdma_bounce.c user/alc/PQ_LAUNDRY/sys/arm64/arm64/gic_v3_reg.h user/alc/PQ_LAUNDRY/sys/arm64/cavium/thunder_pcie_pem.c user/alc/PQ_LAUNDRY/sys/arm64/conf/DEFAULTS user/alc/PQ_LAUNDRY/sys/boot/efi/loader/main.c user/alc/PQ_LAUNDRY/sys/cam/cam_ccb.h user/alc/PQ_LAUNDRY/sys/cam/ctl/scsi_ctl.c user/alc/PQ_LAUNDRY/sys/compat/linux/linux_file.c user/alc/PQ_LAUNDRY/sys/compat/linux/linux_futex.c user/alc/PQ_LAUNDRY/sys/compat/linux/linux_socket.c user/alc/PQ_LAUNDRY/sys/compat/ndis/subr_ntoskrnl.c user/alc/PQ_LAUNDRY/sys/conf/files user/alc/PQ_LAUNDRY/sys/conf/files.arm64 user/alc/PQ_LAUNDRY/sys/conf/kern.post.mk user/alc/PQ_LAUNDRY/sys/dev/acpi_support/acpi_asus_wmi.c user/alc/PQ_LAUNDRY/sys/dev/acpi_support/acpi_ibm.c user/alc/PQ_LAUNDRY/sys/dev/acpi_support/atk0110.c user/alc/PQ_LAUNDRY/sys/dev/acpica/acpi_thermal.c user/alc/PQ_LAUNDRY/sys/dev/amdtemp/amdtemp.c user/alc/PQ_LAUNDRY/sys/dev/ath/ath_hal/ah_regdomain.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_bus_if.m user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_types.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/soc/bhnd_soc.c user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn.c user/alc/PQ_LAUNDRY/sys/dev/coretemp/coretemp.c user/alc/PQ_LAUNDRY/sys/dev/cpuctl/cpuctl.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/cxgbei/icl_cxgbei.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/tom/t4_ddp.c user/alc/PQ_LAUNDRY/sys/dev/gpio/gpioiic.c user/alc/PQ_LAUNDRY/sys/dev/gpio/gpioled.c user/alc/PQ_LAUNDRY/sys/dev/iicbus/ds3231reg.h user/alc/PQ_LAUNDRY/sys/dev/iicbus/iicbb_if.m user/alc/PQ_LAUNDRY/sys/dev/iicbus/iiconf.c user/alc/PQ_LAUNDRY/sys/dev/iicbus/lm75.c user/alc/PQ_LAUNDRY/sys/dev/iscsi/icl.h user/alc/PQ_LAUNDRY/sys/dev/iscsi/icl_soft.c user/alc/PQ_LAUNDRY/sys/dev/iscsi/iscsi.c user/alc/PQ_LAUNDRY/sys/dev/isp/isp_freebsd.c user/alc/PQ_LAUNDRY/sys/dev/ixl/if_ixl.c user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/en.h user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_main.c user/alc/PQ_LAUNDRY/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c user/alc/PQ_LAUNDRY/sys/dev/nvram2env/nvram2env.c user/alc/PQ_LAUNDRY/sys/dev/pci/pci_host_generic.c user/alc/PQ_LAUNDRY/sys/dev/urtwn/if_urtwn.c user/alc/PQ_LAUNDRY/sys/dev/urtwn/if_urtwnreg.h user/alc/PQ_LAUNDRY/sys/dev/vnic/mrml_bridge.c user/alc/PQ_LAUNDRY/sys/dev/vnic/nic_main.c user/alc/PQ_LAUNDRY/sys/dev/vnic/nicvf_main.c user/alc/PQ_LAUNDRY/sys/dev/vnic/thunder_bgx.c user/alc/PQ_LAUNDRY/sys/dev/vnic/thunder_mdio.c user/alc/PQ_LAUNDRY/sys/dev/wi/if_wi.c user/alc/PQ_LAUNDRY/sys/fs/cd9660/cd9660_vfsops.c user/alc/PQ_LAUNDRY/sys/fs/devfs/devfs_devs.c user/alc/PQ_LAUNDRY/sys/fs/ext2fs/ext2_alloc.c user/alc/PQ_LAUNDRY/sys/fs/ext2fs/ext2_vfsops.c user/alc/PQ_LAUNDRY/sys/fs/msdosfs/msdosfs_vfsops.c user/alc/PQ_LAUNDRY/sys/fs/udf/udf_vfsops.c user/alc/PQ_LAUNDRY/sys/geom/eli/g_eli.c user/alc/PQ_LAUNDRY/sys/geom/geom.h user/alc/PQ_LAUNDRY/sys/geom/geom_event.c user/alc/PQ_LAUNDRY/sys/geom/geom_kern.c user/alc/PQ_LAUNDRY/sys/geom/geom_mbr.c user/alc/PQ_LAUNDRY/sys/geom/geom_pc98.c user/alc/PQ_LAUNDRY/sys/geom/geom_subr.c user/alc/PQ_LAUNDRY/sys/geom/journal/g_journal.c user/alc/PQ_LAUNDRY/sys/geom/mirror/g_mirror.c user/alc/PQ_LAUNDRY/sys/geom/mountver/g_mountver.c user/alc/PQ_LAUNDRY/sys/geom/raid/g_raid.c user/alc/PQ_LAUNDRY/sys/geom/raid3/g_raid3.c user/alc/PQ_LAUNDRY/sys/gnu/dev/bwn/phy_n/if_bwn_phy_n_core.c user/alc/PQ_LAUNDRY/sys/i386/i386/sys_machdep.c user/alc/PQ_LAUNDRY/sys/i386/i386/vm_machdep.c user/alc/PQ_LAUNDRY/sys/i386/linux/linux_proto.h user/alc/PQ_LAUNDRY/sys/i386/linux/linux_syscall.h user/alc/PQ_LAUNDRY/sys/i386/linux/linux_syscalls.c user/alc/PQ_LAUNDRY/sys/i386/linux/linux_sysent.c user/alc/PQ_LAUNDRY/sys/i386/linux/linux_systrace_args.c user/alc/PQ_LAUNDRY/sys/i386/linux/syscalls.master user/alc/PQ_LAUNDRY/sys/kern/bus_if.m user/alc/PQ_LAUNDRY/sys/kern/subr_bus.c user/alc/PQ_LAUNDRY/sys/kern/subr_rman.c user/alc/PQ_LAUNDRY/sys/kern/subr_sglist.c user/alc/PQ_LAUNDRY/sys/kern/subr_taskqueue.c user/alc/PQ_LAUNDRY/sys/kern/sys_socket.c user/alc/PQ_LAUNDRY/sys/kern/uipc_socket.c user/alc/PQ_LAUNDRY/sys/kern/vfs_aio.c user/alc/PQ_LAUNDRY/sys/mips/include/clock.h user/alc/PQ_LAUNDRY/sys/modules/bhnd/bhndb/Makefile user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_scan_sw.c user/alc/PQ_LAUNDRY/sys/netinet6/ip6_output.c user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw_dynamic.c user/alc/PQ_LAUNDRY/sys/netpfil/pf/pf_norm.c user/alc/PQ_LAUNDRY/sys/powerpc/powermac/powermac_thermal.h user/alc/PQ_LAUNDRY/sys/powerpc/powermac/smu.c user/alc/PQ_LAUNDRY/sys/powerpc/powermac/smusat.c user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/exec_machdep.c user/alc/PQ_LAUNDRY/sys/sparc64/include/vm.h user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/vm_machdep.c user/alc/PQ_LAUNDRY/sys/sys/_task.h user/alc/PQ_LAUNDRY/sys/sys/bus.h user/alc/PQ_LAUNDRY/sys/sys/kobj.h user/alc/PQ_LAUNDRY/sys/sys/param.h user/alc/PQ_LAUNDRY/sys/sys/rman.h user/alc/PQ_LAUNDRY/sys/sys/sglist.h user/alc/PQ_LAUNDRY/sys/sys/sysent.h user/alc/PQ_LAUNDRY/sys/sys/taskqueue.h user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_alloc.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_vfsops.c user/alc/PQ_LAUNDRY/sys/vm/swap_pager.c user/alc/PQ_LAUNDRY/sys/vm/vm.h user/alc/PQ_LAUNDRY/sys/vm/vm_fault.c user/alc/PQ_LAUNDRY/sys/vm/vm_glue.c user/alc/PQ_LAUNDRY/sys/x86/x86/nexus.c user/alc/PQ_LAUNDRY/usr.bin/bmake/Makefile user/alc/PQ_LAUNDRY/usr.bin/kdump/kdump.c user/alc/PQ_LAUNDRY/usr.bin/mt/mt.1 user/alc/PQ_LAUNDRY/usr.sbin/bsdinstall/scripts/zfsboot user/alc/PQ_LAUNDRY/usr.sbin/periodic/periodic.8 user/alc/PQ_LAUNDRY/usr.sbin/periodic/periodic.sh user/alc/PQ_LAUNDRY/usr.sbin/rpc.yppasswdd/yppasswdd_server.c Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) user/alc/PQ_LAUNDRY/contrib/binutils/ (props changed) user/alc/PQ_LAUNDRY/contrib/bmake/ (props changed) user/alc/PQ_LAUNDRY/contrib/elftoolchain/ (props changed) user/alc/PQ_LAUNDRY/contrib/elftoolchain/brandelf/ (props changed) user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfdump/ (props changed) user/alc/PQ_LAUNDRY/contrib/gcc/ (props changed) user/alc/PQ_LAUNDRY/contrib/llvm/ (props changed) user/alc/PQ_LAUNDRY/contrib/llvm/tools/clang/ (props changed) user/alc/PQ_LAUNDRY/contrib/top/ (props changed) user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/cc_tools/ (props changed) Modified: user/alc/PQ_LAUNDRY/Makefile.inc1 ============================================================================== --- user/alc/PQ_LAUNDRY/Makefile.inc1 Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/Makefile.inc1 Mon May 23 05:15:06 2016 (r300457) @@ -48,6 +48,7 @@ .error "Both TARGET and TARGET_ARCH must be defined." .endif +SRCDIR?= ${.CURDIR} LOCALBASE?= /usr/local # Cross toolchain changes must be in effect before bsd.compiler.mk @@ -56,8 +57,100 @@ LOCALBASE?= /usr/local .include "${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk" CROSSENV+=CROSS_TOOLCHAIN="${CROSS_TOOLCHAIN}" .endif -.include # don't depend on src.opts.mk doing it -.include "share/mk/src.opts.mk" +.if defined(CROSS_TOOLCHAIN_PREFIX) +CROSS_COMPILER_PREFIX?=${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 aarch64 builds, for example, to automatically use the +# aarch64-binutils port or package. +.if !make(showconfig) +.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \ + !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 + +XCOMPILERS= CC CXX CPP +.for COMPILER in ${XCOMPILERS} +.if defined(CROSS_COMPILER_PREFIX) +X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}} +.else +X${COMPILER}?= ${${COMPILER}} +.endif +.endfor +XBINUTILS= AS AR LD NM OBJCOPY OBJDUMP 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 +# If a full path to an external cross compiler is given, don't build +# a cross compiler. +.if ${XCC:N${CCACHE_BIN}:M/*} +MK_CROSS_COMPILER= no +.endif + +# Pull in COMPILER_TYPE and COMPILER_FREEBSD_VERSION early. +.include +.include "share/mk/src.opts.mk" + +# Check if there is a local compiler that can satisfy as an external compiler. +.if ${MK_SYSTEM_COMPILER} == "yes" && ${MK_CROSS_COMPILER} == "yes" && \ + (${MK_CLANG_BOOTSTRAP} == "yes" || ${MK_GCC_BOOTSTRAP} == "yes") && \ + !make(showconfig) +# Which compiler is expected to be used? +.if ${MK_CLANG_BOOTSTRAP} == "yes" +_expected_compiler_type= clang +.elif ${MK_GCC_BOOTSTRAP} == "yes" +_expected_compiler_type= gcc +.endif +# 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 ${_expected_compiler_type} == ${COMPILER_TYPE} && \ + (${COMPILER_TYPE} == "clang" || ${TARGET_ARCH} == ${MACHINE_ARCH}) +# It needs to be the same revision as we would build for the bootstrap. +.if !defined(CROSS_COMPILER_FREEBSD_VERSION) +.if ${_expected_compiler_type} == "clang" +CROSS_COMPILER_FREEBSD_VERSION!= \ + awk '$$2 == "FREEBSD_CC_VERSION" {printf("%d\n", $$3)}' \ + ${SRCDIR}/lib/clang/include/clang/Basic/Version.inc || echo unknown +CROSS_COMPILER_VERSION!= \ + awk '$$2 == "CLANG_VERSION" {split($$3, a, "."); print a[1] * 10000 + a[2] * 100 + a[3]}' \ + ${SRCDIR}/lib/clang/include/clang/Basic/Version.inc || echo unknown +.elif ${_expected_compiler_type} == "gcc" +CROSS_COMPILER_FREEBSD_VERSION!= \ + awk '$$2 == "FBSD_CC_VER" {printf("%d\n", $$3)}' \ + ${SRCDIR}/gnu/usr.bin/cc/cc_tools/freebsd-native.h || echo unknown +CROSS_COMPILER_VERSION!= \ + awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3}' \ + ${SRCDIR}/contrib/gcc/BASE-VER || echo unknown +.endif +.export CROSS_COMPILER_FREEBSD_VERSION CROSS_COMPILER_VERSION +.endif # !defined(CROSS_COMPILER_FREEBSD_VERSION) +.if ${COMPILER_VERSION} == ${CROSS_COMPILER_VERSION} && \ + ${COMPILER_FREEBSD_VERSION} == ${CROSS_COMPILER_FREEBSD_VERSION} +# Everything matches, disable the bootstrap compiler. +MK_CLANG_BOOTSTRAP= no +MK_GCC_BOOTSTRAP= no +CROSSENV+= COMPILER_VERSION=${COMPILER_VERSION} \ + COMPILER_TYPE=${COMPILER_TYPE} \ + COMPILER_FREEBSD_VERSION=${COMPILER_FREEBSD_VERSION} +.if make(buildworld) +.info SYSTEM_COMPILER: Determined that CC=${CC} matches the source tree. Not bootstrapping a cross-compiler. +.endif +.endif # ${COMPILER_VERSION} == ${CROSS_COMPILER_VERSION} +.endif # ${_expected_compiler_type} == ${COMPILER_TYPE} +.endif # ${XCC:N${CCACHE_BIN}:M/*} + # 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, @@ -67,7 +160,6 @@ CROSSENV+=CROSS_TOOLCHAIN="${CROSS_TOOLC # This ordering is not a guarantee though. The only guarantee of a working # system here would require fine-grained ordering of all components based # on their dependencies. -SRCDIR?= ${.CURDIR} .if !empty(SUBDIR_OVERRIDE) SUBDIR= ${SUBDIR_OVERRIDE} .else @@ -404,42 +496,6 @@ HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MT HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT .endif -.if defined(CROSS_TOOLCHAIN_PREFIX) -CROSS_COMPILER_PREFIX?=${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 aarch64 builds, for example, to automatically use the -# aarch64-binutils port or package. -.if !make(showconfig) -.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \ - !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 - -XCOMPILERS= CC CXX CPP -.for COMPILER in ${XCOMPILERS} -.if defined(CROSS_COMPILER_PREFIX) -X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}} -.else -X${COMPILER}?= ${${COMPILER}} -.endif -.endfor -XBINUTILS= AS AR LD NM OBJCOPY OBJDUMP 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 CROSSENV+= CC="${XCC} ${XCFLAGS}" CXX="${XCXX} ${XCFLAGS} ${XCXXFLAGS}" \ CPP="${XCPP} ${XCFLAGS}" \ AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \ @@ -455,7 +511,8 @@ BFLAGS+= -B${CROSS_BINUTILS_PREFIX} .endif # External compiler needs sysroot and target flags. -.if ${XCC:N${CCACHE_BIN}:M/*} || ${MK_CROSS_COMPILER} == "no" +.if ${MK_CROSS_COMPILER} == "no" || \ + (${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no") .if !defined(CROSS_BINUTILS_PREFIX) || !exists(${CROSS_BINUTILS_PREFIX}) BFLAGS+= -B${WORLDTMP}/usr/bin .endif @@ -479,7 +536,7 @@ XCFLAGS+= -target ${TARGET_TRIPLE} .endif XCFLAGS+= --sysroot=${WORLDTMP} .else -.endif # ${XCC:M/*} || ${MK_CROSS_COMPILER} == "no" +.endif # ${MK_CROSS_COMPILER} == "no" .if !empty(BFLAGS) XCFLAGS+= ${BFLAGS} @@ -533,7 +590,7 @@ KMAKE= ${KMAKEENV} ${MAKE} ${.MAKEFLAGS .if ${MK_META_MODE} == "yes" # meta mode normally is disallowed when building from curdir==objdir, but we # want to allow it for the kernel build. -KMAKE+= .MAKE.MODE="${.MAKE.MODE} curdirOk=yes" +KMAKEENV+= META_MODE="${.MAKE.MODE} curdirOk=yes" .endif # @@ -1715,9 +1772,7 @@ _elftctools= lib/libelftc \ usr.bin/elfcopy .endif -# If an full path to an external cross compiler is given, don't build -# a cross compiler. -.if ${XCC:N${CCACHE_BIN}:M/*} == "" && ${MK_CROSS_COMPILER} != "no" +.if ${MK_CROSS_COMPILER} != "no" .if ${MK_CLANG_BOOTSTRAP} != "no" _clang= usr.bin/clang _clang_libs= lib/clang Modified: user/alc/PQ_LAUNDRY/ObsoleteFiles.inc ============================================================================== --- user/alc/PQ_LAUNDRY/ObsoleteFiles.inc Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/ObsoleteFiles.inc Mon May 23 05:15:06 2016 (r300457) @@ -39,11 +39,11 @@ # done # 20160519: remove DTrace Toolkit from base -OLD_FILES+=usr/share/dtrace/toolkit/execsnoop* -OLD_FILES+=usr/share/dtrace/toolkit/hotkernel* -OLD_FILES+=usr/share/dtrace/toolkit/hotuser* -OLD_FILES+=usr/share/dtrace/toolkit/opensnoop* -OLD_FILES+=usr/share/dtrace/toolkit/procsystime* +OLD_FILES+=usr/share/dtrace/toolkit/execsnoop +OLD_FILES+=usr/share/dtrace/toolkit/hotkernel +OLD_FILES+=usr/share/dtrace/toolkit/hotuser +OLD_FILES+=usr/share/dtrace/toolkit/opensnoop +OLD_FILES+=usr/share/dtrace/toolkit/procsystime OLD_DIRS+=usr/share/dtrace/toolkit # 20160519: stale MLINK removed OLD_FILES+=usr/share/man/man9/rman_await_resource.9.gz Modified: user/alc/PQ_LAUNDRY/UPDATING ============================================================================== --- user/alc/PQ_LAUNDRY/UPDATING Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/UPDATING Mon May 23 05:15:06 2016 (r300457) @@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20160520: + The brk and sbrk functions have been removed from libc on arm64. + Binutils from ports has been updated to not link to these + functions and should be updated to the latest version before + installing a new libc. + 20160517: The armv6 port now defaults to hard float ABI. Limited support for running both hardfloat and soft float on the same system @@ -39,6 +45,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 and packages may fail or need manual intervention to run. New packages will be needed. + To update an existing self-hosted armv6hf system, you must add + TARGET_ARCH=armv6 on the make command line for both the build + and the install steps. + 20160510: Kernel modules compiled outside of a kernel build now default to installing to /boot/modules instead of /boot/kernel. Many kernel Modified: user/alc/PQ_LAUNDRY/bin/ed/cbc.c ============================================================================== --- user/alc/PQ_LAUNDRY/bin/ed/cbc.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/bin/ed/cbc.c Mon May 23 05:15:06 2016 (r300457) @@ -90,16 +90,13 @@ void init_des_cipher(void) { #ifdef DES - int i; - des_ct = des_n = 0; /* initialize the initialization vector */ MEMZERO(ivec, 8); /* initialize the padding vector */ - for (i = 0; i < 8; i++) - pvec[i] = (char) (arc4random() % 256); + arc4random_buf(pvec, sizeof(pvec)); #endif } @@ -164,7 +161,7 @@ get_keyword(void) /* * get the key */ - if (*(p = getpass("Enter key: "))) { + if ((p = getpass("Enter key: ")) != NULL && *p != '\0') { /* * copy it, nul-padded, into the key area Modified: user/alc/PQ_LAUNDRY/bin/sh/parser.c ============================================================================== --- user/alc/PQ_LAUNDRY/bin/sh/parser.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/bin/sh/parser.c Mon May 23 05:15:06 2016 (r300457) @@ -1998,7 +1998,7 @@ getprompt(void *unused __unused) /* * Format prompt string. */ - for (i = 0; (i < 127) && (*fmt != '\0'); i++, fmt++) + for (i = 0; (i < PROMPTLEN - 1) && (*fmt != '\0'); i++, fmt++) if (*fmt == '\\') switch (*++fmt) { @@ -2011,7 +2011,8 @@ getprompt(void *unused __unused) case 'h': case 'H': ps[i] = '\0'; - gethostname(&ps[i], PROMPTLEN - i); + gethostname(&ps[i], PROMPTLEN - i - 1); + ps[PROMPTLEN - 1] = '\0'; /* Skip to end of hostname. */ trim = (*fmt == 'h') ? '.' : '\0'; while ((ps[i] != '\0') && (ps[i] != trim)) @@ -2061,8 +2062,9 @@ getprompt(void *unused __unused) * Emit unrecognized formats verbatim. */ default: - ps[i++] = '\\'; - ps[i] = *fmt; + ps[i] = '\\'; + if (i < PROMPTLEN - 1) + ps[++i] = *fmt; break; } else Modified: user/alc/PQ_LAUNDRY/contrib/binutils/gas/config/tc-arm.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/binutils/gas/config/tc-arm.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/binutils/gas/config/tc-arm.c Mon May 23 05:15:06 2016 (r300457) @@ -2284,6 +2284,37 @@ s_unreq (int a ATTRIBUTE_UNUSED) demand_empty_rest_of_line (); } +static void +s_inst(int unused ATTRIBUTE_UNUSED) +{ + expressionS exp; + + if (thumb_mode) { + as_bad(".inst not implemented for Thumb mode"); + ignore_rest_of_line(); + return; + } + + if (is_it_end_of_statement()) { + demand_empty_rest_of_line(); + return; + } + + do { + expression(&exp); + + if (exp.X_op != O_constant) + as_bad("constant expression required"); + else + emit_expr(&exp, 4); + + } while (*input_line_pointer++ == ','); + + /* Put terminator back into stream. */ + input_line_pointer--; + demand_empty_rest_of_line(); +} + /* Directives: Instruction set selection. */ #ifdef OBJ_ELF @@ -3837,10 +3868,10 @@ s_arm_eabi_attribute (int ignored ATTRIB #endif /* OBJ_ELF */ static void s_arm_arch (int); -static void s_arm_arch_extension (int); static void s_arm_object_arch (int); static void s_arm_cpu (int); static void s_arm_fpu (int); +static void s_arm_arch_extension (int); #ifdef TE_PE @@ -3892,9 +3923,10 @@ const pseudo_typeS md_pseudo_table[] = { "syntax", s_syntax, 0 }, { "cpu", s_arm_cpu, 0 }, { "arch", s_arm_arch, 0 }, - { "arch_extension", s_arm_arch_extension, 0 }, { "object_arch", s_arm_object_arch, 0 }, { "fpu", s_arm_fpu, 0 }, + { "arch_extension", s_arm_arch_extension, 0 }, + { "inst", s_inst, 0 }, #ifdef OBJ_ELF { "word", s_arm_elf_cons, 4 }, { "long", s_arm_elf_cons, 4 }, Modified: user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog Mon May 23 05:15:06 2016 (r300457) @@ -1,3 +1,26 @@ +2016-05-12 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160512 + Merge with NetBSD make, pick up + o meta.c: ignore paths that match .MAKE.META.IGNORE_PATTERNS + this is useful for gcov builds. + o propagate errors from filemon(4). + +2016-05-09 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160509 + Merge with NetBSD make, pick up + o remove use of non-standard types u_int etc. + o meta.c: apply realpath() before matching against metaIgnorePaths + +2016-04-04 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160404 + Merge with NetBSD make, pick up + o allow makefile to set .MAKE.JOBS + + * Makefile (PROG_NAME): use ${_MAKE_VERSION} + 2016-03-15 Simon J. Gerraty * Makefile (_MAKE_VERSION): 20160315 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/Makefile ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/Makefile Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/Makefile Mon May 23 05:15:06 2016 (r300457) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.58 2016/03/15 23:39:12 sjg Exp $ +# $Id: Makefile,v 1.63 2016/05/12 20:34:46 sjg Exp $ # Base version on src date -_MAKE_VERSION= 20160315 +_MAKE_VERSION= 20160512 PROG= bmake @@ -131,9 +131,9 @@ OPTIONS_DEFAULT_NO+= \ .include .if ${MK_PROG_VERSION} == "yes" -PROG_NAME= ${PROG}-${MAKE_VERSION} +PROG_NAME= ${PROG}-${_MAKE_VERSION} .if ${MK_PROG_LINK} == "yes" -SYMLINKS+= ${PROG}-${MAKE_VERSION} ${BINDIR}/${PROG} +SYMLINKS+= ${PROG_NAME} ${BINDIR}/${PROG} .endif .endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/arch.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/arch.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/arch.c Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: arch.c,v 1.68 2016/02/18 18:29:14 christos Exp $ */ +/* $NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: arch.c,v 1.68 2016/02/18 18:29:14 christos Exp $"; +static char rcsid[] = "$NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94"; #else -__RCSID("$NetBSD: arch.c,v 1.68 2016/02/18 18:29:14 christos Exp $"); +__RCSID("$NetBSD: arch.c,v 1.69 2016/04/06 09:57:00 gson Exp $"); #endif #endif /* not lint */ #endif @@ -832,7 +832,7 @@ ArchSVR4Entry(Arch *ar, char *name, size } if (DEBUG(ARCH)) { fprintf(debug_file, "Found svr4 archive name table with %lu entries\n", - (u_long)entry); + (unsigned long)entry); } return 0; } @@ -850,7 +850,7 @@ ArchSVR4Entry(Arch *ar, char *name, size if (entry >= ar->fnamesize) { if (DEBUG(ARCH)) { fprintf(debug_file, "SVR4 entry offset %s is greater than %lu\n", - name, (u_long)ar->fnamesize); + name, (unsigned long)ar->fnamesize); } return 2; } Modified: user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.255 2016/03/14 07:42:15 matthias Exp $ +.\" $NetBSD: make.1,v 1.257 2016/05/10 23:45:45 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd February 19, 2016 +.Dd May 10, 2016 .Dt MAKE 1 .Os .Sh NAME @@ -913,6 +913,9 @@ Provides a list of path prefixes that sh because the contents are expected to change over time. The default list includes: .Ql Pa /dev /etc /proc /tmp /var/run /var/tmp +.It Va .MAKE.META.IGNORE_PATTERNS +Provides a list of patterns to match against pathnames. +Ignore any that match. .It Va .MAKE.META.PREFIX Defines the message printed for each meta file updated in "meta verbose" mode. The default value is: Modified: user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 Mon May 23 05:15:06 2016 (r300457) @@ -586,6 +586,10 @@ VVAARRIIAABBLLEE AASSSSIIGG The default list includes: `_/_d_e_v _/_e_t_c _/_p_r_o_c _/_t_m_p _/_v_a_r_/_r_u_n _/_v_a_r_/_t_m_p' + _._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___P_A_T_T_E_R_N_S + Provides a list of patterns to match against pathnames. + Ignore any that match. + _._M_A_K_E_._M_E_T_A_._P_R_E_F_I_X Defines the message printed for each meta file updated in "meta verbose" mode. The default value is: @@ -1471,4 +1475,4 @@ BBUUGGSS There is no way of escaping a space character in a filename. -NetBSD 5.1 February 19, 2016 NetBSD 5.1 +NetBSD 5.1 May 10, 2016 NetBSD 5.1 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/compat.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/compat.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/compat.c Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: compat.c,v 1.104 2016/02/18 18:29:14 christos Exp $ */ +/* $NetBSD: compat.c,v 1.105 2016/05/12 20:28:34 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: compat.c,v 1.104 2016/02/18 18:29:14 christos Exp $"; +static char rcsid[] = "$NetBSD: compat.c,v 1.105 2016/05/12 20:28:34 sjg Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: compat.c,v 1.104 2016/02/18 18:29:14 christos Exp $"); +__RCSID("$NetBSD: compat.c,v 1.105 2016/05/12 20:28:34 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -586,7 +586,8 @@ Compat_Make(void *gnp, void *pgnp) } #ifdef USE_META if (useMeta && !NoExecute(gn)) { - meta_job_finish(NULL); + if (meta_job_finish(NULL) != 0) + gn->made = ERROR; } #endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/job.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/job.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/job.c Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.186 2016/02/18 18:29:14 christos Exp $ */ +/* $NetBSD: job.c,v 1.187 2016/05/12 20:28:34 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: job.c,v 1.186 2016/02/18 18:29:14 christos Exp $"; +static char rcsid[] = "$NetBSD: job.c,v 1.187 2016/05/12 20:28:34 sjg Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: job.c,v 1.186 2016/02/18 18:29:14 christos Exp $"); +__RCSID("$NetBSD: job.c,v 1.187 2016/05/12 20:28:34 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -1072,7 +1072,11 @@ JobFinish (Job *job, WAIT_T status) #ifdef USE_META if (useMeta) { - meta_job_finish(job); + int x; + + if ((x = meta_job_finish(job)) != 0 && status == 0) { + status = x; + } } #endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/main.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/main.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/main.c Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.242 2016/03/07 21:45:43 christos Exp $ */ +/* $NetBSD: main.c,v 1.244 2016/04/05 04:25:43 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.242 2016/03/07 21:45:43 christos Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.244 2016/04/05 04:25:43 sjg Exp $"; #else #include #ifndef lint @@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.242 2016/03/07 21:45:43 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.244 2016/04/05 04:25:43 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -1152,14 +1152,6 @@ main(int argc, char **argv) } /* - * Be compatible if user did not specify -j and did not explicitly - * turned compatibility on - */ - if (!compatMake && !forceJobs) { - compatMake = TRUE; - } - - /* * Initialize archive, target and suffix modules in preparation for * parsing the makefile(s) */ @@ -1275,6 +1267,36 @@ main(int argc, char **argv) Var_Append("MFLAGS", Var_Value(MAKEFLAGS, VAR_GLOBAL, &p1), VAR_GLOBAL); free(p1); + if (!forceJobs && !compatMake && + Var_Exists(".MAKE.JOBS", VAR_GLOBAL)) { + char *value; + int n; + + value = Var_Subst(NULL, "${.MAKE.JOBS}", VAR_GLOBAL, VARF_WANTRES); + n = strtol(value, NULL, 0); + if (n < 1) { + (void)fprintf(stderr, "%s: illegal value for .MAKE.JOBS -- must be positive integer!\n", + progname); + exit(1); + } + if (n != maxJobs) { + Var_Append(MAKEFLAGS, "-j", VAR_GLOBAL); + Var_Append(MAKEFLAGS, value, VAR_GLOBAL); + } + maxJobs = n; + maxJobTokens = maxJobs; + forceJobs = TRUE; + free(value); + } + + /* + * Be compatible if user did not specify -j and did not explicitly + * turned compatibility on + */ + if (!compatMake && !forceJobs) { + compatMake = TRUE; + } + if (!compatMake) Job_ServerStart(maxJobTokens, jp_0, jp_1); if (DEBUG(JOB)) Modified: user/alc/PQ_LAUNDRY/contrib/bmake/make.1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/make.1 Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/make.1 Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.255 2016/03/14 07:42:15 matthias Exp $ +.\" $NetBSD: make.1,v 1.257 2016/05/10 23:45:45 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd February 19, 2016 +.Dd May 10, 2016 .Dt MAKE 1 .Os .Sh NAME @@ -924,6 +924,9 @@ Provides a list of path prefixes that sh because the contents are expected to change over time. The default list includes: .Ql Pa /dev /etc /proc /tmp /var/run /var/tmp +.It Va .MAKE.META.IGNORE_PATTERNS +Provides a list of patterns to match against pathnames. +Ignore any that match. .It Va .MAKE.META.PREFIX Defines the message printed for each meta file updated in "meta verbose" mode. The default value is: Modified: user/alc/PQ_LAUNDRY/contrib/bmake/meta.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/meta.c Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/meta.c Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.54 2016/03/11 07:01:21 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.57 2016/05/12 20:28:34 sjg Exp $ */ /* * Implement 'meta' mode. @@ -66,6 +66,9 @@ static char *metaIgnorePathsStr; /* stri #ifndef MAKE_META_IGNORE_PATHS #define MAKE_META_IGNORE_PATHS ".MAKE.META.IGNORE_PATHS" #endif +#ifndef MAKE_META_IGNORE_PATTERNS +#define MAKE_META_IGNORE_PATTERNS ".MAKE.META.IGNORE_PATTERNS" +#endif Boolean useMeta = FALSE; static Boolean useFilemon = FALSE; @@ -73,6 +76,7 @@ static Boolean writeMeta = FALSE; static Boolean metaEnv = FALSE; /* don't save env unless asked */ static Boolean metaVerbose = FALSE; static Boolean metaIgnoreCMDs = FALSE; /* ignore CMDs in .meta files */ +static Boolean metaIgnorePatterns = FALSE; /* do we need to do pattern matches */ static Boolean metaCurdirOk = FALSE; /* write .meta in .CURDIR Ok? */ static Boolean metaSilent = FALSE; /* if we have a .meta be SILENT */ @@ -157,28 +161,33 @@ filemon_open(BuildMon *pbm) * Read the build monitor output file and write records to the target's * metadata file. */ -static void +static int filemon_read(FILE *mfp, int fd) { char buf[BUFSIZ]; int n; + int error; /* Check if we're not writing to a meta data file.*/ if (mfp == NULL) { if (fd >= 0) close(fd); /* not interested */ - return; + return 0; } /* rewind */ (void)lseek(fd, (off_t)0, SEEK_SET); + error = 0; fprintf(mfp, "\n-- filemon acquired metadata --\n"); while ((n = read(fd, buf, sizeof(buf))) > 0) { - fwrite(buf, 1, n, mfp); + if ((int)fwrite(buf, 1, n, mfp) < n) + error = EIO; } fflush(mfp); - close(fd); + if (close(fd) < 0) + error = errno; + return error; } #endif @@ -620,6 +629,15 @@ meta_mode_init(const char *make_mode) if (metaIgnorePathsStr) { str2Lst_Append(metaIgnorePaths, metaIgnorePathsStr, NULL); } + + /* + * We ignore any paths that match ${.MAKE.META.IGNORE_PATTERNS} + */ + cp = NULL; + if (Var_Value(MAKE_META_IGNORE_PATTERNS, VAR_GLOBAL, &cp)) { + metaIgnorePatterns = TRUE; + free(cp); + } } /* @@ -744,27 +762,35 @@ meta_job_output(Job *job, char *cp, cons } } -void +int meta_cmd_finish(void *pbmp) { + int error = 0; #ifdef USE_FILEMON BuildMon *pbm = pbmp; + int x; if (!pbm) pbm = &Mybm; if (pbm->filemon_fd >= 0) { - close(pbm->filemon_fd); - filemon_read(pbm->mfp, pbm->mon_fd); + if (close(pbm->filemon_fd) < 0) + error = errno; + x = filemon_read(pbm->mfp, pbm->mon_fd); + if (error == 0 && x != 0) + error = x; pbm->filemon_fd = pbm->mon_fd = -1; } #endif + return error; } -void +int meta_job_finish(Job *job) { BuildMon *pbm; + int error = 0; + int x; if (job != NULL) { pbm = &job->bm; @@ -772,11 +798,14 @@ meta_job_finish(Job *job) pbm = &Mybm; } if (pbm->mfp != NULL) { - meta_cmd_finish(pbm); - fclose(pbm->mfp); + error = meta_cmd_finish(pbm); + x = fclose(pbm->mfp); + if (error == 0 && x != 0) + error = errno; pbm->mfp = NULL; pbm->meta_fname[0] = '\0'; } + return error; } void @@ -1209,14 +1238,35 @@ meta_oodate(GNode *gn, Boolean oodate) * be part of the dependencies because * they are _expected_ to change. */ - if (*p == '/' && - Lst_ForEach(metaIgnorePaths, prefix_match, p)) { + if (*p == '/') { + realpath(p, fname1); /* clean it up */ + if (Lst_ForEach(metaIgnorePaths, prefix_match, fname1)) { #ifdef DEBUG_META_MODE - if (DEBUG(META)) - fprintf(debug_file, "meta_oodate: ignoring: %s\n", - p); + if (DEBUG(META)) + fprintf(debug_file, "meta_oodate: ignoring path: %s\n", + p); #endif - break; + break; + } + } + + if (metaIgnorePatterns) { + char *pm; + + snprintf(fname1, sizeof(fname1), + "${%s:@m@${%s:L:M$m}@}", + MAKE_META_IGNORE_PATTERNS, p); + pm = Var_Subst(NULL, fname1, gn, VARF_WANTRES); + if (*pm) { +#ifdef DEBUG_META_MODE + if (DEBUG(META)) + fprintf(debug_file, "meta_oodate: ignoring pattern: %s\n", + p); +#endif + free(pm); + break; + } + free(pm); } /* Modified: user/alc/PQ_LAUNDRY/contrib/bmake/meta.h ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/meta.h Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/meta.h Mon May 23 05:15:06 2016 (r300457) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.h,v 1.4 2016/03/07 21:45:43 christos Exp $ */ +/* $NetBSD: meta.h,v 1.5 2016/05/12 20:28:34 sjg Exp $ */ /* * Things needed for 'meta' mode. @@ -48,8 +48,8 @@ void meta_job_start(struct Job *, GNode void meta_job_child(struct Job *); void meta_job_error(struct Job *, GNode *, int, int); void meta_job_output(struct Job *, char *, const char *); -void meta_cmd_finish(void *); -void meta_job_finish(struct Job *); +int meta_cmd_finish(void *); +int meta_job_finish(struct Job *); Boolean meta_oodate(GNode *, Boolean); void meta_compat_start(void); void meta_compat_child(void); Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog Mon May 23 05:15:06 2016 (r300457) @@ -1,3 +1,57 @@ +2016-05-12 Simon J. Gerraty + + * install-mk (MK_VERSION): 20160512 + + * dpadd.mk: always include local.dpadd.mk if it exists + remove some things that better belong in local.dpadd.mk + skip INCLUDES_* for staged libs unless SRC_* defined. + + * own.mk: add INCLUDEDIR + +2016-04-18 Simon J. Gerraty + + * dirdeps.mk: when doing -f dirdeps.mk if target suppies no + TARGET_MACHINE - :E will be empty or match part of path, use + ${MACHINE} + +2016-04-07 Simon J. Gerraty + + * meta.autodep.mk: issue a warning if UPDATE_DEPENDFILE=NO due to + NO_FILEMON_COOKIE + + * dirdeps.mk: move the logic that allows for + make -f dirdeps.mk some/dir.${TARGET_SPEC} + inside the check for !target(_DIRDEP_USE) + +2016-04-04 Simon J. Gerraty + + * Use <> when including local*.mk and others which may exist + elsewhere so that user can better control what they get. + + * meta.autodep.mk (NO_FILEMON_COOKIE): + create a cookie if we ever build dir with nofilemon + so that UPDATE_DEPENDFILE will be forced to NO until cleaned. + +2016-04-01 Simon J. Gerraty + + * install-mk (MK_VERSION): 20160401 + + * meta2deps.py: fix old print statement when debugging. + + * gendirdeps.mk: META2DEPS_CMD append M2D_EXCLUDES with -X + patch from Bryan Drewery + +2016-03-22 Simon J. Gerraty + + * install-mk (MK_VERSION): 20160317 (St. Pats) + + * warnings.mk: g++ does not like -Wimplicit + + * sys.mk sys/*.mk lib.mk prog.mk: use CXX_SUFFIXES to handle the + pelthora of common suffixes for C++ + + * lib.mk: use .So for shared objects + 2016-03-15 Simon J. Gerraty * install-mk (MK_VERSION): 20160315 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/auto.dep.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/auto.dep.mk Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/auto.dep.mk Mon May 23 05:15:06 2016 (r300457) @@ -1,6 +1,6 @@ # # RCSid: -# $Id: auto.dep.mk,v 1.4 2016/02/18 21:16:39 sjg Exp $ +# $Id: auto.dep.mk,v 1.5 2016/04/05 15:58:37 sjg Exp $ # # @(#) Copyright (c) 2010, Simon J. Gerraty # @@ -66,7 +66,7 @@ ${.MAKE.DEPENDFILE}: ${OBJS} ${POBJS} ${ .if empty(_SKIP_BUILD) _all_objs = ${OBJS} ${POBJS} ${SOBJS} .for d in ${_all_objs:M*o:T:O:u:%=%.d} -.dinclude "$d" +.dinclude <$d> .endfor .endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/autodep.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/autodep.mk Mon May 23 05:14:26 2016 (r300456) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/autodep.mk Mon May 23 05:15:06 2016 (r300457) @@ -1,6 +1,6 @@ # # RCSid: -# $Id: autodep.mk,v 1.34 2014/08/04 05:12:27 sjg Exp $ +# $Id: autodep.mk,v 1.36 2016/04/05 15:58:37 sjg Exp $ # # @(#) Copyright (c) 1999-2010, Simon J. Gerraty # @@ -25,7 +25,11 @@ __${.PARSEFILE}__: DEPENDFILE?= .depend .for d in ${DEPENDFILE:N.depend} # bmake only groks .depend -.-include "$d" +.if ${MAKE_VERSION} < 20160218 +.-include <$d> +.else +.dinclude <$d> +.endif .endfor # it does nothing if SRCS is not defined or is empty @@ -75,6 +79,9 @@ CXXFLAGS_MD=${CXXFLAGS:M-[IUD]*} ${CPPFL CC_MD?=${CC} CXX_MD?=${CXX} +# should have been set by sys.mk +CXX_SUFFIXES?= .cc .cpp .cxx .C *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@freebsd.org Mon May 23 05:28:04 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E8C2B460A6 for ; Mon, 23 May 2016 05:28:04 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0FE9619DF; Mon, 23 May 2016 05:28:03 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4N5S3H2088159; Mon, 23 May 2016 05:28:03 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4N5S34B088158; Mon, 23 May 2016 05:28:03 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201605230528.u4N5S34B088158@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 23 May 2016 05:28:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300465 - user/alc/PQ_LAUNDRY/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 05:28:04 -0000 Author: markj Date: Mon May 23 05:28:03 2016 New Revision: 300465 URL: https://svnweb.freebsd.org/changeset/base/300465 Log: Address over-eager OOM kills. Prior to this change, vm_page_free_wakeup() and thus vm_page_free() would clear vm_pages_needed when the free page count is above v_free_min. If the pagedaemon is starved for pages to reclaim because of a runaway process or because all inactive pages are dirty, but other threads are occasionally freeing pages, and v_free_min <= v_free_count <= vm_pageout_wakeup_thresh, concurrent vm_page_free() and vm_page_alloc() calls will respectively clear and set vm_pages_needed, waking up the pagedaemon in the process. This can cause the domain's oom_seq value to increment very quickly, leading to a spurious OOM kill when the pagedaemon cannot find clean pages to reclaim in the time that it takes for some pages to be laundered. This can be triggered during multiple consecutive sysbench runs when it writes mmap'ed files that are larger than system memory. Fix the problem by modifying vm_page_free_wakeup() to only clear vm_pages_needed once v_free_count has risen above vm_pageout_wakeup_thresh. Reviewed by: alc Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:02 2016 (r300464) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:03 2016 (r300465) @@ -2910,7 +2910,8 @@ vm_page_free_wakeup(void) * lots of memory. this process will swapin processes. */ if (vm_pages_needed && !vm_page_count_min()) { - vm_pages_needed = 0; + if (!vm_paging_needed()) + vm_pages_needed = 0; wakeup(&vm_cnt.v_free_count); } } From owner-svn-src-user@freebsd.org Mon May 23 05:37:46 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9BB7FB463DB for ; Mon, 23 May 2016 05:37:46 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 63C9A12FC; Mon, 23 May 2016 05:37:46 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4N5bjQP091548; Mon, 23 May 2016 05:37:45 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4N5bj1I091547; Mon, 23 May 2016 05:37:45 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201605230537.u4N5bj1I091547@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 23 May 2016 05:37:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300468 - user/alc/PQ_LAUNDRY/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 05:37:46 -0000 Author: markj Date: Mon May 23 05:37:45 2016 New Revision: 300468 URL: https://svnweb.freebsd.org/changeset/base/300468 Log: Fix laundry queue handling when multiple domains are configured. Currently, there is only a single laundry thread and it operates on queues in domain 0. Therefore, when placing a page in PQ_LAUNDRY, it should be placed in the PQ_LAUNDRY queue for domain 0. Reviewed by: alc Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:31:53 2016 (r300467) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:37:45 2016 (r300468) @@ -2738,7 +2738,10 @@ struct vm_pagequeue * vm_page_pagequeue(vm_page_t m) { - return (&vm_phys_domain(m)->vmd_pagequeues[m->queue]); + if (vm_page_in_laundry(m)) + return (&vm_dom[0].vmd_pagequeues[m->queue]); + else + return (&vm_phys_domain(m)->vmd_pagequeues[m->queue]); } /* @@ -2800,7 +2803,10 @@ vm_page_enqueue(uint8_t queue, vm_page_t KASSERT(queue < PQ_COUNT, ("vm_page_enqueue: invalid queue %u request for page %p", queue, m)); - pq = &vm_phys_domain(m)->vmd_pagequeues[queue]; + if (queue == PQ_LAUNDRY) + pq = &vm_dom[0].vmd_pagequeues[queue]; + else + pq = &vm_phys_domain(m)->vmd_pagequeues[queue]; vm_pagequeue_lock(pq); m->queue = queue; TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); @@ -3182,7 +3188,9 @@ vm_page_deactivate_noreuse(vm_page_t m) } /* - * XXX + * vm_page_launder + * + * Put a page in the laundry. */ void vm_page_launder(vm_page_t m) From owner-svn-src-user@freebsd.org Mon May 23 06:04:39 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BFC3FB46D72 for ; Mon, 23 May 2016 06:04:39 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9ACCE1B30; Mon, 23 May 2016 06:04:39 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4N64cnu001234; Mon, 23 May 2016 06:04:38 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4N64cOG001232; Mon, 23 May 2016 06:04:38 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201605230604.u4N64cOG001232@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 23 May 2016 06:04:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300476 - in user/alc/PQ_LAUNDRY/sys: sys vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 06:04:39 -0000 Author: markj Date: Mon May 23 06:04:38 2016 New Revision: 300476 URL: https://svnweb.freebsd.org/changeset/base/300476 Log: Add a basic laundering policy. This policy stems from the notion that there are two reasons to launder pages: 1. Shortfall, in which the inactive and free queues are depleted, and the system must launder dirty pages in order to reclaim memory. 2. Fairness: the system should periodically launder dirty pages to ensure that applications cannot excessively influence the system's memory reclaimation behaviour. Note that this does not imply that clear and dirty pages must be treated equally: page laundering is an expensive operation. However, the relative costs of reclaiming a clean vs. dirty page should be bounded in some well-defined way, and in particular, it should not be possible to force the system to reclaim only clean pages indefinitely. Under memory pressure the system should eventually launder some dirty pages, even when inactive clean pages are plentiful. Thus, laundering targets are chosen based on the current state of the paging queues. In shortfall, the laundry thread attempts to meet the shortfall within 0.5s, the pagedaemon sleep period. Because it is the sole source of clean pages, no attempts are made to limit the laundering rate: the laundry thread goes all-out. If the system is not in shortfall, the laundry thread may elect to launder some dirty pages in an attempt to satisfy the fairness policy. This is referred to as background laundering. Several conditions must be met for background laundering to occur: a) The laundry queue must contain a significant amount of the system's inactive memory: if the number of dirty pages is miniscule, nothing is gained by laundering them. Moreover, write clustering works better if the number of dirty pages is allowed to grow to some threshold before any laundering is performed. The ratio of clean to dirty pages serves as a threshold here, controlled by bkgrd_launder_ratio. By default, dirty pages must constitute at least 1% of inactive memory for background laundering to occur. b) The number of free pages must be low. If there is plentiful free memory, there's no reason to launder pages. The number of free pages must be smaller than bkgrd_launder_thresh for background laundering to occur. By default, this is chosen to be the max of half the free target and 3/2s of the pagedaemon wakeup threshold. The idea is to start laundering before the pagedaemon wakes up. c) The pagedaemon thread(s) must be active. If the number of free pages is low but the system is not under memory pressure, we should not continue background laundering indefinitely. We use vm_cnt.v_pdwakeups as a proxy for pagedaemon activity: when a background laundering run begins, the pdwakeups value is recorded; a second run cannot begin until pdwakeups has been incremented at least once. When the conditions for background laundering are met, the laundry thread determines the target number of pages and begins laundering. It attempts to meet the target within one second unless the corresponding laundering rate would exceed bkgrd_launder_max (32MB/s by default). The target is given by 0.5*l(L)*FT/l(I), where FT is the free page threshold used by the pagedaemon. In particular, the number of pages laundered is proportional to the ratio of dirty to clean inactive pages. When performing background laundering, the pagedaemon counts reactivated pages towards its target. Reviewed by: alc Modified: user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Modified: user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h ============================================================================== --- user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h Mon May 23 06:01:04 2016 (r300475) +++ user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h Mon May 23 06:04:38 2016 (r300476) @@ -185,6 +185,18 @@ vm_paging_needed(void) (u_int)vm_pageout_wakeup_thresh); } +/* + * Return the number of pages we need to launder. + * A positive number indicates that we have a shortfall of clean pages. + */ +static inline int +vm_laundry_target(void) +{ + + return (vm_cnt.v_inactive_target - vm_cnt.v_inactive_count + + vm_paging_target()); +} + #endif /* systemwide totals computed every five seconds */ Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon May 23 06:01:04 2016 (r300475) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon May 23 06:04:38 2016 (r300476) @@ -231,6 +231,21 @@ SYSCTL_INT(_vm, OID_AUTO, act_scan_laund CTLFLAG_RW, &act_scan_laundry_weight, 0, "weight given to clean vs. dirty pages in active queue scans"); +static u_int bkgrd_launder_ratio = 100; +SYSCTL_UINT(_vm, OID_AUTO, bkgrd_launder_ratio, + CTLFLAG_RW, &bkgrd_launder_ratio, 0, + "ratio of inactive to laundry pages to trigger background laundering"); + +static u_int bkgrd_launder_max = 32768; +SYSCTL_UINT(_vm, OID_AUTO, bkgrd_launder_max, + CTLFLAG_RW, &bkgrd_launder_max, 0, + "maximum background laundering rate, in pages per second"); + +static u_int bkgrd_launder_thresh; +SYSCTL_UINT(_vm, OID_AUTO, bkgrd_launder_thresh, + CTLFLAG_RW, &bkgrd_launder_thresh, 0, + "free page threshold below which background laundering may be started"); + #define VM_PAGEOUT_PAGE_COUNT 16 int vm_pageout_page_count = VM_PAGEOUT_PAGE_COUNT; @@ -239,7 +254,7 @@ SYSCTL_INT(_vm, OID_AUTO, max_wired, CTLFLAG_RW, &vm_page_max_wired, 0, "System-wide limit to wired page count"); static boolean_t vm_pageout_fallback_object_lock(vm_page_t, vm_page_t *); -static void vm_pageout_launder(struct vm_domain *vmd); +static int vm_pageout_launder(struct vm_domain *vmd, int launder); static void vm_pageout_laundry_worker(void *arg); #if !defined(NO_SWAPPING) static void vm_pageout_map_deactivate_pages(vm_map_t, long); @@ -877,32 +892,21 @@ unlock_mp: } /* - * XXX + * Attempt to launder the specified number of pages. + * + * Returns the number of pages successfully laundered. */ -static void -vm_pageout_launder(struct vm_domain *vmd) +static int +vm_pageout_launder(struct vm_domain *vmd, int launder) { vm_page_t m, next; struct vm_pagequeue *pq; vm_object_t object; - int act_delta, error, launder, maxscan, numpagedout, vnodes_skipped; - boolean_t pageout_ok, queue_locked; - - /* - * Compute the number of pages we want to move from the laundry queue to - * the inactive queue. If there is no shortage of clean, inactive - * pages, we allow laundering to proceed at a trickle to ensure that - * dirty pages will eventually be reused. Otherwise, the inactive queue - * target is scaled by the ratio of the sleep intervals of the laundry - * queue and inactive queue worker threads. - */ - launder = vm_cnt.v_inactive_target - vm_cnt.v_inactive_count + - vm_paging_target() + vm_pageout_deficit; - if (launder < 0) - launder = 1; - else - launder /= VM_LAUNDER_RATE; + int act_delta, error, maxscan, numpagedout, starting_target; + int vnodes_skipped; + boolean_t pageout_ok, queue_locked, shortfall; + starting_target = launder; vnodes_skipped = 0; /* @@ -917,6 +921,8 @@ vm_pageout_launder(struct vm_domain *vmd */ pq = &vmd->vmd_pagequeues[PQ_LAUNDRY]; maxscan = pq->pq_cnt; + shortfall = vm_laundry_target() > 0; + vm_pagequeue_lock(pq); queue_locked = TRUE; for (m = TAILQ_FIRST(&pq->pq_pl); @@ -991,6 +997,17 @@ vm_pageout_launder(struct vm_domain *vmd * queue. */ m->act_count += act_delta + ACT_ADVANCE; + + /* + * If this was a background laundering, count + * activated pages towards our target. The + * purpose of background laundering is to ensure + * that pages are eventually cycled through the + * laundry queue, and an activation is a valid + * way out. + */ + if (!shortfall) + launder--; goto drop_page; } else if ((object->flags & OBJ_DEAD) == 0) goto requeue_page; @@ -1064,29 +1081,121 @@ relock_queue: */ if (vnodes_skipped > 0 && launder > 0) (void)speedup_syncer(); + + return (starting_target - launder); } /* - * XXX + * Perform the work of the laundry thread: periodically wake up and determine + * whether any pages need to be laundered. If so, determine the number of pages + * that need to be laundered, and launder them. */ static void vm_pageout_laundry_worker(void *arg) { struct vm_domain *domain; - int domidx; + uint64_t ninact, nlaundry; + int cycle, tcycle, domidx, gen, launder, laundered; + int shortfall, prev_shortfall, target; domidx = (uintptr_t)arg; domain = &vm_dom[domidx]; KASSERT(domain->vmd_segs != 0, ("domain without segments")); vm_pageout_init_marker(&domain->vmd_laundry_marker, PQ_LAUNDRY); + cycle = tcycle = 0; + gen = -1; + shortfall = prev_shortfall = 0; + target = 0; + + if (bkgrd_launder_thresh == 0) + bkgrd_launder_thresh = max(vm_cnt.v_free_target / 2, + 3 * vm_pageout_wakeup_thresh / 2); + /* * The pageout laundry worker is never done, so loop forever. */ for (;;) { + KASSERT(target >= 0, ("negative target %d", target)); + launder = 0; + + /* + * First determine whether we're in shortfall. If so, there's + * an impending need for clean pages. We attempt to launder the + * target within one pagedaemon sleep period. + */ + shortfall = vm_laundry_target() + vm_pageout_deficit; + if (shortfall > 0) { + /* + * If the shortfall has grown since the last cycle or + * we're still in shortfall despite a previous + * laundering run, start a new run. + */ + if (shortfall > prev_shortfall || cycle == tcycle) { + target = shortfall; + cycle = 0; + tcycle = VM_LAUNDER_RATE; + } + prev_shortfall = shortfall; + launder = target / (tcycle - (cycle % tcycle)); + goto launder; + } else { + if (prev_shortfall > 0) + /* We're out of shortfall; the target is met. */ + target = 0; + shortfall = prev_shortfall = 0; + } + + /* + * There's no immediate need to launder any pages; see if we + * meet the conditions to perform background laundering: + * + * 1. we haven't yet reached the target of the current + * background laundering run, or + * 2. the ratio of dirty to clean inactive pages exceeds the + * background laundering threshold and the free page count is + * low. + * + * We don't start a new background laundering run unless the + * pagedaemon has been woken up at least once since the previous + * run. + */ + if (target > 0 && cycle != tcycle) { + /* Continue an ongoing background run. */ + launder = target / (tcycle - (cycle % tcycle)); + goto launder; + } + + ninact = vm_cnt.v_inactive_count; + nlaundry = vm_cnt.v_laundry_count; + if (ninact > 0 && + vm_cnt.v_pdwakeups != gen && + vm_cnt.v_free_count < bkgrd_launder_thresh && + nlaundry * bkgrd_launder_ratio >= ninact) { + cycle = 0; + tcycle = VM_LAUNDER_INTERVAL; + gen = vm_cnt.v_pdwakeups; + if (nlaundry >= ninact) + target = vm_cnt.v_free_target; + else + target = (nlaundry * vm_cnt.v_free_target << 16) / + ninact >> 16; + target /= 2; + if (target > bkgrd_launder_max) + tcycle = target * VM_LAUNDER_INTERVAL / + bkgrd_launder_max; + launder = target / (tcycle - (cycle % tcycle)); + } + +launder: + if (launder > 0) { + laundered = vm_pageout_launder(domain, launder); + target -= min(laundered, target); + } + tsleep(&vm_cnt.v_laundry_count, PVM, "laundr", hz / VM_LAUNDER_INTERVAL); - vm_pageout_launder(domain); + cycle++; } } From owner-svn-src-user@freebsd.org Mon May 23 06:13:37 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05030B46FE7 for ; Mon, 23 May 2016 06:13:37 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D4AB11F84; Mon, 23 May 2016 06:13:36 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4N6DaVs004176; Mon, 23 May 2016 06:13:36 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4N6DZa8004174; Mon, 23 May 2016 06:13:35 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201605230613.u4N6DZa8004174@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 23 May 2016 06:13:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300477 - user/alc/PQ_LAUNDRY/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 06:13:37 -0000 Author: markj Date: Mon May 23 06:13:35 2016 New Revision: 300477 URL: https://svnweb.freebsd.org/changeset/base/300477 Log: Run dirty pages through the inactive queue before the laundry queue. This change modifies the active queue aging scan to place dirty pages in the inactive queue rather than the laundry queue. vm_page_advise() is modified similarly. One side effect of this change is that dirty pages are given more time to be reactivated instead of being paged out. However, this is not its primary motivation. Pushing dirty pages through the inactive queue establishes a temporal relationship between the inactive and laundry queues and results in a more cohesive LRU page replacement mechanism. In the absence of this change, the pagedaemon and laundry threads have little information about each other's activity, and we can say little about the relative ages of the pages at the beginning of the inactive and laundry queues at a given point in time. However, in general we would prefer to avoid laundering a given page until some number of clean pages have been reclaimed in an attempt to satisfy a page shortage. The implemented laundering policy uses the ratio of dirty to clean inactive pages to set a minimum threshold for laundering, but without a shared queue, we cannot be satisfied that all less-recently-used clean pages have been reclaimed before deciding to launder a dirty page. A downside to this change is that the pagedaemons are forced to expend more CPU cycles handling dirty pages, as they must now examine dirty pages twice. However, this cost is small relative to that of a swap pageout. It may be reasonable to move vnode-backed pages directly to the laundry queue, but this change aims to minimize differences in behaviour with respect to HEAD. Reviewed by: alc Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 06:04:38 2016 (r300476) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 06:13:35 2016 (r300477) @@ -3273,14 +3273,13 @@ vm_page_advise(vm_page_t m, int advice) vm_page_dirty(m); /* - * Place clean pages at the head of the inactive queue rather than the - * tail, thus defeating the queue's LRU operation and ensuring that the - * page will be reused quickly. + * Place clean pages near the head of the inactive queue rather than + * the tail, thus defeating the queue's LRU operation and ensuring that + * the page will be reused quickly. Dirty pages are given a chance to + * cycle once through the inactive queue before becoming eligible for + * laundering. */ - if (m->dirty == 0) - _vm_page_deactivate(m, TRUE); - else - vm_page_launder(m); + _vm_page_deactivate(m, m->dirty == 0); } /* Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon May 23 06:04:38 2016 (r300476) +++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon May 23 06:13:35 2016 (r300477) @@ -1553,15 +1553,35 @@ drop_page: /* Dequeue to avoid later lock recursion. */ vm_page_dequeue_locked(m); #if 0 + /* + * This requires the object write lock. It might be a + * good idea during a page shortage, but might also + * cause contention with a concurrent attempt to launder + * pages from this object. + */ if (m->object->ref_count != 0) vm_page_test_dirty(m); #endif - if (m->dirty == 0) { + /* + * When not short for inactive pages, let dirty pages go + * through the inactive queue before moving to the + * laundry queues. This gives them some extra time to + * be reactivated, potentially avoiding an expensive + * pageout. During a page shortage, the inactive queue + * is necessarily small, so we may move dirty pages + * directly to the laundry queue. + */ + if (page_shortage <= 0) vm_page_deactivate(m); - page_shortage -= act_scan_laundry_weight; - } else { - vm_page_launder(m); - page_shortage--; + else { + if (m->dirty == 0) { + vm_page_deactivate(m); + page_shortage -= + act_scan_laundry_weight; + } else { + vm_page_launder(m); + page_shortage--; + } } } else vm_page_requeue_locked(m); From owner-svn-src-user@freebsd.org Mon May 23 12:49:23 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 39004B462CB for ; Mon, 23 May 2016 12:49:23 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AFA5E19DF; Mon, 23 May 2016 12:49:22 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id u4NCnDku009002 (version=TLSv1 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 23 May 2016 15:49:13 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua u4NCnDku009002 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id u4NCnDSd009001; Mon, 23 May 2016 15:49:13 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 23 May 2016 15:49:13 +0300 From: Konstantin Belousov To: Mark Johnston Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r300465 - user/alc/PQ_LAUNDRY/sys/vm Message-ID: <20160523124913.GU89104@kib.kiev.ua> References: <201605230528.u4N5S34B088158@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201605230528.u4N5S34B088158@repo.freebsd.org> User-Agent: Mutt/1.6.1 (2016-04-27) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 12:49:23 -0000 On Mon, May 23, 2016 at 05:28:03AM +0000, Mark Johnston wrote: > Author: markj > Date: Mon May 23 05:28:03 2016 > New Revision: 300465 > URL: https://svnweb.freebsd.org/changeset/base/300465 > > Log: > Address over-eager OOM kills. > > Prior to this change, vm_page_free_wakeup() and thus vm_page_free() would > clear vm_pages_needed when the free page count is above v_free_min. If the > pagedaemon is starved for pages to reclaim because of a runaway process or > because all inactive pages are dirty, but other threads are occasionally > freeing pages, and v_free_min <= v_free_count <= vm_pageout_wakeup_thresh, > concurrent vm_page_free() and vm_page_alloc() calls will respectively clear > and set vm_pages_needed, waking up the pagedaemon in the process. This can > cause the domain's oom_seq value to increment very quickly, leading to a > spurious OOM kill when the pagedaemon cannot find clean pages to reclaim in > the time that it takes for some pages to be laundered. > > This can be triggered during multiple consecutive sysbench runs when it > writes mmap'ed files that are larger than system memory. > > Fix the problem by modifying vm_page_free_wakeup() to only clear > vm_pages_needed once v_free_count has risen above vm_pageout_wakeup_thresh. > > Reviewed by: alc > > Modified: > user/alc/PQ_LAUNDRY/sys/vm/vm_page.c > > Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c > ============================================================================== > --- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:02 2016 (r300464) > +++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:03 2016 (r300465) > @@ -2910,7 +2910,8 @@ vm_page_free_wakeup(void) > * lots of memory. this process will swapin processes. > */ > if (vm_pages_needed && !vm_page_count_min()) { > - vm_pages_needed = 0; > + if (!vm_paging_needed()) > + vm_pages_needed = 0; > wakeup(&vm_cnt.v_free_count); > } > } I looked at this change for some time after you referenced it. Can this occur on the stoxk HEAD ? At least I do not see why it cannot, from the description. From owner-svn-src-user@freebsd.org Mon May 23 17:37:36 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B887EB47266 for ; Mon, 23 May 2016 17:37:36 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-pa0-x232.google.com (mail-pa0-x232.google.com [IPv6:2607:f8b0:400e:c03::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8A49710CC; Mon, 23 May 2016 17:37:36 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: by mail-pa0-x232.google.com with SMTP id tb2so47706139pac.2; Mon, 23 May 2016 10:37:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=0qrNyK2oAyNdX2Wsyoo9hOgUqnAOU9lIUxRLxnLKPiM=; b=VC/j1wPwLUxgdOxe3SnfQNtcJEpoGToBADsYYegwgsd7Uk46TGclfdxA9zAN/clUyP 6I6sfj+NZOjjLn+0x1jLzWQ6nccswZZV5C3SgkheoAVY/mET3jcegfis/59yL5SRoAsi TQ56m40PnIzOpsPRd6YcMpFGFunZkYU3VV8pYXIVpc4NSFa17lALq32KbyHuofYkoZ5Y HeQg2b3sd20DVfZiz0AgK6NRU8ziGxED8PjpCT8dKv4wvRmZe9nEG0+LlyopJgHzMM9I bU+mk2tv0R9g8qsENdha0f4o3B1Zht0eC8KyF1IuLbV+fQkBUxFP01B6J9rmyYY7Bmfn xEGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=0qrNyK2oAyNdX2Wsyoo9hOgUqnAOU9lIUxRLxnLKPiM=; b=lC4ZuDtI1oLXyEoiEDkeeVqSj00RVrZssgbIlwolu/ZwtMQF3evW4ptnLc5t88W4Jd HBrOWyvZORVaEbZ65P8Sew9vill8q6PYnjGfLiEPvO8Ev9MGgwmD/7oLm2ICxSPQxRzT fkjnOMlDnun/w6uflcRpQ/vGakJtt96lL5ENzqbR4R6mRhwvH6zN3TI1g8HVoNdskq3R HZ+fCnb8jXXBqrDu+67s2dwaFJS3ILYvN0UuGnxN6PdOd/s5vDAEhbI6hignB3X0UOWG 60FNrqnrcHP9ADeHVXgNkJ3lMIXI8+iNSkUIVOoV3MkHoL7RSd4clhZOSyKPqbMOGSP4 LLvw== X-Gm-Message-State: ALyK8tIcI/JUSHg9I4tAKpzDsmL97rJmFtMw1VlUVNXd0dAZqF+3FwYBaXRqfSm+fvzOOg== X-Received: by 10.66.82.8 with SMTP id e8mr58794pay.124.1464025055405; Mon, 23 May 2016 10:37:35 -0700 (PDT) Received: from wkstn-mjohnston.west.isilon.com (c-76-104-201-218.hsd1.wa.comcast.net. [76.104.201.218]) by smtp.gmail.com with ESMTPSA id lz5sm48239627pab.34.2016.05.23.10.37.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 May 2016 10:37:34 -0700 (PDT) Sender: Mark Johnston Date: Mon, 23 May 2016 10:40:46 -0700 From: Mark Johnston To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r300465 - user/alc/PQ_LAUNDRY/sys/vm Message-ID: <20160523174046.GB51657@wkstn-mjohnston.west.isilon.com> References: <201605230528.u4N5S34B088158@repo.freebsd.org> <20160523124913.GU89104@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160523124913.GU89104@kib.kiev.ua> User-Agent: Mutt/1.6.1 (2016-04-27) X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 May 2016 17:37:36 -0000 On Mon, May 23, 2016 at 03:49:13PM +0300, Konstantin Belousov wrote: > On Mon, May 23, 2016 at 05:28:03AM +0000, Mark Johnston wrote: > > Author: markj > > Date: Mon May 23 05:28:03 2016 > > New Revision: 300465 > > URL: https://svnweb.freebsd.org/changeset/base/300465 > > > > Log: > > Address over-eager OOM kills. > > > > Prior to this change, vm_page_free_wakeup() and thus vm_page_free() would > > clear vm_pages_needed when the free page count is above v_free_min. If the > > pagedaemon is starved for pages to reclaim because of a runaway process or > > because all inactive pages are dirty, but other threads are occasionally > > freeing pages, and v_free_min <= v_free_count <= vm_pageout_wakeup_thresh, > > concurrent vm_page_free() and vm_page_alloc() calls will respectively clear > > and set vm_pages_needed, waking up the pagedaemon in the process. This can > > cause the domain's oom_seq value to increment very quickly, leading to a > > spurious OOM kill when the pagedaemon cannot find clean pages to reclaim in > > the time that it takes for some pages to be laundered. > > > > This can be triggered during multiple consecutive sysbench runs when it > > writes mmap'ed files that are larger than system memory. > > > > Fix the problem by modifying vm_page_free_wakeup() to only clear > > vm_pages_needed once v_free_count has risen above vm_pageout_wakeup_thresh. > > > > Reviewed by: alc > > > > Modified: > > user/alc/PQ_LAUNDRY/sys/vm/vm_page.c > > > > Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c > > ============================================================================== > > --- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:02 2016 (r300464) > > +++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c Mon May 23 05:28:03 2016 (r300465) > > @@ -2910,7 +2910,8 @@ vm_page_free_wakeup(void) > > * lots of memory. this process will swapin processes. > > */ > > if (vm_pages_needed && !vm_page_count_min()) { > > - vm_pages_needed = 0; > > + if (!vm_paging_needed()) > > + vm_pages_needed = 0; > > wakeup(&vm_cnt.v_free_count); > > } > > } > > I looked at this change for some time after you referenced it. Can this > occur on the stoxk HEAD ? At least I do not see why it cannot, from the > description. I agree - in principle this problem exists in HEAD as well. I haven't been able to trigger the spurious OOM kills there, but I also haven't spent much time trying to do so, and my test case will occasionally result in a low-memory deadlock on HEAD instead. In my test case, the pagedaemon would block while laundering pages (since the vnode pager's putpages operation is synchronous when memory is low), so I suspect that it is generally able to launder and free some pages before hitting the oom_seq threshold. From owner-svn-src-user@freebsd.org Wed May 25 10:02:15 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E849FB49B29 for ; Wed, 25 May 2016 10:02:15 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AA2451C46; Wed, 25 May 2016 10:02:15 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4PA2Eqk072993; Wed, 25 May 2016 10:02:14 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4PA2EnN072992; Wed, 25 May 2016 10:02:14 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201605251002.u4PA2EnN072992@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Wed, 25 May 2016 10:02:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300672 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 May 2016 10:02:16 -0000 Author: pho Date: Wed May 25 10:02:14 2016 New Revision: 300672 URL: https://svnweb.freebsd.org/changeset/base/300672 Log: sendmsg(2) fuzz test scenario added. PR: 209748 Sponsored by: EMC / Isilon Storage Division Added: user/pho/stress2/misc/sendmsg.sh (contents, props changed) Added: user/pho/stress2/misc/sendmsg.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/misc/sendmsg.sh Wed May 25 10:02:14 2016 (r300672) @@ -0,0 +1,226 @@ +#!/bin/sh + +# +# Copyright (c) 2016 EMC Corp. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# sendmsg(2) fuzz test. + +# Looping test program seen: +# https://people.freebsd.org/~pho/stress/log/sendmsg.txt + +. ../default.cfg + +dir=/tmp +odir=`pwd` +cd $dir +sed '1,/^EOF/d' < $odir/$0 > $dir/sendmsg.c +mycc -o sendmsg -Wall -Wextra -O0 -g sendmsg.c || exit 1 +rm -f sendmsg.c +cd $odir + +daemon sh -c "(cd ../testcases/swap; ./swap -t 5m -i 20 -k -h)" > /dev/null +sleep 2 + +/tmp/sendmsg 2>/dev/null + +while pgrep -q swap; do + pkill -9 swap +done +rm -f /tmp/sendmsg sendmsg.core + +n=0 +while pgrep -q sendmsg; do + pkill -9 sendmsg + n=$((n + 1)) + [ $n -gt 20 ] && { echo "Looping sendmsg"; exit 1; } + sleep 1 +done +exit 0 + +EOF +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +volatile u_int *share; + +#define PARALLEL 16 +#define RUNTIME (5 * 60) +#define SYNC 0 + +int +setflag(void) +{ + int flag, i; + + i = arc4random() % 100; + + if (i < 33) + flag = 0; + else if (i >= 33 && i < 66) + flag = 2 << (arc4random() % 9); + else + flag = arc4random(); + + return(flag); +} + +void +corrupt(unsigned char *buf, int len) +{ + unsigned char byte, mask; + int bit, i; + + i = arc4random() % len; + byte = buf[i]; + bit = arc4random() % 8; + mask = ~(1 << bit); + byte = (byte & mask) | (~byte & ~mask); + buf[i] = byte; +} + +/* + Based on https://www.win.tue.nl/~aeb/linux/lk/sendfd.c + */ +void +test(void) +{ + struct cmsghdr *cmsg; + struct msghdr msg; + pid_t pid; + int fd, flag, n, pair[2]; + char buf[1024]; + char fdbuf[CMSG_SPACE(sizeof(int))]; + + /* dummy */ + struct iovec vec; + char ch = '\0'; + + atomic_add_int(&share[SYNC], 1); + while (share[SYNC] != PARALLEL) + ; + + memset(&msg, 0, sizeof(msg)); + + /* having zero msg_iovlen or iov_len doesnt seem to work */ + vec.iov_base = &ch; + vec.iov_len = 1; + msg.msg_iov = &vec; + msg.msg_iovlen = 1; + + msg.msg_control = fdbuf; + msg.msg_controllen = CMSG_LEN(sizeof(int)); + cmsg = CMSG_FIRSTHDR(&msg); + cmsg->cmsg_len = CMSG_LEN(sizeof(int)); + + if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair)) + err(1, "socketpair"); + + if ((pid = fork()) == -1) + err(1, "fork"); + + if (pid == 0) { + fd = open("/etc/passwd", O_RDONLY); + if (fd < 0) + err(1, "/etc/passwd"); +#if defined(DEBUG) + printf("child: sending fd=%d for /etc/passwd\n", fd); +#endif + + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + *(int *)CMSG_DATA(cmsg) = fd; + flag = setflag(); + if (arc4random() % 2 == 0) + corrupt((unsigned char *)&msg, sizeof(msg)); + else + corrupt((unsigned char *)&cmsg, sizeof(cmsg)); + if (sendmsg(pair[0], &msg, flag) < 0) + err(1, "sendmsg"); + _exit(0); + } + alarm(2); + if (recvmsg(pair[1], &msg, 0) < 0) + err(1, "recvmsg"); + if (cmsg->cmsg_type != SCM_RIGHTS) + err(1, "didnt get a fd?\n"); + fd = *(int *)CMSG_DATA(cmsg); +#if defined(DEBUG) + printf("parent: received fd=%d\n", fd); +#endif + n = read(fd, buf, sizeof(buf)); + if (n < 0) + err(1, "read"); + if (n != sizeof(buf)) + printf("read %d bytes\n", n); + wait(NULL); + + _exit(0); +} + +int +main(void) +{ + size_t len; + time_t start; + int e, i, pids[PARALLEL], status; + + e = 0; + len = PAGE_SIZE; + if ((share = mmap(NULL, len, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_SHARED, -1, 0)) == MAP_FAILED) + err(1, "mmap"); + + start = time(NULL); + while ((time(NULL) - start) < RUNTIME) { + share[SYNC] = 0; + for (i = 0; i < PARALLEL; i++) { + if ((pids[i] = fork()) == 0) + test(); + } + for (i = 0; i < PARALLEL; i++) { + waitpid(pids[i], &status, 0); + e += status == 0 ? 0 : 1; + } + } + + return (e); +} From owner-svn-src-user@freebsd.org Thu May 26 08:28:12 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 13229B4B418 for ; Thu, 26 May 2016 08:28:12 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D57341329; Thu, 26 May 2016 08:28:11 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4Q8SBUU039436; Thu, 26 May 2016 08:28:11 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4Q8SBu6039435; Thu, 26 May 2016 08:28:11 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201605260828.u4Q8SBu6039435@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Thu, 26 May 2016 08:28:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300716 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 May 2016 08:28:12 -0000 Author: pho Date: Thu May 26 08:28:10 2016 New Revision: 300716 URL: https://svnweb.freebsd.org/changeset/base/300716 Log: Note that "SIGABRT" is to be expected. Remove redundant rm(1). Sponsored by: EMC / Isilon Storage Division Modified: user/pho/stress2/misc/pthread6.sh Modified: user/pho/stress2/misc/pthread6.sh ============================================================================== --- user/pho/stress2/misc/pthread6.sh Thu May 26 07:20:33 2016 (r300715) +++ user/pho/stress2/misc/pthread6.sh Thu May 26 08:28:10 2016 (r300716) @@ -38,10 +38,10 @@ cd /tmp sed '1,/^EOF/d' < $here/$0 > pthread6.c mycc -o pthread6 -Wall -Wextra -O2 -g -gdwarf-2 pthread6.c -lpthread || exit 1 rm -f pthread6.c /tmp/pthread6.core -rm -f /tmp/pthread6.core daemon sh -c "(cd $here/../testcases/swap; ./swap -t 2m -i 20 -k)" sleep `jot -r 1 1 9` +echo "Expect SIGABRT" for i in `jot 50`; do /tmp/pthread6 done From owner-svn-src-user@freebsd.org Thu May 26 08:31:10 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 56699B4B53B for ; Thu, 26 May 2016 08:31:10 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 297A51756; Thu, 26 May 2016 08:31:10 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4Q8V92h039771; Thu, 26 May 2016 08:31:09 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4Q8V967039770; Thu, 26 May 2016 08:31:09 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201605260831.u4Q8V967039770@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Thu, 26 May 2016 08:31:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300717 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 May 2016 08:31:10 -0000 Author: pho Date: Thu May 26 08:31:09 2016 New Revision: 300717 URL: https://svnweb.freebsd.org/changeset/base/300717 Log: Added comment about problem found. Sponsored by: EMC / Isilon Storage Division Modified: user/pho/stress2/misc/core3.sh Modified: user/pho/stress2/misc/core3.sh ============================================================================== --- user/pho/stress2/misc/core3.sh Thu May 26 08:28:10 2016 (r300716) +++ user/pho/stress2/misc/core3.sh Thu May 26 08:31:09 2016 (r300717) @@ -34,6 +34,9 @@ # Fixed by r272535. # On i386 pgrep(1) loops. Fixed by r272566. +# "Sleeping on "pmapdi" with the following non-sleepable locks held:" +# https://people.freebsd.org/~pho/stress/log/kostik883.txt + . ../default.cfg odir=`pwd` From owner-svn-src-user@freebsd.org Thu May 26 18:37:53 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1899BB4BE89 for ; Thu, 26 May 2016 18:37:53 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DA74617E1; Thu, 26 May 2016 18:37:52 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4QIbqZ1066822; Thu, 26 May 2016 18:37:52 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4QIbqxQ066821; Thu, 26 May 2016 18:37:52 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201605261837.u4QIbqxQ066821@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 26 May 2016 18:37:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300765 - user/gjb/thermite X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 May 2016 18:37:53 -0000 Author: gjb Date: Thu May 26 18:37:51 2016 New Revision: 300765 URL: https://svnweb.freebsd.org/changeset/base/300765 Log: Resync from upstream: - Remove the pkgbase bits. - Disconnect upload_azure_image(), as FreeBSD on Azure has been taken over by Microsoft. Sponsored by: The FreeBSD Foundation Modified: user/gjb/thermite/thermite.sh Modified: user/gjb/thermite/thermite.sh ============================================================================== --- user/gjb/thermite/thermite.sh Thu May 26 18:35:37 2016 (r300764) +++ user/gjb/thermite/thermite.sh Thu May 26 18:37:51 2016 (r300765) @@ -282,12 +282,6 @@ ftp_stage() { _type="snapshots" ;; esac - if [ ! -z "${TURNITUPTOELEVEN}" ]; then - chroot ${CHROOTDIR} make -C /usr/src \ - TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - KERNCONF=${KERNEL} \ - packages >> ${logdir}/${_build}.log 2>&1 - fi mkdir -p "${ftpdir}/${_type}" rsync -avH ${CHROOTDIR}/R/ftp-stage/${_type}/* \ @@ -550,12 +544,10 @@ main() { runall build_chroots runall install_chroots runall build_release - if [ -z "${TURNITUPTOELEVEN}" ]; then - runall upload_ec2_ami - runall upload_azure_image - runall upload_gce_image - runall upload_vagrant_image - fi + runall upload_ec2_ami + #runall upload_azure_image + runall upload_gce_image + runall upload_vagrant_image } main "$@" From owner-svn-src-user@freebsd.org Thu May 26 18:39:20 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3DF6CB4BEAB for ; Thu, 26 May 2016 18:39:20 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EA8BE1988; Thu, 26 May 2016 18:39:19 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4QIdJYK066918; Thu, 26 May 2016 18:39:19 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4QIdJob066917; Thu, 26 May 2016 18:39:19 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201605261839.u4QIdJob066917@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 26 May 2016 18:39:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300766 - user/gjb/thermite-v2 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 May 2016 18:39:20 -0000 Author: gjb Date: Thu May 26 18:39:18 2016 New Revision: 300766 URL: https://svnweb.freebsd.org/changeset/base/300766 Log: Remove user/gjb/thermite-v2, which was intended for packaged base, which will not be ready for 11.0-RELEASE. Sponsored by: The FreeBSD Foundation Deleted: user/gjb/thermite-v2/ From owner-svn-src-user@freebsd.org Sat May 28 18:28:29 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 61622B4E88E for ; Sat, 28 May 2016 18:28:29 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 326321E59; Sat, 28 May 2016 18:28:29 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4SISSY6034629; Sat, 28 May 2016 18:28:28 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4SISS4d034628; Sat, 28 May 2016 18:28:28 GMT (envelope-from des@FreeBSD.org) Message-Id: <201605281828.u4SISS4d034628@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Sat, 28 May 2016 18:28:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300907 - user/des/fbce/lib/FBCE/Script X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 May 2016 18:28:29 -0000 Author: des Date: Sat May 28 18:28:28 2016 New Revision: 300907 URL: https://svnweb.freebsd.org/changeset/base/300907 Log: Include incumbent status in the output of the list command. Modified: user/des/fbce/lib/FBCE/Script/User.pm Modified: user/des/fbce/lib/FBCE/Script/User.pm ============================================================================== --- user/des/fbce/lib/FBCE/Script/User.pm Sat May 28 17:43:40 2016 (r300906) +++ user/des/fbce/lib/FBCE/Script/User.pm Sat May 28 18:28:28 2016 (r300907) @@ -133,14 +133,16 @@ sub cmd_list($@) { if @argv; my $persons = FBCE->model('FBCE::Person')-> search(undef, { order_by => 'login' }); - printf("%-16s%-8s%-8s%s\n", + printf("%-16s%-8s%-8s%-8s%s\n", 'login', - 'active', - 'admin', + 'inc', + 'act', + 'adm', 'name'); foreach my $person ($persons->all()) { - printf("%-16s%-8s%-8s%s\n", + printf("%-16s%-8s%-8s%-8s%s\n", $person->login, + $person->incumbent ? 'yes' : 'no', $person->active ? 'yes' : 'no', $person->admin ? 'yes' : 'no', $person->name); From owner-svn-src-user@freebsd.org Sat May 28 18:44:53 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 70579B4ECAE for ; Sat, 28 May 2016 18:44:53 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3CA681AA1; Sat, 28 May 2016 18:44:53 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4SIiqCu042187; Sat, 28 May 2016 18:44:52 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4SIiqFt042186; Sat, 28 May 2016 18:44:52 GMT (envelope-from des@FreeBSD.org) Message-Id: <201605281844.u4SIiqFt042186@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Sat, 28 May 2016 18:44:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300908 - user/des/fbce/lib/FBCE/Script X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 May 2016 18:44:53 -0000 Author: des Date: Sat May 28 18:44:52 2016 New Revision: 300908 URL: https://svnweb.freebsd.org/changeset/base/300908 Log: Rename the file and tarball options. Add author and license. Modified: user/des/fbce/lib/FBCE/Script/User.pm Modified: user/des/fbce/lib/FBCE/Script/User.pm ============================================================================== --- user/des/fbce/lib/FBCE/Script/User.pm Sat May 28 18:28:28 2016 (r300907) +++ user/des/fbce/lib/FBCE/Script/User.pm Sat May 28 18:44:52 2016 (r300908) @@ -26,7 +26,7 @@ has dryrun => ( documentation => q{Dry run}, ); -has tarball => ( +has pwtarball => ( traits => [qw(Getopt)], cmd_aliases => 't', isa => Str, @@ -35,7 +35,7 @@ has tarball => ( default => 'fbce-passwords.tgz', ); -has file => ( +has pwfile => ( traits => [qw(Getopt)], cmd_aliases => 'f', isa => Str, @@ -305,10 +305,10 @@ sub cmd_pwgen($@) { if @argv; # Please don't overwrite an existing password tarball! - my $tarball = $self->tarball; + my $tarball = $self->pwtarball; die("$tarball exists, delete or move and try again\n") if -e $tarball; - my $pwfile = $self->file; + my $pwfile = $self->pwfile; # Generate enough passwords for everybody my $persons = FBCE->model('FBCE::Person')-> @@ -375,3 +375,14 @@ __PACKAGE__->meta->make_immutable; 1; # $FreeBSD$ + +=head1 AUTHOR + +Dag-Erling Smørgrav + +=head1 LICENSE + +This library is free software. You can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut From owner-svn-src-user@freebsd.org Sat May 28 18:47:26 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EAA0FB4ED06 for ; Sat, 28 May 2016 18:47:26 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C27401BF5; Sat, 28 May 2016 18:47:26 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4SIlPrT042325; Sat, 28 May 2016 18:47:25 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4SIlPoK042324; Sat, 28 May 2016 18:47:25 GMT (envelope-from des@FreeBSD.org) Message-Id: <201605281847.u4SIlPoK042324@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Sat, 28 May 2016 18:47:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r300909 - user/des/fbce/script X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 May 2016 18:47:27 -0000 Author: des Date: Sat May 28 18:47:25 2016 New Revision: 300909 URL: https://svnweb.freebsd.org/changeset/base/300909 Log: Add POD. Modified: user/des/fbce/script/fbce_user.pl Modified: user/des/fbce/script/fbce_user.pl ============================================================================== --- user/des/fbce/script/fbce_user.pl Sat May 28 18:44:52 2016 (r300908) +++ user/des/fbce/script/fbce_user.pl Sat May 28 18:47:25 2016 (r300909) @@ -6,3 +6,126 @@ Catalyst::ScriptRunner->run('FBCE', 'Use 1; # $FreeBSD$ + +=encoding utf8 + +=head1 NAME + +fbce_user.pl - Manage FBCE Users + +=head1 SYNOPSIS + +fbce_user.pl [options] command [arguments] + + Options: + --debug print additional information while working + --dryrun don't actually do anything + --pwfile name of password file for pwgen command + --pwtarball name of password tarball for pwgen command + --help show this message and exit + + Commands: + + list list existing users + import import new users + gecos set real name for listed user(s) + pwgen generate passwords + smash clear active and incumbent bit for all users + activate set active bit for listed user(s) + deactivate clear active bit for listed user(s) + incumbent set incumbent bit for listed user(s) + +=head1 DESCRIPTION + +The B script is used to manage users in the FBCE system. +The following commands are available: + +=over + +=item B + +List all users. Prints one line per user with their login, active +status, admin status and name as recorded in the database. + +=item B [I ...] + +Import users. If the input includes the users' names, those will be +imported too; otherwise, their names will be set equal to their login +names. + +=item B [I ...] + +Set the specified users' names to those indicated in the input. Note +that if the input includes lines where no name is specified, those +users' names will be reset to their login. + +=item B + +Generate passwords for users that don't already have one. This +command will also generate a tarball containing individual files for +each user, containing that user's password, in a subdirectory bearing +the user's name. Each file's owner and group will be set equal to the +corresponding user's login. + +=item B + +Clear all users' active and incumbent bits. + +=item B [I ...] + +Mark the specified users as active, allowing them to run and vote in +the election. + +=item B [I ...] + +Mark the specified users as inactive, preventing them from running or +voting in the election. + +=item B [I ...] + +Mark the specified users as incumbents so they are listed as such in +the list of candidates presented to voters. + +=back + +=head2 Input Format + +All commands that operate on a list of users, rather than on the +entire user base, expect that list to be provided either on stdin or +in files listed on the command line. Each line in the input must be +in one of the following formats: + +=over + +=item * + +login only (any leading or trailing whitespace is ignored) + +=item * + +login and real name separated by whitespace (any leading or trailing +whitespace is ignored) + +=item * + +Unix v7 (seven-field) passwd format + +=item * + +BSD (ten-field) passwd format + +=back + +Any input which B doesn't understand will simply be +ignored. + +=head1 AUTHORS + +Dag-Erling Smørgrav + +=head1 COPYRIGHT + +This library is free software. You can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut