From owner-svn-src-user@freebsd.org Sun Sep 4 22:55:08 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 DAB08B71503 for ; Sun, 4 Sep 2016 22:55:08 +0000 (UTC) (envelope-from alc@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 4EE2F8A2; Sun, 4 Sep 2016 22:55:08 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u84Mt7qm072126; Sun, 4 Sep 2016 22:55:07 GMT (envelope-from alc@FreeBSD.org) Received: (from alc@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u84Mt6vM072113; Sun, 4 Sep 2016 22:55:06 GMT (envelope-from alc@FreeBSD.org) Message-Id: <201609042255.u84Mt6vM072113@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org using -f From: Alan Cox Date: Sun, 4 Sep 2016 22:55:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305400 - in user/alc/PQ_LAUNDRY: bin/cat/tests cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/ztest contrib/libcxxrt contrib/netbsd-tests contrib/netbsd-tests/bin/cat co... 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.23 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: Sun, 04 Sep 2016 22:55:08 -0000 Author: alc Date: Sun Sep 4 22:55:05 2016 New Revision: 305400 URL: https://svnweb.freebsd.org/changeset/base/305400 Log: MFH r305399 Added: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.in - copied unchanged from r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.in user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.out - copied unchanged from r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.out user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_arith.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_arith.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_cmdsub.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_cmdsub.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_option.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_option.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_redir.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_redir.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_redircloexec.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_redircloexec.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_shift.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_shift.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_varval.sh - copied unchanged from r305399, head/contrib/netbsd-tests/bin/sh/t_varval.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/fss/ - copied from r305399, head/contrib/netbsd-tests/dev/fss/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/usb/ - copied from r305399, head/contrib/netbsd-tests/dev/usb/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/include/sys/t_pslist.c - copied unchanged from r305399, head/contrib/netbsd-tests/include/sys/t_pslist.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_vnode.c - copied unchanged from r305399, head/contrib/netbsd-tests/kernel/kqueue/t_vnode.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/db/h_lfsr.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/db/h_lfsr.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/db/t_db_hash_seq.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/db/t_db_hash_seq.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/inet/t_inet_addr.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/inet/t_inet_addr.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdio/t_open_memstream.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/stdio/t_open_memstream.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdlib/t_strtoi.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/stdlib/t_strtoi.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sync/cpp_atomic_ops_linkable.cc - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/sync/cpp_atomic_ops_linkable.cc user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_bind.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/sys/t_bind.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_getsockname.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/sys/t_getsockname.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_posix_fallocate.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/sys/t_posix_fallocate.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_wait.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libc/sys/t_wait.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_fenv.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libm/t_fenv.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_hypot.c - copied unchanged from r305399, head/contrib/netbsd-tests/lib/libm/t_hypot.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libusbhid/ - copied from r305399, head/contrib/netbsd-tests/lib/libusbhid/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/arp/ - copied from r305399, head/contrib/netbsd-tests/net/arp/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if/ifconf.c - copied unchanged from r305399, head/contrib/netbsd-tests/net/if/ifconf.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if/t_ifconf.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/if/t_ifconf.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if/t_ifconfig.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/if/t_ifconfig.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if_gif/ - copied from r305399, head/contrib/netbsd-tests/net/if_gif/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if_pppoe/ - copied from r305399, head/contrib/netbsd-tests/net/if_pppoe/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if_tap/ - copied from r305399, head/contrib/netbsd-tests/net/if_tap/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/in_cksum/ - copied from r305399, head/contrib/netbsd-tests/net/in_cksum/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mcast/ - copied from r305399, head/contrib/netbsd-tests/net/mcast/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mpls/t_mpls_fw6.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/mpls/t_mpls_fw6.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mpls/t_mpls_fw64.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/mpls/t_mpls_fw64.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/ndp/ - copied from r305399, head/contrib/netbsd-tests/net/ndp/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/net/t_forwarding.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/net/t_forwarding.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/net/t_ipaddress.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/net/t_ipaddress.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/net/t_ipv6_lifetime.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/net/t_ipv6_lifetime.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/net/t_ipv6address.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/net/t_ipv6address.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/route/t_flags.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/route/t_flags.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/route/t_flags6.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/route/t_flags6.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/route/t_route.sh - copied unchanged from r305399, head/contrib/netbsd-tests/net/route/t_route.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/gpt/ - copied from r305399, head/contrib/netbsd-tests/sbin/gpt/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/t_check.sh - copied unchanged from r305399, head/contrib/netbsd-tests/sbin/resize_ffs/t_check.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sys/net/ - copied from r305399, head/contrib/netbsd-tests/sys/net/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sys/netatalk/ - copied from r305399, head/contrib/netbsd-tests/sys/netatalk/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sys/netinet/ - copied from r305399, head/contrib/netbsd-tests/sys/netinet/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sys/netinet6/ - copied from r305399, head/contrib/netbsd-tests/sys/netinet6/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/config/d_min - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/config/d_min user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/gdb/ - copied from r305399, head/contrib/netbsd-tests/usr.bin/gdb/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/ld/ - copied from r305399, head/contrib/netbsd-tests/usr.bin/ld/ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/netpgpverify/Testspec - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/netpgpverify/Testspec user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_struct.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_struct.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_compound_literal_comma.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_compound_literal_comma.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_flex_array_packed.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_flex_array_packed.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_nested_struct.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_nested_struct.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_init4.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_init4.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_cast_fun_array_param.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_cast_fun_array_param.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_type_question_colon.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_type_question_colon.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/xlint/lint1/d_typefun.c - copied unchanged from r305399, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_typefun.c user/alc/PQ_LAUNDRY/contrib/unbound/cachedb/ - copied from r305399, head/contrib/unbound/cachedb/ user/alc/PQ_LAUNDRY/contrib/unbound/compat/strsep.c - copied unchanged from r305399, head/contrib/unbound/compat/strsep.c user/alc/PQ_LAUNDRY/contrib/unbound/util/ub_event.c - copied unchanged from r305399, head/contrib/unbound/util/ub_event.c user/alc/PQ_LAUNDRY/contrib/unbound/util/ub_event.h - copied unchanged from r305399, head/contrib/unbound/util/ub_event.h user/alc/PQ_LAUNDRY/contrib/unbound/util/ub_event_pluggable.c - copied unchanged from r305399, head/contrib/unbound/util/ub_event_pluggable.c user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/open_memstream2_test.c - copied unchanged from r305399, head/lib/libc/tests/stdio/open_memstream2_test.c user/alc/PQ_LAUNDRY/lib/msun/amd64/e_fmod.S - copied unchanged from r305399, head/lib/msun/amd64/e_fmod.S user/alc/PQ_LAUNDRY/lib/msun/amd64/e_fmodf.S - copied unchanged from r305399, head/lib/msun/amd64/e_fmodf.S user/alc/PQ_LAUNDRY/lib/msun/amd64/e_fmodl.S - copied unchanged from r305399, head/lib/msun/amd64/e_fmodl.S user/alc/PQ_LAUNDRY/lib/msun/i387/e_fmodf.S - copied unchanged from r305399, head/lib/msun/i387/e_fmodf.S user/alc/PQ_LAUNDRY/lib/msun/i387/e_fmodl.S - copied unchanged from r305399, head/lib/msun/i387/e_fmodl.S user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_thsclk.c - copied unchanged from r305399, head/sys/arm/allwinner/clk/aw_thsclk.c user/alc/PQ_LAUNDRY/sys/boot/i386/boot.ldscript - copied unchanged from r305399, head/sys/boot/i386/boot.ldscript user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_erom.c - copied unchanged from r305399, head/sys/dev/bhnd/bhnd_erom.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_erom.h - copied unchanged from r305399, head/sys/dev/bhnd/bhnd_erom.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_erom_if.m - copied unchanged from r305399, head/sys/dev/bhnd/bhnd_erom_if.m user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_erom_types.h - copied unchanged from r305399, head/sys/dev/bhnd/bhnd_erom_types.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_erom.c - copied unchanged from r305399, head/sys/dev/bhnd/siba/siba_erom.c Deleted: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_compexit.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/nfs/nfsservice/mountd.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/nfs/nfsservice/nfsd.c user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/open_memstream_test.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/pmu/ user/alc/PQ_LAUNDRY/sys/dev/bhnd/soc/ user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_bcma.c user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_siba.c user/alc/PQ_LAUNDRY/sys/mips/sentry5/ user/alc/PQ_LAUNDRY/sys/modules/bhnd/nvram/ user/alc/PQ_LAUNDRY/sys/vm/vm_zeroidle.c Modified: user/alc/PQ_LAUNDRY/bin/cat/tests/Makefile user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/zdb/zdb.c user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/ztest/ztest.c user/alc/PQ_LAUNDRY/contrib/libcxxrt/unwind-arm.h user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.in user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.out user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/t_cat.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/dotcmd/t_dotcmd.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_evaltested.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_exit.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_expand.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_fsplit.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_here.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_set_e.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_ulimit.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_varquote.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/t_wait.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/crypto/opencrypto/t_opencrypto.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/dm/h_dm.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/sysmon/t_swsensor.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/dev/sysmon/t_swwdog.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/common/fstest_lfs.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/common/h_fsmacros.h user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/nfs/nfsservice/rumpnfsd.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/nfs/t_rquotad.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/vfs/t_io.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/vfs/t_renamerace.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/vfs/t_unpriv.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/fs/vfs/t_vnops.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/games/t_factor.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/h_macros.h user/alc/PQ_LAUNDRY/contrib/netbsd-tests/include/sys/t_bitops.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/include/sys/t_cdefs.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/include/sys/t_socket.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/include/t_paths.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ipf/expected/n14 user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ipf/expected/n14_6 user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ipf/t_filter_parse.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ipf/t_nat_exec.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc1.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc2.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc3.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/t_rnd.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libbpfjit/t_bpfjit.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/arch/ia64/return_one.S user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/arch/powerpc/return_one.S user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/arch/riscv/return_one.S user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/db/t_db.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/execve/t_execve.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/isqemu.h user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/posix_spawn/t_spawn.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_fnmatch.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_fpsetmask.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_randomid.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_siginfo.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_sleep.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_time.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/gen/t_vis.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/inet/t_inet_network.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/net/t_servent.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdlib/t_getenv.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdlib/t_posix_memalign.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/stdlib/t_strtol.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/string/t_memset.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_connect.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_getrusage.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_kevent.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_mlock.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_mmap.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_mprotect.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_setrlimit.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/time/t_strptime.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libcurses/director/testlang_parse.y user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_exp.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_fmod.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_log.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libm/t_pow.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libpthread/t_cond.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libpthread/t_mutex.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libpthread/t_rwlock.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/librumpclient/t_exec.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/librumpclient/t_fd.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/librumphijack/t_tcpip.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libutil/t_parsedate.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/bpfilter/t_bpfilter.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/bpfjit/t_bpfjit.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/icmp/t_forward.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/icmp/t_ping.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/icmp/t_ping2.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/if_bridge/t_bridge.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mpls/t_ldp_regen.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mpls/t_mpls_fw.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/mpls/t_rfc4182.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/net/t_tcp.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/net/route/t_change.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/modautoload/t_modautoload.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/rumpkern/h_server/h_simpleserver.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/rumpkern/t_lwproc.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/rumpkern/t_sp.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/rumpnet/t_shmif.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/rump/rumpvfs/t_p2kifs.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/common.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/t_grow.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/t_grow_swapped.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/t_shrink.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/resize_ffs/t_shrink_swapped.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/sbin/sysctl/t_perm.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/share/mk/t_lib.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/share/mk/t_prog.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/share/mk/t_test.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/cc/t_hello.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/config/support/conf/files user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/config/t_config.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/make/t_make.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/netpgpverify/t_netpgpverify.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/sed/t_sed.sh user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/sort/d_any_char_dflag_out.txt (contents, props changed) user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/sort/d_any_char_fflag_out.txt (contents, props changed) user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.bin/sort/d_any_char_iflag_out.txt (contents, props changed) user/alc/PQ_LAUNDRY/contrib/netbsd-tests/usr.sbin/traceroute/t_traceroute.sh user/alc/PQ_LAUNDRY/contrib/one-true-awk/b.c user/alc/PQ_LAUNDRY/contrib/unbound/Makefile.in user/alc/PQ_LAUNDRY/contrib/unbound/acx_nlnetlabs.m4 user/alc/PQ_LAUNDRY/contrib/unbound/compat/explicit_bzero.c user/alc/PQ_LAUNDRY/contrib/unbound/compat/getentropy_linux.c user/alc/PQ_LAUNDRY/contrib/unbound/config.h user/alc/PQ_LAUNDRY/contrib/unbound/config.h.in user/alc/PQ_LAUNDRY/contrib/unbound/configure user/alc/PQ_LAUNDRY/contrib/unbound/configure.ac user/alc/PQ_LAUNDRY/contrib/unbound/daemon/daemon.c user/alc/PQ_LAUNDRY/contrib/unbound/daemon/daemon.h user/alc/PQ_LAUNDRY/contrib/unbound/daemon/remote.c user/alc/PQ_LAUNDRY/contrib/unbound/daemon/unbound.c user/alc/PQ_LAUNDRY/contrib/unbound/daemon/worker.c user/alc/PQ_LAUNDRY/contrib/unbound/dns64/dns64.c user/alc/PQ_LAUNDRY/contrib/unbound/dnstap/dnstap.c user/alc/PQ_LAUNDRY/contrib/unbound/doc/Changelog user/alc/PQ_LAUNDRY/contrib/unbound/doc/README user/alc/PQ_LAUNDRY/contrib/unbound/doc/example.conf user/alc/PQ_LAUNDRY/contrib/unbound/doc/example.conf.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/libunbound.3 user/alc/PQ_LAUNDRY/contrib/unbound/doc/libunbound.3.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-anchor.8 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-anchor.8.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-checkconf.8 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-checkconf.8.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-control.8 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-control.8.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-host.1 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound-host.1.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound.8 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound.8.in user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound.conf.5 user/alc/PQ_LAUNDRY/contrib/unbound/doc/unbound.conf.5.in user/alc/PQ_LAUNDRY/contrib/unbound/iterator/iter_fwd.c user/alc/PQ_LAUNDRY/contrib/unbound/iterator/iter_utils.c user/alc/PQ_LAUNDRY/contrib/unbound/iterator/iter_utils.h user/alc/PQ_LAUNDRY/contrib/unbound/iterator/iterator.c user/alc/PQ_LAUNDRY/contrib/unbound/iterator/iterator.h user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/context.h user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/libunbound.c user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/libworker.c user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/libworker.h user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/python/libunbound.i user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/ubsyms.def user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/unbound-event.h user/alc/PQ_LAUNDRY/contrib/unbound/libunbound/worker.h user/alc/PQ_LAUNDRY/contrib/unbound/services/cache/dns.c user/alc/PQ_LAUNDRY/contrib/unbound/services/listen_dnsport.c user/alc/PQ_LAUNDRY/contrib/unbound/services/listen_dnsport.h user/alc/PQ_LAUNDRY/contrib/unbound/services/localzone.c user/alc/PQ_LAUNDRY/contrib/unbound/services/localzone.h user/alc/PQ_LAUNDRY/contrib/unbound/services/mesh.c user/alc/PQ_LAUNDRY/contrib/unbound/services/modstack.c user/alc/PQ_LAUNDRY/contrib/unbound/services/outside_network.c user/alc/PQ_LAUNDRY/contrib/unbound/services/outside_network.h user/alc/PQ_LAUNDRY/contrib/unbound/sldns/keyraw.c user/alc/PQ_LAUNDRY/contrib/unbound/sldns/parseutil.c user/alc/PQ_LAUNDRY/contrib/unbound/sldns/rrdef.h user/alc/PQ_LAUNDRY/contrib/unbound/sldns/str2wire.c user/alc/PQ_LAUNDRY/contrib/unbound/sldns/wire2str.c user/alc/PQ_LAUNDRY/contrib/unbound/smallapp/unbound-checkconf.c user/alc/PQ_LAUNDRY/contrib/unbound/smallapp/unbound-control.c user/alc/PQ_LAUNDRY/contrib/unbound/smallapp/worker_cb.c user/alc/PQ_LAUNDRY/contrib/unbound/util/config_file.c user/alc/PQ_LAUNDRY/contrib/unbound/util/config_file.h user/alc/PQ_LAUNDRY/contrib/unbound/util/configlexer.lex user/alc/PQ_LAUNDRY/contrib/unbound/util/configparser.y user/alc/PQ_LAUNDRY/contrib/unbound/util/data/dname.c user/alc/PQ_LAUNDRY/contrib/unbound/util/data/msgencode.c user/alc/PQ_LAUNDRY/contrib/unbound/util/data/msgparse.c user/alc/PQ_LAUNDRY/contrib/unbound/util/data/msgparse.h user/alc/PQ_LAUNDRY/contrib/unbound/util/data/msgreply.c user/alc/PQ_LAUNDRY/contrib/unbound/util/data/msgreply.h user/alc/PQ_LAUNDRY/contrib/unbound/util/fptr_wlist.c user/alc/PQ_LAUNDRY/contrib/unbound/util/fptr_wlist.h user/alc/PQ_LAUNDRY/contrib/unbound/util/iana_ports.inc user/alc/PQ_LAUNDRY/contrib/unbound/util/module.h user/alc/PQ_LAUNDRY/contrib/unbound/util/net_help.c user/alc/PQ_LAUNDRY/contrib/unbound/util/netevent.c user/alc/PQ_LAUNDRY/contrib/unbound/util/netevent.h user/alc/PQ_LAUNDRY/contrib/unbound/util/tube.c user/alc/PQ_LAUNDRY/contrib/unbound/util/tube.h user/alc/PQ_LAUNDRY/contrib/unbound/validator/autotrust.c user/alc/PQ_LAUNDRY/contrib/unbound/validator/val_anchor.c user/alc/PQ_LAUNDRY/contrib/unbound/validator/val_secalgo.c user/alc/PQ_LAUNDRY/contrib/unbound/validator/val_secalgo.h user/alc/PQ_LAUNDRY/lib/libc/tests/db/Makefile user/alc/PQ_LAUNDRY/lib/libc/tests/hash/Makefile user/alc/PQ_LAUNDRY/lib/libc/tests/inet/Makefile user/alc/PQ_LAUNDRY/lib/libc/tests/stdio/Makefile user/alc/PQ_LAUNDRY/lib/libc/tests/stdlib/Makefile user/alc/PQ_LAUNDRY/lib/libc/tests/sys/Makefile user/alc/PQ_LAUNDRY/lib/libifconfig/libifconfig.c user/alc/PQ_LAUNDRY/lib/libifconfig/libifconfig.h user/alc/PQ_LAUNDRY/lib/libifconfig/libifconfig_internal.c user/alc/PQ_LAUNDRY/lib/libifconfig/libifconfig_internal.h user/alc/PQ_LAUNDRY/lib/libunbound/Makefile user/alc/PQ_LAUNDRY/lib/msun/amd64/Makefile.inc user/alc/PQ_LAUNDRY/lib/msun/i387/Makefile.inc user/alc/PQ_LAUNDRY/lib/msun/src/e_fmod.c user/alc/PQ_LAUNDRY/lib/msun/tests/Makefile user/alc/PQ_LAUNDRY/share/dtrace/mbuf.d user/alc/PQ_LAUNDRY/share/examples/libifconfig/ifcreate.c user/alc/PQ_LAUNDRY/share/examples/libifconfig/ifdestroy.c user/alc/PQ_LAUNDRY/share/examples/libifconfig/setdescription.c user/alc/PQ_LAUNDRY/share/examples/libifconfig/setmtu.c user/alc/PQ_LAUNDRY/share/man/man9/Makefile user/alc/PQ_LAUNDRY/share/man/man9/pmap.9 user/alc/PQ_LAUNDRY/share/man/man9/pmap_zero_page.9 user/alc/PQ_LAUNDRY/sys/amd64/amd64/pmap.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_sid.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/if_awg.c user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v4.c user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v6.c user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c user/alc/PQ_LAUNDRY/sys/arm64/conf/GENERIC user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm64/a64.dtsi user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm64/pine64_plus.dts user/alc/PQ_LAUNDRY/sys/boot/i386/Makefile.inc user/alc/PQ_LAUNDRY/sys/boot/i386/boot0/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/boot2/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/btx/btx/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/btx/btxldr/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/cdboot/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/gptboot/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/gptzfsboot/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/mbr/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/pmbr/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/pxeldr/Makefile user/alc/PQ_LAUNDRY/sys/boot/i386/zfsboot/Makefile user/alc/PQ_LAUNDRY/sys/boot/mips/uboot/ldscript.mips user/alc/PQ_LAUNDRY/sys/boot/pc98/Makefile.inc user/alc/PQ_LAUNDRY/sys/boot/pc98/boot0/Makefile user/alc/PQ_LAUNDRY/sys/boot/pc98/boot2/Makefile user/alc/PQ_LAUNDRY/sys/boot/pc98/btx/btx/Makefile user/alc/PQ_LAUNDRY/sys/boot/pc98/btx/btxldr/Makefile user/alc/PQ_LAUNDRY/sys/boot/pc98/cdboot/Makefile user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_checksum.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h user/alc/PQ_LAUNDRY/sys/conf/files user/alc/PQ_LAUNDRY/sys/conf/files.arm64 user/alc/PQ_LAUNDRY/sys/conf/kern.mk user/alc/PQ_LAUNDRY/sys/conf/ldscript.arm64 user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_erom.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_eromvar.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_nexus.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcmavar.h 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_match.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_nexus.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhnd_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_bus_if.m user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_if.m user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_pci.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_pci_sprom.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_private.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndbvar.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/cores/chipc/chipcreg.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_nexus.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/sibareg.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/sibavar.h user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn_pci.c user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn_pcivar.h user/alc/PQ_LAUNDRY/sys/dev/cxgb/cxgb_sge.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/cxgbei/cxgbei.c user/alc/PQ_LAUNDRY/sys/dev/drm2/drmP.h user/alc/PQ_LAUNDRY/sys/dev/ppbus/ppb_1284.c user/alc/PQ_LAUNDRY/sys/dev/ppbus/ppb_base.c user/alc/PQ_LAUNDRY/sys/dev/ppbus/ppbconf.h user/alc/PQ_LAUNDRY/sys/dev/usb/serial/uplcom.c user/alc/PQ_LAUNDRY/sys/i386/i386/pmap.c user/alc/PQ_LAUNDRY/sys/i386/include/pmap.h user/alc/PQ_LAUNDRY/sys/kern/subr_sleepqueue.c user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_machdep.c user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_machdep.h user/alc/PQ_LAUNDRY/sys/mips/broadcom/bcm_pmu.c user/alc/PQ_LAUNDRY/sys/mips/broadcom/files.broadcom user/alc/PQ_LAUNDRY/sys/mips/mips/pmap.c user/alc/PQ_LAUNDRY/sys/modules/bhnd/Makefile user/alc/PQ_LAUNDRY/sys/modules/bhnd/bcma/Makefile user/alc/PQ_LAUNDRY/sys/modules/bhnd/bcma_bhndb/Makefile user/alc/PQ_LAUNDRY/sys/modules/bhnd/bhndb/Makefile user/alc/PQ_LAUNDRY/sys/modules/bhnd/siba/Makefile user/alc/PQ_LAUNDRY/sys/modules/bhnd/siba_bhndb/Makefile user/alc/PQ_LAUNDRY/sys/modules/bwn/Makefile user/alc/PQ_LAUNDRY/sys/netinet/igmp.c user/alc/PQ_LAUNDRY/sys/powerpc/aim/mmu_oea.c user/alc/PQ_LAUNDRY/sys/powerpc/aim/mmu_oea64.c user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/mmu_if.m user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/pmap_dispatch.c user/alc/PQ_LAUNDRY/sys/riscv/riscv/pmap.c user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/pmap.c user/alc/PQ_LAUNDRY/sys/sys/filedesc.h user/alc/PQ_LAUNDRY/sys/vm/pmap.h user/alc/PQ_LAUNDRY/sys/vm/swap_pager.c user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c user/alc/PQ_LAUNDRY/sys/vm/vm_page.c user/alc/PQ_LAUNDRY/sys/vm/vm_page.h user/alc/PQ_LAUNDRY/sys/vm/vm_phys.c user/alc/PQ_LAUNDRY/sys/vm/vm_phys.h user/alc/PQ_LAUNDRY/tests/sys/acl/04.sh user/alc/PQ_LAUNDRY/tests/sys/mac/bsdextended/matches_test.sh user/alc/PQ_LAUNDRY/usr.sbin/unbound/checkconf/Makefile user/alc/PQ_LAUNDRY/usr.sbin/unbound/control/Makefile user/alc/PQ_LAUNDRY/usr.sbin/unbound/daemon/Makefile Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) user/alc/PQ_LAUNDRY/cddl/ (props changed) user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/ (props changed) user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/zdb/ (props changed) user/alc/PQ_LAUNDRY/contrib/libcxxrt/ (props changed) user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ (props changed) user/alc/PQ_LAUNDRY/contrib/one-true-awk/ (props changed) user/alc/PQ_LAUNDRY/contrib/unbound/ (props changed) user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/ (props changed) Modified: user/alc/PQ_LAUNDRY/bin/cat/tests/Makefile ============================================================================== --- user/alc/PQ_LAUNDRY/bin/cat/tests/Makefile Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/bin/cat/tests/Makefile Sun Sep 4 22:55:05 2016 (r305400) @@ -6,7 +6,15 @@ NETBSD_ATF_TESTS_SH= cat_test ${PACKAGE}FILES+= d_align.in ${PACKAGE}FILES+= d_align.out +${PACKAGE}FILES+= d_se_output.in +${PACKAGE}FILES+= d_se_output.out .include +d_align.out: ${TESTSRC}/d_align.out + sed -E -e 's,^[[:space:]]{7}\$$$$,\$$,' < ${.ALLSRC} > ${.TARGET}.tmp + mv ${.TARGET}.tmp ${.TARGET} + +CLEANFILES+= d_align.out d_align.out.tmp + .include Modified: user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/zdb/zdb.c Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/zdb/zdb.c Sun Sep 4 22:55:05 2016 (r305400) @@ -21,7 +21,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright (c) 2011, 2016 by Delphix. All rights reserved. * Copyright (c) 2014 Integros [integros.com] */ @@ -117,7 +117,7 @@ static void usage(void) { (void) fprintf(stderr, - "Usage: %s [-CumMdibcsDvhLXFPA] [-t txg] [-e [-p path...]] " + "Usage: %s [-CumMdibcsDvhLXFPAG] [-t txg] [-e [-p path...]] " "[-U config] [-I inflight I/Os] [-x dumpdir] poolname [object...]\n" " %s [-divPA] [-e -p path...] [-U config] dataset " "[object...]\n" @@ -178,12 +178,23 @@ usage(void) (void) fprintf(stderr, " -I -- " "specify the maximum number of " "checksumming I/Os [default is 200]\n"); + (void) fprintf(stderr, " -G dump zfs_dbgmsg buffer before " + "exiting\n"); (void) fprintf(stderr, "Specify an option more than once (e.g. -bb) " "to make only that option verbose\n"); (void) fprintf(stderr, "Default is to dump everything non-verbosely\n"); exit(1); } +static void +dump_debug_buffer() +{ + if (dump_opt['G']) { + (void) printf("\n"); + zfs_dbgmsg_print("zdb"); + } +} + /* * Called for usage errors that are discovered after a call to spa_open(), * dmu_bonus_hold(), or pool_match(). abort() is called for other errors. @@ -200,6 +211,8 @@ fatal(const char *fmt, ...) va_end(ap); (void) fprintf(stderr, "\n"); + dump_debug_buffer(); + exit(1); } @@ -1289,7 +1302,7 @@ visit_indirect(spa_t *spa, const dnode_p } if (!err) ASSERT3U(fill, ==, BP_GET_FILL(bp)); - (void) arc_buf_remove_ref(buf, &buf); + arc_buf_destroy(buf, &buf); } return (err); @@ -3103,8 +3116,10 @@ dump_zpool(spa_t *spa) if (dump_opt['h']) dump_history(spa); - if (rc != 0) + if (rc != 0) { + dump_debug_buffer(); exit(rc); + } } #define ZDB_FLAG_CHECKSUM 0x0001 @@ -3575,7 +3590,7 @@ main(int argc, char **argv) spa_config_path = spa_config_path_env; while ((c = getopt(argc, argv, - "bcdhilmMI:suCDRSAFLXx:evp:t:U:P")) != -1) { + "bcdhilmMI:suCDRSAFLXx:evp:t:U:PG")) != -1) { switch (c) { case 'b': case 'c': @@ -3591,6 +3606,7 @@ main(int argc, char **argv) case 'M': case 'R': case 'S': + case 'G': dump_opt[c]++; dump_all = 0; break; @@ -3826,6 +3842,8 @@ main(int argc, char **argv) fuid_table_destroy(); sa_loaded = B_FALSE; + dump_debug_buffer(); + libzfs_fini(g_zfs); kernel_fini(); Modified: user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/ztest/ztest.c Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/cmd/ztest/ztest.c Sun Sep 4 22:55:05 2016 (r305400) @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, 2015 by Delphix. All rights reserved. + * Copyright (c) 2011, 2016 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012 Martin Matuska . All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. @@ -189,6 +189,7 @@ extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; extern uint64_t zfs_deadman_synctime_ms; extern int metaslab_preload_limit; +extern boolean_t zfs_compressed_arc_enabled; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -4792,7 +4793,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 char path0[MAXPATHLEN]; char pathrand[MAXPATHLEN]; size_t fsize; - int bshift = SPA_OLD_MAXBLOCKSHIFT + 2; /* don't scrog all labels */ + int bshift = SPA_MAXBLOCKSHIFT + 2; int iters = 1000; int maxfaults; int mirror_save; @@ -4953,11 +4954,58 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 fsize = lseek(fd, 0, SEEK_END); while (--iters != 0) { + /* + * The offset must be chosen carefully to ensure that + * we do not inject a given logical block with errors + * on two different leaf devices, because ZFS can not + * tolerate that (if maxfaults==1). + * + * We divide each leaf into chunks of size + * (# leaves * SPA_MAXBLOCKSIZE * 4). Within each chunk + * there is a series of ranges to which we can inject errors. + * Each range can accept errors on only a single leaf vdev. + * The error injection ranges are separated by ranges + * which we will not inject errors on any device (DMZs). + * Each DMZ must be large enough such that a single block + * can not straddle it, so that a single block can not be + * a target in two different injection ranges (on different + * leaf vdevs). + * + * For example, with 3 leaves, each chunk looks like: + * 0 to 32M: injection range for leaf 0 + * 32M to 64M: DMZ - no injection allowed + * 64M to 96M: injection range for leaf 1 + * 96M to 128M: DMZ - no injection allowed + * 128M to 160M: injection range for leaf 2 + * 160M to 192M: DMZ - no injection allowed + */ offset = ztest_random(fsize / (leaves << bshift)) * (leaves << bshift) + (leaf << bshift) + (ztest_random(1ULL << (bshift - 1)) & -8ULL); - if (offset >= fsize) + /* + * Only allow damage to the labels at one end of the vdev. + * + * If all labels are damaged, the device will be totally + * inaccessible, which will result in loss of data, + * because we also damage (parts of) the other side of + * the mirror/raidz. + * + * Additionally, we will always have both an even and an + * odd label, so that we can handle crashes in the + * middle of vdev_config_sync(). + */ + if ((leaf & 1) == 0 && offset < VDEV_LABEL_START_SIZE) + continue; + + /* + * The two end labels are stored at the "end" of the disk, but + * the end of the disk (vdev_psize) is aligned to + * sizeof (vdev_label_t). + */ + uint64_t psize = P2ALIGN(fsize, sizeof (vdev_label_t)); + if ((leaf & 1) == 1 && + offset + sizeof (bad) > psize - VDEV_LABEL_END_SIZE) continue; VERIFY(mutex_lock(&ztest_vdev_lock) == 0); @@ -5021,9 +5069,14 @@ ztest_ddt_repair(ztest_ds_t *zd, uint64_ return; } + dmu_objset_stats_t dds; + dsl_pool_config_enter(dmu_objset_pool(os), FTAG); + dmu_objset_fast_stat(os, &dds); + dsl_pool_config_exit(dmu_objset_pool(os), FTAG); + object = od[0].od_object; blocksize = od[0].od_blocksize; - pattern = zs->zs_guid ^ dmu_objset_fsid_guid(os); + pattern = zs->zs_guid ^ dds.dds_guid; ASSERT(object != 0); @@ -5355,6 +5408,12 @@ ztest_resume_thread(void *arg) if (spa_suspended(spa)) ztest_resume(spa); (void) poll(NULL, 0, 100); + + /* + * Periodically change the zfs_compressed_arc_enabled setting. + */ + if (ztest_random(10) == 0) + zfs_compressed_arc_enabled = ztest_random(2); } return (NULL); } @@ -5620,9 +5679,13 @@ ztest_run(ztest_shared_t *zs) metaslab_preload_limit = ztest_random(20) + 1; ztest_spa = spa; + dmu_objset_stats_t dds; VERIFY0(dmu_objset_own(ztest_opts.zo_pool, DMU_OST_ANY, B_TRUE, FTAG, &os)); - zs->zs_guid = dmu_objset_fsid_guid(os); + dsl_pool_config_enter(dmu_objset_pool(os), FTAG); + dmu_objset_fast_stat(os, &dds); + dsl_pool_config_exit(dmu_objset_pool(os), FTAG); + zs->zs_guid = dds.dds_guid; dmu_objset_disown(os, FTAG); spa->spa_dedup_ditto = 2 * ZIO_DEDUPDITTO_MIN; Modified: user/alc/PQ_LAUNDRY/contrib/libcxxrt/unwind-arm.h ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/libcxxrt/unwind-arm.h Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/contrib/libcxxrt/unwind-arm.h Sun Sep 4 22:55:05 2016 (r305400) @@ -28,7 +28,7 @@ { _URC_OK = 0, /* operation completed successfully */ _URC_FOREIGN_EXCEPTION_CAUGHT = 1, - _URC_END_OF_STACK = 5, + _URC_END_OF_STACK = 5, _URC_HANDLER_FOUND = 6, _URC_INSTALL_CONTEXT = 7, _URC_CONTINUE_UNWIND = 8, @@ -43,10 +43,12 @@ typedef uint32_t _Unwind_State; static const _Unwind_State _US_VIRTUAL_UNWIND_FRAME = 0; static const _Unwind_State _US_UNWIND_FRAME_STARTING = 1; static const _Unwind_State _US_UNWIND_FRAME_RESUME = 2; +static const _Unwind_State _US_ACTION_MASK = 3; #else // GCC fails at knowing what a constant expression is # define _US_VIRTUAL_UNWIND_FRAME 0 # define _US_UNWIND_FRAME_STARTING 1 -# define _US_UNWIND_FRAME_RESUME 2 +# define _US_UNWIND_FRAME_RESUME 2 +# define _US_ACTION_MASK 3 #endif typedef struct _Unwind_Context _Unwind_Context; Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.in ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.in Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.in Sun Sep 4 22:55:05 2016 (r305400) @@ -1,3 +1,5 @@ a b c + 1 2 3 + x y z Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.out ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.out Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_align.out Sun Sep 4 22:55:05 2016 (r305400) @@ -1,3 +1,5 @@ 1 a b c$ + $ 2 1 2 3$ + $ 3 x y z$ Copied: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.in (from r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.in Sun Sep 4 22:55:05 2016 (r305400, copy of r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.in) @@ -0,0 +1,3 @@ + +Of course it runs NetBSD + Copied: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.out (from r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.out) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/d_se_output.out Sun Sep 4 22:55:05 2016 (r305400, copy of r305399, head/contrib/netbsd-tests/bin/cat/d_se_output.out) @@ -0,0 +1,3 @@ +$ +Of course it runs NetBSD$ +$ Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/t_cat.sh ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/t_cat.sh Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/cat/t_cat.sh Sun Sep 4 22:55:05 2016 (r305400) @@ -1,4 +1,4 @@ -# $NetBSD: t_cat.sh,v 1.2 2012/03/27 17:57:02 jruoho Exp $ +# $NetBSD: t_cat.sh,v 1.3 2016/06/16 01:04:58 sevan Exp $ # # Copyright (c) 2012 The NetBSD Foundation, Inc. # All rights reserved. @@ -52,8 +52,20 @@ nonexistent_body() { -x "cat /some/name/that/does/not/exist" } +atf_test_case se_output +se_output_head() { + atf_set "descr" "Test that cat(1) prints a $ sign " \ + "on blank lines with options '-se' (PR bin/51250)" +} + +se_output_body() { + atf_check -s ignore -o file:$(atf_get_srcdir)/d_se_output.out \ + -x "cat -se $(atf_get_srcdir)/d_se_output.in" +} + atf_init_test_cases() { atf_add_test_case align atf_add_test_case nonexistent + atf_add_test_case se_output } Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command Sun Sep 4 22:30:46 2016 (r305399) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command Sun Sep 4 22:55:05 2016 (r305400) @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: scoped_command,v 1.1 2014/05/31 14:29:06 christos Exp $ +# $NetBSD: scoped_command,v 1.2 2016/03/27 14:57:50 christos Exp $ # # Copyright (c) 2014 The NetBSD Foundation, Inc. # All rights reserved. @@ -30,6 +30,27 @@ # POSSIBILITY OF SUCH DAMAGE. # +: ${TEST_SH:=/bin/sh} + +sane_sh() +{ + set -- ${TEST_SH} + case "$#" in + (0) set /bin/sh;; + (1|2) ;; + (*) set "$1";; # Just ignore options if we cannot make them work + esac + + case "$1" in + /*) TEST_SH="$1${2+ }$2";; + ./*) TEST_SH="${PWD}${1#.}${2+ }$2";; + */*) TEST_SH="${PWD}/$1${2+ }$2";; + *) TEST_SH="$( command -v "$1" )${2+ }$2";; + esac +} + +sane_sh + set -e # USAGE: @@ -52,7 +73,7 @@ cmd="echo 'before ${3}' ${2} echo 'after ${3}, return value:' ${?}" -echo "#!/bin/sh" +echo "#!${TEST_SH}" [ 'func' = "${1}" ] && cat </dev/null + then + # 16 bits or less, or hex unsupported, just give up... + return + fi + test $( ${TEST_SH} -c 'echo $(( 0x1FFFF ))' ) = 131071 || return + + # when attempting to exceed the number of available bits + # the shell may react in any of 3 (rational) ways + # 1. syntax error (maybe even core dump...) and fail + # 2. represent a positive number input as negative value + # 3. keep the number positive, but not the value expected + # (perhaps pegged at the max possible value) + # any of those may be accompanied by a message to stderr + + # Must check all 3 possibilities for each plausible size + # Tests do not use 0x8000... because that value can have weird + # other side effects that are not relevant to discover here. + # But we do want to try and force the sign bit set. + + if ! ${TEST_SH} -c ': $(( 0xC0000000 ))' 2>/dev/null + then + # proobably shell detected overflow and complained + ARITH_BITS=32 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c 'case $(( 0xC0000000 )); in (-*) exit 0;; esac; exit 1' + then + ARITH_BITS=32 + return + fi + if ${TEST_SH} -c '[ $(( 0xC0000000 )) != 3221225472 ]' 2>/dev/null + then + ARITH_BITS=32 + return + fi + + if ! ${TEST_SH} -c ': $(( 0xC000000000000000 ))' 2>/dev/null + then + ARITH_BITS=64 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c 'case $(( 0xC000000000000000 )); in (-*) exit 0;; esac; exit 1' + then + ARITH_BITS=64 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c '[ $((0xC000000000000000)) != 13835058055282163712 ]' + then + ARITH_BITS=64 + return + fi + + if ${TEST_SH} 2>/dev/null -c \ + '[ $((0x123456781234567812345678)) = 5634002657842756053938493048 ]' + then + # just assume... (for now anyway, revisit when it happens...) + ARITH_BITS=96 + return + fi +} + +atf_test_case constants +constants_head() +{ + atf_set "descr" "Tests that arithmetic expansion can handle constants" +} +constants_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((0x0))' + + # atf_expect_fail "PR bin/50959" + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((0X0))' + # atf_expect_pass + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((000))' + + atf_check -s exit:0 -o inline:'1\n' -e empty \ + ${TEST_SH} -c 'echo $(( 000000001 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x000000 ))' + + atf_check -s exit:0 -o inline:'99999\n' -e empty \ + ${TEST_SH} -c 'echo $((99999))' + + [ ${ARITH_BITS} -gt 44 ] && + atf_check -s exit:0 -o inline:'9191919191919\n' -e empty \ + ${TEST_SH} -c 'echo $((9191919191919))' + + atf_check -s exit:0 -o inline:'13\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xD ))' + atf_check -s exit:0 -o inline:'11\n' -e empty ${TEST_SH} -c \ + 'echo $(( 013 ))' + atf_check -s exit:0 -o inline:'7\n' -e empty ${TEST_SH} -c \ + 'x=7;echo $(($x))' + atf_check -s exit:0 -o inline:'9\n' -e empty ${TEST_SH} -c \ + 'x=9;echo $((x))' + + atf_check -s exit:0 -o inline:'11\n' -e empty \ + ${TEST_SH} -c 'x=0xB; echo $(( $x ))' + atf_check -s exit:0 -o inline:'27\n' -e empty \ + ${TEST_SH} -c 'x=0X1B; echo $(( x ))' + atf_check -s exit:0 -o inline:'27\n' -e empty \ + ${TEST_SH} -c 'X=033; echo $(( $X ))' + atf_check -s exit:0 -o inline:'219\n' -e empty \ + ${TEST_SH} -c 'X=0333; echo $(( X ))' + atf_check -s exit:0 -o inline:'0\n' -e empty \ + ${TEST_SH} -c 'NULL=; echo $(( NULL ))' + + # Not clear if this is 0, nothing, or an error, so omit for now + # atf_check -s exit:0 -o inline:'0\n' -e empty \ + # ${TEST_SH} -c 'echo $(( ))' + + # not clear whether this should return 0 or an error, so omit for now + # atf_check -s exit:0 -o inline:'0\n' -e empty \ + # ${TEST_SH} -c 'echo $(( UNDEFINED_VAR ))' +} + + +atf_test_case do_unary_plus +do_unary_plus_head() +{ + atf_set "descr" "Tests that unary plus works as expected" +} +do_unary_plus_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( +0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( +1 ))' + atf_check -s exit:0 -o inline:'6\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 6 ))' + atf_check -s exit:0 -o inline:'4321\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 4321 ))' + atf_check -s exit:0 -o inline:'17185\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 0x4321 ))' +} + +atf_test_case do_unary_minus +do_unary_minus_head() +{ + atf_set "descr" "Tests that unary minus works as expected" +} +do_unary_minus_body() +{ + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 0 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 1 ))' + atf_check -s exit:0 -o inline:'-6\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 6 ))' + atf_check -s exit:0 -o inline:'-4321\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 4321 ))' + atf_check -s exit:0 -o inline:'-2257\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 04321 ))' + atf_check -s exit:0 -o inline:'-7\n' -e empty ${TEST_SH} -c \ + 'echo $((-7))' +} + +atf_test_case do_unary_not +do_unary_not_head() +{ + atf_set "descr" "Tests that unary not (boolean) works as expected" +} +do_unary_not_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 0 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( !1234 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( !0xFFFF ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 000000 ))' +} + +atf_test_case do_unary_tilde +do_unary_tilde_head() +{ + atf_set "descr" "Tests that unary not (bitwise) works as expected" +} +do_unary_tilde_body() +{ + # definitely 2's complement arithmetic here... + + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~ 0 ))' + atf_check -s exit:0 -o inline:'-2\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~ 1 ))' + + atf_check -s exit:0 -o inline:'-1235\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~1234 ))' + atf_check -s exit:0 -o inline:'-256\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~0xFF ))' +} + +atf_test_case elementary_add +elementary_add_head() +{ + atf_set "descr" "Tests that simple addition works as expected" +} +elementary_add_body() +{ + # some of these tests actually test unary ops & op precedence... + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 + 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 + 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 + 1 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 + 1 ))' + atf_check -s exit:0 -o inline:'10\n' -e empty ${TEST_SH} -c \ + 'echo $(( 4 + 6 ))' + atf_check -s exit:0 -o inline:'10\n' -e empty ${TEST_SH} -c \ + 'echo $(( 6 + 4 ))' + atf_check -s exit:0 -o inline:'5555\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 + 4321 ))' + atf_check -s exit:0 -o inline:'3333\n' -e empty ${TEST_SH} -c \ + 'echo $((1111+2222))' + atf_check -s exit:0 -o inline:'5555\n' -e empty ${TEST_SH} -c \ + 'echo $((+3333+2222))' + atf_check -s exit:0 -o inline:'7777\n' -e empty ${TEST_SH} -c \ + 'echo $((+3333 + +4444))' + atf_check -s exit:0 -o inline:'-7777\n' -e empty ${TEST_SH} -c \ + 'echo -$((+4125+ +3652))' +} + +atf_test_case elementary_sub +elementary_sub_head() +{ + atf_set "descr" "Tests that simple subtraction works as expected" +} +elementary_sub_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 - 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 - 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 - 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 - 1 ))' + atf_check -s exit:0 -o inline:'488\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1066 - 578 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016-5678 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016+-5678 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016-+5678 ))' + atf_check -s exit:0 -o inline:'-7694\n' -e empty ${TEST_SH} -c \ + 'echo $(( -2016-5678 ))' + atf_check -s exit:0 -o inline:'--1\n' -e empty ${TEST_SH} -c \ + 'echo -$(( -1018 - -1017 ))' +} + +atf_test_case elementary_mul +elementary_mul_head() +{ + atf_set "descr" "Tests that simple multiplication works as expected" +} +elementary_mul_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 * 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 * 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 * 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * -1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 * -1 ))' + atf_check -s exit:0 -o inline:'391\n' -e empty ${TEST_SH} -c \ + 'echo $(( 17 * 23 ))' + atf_check -s exit:0 -o inline:'169\n' -e empty ${TEST_SH} -c \ + 'echo $(( 13*13 ))' + atf_check -s exit:0 -o inline:'-11264\n' -e empty ${TEST_SH} -c \ + 'echo $(( -11 *1024 ))' + atf_check -s exit:0 -o inline:'-16983\n' -e empty ${TEST_SH} -c \ + 'echo $(( 17* -999 ))' + atf_check -s exit:0 -o inline:'9309\n' -e empty ${TEST_SH} -c \ + 'echo $(( -29*-321 ))' +} + +atf_test_case elementary_div +elementary_div_head() +{ + atf_set "descr" "Tests that simple division works as expected" +} +elementary_div_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 / 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 / 1 ))' + test ${ARITH_BITS} -ge 38 && + atf_check -s exit:0 -o inline:'99999999999\n' -e empty \ + ${TEST_SH} -c 'echo $(( 99999999999 / 1 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 / 1 ))' + + atf_check -s exit:0 -o inline:'3\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 4 ))' + + atf_check -s exit:0 -o inline:'173\n' -e empty ${TEST_SH} -c \ + 'echo $(( 123456 / 713 ))' + atf_check -s exit:0 -o inline:'13\n' -e empty ${TEST_SH} -c \ + 'echo $(( 169 / 13 ))' +} + +atf_test_case elementary_rem +elementary_rem_head() +{ + atf_set "descr" "Tests that simple modulus works as expected" +} +elementary_rem_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 9999 % 1 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 2 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xFFFF % 2 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 3 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 3 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 % 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3123 % 3 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 9999 % 2 ))' + + atf_check -s exit:0 -o inline:'107\n' -e empty ${TEST_SH} -c \ + 'echo $(( 123456%173 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((169%13))' +} + +atf_test_case elementary_shl +elementary_shl_head() +{ + atf_set "descr" "Tests that simple shift left works as expected" +} +elementary_shl_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 17 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 0 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 1 ))' + atf_check -s exit:0 -o inline:'131072\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 17 ))' + + atf_check -s exit:0 -o inline:'2021161080\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x3C3C3C3C << 1 ))' + + test "${ARITH_BITS}" -ge 40 && + atf_check -s exit:0 -o inline:'129354309120\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x3C3C3C3C << 7 ))' + test "${ARITH_BITS}" -ge 72 && + atf_check -s exit:0 -o inline:'1111145054534149079040\n' \ + -e empty ${TEST_SH} -c 'echo $(( 0x3C3C3C3C << 40 ))' + + return 0 +} + +atf_test_case elementary_shr +elementary_shr_head() +{ + atf_set "descr" "Tests that simple shift right works as expected" +} +elementary_shr_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 17 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 >> 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 >> 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 >> 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 >> 1 ))' + + atf_check -s exit:0 -o inline:'4\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x10 >> 2 ))' + atf_check -s exit:0 -o inline:'4\n' -e empty ${TEST_SH} -c \ + 'echo $(( 022 >> 2 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 131072 >> 17 ))' + + test ${ARITH_BITS} -ge 40 && + atf_check -s exit:0 -o inline:'8\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x4000000000 >> 35 ))' + test ${ARITH_BITS} -ge 80 && + atf_check -s exit:0 -o inline:'4464\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x93400FACE005C871000 >> 64 ))' + + return 0 +} + +atf_test_case elementary_eq +elementary_eq_head() +{ + atf_set "descr" "Tests that simple equality test works as expected" +} +elementary_eq_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0000 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0x00 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 == 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=30; Y=0x1E; echo $(( X == Y ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 == 4660 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 == 011064 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0000000000000001 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0x10000000000000 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 == 2 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=3; Y=7; echo $(( X == Y ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 == 0x4660 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 01234 == 0x11064 ))' +} +atf_test_case elementary_ne +elementary_ne_head() +{ + atf_set "descr" "Tests that simple inequality test works as expected" +} +elementary_ne_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 != 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x71 != 17 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 != 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 != 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=3; echo $(( X != 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=3; Y=0x11; echo $(( X != Y ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 != 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 != 0x0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA != 012 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=1; echo $(( X != 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=0xC; Y=014; echo $(( X != Y ))' +} +atf_test_case elementary_lt +elementary_lt_head() +{ + atf_set "descr" "Tests that simple less than test works as expected" +} +elementary_lt_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 < 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 10 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 100 < 101 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA1 < 200 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 < 0 ))' + + test ${ARITH_BITS} -ge 40 && + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1BEEFF00D < 0x1FACECAFE ))' + + return 0 +} +atf_test_case elementary_le *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@freebsd.org Wed Sep 7 00:34:49 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 695CEBCE963 for ; Wed, 7 Sep 2016 00:34:49 +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 17436D4E; Wed, 7 Sep 2016 00:34:49 +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 u870YmT3006314; Wed, 7 Sep 2016 00:34:48 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u870YkPs006291; Wed, 7 Sep 2016 00:34:46 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201609070034.u870YkPs006291@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 7 Sep 2016 00:34:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305510 - in user/alc/PQ_LAUNDRY: . contrib/gcclibs/libcpp contrib/libarchive contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/netbsd-tests/kernel/kqueue contrib... 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.23 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, 07 Sep 2016 00:34:49 -0000 Author: markj Date: Wed Sep 7 00:34:45 2016 New Revision: 305510 URL: https://svnweb.freebsd.org/changeset/base/305510 Log: MFH r305509 Added: user/alc/PQ_LAUNDRY/contrib/libarchive/README.md - copied unchanged from r305509, head/contrib/libarchive/README.md user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_25g.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_25g.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_25g.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_25g.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_25g_internal_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_25g_internal_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_25g_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_25g_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_hssp.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_hssp.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_hssp_internal_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_hssp_internal_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_hssp_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_hssp_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes_interface.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_hal_serdes_interface.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_serdes.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_serdes.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_serdes.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/al_serdes.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_common.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_common.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_iofic.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_iofic.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_iofic.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_iofic.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_iofic_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_iofic_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_nb_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_nb_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pbs_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pbs_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie_axi_reg.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie_axi_reg.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie_interrupts.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie_interrupts.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_pcie_w_reg.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_pcie_w_reg.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_plat_services.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_plat_services.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_plat_types.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_plat_types.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_reg_utils.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_reg_utils.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_25g.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_25g.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_25g.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_25g.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_25g_internal_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_25g_internal_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_25g_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_25g_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp_internal_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp_internal_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_hssp_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_interface.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_interface.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_internal_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_internal_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_serdes_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_serdes_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_types.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_types.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_config.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_config.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_config.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_config.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_debug.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_debug.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_debug.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_debug.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_iofic.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_iofic.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_iofic.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_iofic.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_iofic_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_iofic_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_main.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_main.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_regs_gen.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_regs_gen.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_regs_m2s.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_regs_m2s.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_udma_regs_s2m.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_udma_regs_s2m.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_unit_adapter_regs.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_hal_unit_adapter_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_serdes.c - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_serdes.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_serdes.h - copied unchanged from r305509, head/sys/contrib/alpine-hal/eth/al_serdes.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/eth/ - copied from r305509, head/sys/contrib/alpine-hal/eth/eth/ user/alc/PQ_LAUNDRY/sys/dev/bhnd/cores/usb/ - copied from r305509, head/sys/dev/bhnd/cores/usb/ user/alc/PQ_LAUNDRY/sys/dev/cpufreq/cpufreq_dt.c - copied unchanged from r305509, head/sys/dev/cpufreq/cpufreq_dt.c user/alc/PQ_LAUNDRY/sys/dev/iicbus/sy8106a.c - copied unchanged from r305509, head/sys/dev/iicbus/sy8106a.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/libkqueue/ - copied from r305509, head/tests/sys/kqueue/libkqueue/ Replaced: user/alc/PQ_LAUNDRY/tests/sys/kqueue/Makefile - copied unchanged from r305509, head/tests/sys/kqueue/Makefile Deleted: user/alc/PQ_LAUNDRY/contrib/libarchive/README user/alc/PQ_LAUNDRY/tests/sys/kqueue/Makefile.depend user/alc/PQ_LAUNDRY/tests/sys/kqueue/common.h user/alc/PQ_LAUNDRY/tests/sys/kqueue/config.h user/alc/PQ_LAUNDRY/tests/sys/kqueue/kqueue_test.sh user/alc/PQ_LAUNDRY/tests/sys/kqueue/main.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/proc.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/read.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/signal.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/timer.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/user.c user/alc/PQ_LAUNDRY/tests/sys/kqueue/vnode.c Modified: user/alc/PQ_LAUNDRY/ObsoleteFiles.inc user/alc/PQ_LAUNDRY/contrib/gcclibs/libcpp/system.h user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_acl.c user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_file.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc1.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc2.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc3.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_sig.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_vnode.c user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c user/alc/PQ_LAUNDRY/contrib/top/commands.c user/alc/PQ_LAUNDRY/contrib/top/machine.h user/alc/PQ_LAUNDRY/contrib/top/top.c user/alc/PQ_LAUNDRY/contrib/top/top.xs user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist user/alc/PQ_LAUNDRY/lib/libarchive/config_freebsd.h user/alc/PQ_LAUNDRY/lib/libc/stdio/fgets.c user/alc/PQ_LAUNDRY/lib/libc/stdio/fgetws.c user/alc/PQ_LAUNDRY/lib/libc/tests/db/Makefile user/alc/PQ_LAUNDRY/lib/libstand/ufs.c user/alc/PQ_LAUNDRY/share/man/man9/Makefile user/alc/PQ_LAUNDRY/share/man/man9/pci.9 user/alc/PQ_LAUNDRY/sys/amd64/amd64/machdep.c user/alc/PQ_LAUNDRY/sys/amd64/amd64/prof_machdep.c user/alc/PQ_LAUNDRY/sys/amd64/conf/NOTES user/alc/PQ_LAUNDRY/sys/amd64/vmm/io/iommu.c user/alc/PQ_LAUNDRY/sys/amd64/vmm/io/ppt.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_thsclk.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/files.allwinner user/alc/PQ_LAUNDRY/sys/arm/arm/minidump_machdep.c user/alc/PQ_LAUNDRY/sys/arm/conf/ALLWINNER user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/am335x_scm.h user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpsw.c user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpswreg.h user/alc/PQ_LAUNDRY/sys/arm/ti/ti_pruss.c user/alc/PQ_LAUNDRY/sys/arm64/conf/GENERIC user/alc/PQ_LAUNDRY/sys/boot/efi/loader/copy.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c user/alc/PQ_LAUNDRY/sys/conf/files user/alc/PQ_LAUNDRY/sys/conf/files.arm user/alc/PQ_LAUNDRY/sys/conf/files.arm64 user/alc/PQ_LAUNDRY/sys/conf/options.amd64 user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_iofic.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_iofic.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_iofic_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_nb_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pbs_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie_axi_reg.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie_interrupts.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_pcie_w_reg.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_plat_services.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_plat_types.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_reg_utils.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_serdes.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_config.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_config.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_debug.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_iofic.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_main.c user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_udma_regs_gen.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/al_hal_unit_adapter_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_eth.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_eth_mac_regs.h user/alc/PQ_LAUNDRY/sys/contrib/alpine-hal/eth/al_hal_eth_main.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcma_dmp.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bcma/bcmavar.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd.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_nexus.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhnd_types.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhnd_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_pci.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/bhndb/bhndb_pcivar.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/cores/pmu/bhnd_pmu_subr.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/siba_bhndb.c user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/sibareg.h user/alc/PQ_LAUNDRY/sys/dev/bhnd/siba/sibavar.h user/alc/PQ_LAUNDRY/sys/dev/bwn/bwn_mac.c user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn_pci.c user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn_pcivar.h user/alc/PQ_LAUNDRY/sys/dev/cxgbe/tom/t4_connect.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/ndis.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/vmbus/vmbus_chan.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/vmbus/vmbus_reg.h user/alc/PQ_LAUNDRY/sys/dev/iscsi/iscsi.c user/alc/PQ_LAUNDRY/sys/dev/iwm/if_iwm_scan.c user/alc/PQ_LAUNDRY/sys/dev/iwm/if_iwmreg.h user/alc/PQ_LAUNDRY/sys/dev/pci/pci.c user/alc/PQ_LAUNDRY/sys/dev/pci/pci_host_generic.c user/alc/PQ_LAUNDRY/sys/dev/pci/pci_host_generic.h user/alc/PQ_LAUNDRY/sys/dev/pci/pcireg.h user/alc/PQ_LAUNDRY/sys/dev/pci/pcivar.h user/alc/PQ_LAUNDRY/sys/dev/rtwn/if_rtwn.c user/alc/PQ_LAUNDRY/sys/dev/usb/template/usb_template.c user/alc/PQ_LAUNDRY/sys/dev/usb/usb_device.c user/alc/PQ_LAUNDRY/sys/dev/usb/usb_device.h user/alc/PQ_LAUNDRY/sys/dev/usb/usb_generic.c user/alc/PQ_LAUNDRY/sys/dev/usb/usb_request.c user/alc/PQ_LAUNDRY/sys/dev/usb/usb_transfer.c user/alc/PQ_LAUNDRY/sys/dev/usb/usb_util.c user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_rum.c user/alc/PQ_LAUNDRY/sys/fs/nullfs/null_vnops.c user/alc/PQ_LAUNDRY/sys/geom/mirror/g_mirror.c user/alc/PQ_LAUNDRY/sys/kern/kern_condvar.c user/alc/PQ_LAUNDRY/sys/kern/kern_sig.c user/alc/PQ_LAUNDRY/sys/mips/broadcom/files.broadcom user/alc/PQ_LAUNDRY/sys/mips/conf/BCM user/alc/PQ_LAUNDRY/sys/net/rndis.h user/alc/PQ_LAUNDRY/sys/sparc64/conf/GENERIC user/alc/PQ_LAUNDRY/sys/sys/param.h user/alc/PQ_LAUNDRY/sys/ufs/ffs/fs.h user/alc/PQ_LAUNDRY/sys/ufs/ufs/dir.h user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c user/alc/PQ_LAUNDRY/usr.bin/bsdiff/bspatch/bspatch.c user/alc/PQ_LAUNDRY/usr.bin/top/machine.c user/alc/PQ_LAUNDRY/usr.sbin/acpi/acpidump/acpi.c user/alc/PQ_LAUNDRY/usr.sbin/bsdinstall/partedit/gpart_ops.c user/alc/PQ_LAUNDRY/usr.sbin/portsnap/portsnap/portsnap.sh Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) user/alc/PQ_LAUNDRY/contrib/libarchive/ (props changed) user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/ (props changed) user/alc/PQ_LAUNDRY/contrib/netbsd-tests/ (props changed) user/alc/PQ_LAUNDRY/contrib/top/ (props changed) user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/ (props changed) Modified: user/alc/PQ_LAUNDRY/ObsoleteFiles.inc ============================================================================== --- user/alc/PQ_LAUNDRY/ObsoleteFiles.inc Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/ObsoleteFiles.inc Wed Sep 7 00:34:45 2016 (r305510) @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue +OLD_FILES+=usr/tests/sys/kqueue/kqtest +OLD_FILES+=usr/tests/sys/kqueue/kqueue_test # 20160901: Remove digi(4) OLD_FILES+=usr/share/man/man4/digi.4.gz # 20160819: Remove ie(4) Modified: user/alc/PQ_LAUNDRY/contrib/gcclibs/libcpp/system.h ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/gcclibs/libcpp/system.h Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/gcclibs/libcpp/system.h Wed Sep 7 00:34:45 2016 (r305510) @@ -347,9 +347,12 @@ extern void abort (void); ??? C99 designated initializers are not supported by most C++ compilers, including G++. -- gdr, 2005-05-18 */ #if !defined(HAVE_DESIGNATED_INITIALIZERS) -#define HAVE_DESIGNATED_INITIALIZERS \ - ((!defined(__cplusplus) && (GCC_VERSION >= 2007)) \ - || (__STDC_VERSION__ >= 199901L)) +# if (!defined(__cplusplus) && (GCC_VERSION >= 2007)) \ + ||(__STDC_VERSION__ >= 199901L) +# define HAVE_DESIGNATED_INITIALIZERS 1 +# else +# define HAVE_DESIGNATED_INITIALIZERS 0 +# endif #endif /* Be conservative and only use enum bitfields with GCC. Copied: user/alc/PQ_LAUNDRY/contrib/libarchive/README.md (from r305509, head/contrib/libarchive/README.md) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/alc/PQ_LAUNDRY/contrib/libarchive/README.md Wed Sep 7 00:34:45 2016 (r305510, copy of r305509, head/contrib/libarchive/README.md) @@ -0,0 +1,222 @@ +# Welcome to libarchive! + +The libarchive project develops a portable, efficient C library that +can read and write streaming archives in a variety of formats. It +also includes implementations of the common `tar`, `cpio`, and `zcat` +command-line tools that use the libarchive library. + +## Questions? Issues? + +* http://www.libarchive.org is the home for ongoing + libarchive development, including documentation, + and links to the libarchive mailing lists. +* To report an issue, use the issue tracker at + https://github.com/libarchive/libarchive/issues +* To submit an enhancement to libarchive, please + submit a pull request via GitHub: https://github.com/libarchive/libarchive/pulls + +## Contents of the Distribution + +This distribution bundle includes the following major components: + +* **libarchive**: a library for reading and writing streaming archives +* **tar**: the 'bsdtar' program is a full-featured 'tar' implementation built on libarchive +* **cpio**: the 'bsdcpio' program is a different interface to essentially the same functionality +* **cat**: the 'bsdcat' program is a simple replacement tool for zcat, bzcat, xzcat, and such +* **examples**: Some small example programs that you may find useful. +* **examples/minitar**: a compact sample demonstrating use of libarchive. +* **contrib**: Various items sent to me by third parties; please contact the authors with any questions. + +The top-level directory contains the following information files: + +* **NEWS** - highlights of recent changes +* **COPYING** - what you can do with this +* **INSTALL** - installation instructions +* **README** - this file +* **CMakeLists.txt** - input for "cmake" build tool, see INSTALL +* **configure** - configuration script, see INSTALL for details. If your copy of the source lacks a `configure` script, you can try to construct it by running the script in `build/autogen.sh` (or use `cmake`). + +The following files in the top-level directory are used by the 'configure' script: +* `Makefile.am`, `aclocal.m4`, `configure.ac` - used to build this distribution, only needed by maintainers +* `Makefile.in`, `config.h.in` - templates used by configure script + +## Documentation + +In addition to the informational articles and documentation +in the online [libarchive Wiki](https://github.com/libarchive/libarchive/wiki), +the distribution also includes a number of manual pages: + + * bsdtar.1 explains the use of the bsdtar program + * bsdcpio.1 explains the use of the bsdcpio program + * bsdcat.1 explains the use of the bsdcat program + * libarchive.3 gives an overview of the library as a whole + * archive_read.3, archive_write.3, archive_write_disk.3, and + archive_read_disk.3 provide detailed calling sequences for the read + and write APIs + * archive_entry.3 details the "struct archive_entry" utility class + * archive_internals.3 provides some insight into libarchive's + internal structure and operation. + * libarchive-formats.5 documents the file formats supported by the library + * cpio.5, mtree.5, and tar.5 provide detailed information about these + popular archive formats, including hard-to-find details about + modern cpio and tar variants. + +The manual pages above are provided in the 'doc' directory in +a number of different formats. + +You should also read the copious comments in `archive.h` and the +source code for the sample programs for more details. Please let us +know about any errors or omissions you find. + +## Supported Formats + +Currently, the library automatically detects and reads the following fomats: + * Old V7 tar archives + * POSIX ustar + * GNU tar format (including GNU long filenames, long link names, and sparse files) + * Solaris 9 extended tar format (including ACLs) + * POSIX pax interchange format + * POSIX octet-oriented cpio + * SVR4 ASCII cpio + * POSIX octet-oriented cpio + * Binary cpio (big-endian or little-endian) + * ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions) + * ZIP archives (with uncompressed or "deflate" compressed entries, including support for encrypted Zip archives) + * GNU and BSD 'ar' archives + * 'mtree' format + * 7-Zip archives + * Microsoft CAB format + * LHA and LZH archives + * RAR archives (with some limitations due to RAR's proprietary status) + * XAR archives + +The library also detects and handles any of the following before evaluating the archive: + * uuencoded files + * files with RPM wrapper + * gzip compression + * bzip2 compression + * compress/LZW compression + * lzma, lzip, and xz compression + * lz4 compression + * lzop compression + +The library can create archives in any of the following formats: + * POSIX ustar + * POSIX pax interchange format + * "restricted" pax format, which will create ustar archives except for + entries that require pax extensions (for long filenames, ACLs, etc). + * Old GNU tar format + * Old V7 tar format + * POSIX octet-oriented cpio + * SVR4 "newc" cpio + * shar archives + * ZIP archives (with uncompressed or "deflate" compressed entries) + * GNU and BSD 'ar' archives + * 'mtree' format + * ISO9660 format + * 7-Zip archives + * XAR archives + +When creating archives, the result can be filtered with any of the following: + * uuencode + * gzip compression + * bzip2 compression + * compress/LZW compression + * lzma, lzip, and xz compression + * lz4 compression + * lzop compression + +## Notes about the Library Design + +The following notes address many of the most common +questions we are asked about libarchive: + +* This is a heavily stream-oriented system. That means that + it is optimized to read or write the archive in a single + pass from beginning to end. For example, this allows + libarchive to process archives too large to store on disk + by processing them on-the-fly as they are read from or + written to a network or tape drive. This also makes + libarchive useful for tools that need to produce + archives on-the-fly (such as webservers that provide + archived contents of a users account). + +* In-place modification and random access to the contents + of an archive are not directly supported. For some formats, + this is not an issue: For example, tar.gz archives are not + designed for random access. In some other cases, libarchive + can re-open an archive and scan it from the beginning quickly + enough to provide the needed abilities even without true + random access. Of course, some applications do require true + random access; those applications should consider alternatives + to libarchive. + +* The library is designed to be extended with new compression and + archive formats. The only requirement is that the format be + readable or writable as a stream and that each archive entry be + independent. There are articles on the libarchive Wiki explaining + how to extend libarchive. + +* On read, compression and format are always detected automatically. + +* The same API is used for all formats; in particular, it's very + easy for software using libarchive to transparently handle + any of libarchive's archiving formats. + +* Libarchive's automatic support for decompression can be used + without archiving by explicitly selecting the "raw" and "empty" + formats. + +* I've attempted to minimize static link pollution. If you don't + explicitly invoke a particular feature (such as support for a + particular compression or format), it won't get pulled in to + statically-linked programs. In particular, if you don't explicitly + enable a particular compression or decompression support, you won't + need to link against the corresponding compression or decompression + libraries. This also reduces the size of statically-linked + binaries in environments where that matters. + +* The library is generally _thread safe_ depending on the platform: + it does not define any global variables of its own. However, some + platforms do not provide fully thread-safe versions of key C library + functions. On those platforms, libarchive will use the non-thread-safe + functions. Patches to improve this are of great interest to us. + +* In particular, libarchive's modules to read or write a directory + tree do use `chdir()` to optimize the directory traversals. This + can cause problems for programs that expect to do disk access from + multiple threads. Of course, those modules are completely + optional and you can use the rest of libarchive without them. + +* The library is _not_ thread aware, however. It does no locking + or thread management of any kind. If you create a libarchive + object and need to access it from multiple threads, you will + need to provide your own locking. + +* On read, the library accepts whatever blocks you hand it. + Your read callback is free to pass the library a byte at a time + or mmap the entire archive and give it to the library at once. + On write, the library always produces correctly-blocked output. + +* The object-style approach allows you to have multiple archive streams + open at once. bsdtar uses this in its "@archive" extension. + +* The archive itself is read/written using callback functions. + You can read an archive directly from an in-memory buffer or + write it to a socket, if you wish. There are some utility + functions to provide easy-to-use "open file," etc, capabilities. + +* The read/write APIs are designed to allow individual entries + to be read or written to any data source: You can create + a block of data in memory and add it to a tar archive without + first writing a temporary file. You can also read an entry from + an archive and write the data directly to a socket. If you want + to read/write entries to disk, there are convenience functions to + make this especially easy. + +* Note: The "pax interchange format" is a POSIX standard extended tar + format that should be used when the older _ustar_ format is not + appropriate. It has many advantages over other tar formats + (including the legacy GNU tar format) and is widely supported by + current tar implementations. + Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_acl.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_acl.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_acl.c Wed Sep 7 00:34:45 2016 (r305510) @@ -707,10 +707,11 @@ archive_acl_text_l(struct archive_acl *a if (r != 0) return (-1); *p++ = separator; - if (flags & ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID) + if (name == NULL || (flags & ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID)) { id = ap->id; - else + } else { id = -1; + } append_entry(&p, NULL, ap->tag, name, ap->permset, id); count++; Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Wed Sep 7 00:34:45 2016 (r305510) @@ -419,12 +419,32 @@ setup_acls(struct archive_read_disk *a, if (accpath == NULL) accpath = archive_entry_pathname(entry); + if (*fd < 0 && a->tree != NULL) { + if (a->follow_symlinks || + archive_entry_filetype(entry) != AE_IFLNK) + *fd = a->open_on_current_dir(a->tree, + accpath, O_RDONLY | O_NONBLOCK); + if (*fd < 0) { + if (a->tree_enter_working_dir(a->tree) != 0) { + archive_set_error(&a->archive, errno, + "Couldn't access %s", accpath); + return (ARCHIVE_FAILED); + } + } + } + archive_entry_acl_clear(entry); + acl = NULL; + #ifdef ACL_TYPE_NFS4 /* Try NFS4 ACL first. */ if (*fd >= 0) +#if HAVE_ACL_GET_FD_NP + acl = acl_get_fd_np(*fd, ACL_TYPE_NFS4); +#else acl = acl_get_fd(*fd); +#endif #if HAVE_ACL_GET_LINK_NP else if (!a->follow_symlinks) acl = acl_get_link_np(accpath, ACL_TYPE_NFS4); @@ -437,12 +457,19 @@ setup_acls(struct archive_read_disk *a, #endif else acl = acl_get_file(accpath, ACL_TYPE_NFS4); + #if HAVE_ACL_IS_TRIVIAL_NP - /* Ignore "trivial" ACLs that just mirror the file mode. */ - acl_is_trivial_np(acl, &r); - if (r) { - acl_free(acl); - acl = NULL; + if (acl != NULL && acl_is_trivial_np(acl, &r) == 0) { + /* Ignore "trivial" ACLs that just mirror the file mode. */ + if (r) { + acl_free(acl); + acl = NULL; + /* + * Simultaneous NFSv4 and POSIX.1e ACLs for the same + * entry are not allowed, so we should return here + */ + return (ARCHIVE_OK); + } } #endif if (acl != NULL) { @@ -450,7 +477,7 @@ setup_acls(struct archive_read_disk *a, acl_free(acl); return (ARCHIVE_OK); } -#endif +#endif /* ACL_TYPE_NFS4 */ /* Retrieve access ACL from file. */ if (*fd >= 0) @@ -467,10 +494,22 @@ setup_acls(struct archive_read_disk *a, #endif else acl = acl_get_file(accpath, ACL_TYPE_ACCESS); + +#if HAVE_ACL_IS_TRIVIAL_NP + /* Ignore "trivial" ACLs that just mirror the file mode. */ + if (acl != NULL && acl_is_trivial_np(acl, &r) == 0) { + if (r) { + acl_free(acl); + acl = NULL; + } + } +#endif + if (acl != NULL) { translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_ACCESS); acl_free(acl); + acl = NULL; } /* Only directories can have default ACLs. */ Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_disk_posix.c Wed Sep 7 00:34:45 2016 (r305510) @@ -1504,10 +1504,19 @@ setup_current_filesystem(struct archive_ struct tree *t = a->tree; struct statfs sfs; #if defined(HAVE_GETVFSBYNAME) && defined(VFCF_SYNTHETIC) -# if defined(HAVE_STRUCT_VFSCONF) - struct vfsconf vfc; -# else +/* TODO: configure should set GETVFSBYNAME_ARG_TYPE to make + * this accurate; some platforms have both and we need the one that's + * used by getvfsbyname() + * + * Then the following would become: + * #if defined(GETVFSBYNAME_ARG_TYPE) + * GETVFSBYNAME_ARG_TYPE vfc; + * #endif + */ +# if defined(HAVE_STRUCT_XVFSCONF) struct xvfsconf vfc; +# else + struct vfsconf vfc; # endif #endif int r, xr = 0; Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c Wed Sep 7 00:34:45 2016 (r305510) @@ -70,15 +70,9 @@ set_acls(struct archive_entry *ae, struc } static int -acl_match(acl_entry_t aclent, struct myacl_t *myacl) -{ - gid_t g, *gp; - uid_t u, *up; - acl_tag_t tag_type; - acl_permset_t opaque_ps; +acl_entry_get_perm(acl_entry_t aclent) { int permset = 0; - - acl_get_tag_type(aclent, &tag_type); + acl_permset_t opaque_ps; /* translate the silly opaque permset to a bitmap */ acl_get_permset(aclent, &opaque_ps); @@ -88,10 +82,61 @@ acl_match(acl_entry_t aclent, struct mya permset |= ARCHIVE_ENTRY_ACL_WRITE; if (acl_get_perm_np(opaque_ps, ACL_READ)) permset |= ARCHIVE_ENTRY_ACL_READ; + return permset; +} + +#if 0 +static int +acl_get_specific_entry(acl_t acl, acl_tag_t requested_tag_type, int requested_tag) { + int entry_id = ACL_FIRST_ENTRY; + acl_entry_t acl_entry; + acl_tag_t acl_tag_type; + + while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { + /* After the first time... */ + entry_id = ACL_NEXT_ENTRY; + + /* If this matches, return perm mask */ + acl_get_tag_type(acl_entry, &acl_tag_type); + if (acl_tag_type == requested_tag_type) { + switch (acl_tag_type) { + case ACL_USER_OBJ: + if ((uid_t)requested_tag == *(uid_t *)(acl_get_qualifier(acl_entry))) { + return acl_entry_get_perm(acl_entry); + } + break; + case ACL_GROUP_OBJ: + if ((gid_t)requested_tag == *(gid_t *)(acl_get_qualifier(acl_entry))) { + return acl_entry_get_perm(acl_entry); + } + break; + case ACL_USER: + case ACL_GROUP: + case ACL_OTHER: + return acl_entry_get_perm(acl_entry); + default: + failure("Unexpected ACL tag type"); + assert(0); + } + } + - if (permset != myacl->permset) + } + return -1; +} +#endif + +static int +acl_match(acl_entry_t aclent, struct myacl_t *myacl) +{ + gid_t g, *gp; + uid_t u, *up; + acl_tag_t tag_type; + + if (myacl->permset != acl_entry_get_perm(aclent)) return (0); + acl_get_tag_type(aclent, &tag_type); switch (tag_type) { case ACL_USER_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); @@ -190,7 +235,7 @@ compare_acls(acl_t acl, struct myacl_t * * Verify ACL restore-to-disk. This test is FreeBSD-specific. */ -DEFINE_TEST(test_acl_freebsd_posix1e) +DEFINE_TEST(test_acl_freebsd_posix1e_restore) { #if !defined(__FreeBSD__) skipping("FreeBSD-specific ACL restore test"); @@ -263,3 +308,111 @@ DEFINE_TEST(test_acl_freebsd_posix1e) acl_free(acl); #endif } + +/* + * Verify ACL reaed-from-disk. This test is FreeBSD-specific. + */ +DEFINE_TEST(test_acl_freebsd_posix1e_read) +{ +#if !defined(__FreeBSD__) + skipping("FreeBSD-specific ACL read test"); +#elif __FreeBSD__ < 5 + skipping("ACL read supported only on FreeBSD 5.0 and later"); +#else + struct archive *a; + struct archive_entry *ae; + int n, fd; + const char *acl1_text, *acl2_text; + acl_t acl1, acl2; + + /* + * Manually construct a directory and two files with + * different ACLs. This also serves to verify that ACLs + * are supported on the local filesystem. + */ + + /* Create a test file f1 with acl1 */ + acl1_text = "user::rwx,group::rwx,other::rwx,user:1:rw-,group:15:r-x,mask::rwx"; + acl1 = acl_from_text(acl1_text); + assert((void *)acl1 != NULL); + fd = open("f1", O_WRONLY | O_CREAT | O_EXCL, 0777); + failure("Could not create test file?!"); + if (!assert(fd >= 0)) { + acl_free(acl1); + return; + } + n = acl_set_fd(fd, acl1); + acl_free(acl1); + if (n != 0 && errno == EOPNOTSUPP) { + close(fd); + skipping("ACL tests require that ACL support be enabled on the filesystem"); + return; + } + if (n != 0 && errno == EINVAL) { + close(fd); + skipping("This filesystem does not support POSIX.1e ACLs"); + return; + } + failure("acl_set_fd(): errno = %d (%s)", + errno, strerror(errno)); + assertEqualInt(0, n); + close(fd); + + assertMakeDir("d", 0700); + + /* + * Create file d/f1 with acl2 + * + * This differs from acl1 in the u:1: and g:15: permissions. + * + * This file deliberately has the same name but a different ACL. + * Github Issue #777 explains how libarchive's directory traversal + * did not always correctly enter directories before attempting + * to read ACLs, resulting in reading the ACL from a like-named + * file in the wrong directory. + */ + acl2_text = "user::rwx,group::rwx,other::---,user:1:r--,group:15:r--,mask::rwx"; + acl2 = acl_from_text(acl2_text); + assert((void *)acl2 != NULL); + fd = open("d/f1", O_WRONLY | O_CREAT | O_EXCL, 0777); + failure("Could not create test file?!"); + if (!assert(fd >= 0)) { + acl_free(acl2); + return; + } + n = acl_set_fd(fd, acl2); + acl_free(acl2); + if (n != 0 && errno == EOPNOTSUPP) { + close(fd); + skipping("ACL tests require that ACL support be enabled on the filesystem"); + return; + } + if (n != 0 && errno == EINVAL) { + close(fd); + skipping("This filesystem does not support POSIX.1e ACLs"); + return; + } + failure("acl_set_fd(): errno = %d (%s)", + errno, strerror(errno)); + assertEqualInt(0, n); + close(fd); + + /* Create a read-from-disk object. */ + assert(NULL != (a = archive_read_disk_new())); + assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_open(a, ".")); + assert(NULL != (ae = archive_entry_new())); + + /* Walk the dir until we see both of the files */ + while (ARCHIVE_OK == archive_read_next_header2(a, ae)) { + archive_read_disk_descend(a); + if (strcmp(archive_entry_pathname(ae), "./f1") == 0) { + assertEqualString(archive_entry_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_ACCESS), acl1_text); + + } else if (strcmp(archive_entry_pathname(ae), "./d/f1") == 0) { + assertEqualString(archive_entry_acl_text(ae, ARCHIVE_ENTRY_ACL_TYPE_ACCESS), acl2_text); + } + } + + archive_free(a); +#endif +} Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c Wed Sep 7 00:34:45 2016 (r305510) @@ -78,7 +78,11 @@ ATF_TC_BODY(fifo, tc) RL(n = kevent(kq, NULL, 0, event, 1, NULL)); (void)printf("kevent num %d filt %d flags: %#x, fflags: %#x, " +#ifdef __FreeBSD__ + "data: %" PRIdPTR "\n", n, event[0].filter, event[0].flags, +#else "data: %" PRId64 "\n", n, event[0].filter, event[0].flags, +#endif event[0].fflags, event[0].data); ATF_REQUIRE_EQ(event[0].filter, EVFILT_READ); Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_file.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_file.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_file.c Wed Sep 7 00:34:45 2016 (r305510) @@ -111,7 +111,11 @@ ATF_TC_BODY(file, tc) num += n; (void)printf("kevent num %d flags: %#x, fflags: %#x, data: " +#ifdef __FreeBSD__ + "%" PRIdPTR "\n", n, event[0].flags, event[0].fflags, +#else "%" PRId64 "\n", n, event[0].flags, event[0].fflags, +#endif event[0].data); if (event[0].data < 0) Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c Wed Sep 7 00:34:45 2016 (r305510) @@ -67,7 +67,11 @@ ATF_TC_BODY(pipe, tc) RL(n = kevent(kq, NULL, 0, event, 1, NULL)); (void)printf("kevent num %d flags: %#x, fflags: %#x, data: " +#ifdef __FreeBSD__ + "%" PRIdPTR "\n", n, event[0].flags, event[0].fflags, event[0].data); +#else "%" PRId64 "\n", n, event[0].flags, event[0].fflags, event[0].data); +#endif RL(n = read(fds[0], buffer, event[0].data)); buffer[n] = '\0'; Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c Wed Sep 7 00:34:45 2016 (r305510) @@ -103,7 +103,11 @@ h_check(bool check_master) RL(n = kevent(kq, NULL, 0, event, 1, NULL)); (void)printf("kevent num %d filt %d flags: %#x, fflags: %#x, " +#ifdef __FreeBSD__ + "data: %" PRIdPTR "\n", n, event[0].filter, event[0].flags, +#else "data: %" PRId64 "\n", n, event[0].filter, event[0].flags, +#endif event[0].fflags, event[0].data); ATF_REQUIRE_EQ(event[0].filter, EVFILT_READ); Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc1.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc1.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc1.c Wed Sep 7 00:34:45 2016 (r305510) @@ -139,7 +139,11 @@ ATF_TC_BODY(proc1, tc) printf(" NOTE_FORK"); } if (event[0].fflags & NOTE_CHILD) +#ifdef __FreeBSD__ + printf(" NOTE_CHILD, parent = %" PRIdPTR, event[0].data); +#else printf(" NOTE_CHILD, parent = %" PRId64, event[0].data); +#endif printf("\n"); } Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc2.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc2.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc2.c Wed Sep 7 00:34:45 2016 (r305510) @@ -34,6 +34,9 @@ __COPYRIGHT("@(#) Copyright (c) 2008\ The NetBSD Foundation, inc. All rights reserved."); __RCSID("$NetBSD: t_proc2.c,v 1.2 2015/01/14 22:22:32 christos Exp $"); +#ifdef __FreeBSD__ +#include +#endif #include #include #include Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc3.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc3.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_proc3.c Wed Sep 7 00:34:45 2016 (r305510) @@ -32,6 +32,9 @@ #include __RCSID("$NetBSD: t_proc3.c,v 1.2 2015/01/14 22:22:32 christos Exp $"); +#ifdef __FreeBSD__ +#include +#endif #include #include #include Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_sig.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_sig.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_sig.c Wed Sep 7 00:34:45 2016 (r305510) @@ -34,6 +34,9 @@ __COPYRIGHT("@(#) Copyright (c) 2008\ The NetBSD Foundation, inc. All rights reserved."); __RCSID("$NetBSD: t_sig.c,v 1.2 2010/11/03 16:10:20 christos Exp $"); +#ifdef __FreeBSD__ +#include +#endif #include #include #include @@ -60,9 +63,13 @@ ATF_TC_HEAD(sig, tc) ATF_TC_BODY(sig, tc) { struct timespec timeout; +#ifdef __NetBSD__ struct kfilter_mapping km; +#endif struct kevent event[1]; +#ifdef __NetBSD__ char namebuf[32]; +#endif pid_t pid, child; int kq, n, num, status; @@ -84,16 +91,22 @@ ATF_TC_BODY(sig, tc) RL(kq = kqueue()); +#ifdef __NetBSD__ (void)strlcpy(namebuf, "EVFILT_SIGNAL", sizeof(namebuf)); km.name = namebuf; RL(ioctl(kq, KFILTER_BYNAME, &km)); (void)printf("got %d as filter number for `%s'.\n", km.filter, km.name); +#endif /* ignore the signal to avoid taking it for real */ REQUIRE_LIBC(signal(SIGUSR1, SIG_IGN), SIG_ERR); event[0].ident = SIGUSR1; +#ifdef __NetBSD__ event[0].filter = km.filter; +#else + event[0].filter = EVFILT_SIGNAL; +#endif event[0].flags = EV_ADD | EV_ENABLE; RL(kevent(kq, event, 1, NULL, 0, NULL)); @@ -117,7 +130,11 @@ ATF_TC_BODY(sig, tc) if (n == 0) continue; +#ifdef __FreeBSD__ + (void)printf("sig: kevent flags: 0x%x, data: %" PRIdPTR " (# " +#else (void)printf("sig: kevent flags: 0x%x, data: %" PRId64 " (# " +#endif "times signal posted)\n", event[0].flags, event[0].data); } Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_vnode.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_vnode.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/kernel/kqueue/t_vnode.c Wed Sep 7 00:34:45 2016 (r305510) @@ -1,3 +1,6 @@ +#ifdef __FreeBSD__ +#include +#endif #include #include #include Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c Wed Sep 7 00:34:45 2016 (r305510) @@ -24,6 +24,13 @@ __RCSID("$NetBSD: t_rpc.c,v 1.9 2015/11/ return; \ } while(/*CONSTCOND*/0) +#ifdef __FreeBSD__ +#define SKIPXI(ev, msg, ...) do { \ + atf_tc_skip(msg, __VA_ARGS__); \ + return ev; \ +} while(/*CONSTCOND*/0) +#endif + #else #define ERRX(ev, msg, ...) errx(ev, msg, __VA_ARGS__) #define SKIPX(ev, msg, ...) errx(ev, msg, __VA_ARGS__) @@ -188,7 +195,13 @@ regtest(const char *hostname, const char svc_fdset_init(p ? SVC_FDSET_POLL : 0); #endif if (!svc_create(server, PROGNUM, VERSNUM, transp)) +#ifdef __NetBSD__ ERRX(EXIT_FAILURE, "Cannot create server %d", num); +#else + { + SKIPXI(EXIT_FAILURE, "Cannot create server %d", num); + } +#endif switch ((pid = fork())) { case 0: @@ -335,6 +348,9 @@ ATF_TC(tcp); ATF_TC_HEAD(tcp, tc) { atf_tc_set_md_var(tc, "descr", "Checks svc tcp (select)"); +#ifdef __FreeBSD__ + atf_tc_set_md_var(tc, "require.user", "root"); +#endif } ATF_TC_BODY(tcp, tc) @@ -347,6 +363,9 @@ ATF_TC(udp); ATF_TC_HEAD(udp, tc) { atf_tc_set_md_var(tc, "descr", "Checks svc udp (select)"); +#ifdef __FreeBSD__ + atf_tc_set_md_var(tc, "require.user", "root"); +#endif } ATF_TC_BODY(udp, tc) @@ -359,6 +378,9 @@ ATF_TC(tcp_poll); ATF_TC_HEAD(tcp_poll, tc) { atf_tc_set_md_var(tc, "descr", "Checks svc tcp (poll)"); +#ifdef __FreeBSD__ + atf_tc_set_md_var(tc, "require.user", "root"); +#endif } ATF_TC_BODY(tcp_poll, tc) @@ -371,6 +393,9 @@ ATF_TC(udp_poll); ATF_TC_HEAD(udp_poll, tc) { atf_tc_set_md_var(tc, "descr", "Checks svc udp (poll)"); +#ifdef __FreeBSD__ + atf_tc_set_md_var(tc, "require.user", "root"); +#endif } ATF_TC_BODY(udp_poll, tc) Modified: user/alc/PQ_LAUNDRY/contrib/top/commands.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/top/commands.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/top/commands.c Wed Sep 7 00:34:45 2016 (r305510) @@ -104,6 +104,7 @@ S - toggle the displaying of syste a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ +w - toggle the display of swap use for each process\n\ z - toggle the displaying of the system idle process\n\ \n\ \n", stdout); Modified: user/alc/PQ_LAUNDRY/contrib/top/machine.h ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/top/machine.h Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/top/machine.h Wed Sep 7 00:34:45 2016 (r305510) @@ -72,6 +72,7 @@ struct process_select int wcpu; /* show weighted cpu */ int jid; /* only this jid (unless jid == -1) */ int jail; /* show jail ID */ + int swap; /* show swap usage */ int kidle; /* show per-CPU idle threads */ char *command; /* only this command (unless == NULL) */ }; @@ -82,8 +83,8 @@ char *format_header(); char *format_next_process(); void toggle_pcpustats(void); void get_system_info(struct system_info *si); -int machine_init(struct statics *statics, char do_unames); -int proc_owner(int pid); +int machine_init(struct statics *statics, char do_unames); +int proc_owner(int pid); /* non-int routines typically used by the machine dependent module */ char *printable(); Modified: user/alc/PQ_LAUNDRY/contrib/top/top.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/top/top.c Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/top/top.c Wed Sep 7 00:34:45 2016 (r305510) @@ -188,9 +188,9 @@ char *argv[]; fd_set readfds; #ifdef ORDER - static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJo"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJwo"; #else - static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJ"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJw"; #endif /* these defines enumerate the "strchr"s of the commands in command_chars */ #define CMD_redraw 0 @@ -219,8 +219,9 @@ char *argv[]; #define CMD_kidletog 22 #define CMD_pcputog 23 #define CMD_jail 24 +#define CMD_swaptog 25 #ifdef ORDER -#define CMD_order 25 +#define CMD_order 26 #endif /* set the buffer for stdout */ @@ -254,6 +255,7 @@ char *argv[]; ps.wcpu = 1; ps.jid = -1; ps.jail = No; + ps.swap = No; ps.kidle = Yes; ps.command = NULL; @@ -280,7 +282,7 @@ char *argv[]; optind = 1; } - while ((i = getopt(ac, av, "CSIHPabijJ:nquvzs:d:U:m:o:t")) != EOF) + while ((i = getopt(ac, av, "CSIHPabijJ:nquvzs:d:U:m:o:tw")) != EOF) { switch(i) { @@ -418,6 +420,10 @@ char *argv[]; pcpu_stats = !pcpu_stats; break; + case 'w': + ps.swap = 1; + break; + case 'z': ps.kidle = !ps.kidle; break; @@ -1141,6 +1147,15 @@ restart: reset_display(); putchar('\r'); break; + case CMD_swaptog: + ps.swap = !ps.swap; + new_message(MT_standout | MT_delayed, + " %sisplaying per-process swap usage.", + ps.swap ? "D" : "Not d"); + header_text = format_header(uname_field); + reset_display(); + putchar('\r'); + break; default: new_message(MT_standout, " BAD CASE IN SWITCH!"); putchar('\r'); Modified: user/alc/PQ_LAUNDRY/contrib/top/top.xs ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/top/top.xs Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/contrib/top/top.xs Wed Sep 7 00:34:45 2016 (r305510) @@ -10,7 +10,7 @@ top \- display and update information ab .SH SYNOPSIS .B top [ -.B \-abCHIijnPqStuvz +.B \-abCHIijnPqStuvwz ] [ .BI \-d count ] [ @@ -148,6 +148,9 @@ Write version number information to stde No other processing takes place when this option is used. To see current revision information while top is running, use the help command \*(lq?\*(rq. .TP +.B \-w +Display approximate swap usage for each process. +.TP .B \-z Do not display the system idle process. .TP @@ -167,11 +170,12 @@ Set the delay between screen updates to seconds. The default delay between updates is \nD seconds. .TP .BI \-o field -Sort the process display area on the specified field. The field name is -the name of the column as seen in the output, but in lower case. Likely -values are \*(lqcpu\*(rq, \*(lqsize\*(rq, \*(lqres\*(rq, and \*(lqtime\*(rq, -but may vary on different operating systems. Note that -not all operating systems support this option. +Sort the process display area on the specified field. The field name +is the name of the column as seen in the output, but in lower case: +\*(lqcpu\*(lq, \*(rqsize\*(lq, \*(rqres\*(lq, \*(rqtime\*(lq, +\*(rqpri\*(lq, \*(rqthreads\*(lq, \*(lqtotal\*(lq, \*(rqread\*(lq, +\*(rqwrite\*(lq, \*(rqfault\*(lq, \*(rqvcsw\*(lq, \*(rqivcsw\*(lq, +\*(lqjid\*(lq, \*(rqswap\*(lq or \*(rqpid\*(lq. .TP .BI \-J jail Show only those processes owned by @@ -226,6 +230,7 @@ The options .BR \-S , .BR \-t , .BR \-u , +.BR \-w , and .B \-z are actually toggles. A second specification of any of these options @@ -346,6 +351,9 @@ Toggle the display of the .I top process. .TP +.B w +Toggle the display of swap usage. +.TP .B z Toggle the display of the system idle process. .SH "THE DISPLAY" @@ -379,8 +387,9 @@ is specified, a UID column will be subst PRI is the current priority of the process, NICE is the nice amount (in the range \-20 to 20), SIZE is the total size of the process (text, data, and stack), -RES is the current amount of resident memory (both SIZE and RES are -given in kilobytes), +RES is the current amount of resident memory, +SWAP is the approximate amount of swap, if enabled +(SIZE, RES and SWAP are given in kilobytes), STATE is the current state (one of \*(lqSTART\*(rq, \*(lqRUN\*(rq (shown as \*(lqCPUn\*(rq on SMP systems), \*(lqSLEEP\*(rq, \*(lqSTOP\*(rq, \*(lqZOMB\*(rq, \*(lqWAIT\*(rq, \*(lqLOCK\*(rq or the event on which the Modified: user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist ============================================================================== --- user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist Tue Sep 6 23:42:59 2016 (r305509) +++ user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist Wed Sep 7 00:34:45 2016 (r305510) @@ -419,6 +419,8 @@ .. .. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@freebsd.org Fri Sep 9 08:48:11 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 1768DBD2856 for ; Fri, 9 Sep 2016 08:48:11 +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 E9780372; Fri, 9 Sep 2016 08:48: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 u898mACs088516; Fri, 9 Sep 2016 08:48:10 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u898mAIW088514; Fri, 9 Sep 2016 08:48:10 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609090848.u898mAIW088514@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 08:48:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305653 - 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.23 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: Fri, 09 Sep 2016 08:48:11 -0000 Author: pho Date: Fri Sep 9 08:48:09 2016 New Revision: 305653 URL: https://svnweb.freebsd.org/changeset/base/305653 Log: Updated an old regression test with findings and added a new variation of this test. Sponsored by: Dell EMC Isilon Added: user/pho/stress2/misc/mkfifo2d.sh (contents, props changed) Modified: user/pho/stress2/misc/mkfifo2c.sh Modified: user/pho/stress2/misc/mkfifo2c.sh ============================================================================== --- user/pho/stress2/misc/mkfifo2c.sh Fri Sep 9 07:34:14 2016 (r305652) +++ user/pho/stress2/misc/mkfifo2c.sh Fri Sep 9 08:48:09 2016 (r305653) @@ -33,6 +33,13 @@ # "bad offset" panic after up 10:57 on leopard3 # Run with mkfifo.cfg on a 2g swap backed MD +# Problem seen with and without +j + +# "panic: ufsdirhash_newblk: bad offset" seen: +# https://people.freebsd.org/~pho/stress/log/mkfifo2c.txt +# https://people.freebsd.org/~pho/stress/log/mkfifo2c-2.txt +# https://people.freebsd.org/~pho/stress/log/kostik932.txt +# Fixed by r305601. . ../default.cfg @@ -42,7 +49,9 @@ mdconfig -l | grep -q md$mdstart && mdc mdconfig -a -t swap -s 2g -u $mdstart || exit 1 bsdlabel -w md$mdstart auto -newfs -j md${mdstart}$part > /dev/null +[ $# -eq 1 ] && opt="$1" +[ $# -eq 0 ] && opt="-j" +newfs $opt md${mdstart}$part > /dev/null mount /dev/md${mdstart}$part $mntpoint chmod 777 $mntpoint Added: user/pho/stress2/misc/mkfifo2d.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/misc/mkfifo2d.sh Fri Sep 9 08:48:09 2016 (r305653) @@ -0,0 +1,83 @@ +#!/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$ +# + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +# Copy of mkfifo2c.sh, but with a SU file system and async mount +# "panic: ufsdirhash_newblk: bad offset" seen from openat() +# https://people.freebsd.org/~pho/stress/log/mkfifo2d.txt +# Fixed by r305601. + +. ../default.cfg + +mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 2g -u $mdstart || exit 1 +bsdlabel -w md$mdstart auto + +newfs $newfs_flags md${mdstart}$part > /dev/null +mount -o async /dev/md${mdstart}$part $mntpoint +chmod 777 $mntpoint + +export runRUNTIME=5m +export RUNDIR=$mntpoint/stressX + +export TESTPROGS=" +testcases/fts/fts +testcases/link/link +testcases/mkfifo/mkfifo +testcases/mkdir/mkdir +testcases/rename/rename +testcases/swap/swap +" + +export ftsLOAD=100 +export linkLOAD=100 +export mkdirLOAD=100 +export mkfifoLOAD=100 +export renameLOAD=100 +export swapLOAD=100 + +export renameINCARNATIONS=4 +export swapINCARNATIONS=4 +export linkINCARNATIONS=12 +export mkdirINCARNATIONS=20 +export mkfifoINCARNATIONS=22 +export ftsINCARNATIONS=2 + +export HOG=1 + +su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' + +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 +done +mdconfig -d -u $mdstart From owner-svn-src-user@freebsd.org Fri Sep 9 08:50:13 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 16285BD288D for ; Fri, 9 Sep 2016 08:50:13 +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 DA5D96D5; Fri, 9 Sep 2016 08:50:12 +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 u898oCcZ088644; Fri, 9 Sep 2016 08:50:12 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u898oCjt088643; Fri, 9 Sep 2016 08:50:12 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609090850.u898oCjt088643@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 08:50:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305654 - 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.23 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: Fri, 09 Sep 2016 08:50:13 -0000 Author: pho Date: Fri Sep 9 08:50:11 2016 New Revision: 305654 URL: https://svnweb.freebsd.org/changeset/base/305654 Log: Updated test with findings. Don't loop forever if umount(1) fail. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/suj18.sh Modified: user/pho/stress2/misc/suj18.sh ============================================================================== --- user/pho/stress2/misc/suj18.sh Fri Sep 9 08:48:09 2016 (r305653) +++ user/pho/stress2/misc/suj18.sh Fri Sep 9 08:50:11 2016 (r305654) @@ -31,6 +31,10 @@ # SUJ and quota test scenario. # "panic: check_inode_unwritten: busy inode" seen. +# Deadlock seen: +# https://people.freebsd.org/~pho/stress/log/suj18.txt +# Fixed by r305594. + [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg @@ -53,8 +57,10 @@ export RUNDIR=${mntpoint}/stressX chmod 777 ${mntpoint} su ${testuser} -c 'sh -c "(cd ..;runRUNTIME=20m ./run.sh disk.cfg > /dev/null 2>&1)"' -while mount | grep -q ${mntpoint}; do - umount ${mntpoint} || sleep 1 +rm -f $PATH_FSTAB +for i in `jot 6`; do + umount $mntpoint && break || sleep 10 done +[ $i -eq 6 ] && exit 1 mdconfig -d -u ${mdstart} -rm -f $PATH_FSTAB +exit 0 From owner-svn-src-user@freebsd.org Fri Sep 9 08:51: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 2032BBD28ED for ; Fri, 9 Sep 2016 08:51:04 +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 E7E47967; Fri, 9 Sep 2016 08:51:03 +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 u898p3iF091311; Fri, 9 Sep 2016 08:51:03 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u898p3A2091310; Fri, 9 Sep 2016 08:51:03 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609090851.u898p3A2091310@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 08:51:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305655 - 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.23 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: Fri, 09 Sep 2016 08:51:04 -0000 Author: pho Date: Fri Sep 9 08:51:02 2016 New Revision: 305655 URL: https://svnweb.freebsd.org/changeset/base/305655 Log: Added exit code. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/nullfs15.sh Modified: user/pho/stress2/misc/nullfs15.sh ============================================================================== --- user/pho/stress2/misc/nullfs15.sh Fri Sep 9 08:50:11 2016 (r305654) +++ user/pho/stress2/misc/nullfs15.sh Fri Sep 9 08:51:02 2016 (r305655) @@ -64,3 +64,4 @@ while mount | grep -q "$mntpoint "; do done mdconfig -d -u $mdstart rm -f /tmp/bar +exit 0 From owner-svn-src-user@freebsd.org Fri Sep 9 08:53:06 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 0D1C8BD2A7B for ; Fri, 9 Sep 2016 08:53:06 +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 D22A0B92; Fri, 9 Sep 2016 08:53:05 +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 u898r5h8092085; Fri, 9 Sep 2016 08:53:05 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u898r4Fs092083; Fri, 9 Sep 2016 08:53:04 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609090853.u898r4Fs092083@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 08:53:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305656 - 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.23 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: Fri, 09 Sep 2016 08:53:06 -0000 Author: pho Date: Fri Sep 9 08:53:04 2016 New Revision: 305656 URL: https://svnweb.freebsd.org/changeset/base/305656 Log: Added missing mdconfig(8) cleanup. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/sendfile5.sh user/pho/stress2/misc/setuid.sh Modified: user/pho/stress2/misc/sendfile5.sh ============================================================================== --- user/pho/stress2/misc/sendfile5.sh Fri Sep 9 08:51:02 2016 (r305655) +++ user/pho/stress2/misc/sendfile5.sh Fri Sep 9 08:53:04 2016 (r305656) @@ -54,7 +54,6 @@ cp $diskimage $mntpoint /tmp/sendfile5 $mntpoint/$file umount $mntpoint -mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart mdconfig -a -t swap -s 2g -u $mdstart || exit 1 bsdlabel -w md$mdstart auto newfs $newfs_flags md${mdstart}$part > /dev/null @@ -63,6 +62,7 @@ echo "Testing FFS" cp $diskimage $mntpoint /tmp/sendfile5 $mntpoint/$file umount $mntpoint +mdconfig -d -u $mdstart mount -t nullfs $dir $mntpoint echo "Testing nullfs(5)" Modified: user/pho/stress2/misc/setuid.sh ============================================================================== --- user/pho/stress2/misc/setuid.sh Fri Sep 9 08:51:02 2016 (r305655) +++ user/pho/stress2/misc/setuid.sh Fri Sep 9 08:53:04 2016 (r305656) @@ -74,6 +74,7 @@ echo "Expect Abort trap" while mount | grep "on $mntpoint " | grep -q /dev/md; do umount $mntpoint || sleep 1 done +mdconfig -d -u $mdstart rm -f /tmp/setuid /tmp/nop exit EOF From owner-svn-src-user@freebsd.org Fri Sep 9 10:00:41 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 5E9BBBD40A2 for ; Fri, 9 Sep 2016 10:00:41 +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 2CC9BFF9; Fri, 9 Sep 2016 10:00:41 +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 u89A0ejT015335; Fri, 9 Sep 2016 10:00:40 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u89A0eps015334; Fri, 9 Sep 2016 10:00:40 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609091000.u89A0eps015334@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 10:00:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305657 - 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.23 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: Fri, 09 Sep 2016 10:00:41 -0000 Author: pho Date: Fri Sep 9 10:00:40 2016 New Revision: 305657 URL: https://svnweb.freebsd.org/changeset/base/305657 Log: Fix device matching. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/stealer.sh Modified: user/pho/stress2/misc/stealer.sh ============================================================================== --- user/pho/stress2/misc/stealer.sh Fri Sep 9 08:53:04 2016 (r305656) +++ user/pho/stress2/misc/stealer.sh Fri Sep 9 10:00:40 2016 (r305657) @@ -56,7 +56,7 @@ pages=$((pages / hw)) echo "`date '+%T'` Test with $pages pages." su $testuser -c "sh -c \"/tmp/stealer $pages\"" & sleep 30 -while swapinfo | grep -q /dev; do +while swapinfo | grep -q /dev/md$mdstart; do swapoff /dev/md$mdstart 2>&1 | grep -v "Cannot allocate memory" sleep 2 From owner-svn-src-user@freebsd.org Fri Sep 9 10: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 4DD77BD419B for ; Fri, 9 Sep 2016 10:04:39 +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 20D385E7; Fri, 9 Sep 2016 10:04:39 +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 u89A4cKw018864; Fri, 9 Sep 2016 10:04:38 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u89A4cR2018863; Fri, 9 Sep 2016 10:04:38 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609091004.u89A4cR2018863@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 10:04:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305658 - 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.23 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: Fri, 09 Sep 2016 10:04:39 -0000 Author: pho Date: Fri Sep 9 10:04:38 2016 New Revision: 305658 URL: https://svnweb.freebsd.org/changeset/base/305658 Log: Check for umount(8) failure. Added missing mdconfig(8) cleanup. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/pread.sh Modified: user/pho/stress2/misc/pread.sh ============================================================================== --- user/pho/stress2/misc/pread.sh Fri Sep 9 10:00:40 2016 (r305657) +++ user/pho/stress2/misc/pread.sh Fri Sep 9 10:04:38 2016 (r305658) @@ -50,7 +50,9 @@ mount -t tmpfs tmpfs $mntpoint cp -a /usr/include $mntpoint echo "Testing tmpfs(5)" /tmp/pread $mntpoint -umount $mntpoint +while mount | grep -q "on $mntpoint "; do + umount $mntpoint || sleep 1 +done echo "Testing fdescfs(5)" mount -t fdescfs null /dev/fd @@ -69,7 +71,6 @@ while mount | grep -q "on $mntpoint "; d umount $mntpoint || sleep 1 done -mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart mdconfig -a -t swap -s 1g -u $mdstart || exit 1 bsdlabel -w md$mdstart auto newfs $newfs_flags md${mdstart}$part > /dev/null @@ -80,6 +81,7 @@ echo "Testing FFS" while mount | grep -q "on $mntpoint "; do umount $mntpoint || sleep 1 done +mdconfig -d -u $mdstart mount -t nullfs /bin $mntpoint echo "Testing nullfs(5)" From owner-svn-src-user@freebsd.org Fri Sep 9 12:22:56 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 53CFEBD207C for ; Fri, 9 Sep 2016 12:22:56 +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 272A130A; Fri, 9 Sep 2016 12:22:56 +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 u89CMtrP071457; Fri, 9 Sep 2016 12:22:55 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u89CMtR3071456; Fri, 9 Sep 2016 12:22:55 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609091222.u89CMtR3071456@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 12:22:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305660 - 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.23 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: Fri, 09 Sep 2016 12:22:56 -0000 Author: pho Date: Fri Sep 9 12:22:55 2016 New Revision: 305660 URL: https://svnweb.freebsd.org/changeset/base/305660 Log: Trim runtime. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/parallelmount.sh Modified: user/pho/stress2/misc/parallelmount.sh ============================================================================== --- user/pho/stress2/misc/parallelmount.sh Fri Sep 9 10:40:55 2016 (r305659) +++ user/pho/stress2/misc/parallelmount.sh Fri Sep 9 12:22:55 2016 (r305660) @@ -49,7 +49,7 @@ if [ $# -eq 0 ]; then done while kill -0 $! 2> /dev/null; do - for i in `jot 200`; do + for i in `jot 100`; do find $mntpoint > /dev/null 2>&1 done done @@ -59,8 +59,10 @@ if [ $# -eq 0 ]; then umount $mntpoint || sleep 1 done mdconfig -d -u $mdstart + exit 0 else - for i in `jot 200`; do + start=`date '+%s'` + while [ $((`date '+%s'` - start)) -lt 600 ]; do mount /dev/md${mdstart}$part $mntpoint umount $mntpoint mount From owner-svn-src-user@freebsd.org Fri Sep 9 13:27:21 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 EFEB0BD26A8 for ; Fri, 9 Sep 2016 13:27:21 +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 BE519BEC; Fri, 9 Sep 2016 13:27:21 +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 u89DRKAx095063; Fri, 9 Sep 2016 13:27:20 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u89DRKev095062; Fri, 9 Sep 2016 13:27:20 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201609091327.u89DRKev095062@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Fri, 9 Sep 2016 13:27:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305662 - 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.23 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: Fri, 09 Sep 2016 13:27:22 -0000 Author: pho Date: Fri Sep 9 13:27:20 2016 New Revision: 305662 URL: https://svnweb.freebsd.org/changeset/base/305662 Log: Added a finding. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/kevent7.sh Modified: user/pho/stress2/misc/kevent7.sh ============================================================================== --- user/pho/stress2/misc/kevent7.sh Fri Sep 9 13:23:07 2016 (r305661) +++ user/pho/stress2/misc/kevent7.sh Fri Sep 9 13:27:20 2016 (r305662) @@ -35,6 +35,9 @@ # Spinning threads seen. # Fixed in r255877. +# "panic: softclock_call_cc: act 0xfffff801219a0840 0" seen: +# https://people.freebsd.org/~pho/stress/log/kevent7.txt + [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg From owner-svn-src-user@freebsd.org Fri Sep 9 13:52:32 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 BB69BBD2CC4 for ; Fri, 9 Sep 2016 13:52:32 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mx1.sbone.de (mx1.sbone.de [IPv6:2a01:4f8:130:3ffc::401:25]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mx1.sbone.de", Issuer "SBone.DE" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 80B0BA96; Fri, 9 Sep 2016 13:52:32 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 5515725D38A5; Fri, 9 Sep 2016 13:52:29 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id 8BFEBD1F7F8; Fri, 9 Sep 2016 13:52:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id qzk0ZeeQxNvP; Fri, 9 Sep 2016 13:52:27 +0000 (UTC) Received: from [10.4.95.236] (fresh-tun0-ula.sbone.de [IPv6:fde9:577b:c1a9:4920:2ef0:eeff:fe03:ee34]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id DD993D1F7DD; Fri, 9 Sep 2016 13:52:26 +0000 (UTC) From: "Bjoern A. Zeeb" To: "Peter Holm" Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r305662 - user/pho/stress2/misc Date: Fri, 09 Sep 2016 13:52:25 +0000 Message-ID: <9D8A07EE-E319-4D32-A657-38019B36CD36@lists.zabbadoz.net> In-Reply-To: <201609091327.u89DRKev095062@repo.freebsd.org> References: <201609091327.u89DRKev095062@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed X-Mailer: MailMate (2.0BETAr6054) X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 09 Sep 2016 13:52:32 -0000 On 9 Sep 2016, at 13:27, Peter Holm wrote: > Author: pho > Date: Fri Sep 9 13:27:20 2016 > New Revision: 305662 > URL: https://svnweb.freebsd.org/changeset/base/305662 > > Log: > Added a finding. > > +# "panic: softclock_call_cc: act 0xfffff801219a0840 0" seen: > +# https://people.freebsd.org/~pho/stress/log/kevent7.txt I would see them once in a while, while doing my vimage stress-tests. Think I added show callout ddb command though not expecting it to be a valid data structure at that point. /bz From owner-svn-src-user@freebsd.org Fri Sep 9 14:43: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 AC142BD2DCC for ; Fri, 9 Sep 2016 14:43:23 +0000 (UTC) (envelope-from pho@holm.cc) Received: from relay01.pair.com (relay01.pair.com [209.68.5.15]) (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 8BBD6BB6; Fri, 9 Sep 2016 14:43:22 +0000 (UTC) (envelope-from pho@holm.cc) Received: from x2.osted.lan (87-58-223-204-dynamic.dk.customer.tdc.net [87.58.223.204]) by relay01.pair.com (Postfix) with ESMTP id 2BC43D00AEE; Fri, 9 Sep 2016 10:43:21 -0400 (EDT) Received: from x2.osted.lan (localhost [127.0.0.1]) by x2.osted.lan (8.14.9/8.14.9) with ESMTP id u89EhJvg022344 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 9 Sep 2016 16:43:19 +0200 (CEST) (envelope-from pho@x2.osted.lan) Received: (from pho@localhost) by x2.osted.lan (8.14.9/8.14.9/Submit) id u89EhJXk022343; Fri, 9 Sep 2016 16:43:19 +0200 (CEST) (envelope-from pho) Date: Fri, 9 Sep 2016 16:43:19 +0200 From: Peter Holm To: "Bjoern A. Zeeb" Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r305662 - user/pho/stress2/misc Message-ID: <20160909144319.GA19960@x2.osted.lan> References: <201609091327.u89DRKev095062@repo.freebsd.org> <9D8A07EE-E319-4D32-A657-38019B36CD36@lists.zabbadoz.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9D8A07EE-E319-4D32-A657-38019B36CD36@lists.zabbadoz.net> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 09 Sep 2016 14:43:23 -0000 On Fri, Sep 09, 2016 at 01:52:25PM +0000, Bjoern A. Zeeb wrote: > On 9 Sep 2016, at 13:27, Peter Holm wrote: > > > Author: pho > > Date: Fri Sep 9 13:27:20 2016 > > New Revision: 305662 > > URL: https://svnweb.freebsd.org/changeset/base/305662 > > > > Log: > > Added a finding. > > > > +# "panic: softclock_call_cc: act 0xfffff801219a0840 0" seen: > > +# https://people.freebsd.org/~pho/stress/log/kevent7.txt > > I would see them once in a while, while doing my vimage stress-tests. > Think I added show callout ddb command though not expecting it to > be a valid data structure at that point. > > /bz Right, nice. db> show callout 0xfffff80121c8ed40 callout 0xfffff80121c8ed40 &c_links = 0xfffff80121c8ed40 c_time = 5084927349880 c_precision = 0 c_arg = 0xfffff801c0364300 c_func = 0xffffffff80a0c6f0 c_lock = 0 c_flags = 0 c_iflags = 0x94 c_cpu = 20 db> x/i 0xffffffff80a0c6f0 filt_timerexpire: pushq %rbp db> I have no problem triggereing this. -- Peter From owner-svn-src-user@freebsd.org Fri Sep 9 21:00: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 C5361BD2F82 for ; Fri, 9 Sep 2016 21:00:10 +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 7EC50C61; Fri, 9 Sep 2016 21:00:10 +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 u89L09aW067123; Fri, 9 Sep 2016 21:00:09 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u89L07hn067101; Fri, 9 Sep 2016 21:00:07 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201609092100.u89L07hn067101@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 9 Sep 2016 21:00:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305674 - in user/alc/PQ_LAUNDRY: . contrib/bmake contrib/bmake/mk etc/mtree lib/libc/aarch64/sys lib/libc/amd64/sys lib/libc/arm/sys lib/libc/i386/sys lib/libc/mips/sys lib/libc/powerp... 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.23 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: Fri, 09 Sep 2016 21:00:10 -0000 Author: markj Date: Fri Sep 9 21:00:07 2016 New Revision: 305674 URL: https://svnweb.freebsd.org/changeset/base/305674 Log: MFH r305673 Added: user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_dns/tests/ - copied from r305673, head/lib/libcasper/services/cap_dns/tests/ user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_grp/tests/ - copied from r305673, head/lib/libcasper/services/cap_grp/tests/ user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_pwd/tests/ - copied from r305673, head/lib/libcasper/services/cap_pwd/tests/ user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_sysctl/tests/ - copied from r305673, head/lib/libcasper/services/cap_sysctl/tests/ user/alc/PQ_LAUNDRY/share/man/man4/cxgbev.4 - copied unchanged from r305673, head/share/man/man4/cxgbev.4 user/alc/PQ_LAUNDRY/sys/arm/annapurna/alpine/alpine_ccu.c - copied unchanged from r305673, head/sys/arm/annapurna/alpine/alpine_ccu.c user/alc/PQ_LAUNDRY/sys/arm/annapurna/alpine/alpine_nb_service.c - copied unchanged from r305673, head/sys/arm/annapurna/alpine/alpine_nb_service.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/common/t4vf_hw.c - copied unchanged from r305673, head/sys/dev/cxgbe/common/t4vf_hw.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/if_cxlv.c - copied unchanged from r305673, head/sys/dev/cxgbe/if_cxlv.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_vf.c - copied unchanged from r305673, head/sys/dev/cxgbe/t4_vf.c user/alc/PQ_LAUNDRY/sys/mips/malta/asm_malta.S - copied unchanged from r305673, head/sys/mips/malta/asm_malta.S user/alc/PQ_LAUNDRY/sys/mips/malta/malta_mp.c - copied unchanged from r305673, head/sys/mips/malta/malta_mp.c user/alc/PQ_LAUNDRY/sys/modules/cxgbe/if_cxgbev/ - copied from r305673, head/sys/modules/cxgbe/if_cxgbev/ user/alc/PQ_LAUNDRY/sys/modules/cxgbe/if_cxlv/ - copied from r305673, head/sys/modules/cxgbe/if_cxlv/ Deleted: user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis.h user/alc/PQ_LAUNDRY/tools/regression/capsicum/libcasper/ Modified: user/alc/PQ_LAUNDRY/UPDATING user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog user/alc/PQ_LAUNDRY/contrib/bmake/Makefile user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 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/mk/ChangeLog user/alc/PQ_LAUNDRY/contrib/bmake/mk/dirdeps.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/meta.sys.mk user/alc/PQ_LAUNDRY/contrib/bmake/mk/prog.mk user/alc/PQ_LAUNDRY/contrib/bmake/os.sh user/alc/PQ_LAUNDRY/contrib/bmake/suff.c user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/amd64/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/arm/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/i386/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/mips/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/powerpc/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/powerpc64/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/riscv/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/sparc64/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/sys/Makefile.inc user/alc/PQ_LAUNDRY/lib/libc/sys/_exit.2 user/alc/PQ_LAUNDRY/lib/libc/sys/intro.2 user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_dns/Makefile user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_grp/Makefile user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_pwd/Makefile user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_sysctl/Makefile user/alc/PQ_LAUNDRY/lib/libstand/nfs.c user/alc/PQ_LAUNDRY/share/man/man3/Makefile user/alc/PQ_LAUNDRY/share/man/man3/queue.3 user/alc/PQ_LAUNDRY/share/man/man4/Makefile user/alc/PQ_LAUNDRY/share/man/man4/amdsbwd.4 user/alc/PQ_LAUNDRY/share/man/man4/cxgbe.4 user/alc/PQ_LAUNDRY/share/man/man4/ddb.4 user/alc/PQ_LAUNDRY/share/man/man4/intpm.4 user/alc/PQ_LAUNDRY/share/man/man4/pci.4 user/alc/PQ_LAUNDRY/share/man/man4/vt.4 user/alc/PQ_LAUNDRY/share/mk/bsd.subdir.mk user/alc/PQ_LAUNDRY/share/mk/dirdeps.mk user/alc/PQ_LAUNDRY/share/mk/meta.sys.mk user/alc/PQ_LAUNDRY/share/timedef/ko_KR.UTF-8.src user/alc/PQ_LAUNDRY/share/timedef/ko_KR.eucKR.src user/alc/PQ_LAUNDRY/sys/amd64/amd64/initcpu.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/axp81x.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_cpuclk.c user/alc/PQ_LAUNDRY/sys/arm/allwinner/clk/aw_pll.c user/alc/PQ_LAUNDRY/sys/arm/annapurna/alpine/alpine_machdep.c user/alc/PQ_LAUNDRY/sys/arm/annapurna/alpine/alpine_machdep_mp.c user/alc/PQ_LAUNDRY/sys/arm/conf/ALPINE user/alc/PQ_LAUNDRY/sys/arm/conf/NOTES user/alc/PQ_LAUNDRY/sys/arm64/arm64/cpufunc_asm.S user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c user/alc/PQ_LAUNDRY/sys/arm64/arm64/trap.c user/alc/PQ_LAUNDRY/sys/arm64/conf/GENERIC user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/a83t.dtsi user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/annapurna-alpine.dts user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/arm/sinovoip-bpi-m3.dts user/alc/PQ_LAUNDRY/sys/boot/fdt/dts/riscv/qemu.dts user/alc/PQ_LAUNDRY/sys/boot/i386/pxeldr/pxeboot.8 user/alc/PQ_LAUNDRY/sys/cam/cam_periph.c user/alc/PQ_LAUNDRY/sys/cam/scsi/scsi_all.c user/alc/PQ_LAUNDRY/sys/cam/scsi/scsi_all.h user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_ioctl.c user/alc/PQ_LAUNDRY/sys/compat/freebsd32/freebsd32_ioctl.h user/alc/PQ_LAUNDRY/sys/conf/NOTES user/alc/PQ_LAUNDRY/sys/conf/files user/alc/PQ_LAUNDRY/sys/conf/files.arm user/alc/PQ_LAUNDRY/sys/conf/files.arm64 user/alc/PQ_LAUNDRY/sys/conf/options.mips user/alc/PQ_LAUNDRY/sys/crypto/skein/amd64/skein_block_asm.s (contents, props changed) user/alc/PQ_LAUNDRY/sys/ddb/db_command.c user/alc/PQ_LAUNDRY/sys/ddb/db_main.c user/alc/PQ_LAUNDRY/sys/ddb/db_run.c user/alc/PQ_LAUNDRY/sys/ddb/ddb.h user/alc/PQ_LAUNDRY/sys/dev/ahci/ahci.c user/alc/PQ_LAUNDRY/sys/dev/amdsbwd/amdsbwd.c user/alc/PQ_LAUNDRY/sys/dev/ath/ath_hal/ah.c user/alc/PQ_LAUNDRY/sys/dev/ath/ath_hal/ah.h user/alc/PQ_LAUNDRY/sys/dev/ath/ath_hal/ah_internal.h user/alc/PQ_LAUNDRY/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/adapter.h user/alc/PQ_LAUNDRY/sys/dev/cxgbe/common/common.h user/alc/PQ_LAUNDRY/sys/dev/cxgbe/common/t4_hw.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_sge.c user/alc/PQ_LAUNDRY/sys/dev/gpio/gpiobusvar.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.c user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/if_hnreg.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/if_hnvar.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/ndis.h user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_kvp.c user/alc/PQ_LAUNDRY/sys/dev/intpm/intpm.c user/alc/PQ_LAUNDRY/sys/dev/usb/input/ums.c user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_rum.c user/alc/PQ_LAUNDRY/sys/fs/nullfs/null_vnops.c user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c user/alc/PQ_LAUNDRY/sys/i386/i386/vm86.c user/alc/PQ_LAUNDRY/sys/kern/capabilities.conf user/alc/PQ_LAUNDRY/sys/kern/kern_mutex.c user/alc/PQ_LAUNDRY/sys/kern/uipc_mbuf.c user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c user/alc/PQ_LAUNDRY/sys/mips/cavium/octeon_mp.c user/alc/PQ_LAUNDRY/sys/mips/gxemul/gxemul_machdep.c user/alc/PQ_LAUNDRY/sys/mips/include/hwfunc.h user/alc/PQ_LAUNDRY/sys/mips/include/intr.h user/alc/PQ_LAUNDRY/sys/mips/malta/files.malta user/alc/PQ_LAUNDRY/sys/mips/malta/std.malta user/alc/PQ_LAUNDRY/sys/mips/mips/locore.S user/alc/PQ_LAUNDRY/sys/mips/mips/mips_pic.c user/alc/PQ_LAUNDRY/sys/mips/mips/mp_machdep.c user/alc/PQ_LAUNDRY/sys/mips/mips/nexus.c user/alc/PQ_LAUNDRY/sys/mips/nlm/xlp_machdep.c user/alc/PQ_LAUNDRY/sys/mips/rmi/xlr_machdep.c user/alc/PQ_LAUNDRY/sys/mips/sibyte/sb_machdep.c user/alc/PQ_LAUNDRY/sys/mips/sibyte/sb_scd.c user/alc/PQ_LAUNDRY/sys/modules/cxgbe/Makefile user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_freebsd.c user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_freebsd.h user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c user/alc/PQ_LAUNDRY/sys/powerpc/conf/NOTES user/alc/PQ_LAUNDRY/sys/powerpc/mpc85xx/platform_mpc85xx.c user/alc/PQ_LAUNDRY/sys/security/audit/audit_syscalls.c user/alc/PQ_LAUNDRY/sys/sys/queue.h user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_balloc.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_extern.h user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_inode.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_softdep.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_suspend.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_vfsops.c user/alc/PQ_LAUNDRY/sys/ufs/ffs/ffs_vnops.c user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_lookup.c user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_quota.c user/alc/PQ_LAUNDRY/sys/ufs/ufs/ufs_vnops.c user/alc/PQ_LAUNDRY/tools/tools/locale/Makefile user/alc/PQ_LAUNDRY/usr.bin/bmake/Makefile user/alc/PQ_LAUNDRY/usr.bin/sort/sort.1.in user/alc/PQ_LAUNDRY/usr.sbin/etcupdate/etcupdate.sh user/alc/PQ_LAUNDRY/usr.sbin/newsyslog/newsyslog.c Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) user/alc/PQ_LAUNDRY/contrib/bmake/ (props changed) user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/ (props changed) Modified: user/alc/PQ_LAUNDRY/UPDATING ============================================================================== --- user/alc/PQ_LAUNDRY/UPDATING Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/UPDATING Fri Sep 9 21:00:07 2016 (r305674) @@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20160908: + The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into + two separate components, QUEUE_MACRO_DEBUG_TRACE and + QUEUE_MACRO_DEBUG_TRASH. Define both for the original + QUEUE_MACRO_DEBUG behavior. + 20160824: r304787 changed some ioctl interfaces between the iSCSI userspace programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be Modified: user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/ChangeLog Fri Sep 9 21:00:07 2016 (r305674) @@ -1,3 +1,32 @@ +2016-08-18 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160818 + its a neater number; pick up whitespace fixes to man page. + +2016-08-17 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160817 + Merge with NetBSD make, pick up + o meta.c: move handling of .MAKE.META.IGNORE_* to meta_ignore() + so we can call it before adding entries to missingFiles. + Thus we do not track files we have been told to ignore. + +2016-08-15 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160815 + Merge with NetBSD make, pick up + o meta_oodate: apply .MAKE.META.IGNORE_FILTER (if defined) to + pathnames, and skip if the expansion is empty. + Useful for dirdeps.mk when checking DIRDEPS_CACHE. + +2016-08-12 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20160812 + Merge with NetBSD make, pick up + o meta.c: remove all missingFiles entries that match a deleted + dir. + o main.c: set .ERROR_CMD if possible. + 2016-06-06 Simon J. Gerraty * Makefile (_MAKE_VERSION): 20160606 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/Makefile ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/Makefile Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/Makefile Fri Sep 9 21:00:07 2016 (r305674) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.67 2016/06/07 00:46:12 sjg Exp $ +# $Id: Makefile,v 1.72 2016/08/18 23:02:26 sjg Exp $ # Base version on src date -_MAKE_VERSION= 20160606 +_MAKE_VERSION= 20160818 PROG= bmake Modified: user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/bmake.1 Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.259 2016/06/03 07:07:37 wiz Exp $ +.\" $NetBSD: make.1,v 1.262 2016/08/18 19:23:20 wiz 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 June 2, 2016 +.Dd August 15, 2016 .Dt MAKE 1 .Os .Sh NAME @@ -927,6 +927,9 @@ The default list includes: .It Va .MAKE.META.IGNORE_PATTERNS Provides a list of patterns to match against pathnames. Ignore any that match. +.It Va .MAKE.META.IGNORE_FILTER +Provides a list of variable modifiers to apply to each pathname. +Ignore if the expansion is an empty string. .It Va .MAKE.META.PREFIX Defines the message printed for each meta file updated in "meta verbose" mode. The default value is: @@ -974,7 +977,19 @@ per normal evaluation rules. .It Va MAKE_PRINT_VAR_ON_ERROR When .Nm -stops due to an error, it prints its name and the value of +stops due to an error, it sets +.Ql Va .ERROR_TARGET +to the name of the target that failed, +.Ql Va .ERROR_CMD +to the commands of the failed target, +and in "meta" mode, it also sets +.Ql Va .ERROR_CWD +to the +.Xr getcwd 3 , +and +.Ql Va .ERROR_META_FILE +to the path of the meta file (if any) describing the failed target. +It then prints its name and the value of .Ql Va .CURDIR as well as the value of any variables named in .Ql Va MAKE_PRINT_VAR_ON_ERROR . Modified: user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/bmake.cat1 Fri Sep 9 21:00:07 2016 (r305674) @@ -604,6 +604,10 @@ VVAARRIIAABBLLEE AASSSSIIGG Provides a list of patterns to match against pathnames. Ignore any that match. + _._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___F_I_L_T_E_R + Provides a list of variable modifiers to apply to each + pathname. Ignore if the expansion is an empty string. + _._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: @@ -635,9 +639,14 @@ VVAARRIIAABBLLEE AASSSSIIGG becomes `$' per normal evaluation rules. _M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R - When bbmmaakkee stops due to an error, it prints its name and - the value of `_._C_U_R_D_I_R' as well as the value of any vari- - ables named in `_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R'. + When bbmmaakkee stops due to an error, it sets `_._E_R_R_O_R___T_A_R_G_E_T' + to the name of the target that failed, `_._E_R_R_O_R___C_M_D' to + the commands of the failed target, and in "meta" mode, it + also sets `_._E_R_R_O_R___C_W_D' to the getcwd(3), and + `_._E_R_R_O_R___M_E_T_A___F_I_L_E' to the path of the meta file (if any) + describing the failed target. It then prints its name + and the value of `_._C_U_R_D_I_R' as well as the value of any + variables named in `_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R'. _._n_e_w_l_i_n_e This variable is simply assigned a newline character as its value. This allows expansions using the ::@@ modifier @@ -1489,4 +1498,4 @@ BBUUGGSS There is no way of escaping a space character in a filename. -NetBSD 5.1 June 2, 2016 NetBSD 5.1 +NetBSD 5.1 August 15, 2016 NetBSD 5.1 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/main.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/main.c Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/main.c Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.247 2016/06/05 01:39:17 christos Exp $ */ +/* $NetBSD: main.c,v 1.250 2016/08/11 19:53:17 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.247 2016/06/05 01:39:17 christos Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.250 2016/08/11 19:53:17 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.247 2016/06/05 01:39:17 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.250 2016/08/11 19:53:17 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -1903,11 +1903,10 @@ cached_realpath(const char *pathname, ch #endif } - rp = Var_Value(pathname, cache, &cp); - if (rp) { + if ((rp = Var_Value(pathname, cache, &cp)) != NULL) { /* a hit */ strlcpy(resolved, rp, MAXPATHLEN); - } else if ((rp = realpath(pathname, resolved))) { + } else if ((rp = realpath(pathname, resolved)) != NULL) { Var_Set(pathname, rp, cache, 0); } free(cp); @@ -1922,6 +1921,14 @@ PrintAddr(void *a, void *b) } +static int +addErrorCMD(void *cmdp, void *gnp) +{ + if (cmdp == NULL) + return 1; /* stop */ + Var_Append(".ERROR_CMD", cmdp, VAR_GLOBAL); + return 0; +} void PrintOnError(GNode *gn, const char *s) @@ -1942,6 +1949,8 @@ PrintOnError(GNode *gn, const char *s) * We can print this even if there is no .ERROR target. */ Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL, 0); + Var_Delete(".ERROR_CMD", VAR_GLOBAL); + Lst_ForEach(gn->commands, addErrorCMD, gn); } strncpy(tmp, "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}", sizeof(tmp) - 1); Modified: user/alc/PQ_LAUNDRY/contrib/bmake/make.1 ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/make.1 Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/make.1 Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.259 2016/06/03 07:07:37 wiz Exp $ +.\" $NetBSD: make.1,v 1.262 2016/08/18 19:23:20 wiz 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 June 2, 2016 +.Dd August 15, 2016 .Dt MAKE 1 .Os .Sh NAME @@ -938,6 +938,9 @@ The default list includes: .It Va .MAKE.META.IGNORE_PATTERNS Provides a list of patterns to match against pathnames. Ignore any that match. +.It Va .MAKE.META.IGNORE_FILTER +Provides a list of variable modifiers to apply to each pathname. +Ignore if the expansion is an empty string. .It Va .MAKE.META.PREFIX Defines the message printed for each meta file updated in "meta verbose" mode. The default value is: @@ -985,7 +988,19 @@ per normal evaluation rules. .It Va MAKE_PRINT_VAR_ON_ERROR When .Nm -stops due to an error, it prints its name and the value of +stops due to an error, it sets +.Ql Va .ERROR_TARGET +to the name of the target that failed, +.Ql Va .ERROR_CMD +to the commands of the failed target, +and in "meta" mode, it also sets +.Ql Va .ERROR_CWD +to the +.Xr getcwd 3 , +and +.Ql Va .ERROR_META_FILE +to the path of the meta file (if any) describing the failed target. +It then prints its name and the value of .Ql Va .CURDIR as well as the value of any variables named in .Ql Va MAKE_PRINT_VAR_ON_ERROR . Modified: user/alc/PQ_LAUNDRY/contrib/bmake/meta.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/meta.c Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/meta.c Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.61 2016/06/07 00:40:00 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.67 2016/08/17 15:52:42 sjg Exp $ */ /* * Implement 'meta' mode. @@ -69,6 +69,9 @@ static char *metaIgnorePathsStr; /* stri #ifndef MAKE_META_IGNORE_PATTERNS #define MAKE_META_IGNORE_PATTERNS ".MAKE.META.IGNORE_PATTERNS" #endif +#ifndef MAKE_META_IGNORE_FILTER +#define MAKE_META_IGNORE_FILTER ".MAKE.META.IGNORE_FILTER" +#endif Boolean useMeta = FALSE; static Boolean useFilemon = FALSE; @@ -79,6 +82,7 @@ static Boolean metaEnv = FALSE; /* don' 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 metaIgnoreFilter = FALSE; /* do we have more complex filtering? */ static Boolean metaCurdirOk = FALSE; /* write .meta in .CURDIR Ok? */ static Boolean metaSilent = FALSE; /* if we have a .meta be SILENT */ @@ -645,6 +649,11 @@ meta_mode_init(const char *make_mode) metaIgnorePatterns = TRUE; free(cp); } + cp = NULL; + if (Var_Value(MAKE_META_IGNORE_FILTER, VAR_GLOBAL, &cp)) { + metaIgnoreFilter = TRUE; + free(cp); + } } /* @@ -869,6 +878,7 @@ fgetLine(char **bufp, size_t *szp, int o return 0; } +/* Lst_ForEach wants 1 to stop search */ static int prefix_match(void *p, void *q) { @@ -879,6 +889,32 @@ prefix_match(void *p, void *q) return (0 == strncmp(path, prefix, n)); } +/* + * looking for exact or prefix/ match to + * Lst_Find wants 0 to stop search + */ +static int +path_match(const void *p, const void *q) +{ + const char *prefix = q; + const char *path = p; + size_t n = strlen(prefix); + int rc; + + if ((rc = strncmp(path, prefix, n)) == 0) { + switch (path[n]) { + case '\0': + case '/': + break; + default: + rc = 1; + break; + } + } + return rc; +} + +/* Lst_Find wants 0 to stop search */ static int string_match(const void *p, const void *q) { @@ -889,6 +925,67 @@ string_match(const void *p, const void * } +static int +meta_ignore(GNode *gn, const char *p) +{ + char fname[MAXPATHLEN]; + + if (p == NULL) + return TRUE; + + if (*p == '/') { + cached_realpath(p, fname); /* clean it up */ + if (Lst_ForEach(metaIgnorePaths, prefix_match, fname)) { +#ifdef DEBUG_META_MODE + if (DEBUG(META)) + fprintf(debug_file, "meta_oodate: ignoring path: %s\n", + p); +#endif + return TRUE; + } + } + + if (metaIgnorePatterns) { + char *pm; + + snprintf(fname, sizeof(fname), + "${%s:@m@${%s:L:M$m}@}", + MAKE_META_IGNORE_PATTERNS, p); + pm = Var_Subst(NULL, fname, 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); + return TRUE; + } + free(pm); + } + + if (metaIgnoreFilter) { + char *fm; + + /* skip if filter result is empty */ + snprintf(fname, sizeof(fname), + "${%s:L:${%s:ts:}}", + p, MAKE_META_IGNORE_FILTER); + fm = Var_Subst(NULL, fname, gn, VARF_WANTRES); + if (*fm == '\0') { +#ifdef DEBUG_META_MODE + if (DEBUG(META)) + fprintf(debug_file, "meta_oodate: ignoring filtered: %s\n", + p); +#endif + free(fm); + return TRUE; + } + free(fm); + } + return FALSE; +} + /* * When running with 'meta' functionality, a target can be out-of-date * if any of the references in its meta data file is more recent. @@ -1170,12 +1267,19 @@ meta_oodate(GNode *gn, Boolean oodate) /* FALLTHROUGH */ case 'D': /* unlink */ if (*p == '/' && !Lst_IsEmpty(missingFiles)) { - /* remove p from the missingFiles list if present */ - if ((ln = Lst_Find(missingFiles, p, string_match)) != NULL) { - char *tp = Lst_Datum(ln); - Lst_Remove(missingFiles, ln); - free(tp); - ln = NULL; /* we're done with it */ + /* remove any missingFiles entries that match p */ + if ((ln = Lst_Find(missingFiles, p, + path_match)) != NULL) { + LstNode nln; + char *tp; + + do { + nln = Lst_FindFrom(missingFiles, Lst_Succ(ln), + p, path_match); + tp = Lst_Datum(ln); + Lst_Remove(missingFiles, ln); + free(tp); + } while ((ln = nln) != NULL); } } if (buf[0] == 'M') { @@ -1240,8 +1344,10 @@ meta_oodate(GNode *gn, Boolean oodate) if ((link_src != NULL && cached_lstat(p, &fs) < 0) || (link_src == NULL && cached_stat(p, &fs) < 0)) { - if (Lst_Find(missingFiles, p, string_match) == NULL) + if (!meta_ignore(gn, p)) { + if (Lst_Find(missingFiles, p, string_match) == NULL) Lst_AtEnd(missingFiles, bmake_strdup(p)); + } } break; check_link_src: @@ -1259,37 +1365,9 @@ meta_oodate(GNode *gn, Boolean oodate) * be part of the dependencies because * they are _expected_ to change. */ - if (*p == '/') { - cached_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 path: %s\n", - p); -#endif - 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); - } - + if (meta_ignore(gn, p)) + break; + /* * The rest of the record is the file name. * Check if it's not an absolute path. @@ -1547,7 +1625,7 @@ meta_compat_parent(void) while (fgets(buf, sizeof(buf), fp)) { meta_job_output(NULL, buf, ""); printf("%s", buf); - (void)fflush(stdout); + fflush(stdout); } fclose(fp); } Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/ChangeLog Fri Sep 9 21:00:07 2016 (r305674) @@ -1,3 +1,34 @@ +2016-08-15 Simon J. Gerraty + + * install-mk (MK_VERSION): 20160815 + + * dirdeps.mk (.MAKE.META.IGNORE_FILTER): set filter to only + consider Makefile.depend* when checking if DIRDEPS_CACHE is up-to-date. + +2016-08-13 Simon J. Gerraty + + * meta.sys.mk (.MAKE.META.IGNORE_PATHS): + in meta mode we can ignore the mtime of makefiles + +2016-08-02 Simon J. Gerraty + + * install-mk (MK_VERSION): 20160802 + + * lib.mk (libinstall): depends on beforinstall + + * prog.mk (proginstall): depends on beforinstall + patch from Lauri Tirkkonen + + * dirdeps.mk (bootstrap): When bootstrapping; creat + .MAKE.DEPENDFILE_DEFAULT and allow additional filtering via + .MAKE.DEPENDFILE_BOOTSTRAP_SED + + * dirdeps.mk: move some comments to where they make sense. + +2016-07-27 Simon J. Gerraty + + * dirdeps.mk (DIRDEPS_CACHE): no dirname. + 2016-06-02 Simon J. Gerraty * install-mk (MK_VERSION): 20160602 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/dirdeps.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/dirdeps.mk Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/dirdeps.mk Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -# $Id: dirdeps.mk,v 1.67 2016/04/18 21:50:47 sjg Exp $ +# $Id: dirdeps.mk,v 1.73 2016/08/15 19:28:13 sjg Exp $ # Copyright (c) 2010-2013, Juniper Networks, Inc. # All rights reserved. @@ -116,12 +116,17 @@ _DIRDEP_USE_LEVEL?= 0 .if ${.MAKE.LEVEL} == ${_DIRDEP_USE_LEVEL} # only the first instance is interested in all this -# First off, we want to know what ${MACHINE} to build for. -# This can be complicated if we are using a mixture of ${MACHINE} specific -# and non-specific Makefile.depend* - .if !target(_DIRDEP_USE) +# do some setup we only need once +_CURDIR ?= ${.CURDIR} +_OBJDIR ?= ${.OBJDIR} + +now_utc = ${%s:L:gmtime} +.if !defined(start_utc) +start_utc := ${now_utc} +.endif + .if ${MAKEFILE:T} == ${.PARSEFILE} && empty(DIRDEPS) && ${.TARGETS:Uall:M*/*} != "" # This little trick let's us do # @@ -144,15 +149,6 @@ MK_DIRDEPS_CACHE = no # make sure we get the behavior we expect .MAKE.SAVE_DOLLARS = no -# do some setup we only need once -_CURDIR ?= ${.CURDIR} -_OBJDIR ?= ${.OBJDIR} - -now_utc = ${%s:L:gmtime} -.if !defined(start_utc) -start_utc := ${now_utc} -.endif - # make sure these are empty to start with _DEP_TARGET_SPEC = @@ -223,6 +219,10 @@ N_notmachine := ${.MAKE.DEPENDFILE_PREFE .endif # !target(_DIRDEP_USE) +# First off, we want to know what ${MACHINE} to build for. +# This can be complicated if we are using a mixture of ${MACHINE} specific +# and non-specific Makefile.depend* + # if we were included recursively _DEP_TARGET_SPEC should be valid. .if empty(_DEP_TARGET_SPEC) # we may or may not have included a dependfile yet @@ -385,7 +385,7 @@ BUILD_DIRDEPS ?= yes .if !defined(NO_DIRDEPS) && !defined(NO_DIRDEPS_BELOW) .if ${MK_DIRDEPS_CACHE} == "yes" # this is where we will cache all our work -DIRDEPS_CACHE?= ${_OBJDIR}/dirdeps.cache${.TARGETS:Nall:O:u:ts-:S,/,_,g:S,^,.,:N.} +DIRDEPS_CACHE?= ${_OBJDIR:tA}/dirdeps.cache${.TARGETS:Nall:O:u:ts-:S,/,_,g:S,^,.,:N.} # just ensure this exists build-dirdeps: @@ -397,6 +397,9 @@ M_oneperline = @x@\\${.newline} $$x@ # we do this via sub-make BUILD_DIRDEPS = no +# ignore anything but these +.MAKE.META.IGNORE_FILTER = M*/${.MAKE.DEPENDFILE_PREFIX}* + dirdeps: dirdeps-cached dirdeps-cached: ${DIRDEPS_CACHE} .MAKE @echo "${TRACER}Using ${DIRDEPS_CACHE}" @@ -669,7 +672,10 @@ _DEP_RELDIR := ${RELDIR} make(bootstrap-recurse) || \ make(bootstrap-empty)) -.if exists(${.CURDIR}/${.MAKE.DEPENDFILE:T}) +# if we are bootstrapping create the default +_want = ${.CURDIR}/${.MAKE.DEPENDFILE_DEFAULT:T} + +.if exists(${_want}) # stop here ${.TARGETS:Mboot*}: .elif !make(bootstrap-empty) @@ -679,12 +685,19 @@ _src != cd ${.CURDIR} && for m in ${.MAK .error cannot find any of ${.MAKE.DEPENDFILE_PREFERENCE:T}${.newline}Use: bootstrap-empty .endif -_src?= ${.MAKE.DEPENDFILE:T} +_src?= ${.MAKE.DEPENDFILE} + +.MAKE.DEPENDFILE_BOOTSTRAP_SED+= -e 's,${_src:E},${MACHINE},g' # just create Makefile.depend* for this dir bootstrap-this: .NOTMAIN - @echo Bootstrapping ${RELDIR}/${.MAKE.DEPENDFILE:T} from ${_src:T} - (cd ${.CURDIR} && sed 's,${_src:E},${MACHINE},g' ${_src} > ${.MAKE.DEPENDFILE:T}) + @echo Bootstrapping ${RELDIR}/${_want:T} from ${_src:T}; \ + echo You need to build ${RELDIR} to correctly populate it. +.if ${_src:T} != ${.MAKE.DEPENDFILE_PREFIX:T} + (cd ${.CURDIR} && sed ${.MAKE.DEPENDFILE_BOOTSTRAP_SED} ${_src} > ${_want}) +.else + cp ${.CURDIR}/${_src} ${_want} +.endif # create Makefile.depend* for this dir and its dependencies bootstrap: bootstrap-recurse @@ -704,8 +717,8 @@ bootstrap-recurse: .NOTMAIN .MAKE # create an empty Makefile.depend* to get the ball rolling. bootstrap-empty: .NOTMAIN .NOMETA - @echo Creating empty ${RELDIR}/${.MAKE.DEPENDFILE:T}; \ + @echo Creating empty ${RELDIR}/${_want:T}; \ echo You need to build ${RELDIR} to correctly populate it. - @{ echo DIRDEPS=; echo ".include "; } > ${.CURDIR}/${.MAKE.DEPENDFILE:T} + @{ echo DIRDEPS=; echo ".include "; } > ${_want} .endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/install-mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/install-mk Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/install-mk Fri Sep 9 21:00:07 2016 (r305674) @@ -55,7 +55,7 @@ # Simon J. Gerraty # RCSid: -# $Id: install-mk,v 1.128 2016/06/03 17:22:32 sjg Exp $ +# $Id: install-mk,v 1.130 2016/08/15 19:28:13 sjg Exp $ # # @(#) Copyright (c) 1994 Simon J. Gerraty # @@ -70,7 +70,7 @@ # sjg@crufty.net # -MK_VERSION=20160602 +MK_VERSION=20160815 OWNER= GROUP= MODE=444 Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/lib.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/lib.mk Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/lib.mk Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -# $Id: lib.mk,v 1.53 2016/03/22 20:45:14 sjg Exp $ +# $Id: lib.mk,v 1.54 2016/08/02 20:52:17 sjg Exp $ .if !target(__${.PARSEFILE}__) __${.PARSEFILE}__: @@ -564,6 +564,7 @@ libinstall: install: maninstall _SUBDIRUSE maninstall: afterinstall afterinstall: realinstall +libinstall: beforeinstall realinstall: beforeinstall .endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta.sys.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta.sys.mk Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/meta.sys.mk Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -# $Id: meta.sys.mk,v 1.28 2016/04/05 15:58:37 sjg Exp $ +# $Id: meta.sys.mk,v 1.29 2016/08/13 17:51:45 sjg Exp $ # # @(#) Copyright (c) 2010, Simon J. Gerraty @@ -25,6 +25,10 @@ # absoulte path to what we are reading. _PARSEDIR = ${.PARSEDIR:tA} +.if !defined(SYS_MK_DIR) +SYS_MK_DIR := ${_PARSEDIR} +.endif + META_MODE += meta verbose .MAKE.MODE ?= ${META_MODE} @@ -119,6 +123,15 @@ MKDEP_MK = meta.autodep.mk # re-running needlessly META_COOKIE_TOUCH= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET}} META_NOPHONY= + +# some targets involve old pre-built targets +# ignore mtime of shell +# and mtime of makefiles does not matter in meta mode +.MAKE.META.IGNORE_PATHS += \ + ${MAKEFILE} \ + ${SHELL} \ + ${SYS_MK_DIR} + .if ${UPDATE_DEPENDFILE:Uyes:tl} != "no" .if ${.MAKEFLAGS:Uno:M-k} != "" # make this more obvious Modified: user/alc/PQ_LAUNDRY/contrib/bmake/mk/prog.mk ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/mk/prog.mk Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/mk/prog.mk Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -# $Id: prog.mk,v 1.26 2016/03/22 20:45:14 sjg Exp $ +# $Id: prog.mk,v 1.27 2016/08/02 20:52:17 sjg Exp $ .if !target(__${.PARSEFILE}__) __${.PARSEFILE}__: @@ -191,6 +191,7 @@ install_links: maninstall: afterinstall afterinstall: realinstall +proginstall: beforeinstall realinstall: beforeinstall .endif Modified: user/alc/PQ_LAUNDRY/contrib/bmake/os.sh ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/os.sh Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/os.sh Fri Sep 9 21:00:07 2016 (r305674) @@ -17,7 +17,7 @@ # Simon J. Gerraty # RCSid: -# $Id: os.sh,v 1.50 2015/12/17 17:06:29 sjg Exp $ +# $Id: os.sh,v 1.52 2016/06/17 05:15:14 sjg Exp $ # # @(#) Copyright (c) 1994 Simon J. Gerraty # @@ -139,7 +139,7 @@ SunOS) case $OS in NetBSD) HOST_ARCH=$MACHINE - SHARE_ARCH=$OS/$HOST + SHARE_ARCH=$OS/$HOST_ARCH ;; OpenBSD) arch=`Which arch /usr/bin:/usr/ucb:$PATH` @@ -208,7 +208,8 @@ TMP_DIRS=${TMP_DIRS:-"/tmp /var/tmp"} MACHINE_ARCH=${MACHINE_ARCH:-$MACHINE} HOST_ARCH=${HOST_ARCH:-$MACHINE_ARCH} # we mount server:/share/arch/$SHARE_ARCH as /usr/local -SHARE_ARCH=${SHARE_ARCH:-$OS/$OSMAJOR.X/$HOST_ARCH} +SHARE_ARCH_DEFAULT=$OS/$OSMAJOR.X/$HOST_ARCH +SHARE_ARCH=${SHARE_ARCH:-$SHARE_ARCH_DEFAULT} LN=${LN:-ln} TR=${TR:-tr} Modified: user/alc/PQ_LAUNDRY/contrib/bmake/suff.c ============================================================================== --- user/alc/PQ_LAUNDRY/contrib/bmake/suff.c Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/contrib/bmake/suff.c Fri Sep 9 21:00:07 2016 (r305674) @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $ */ +/* $NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $"; +static char rcsid[] = "$NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94"; #else -__RCSID("$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $"); +__RCSID("$NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $"); #endif #endif /* not lint */ #endif @@ -766,6 +766,8 @@ Suff_EndTransform(void *gnp, void *dummy { GNode *gn = (GNode *)gnp; + (void)dummy; + if ((gn->type & OP_DOUBLEDEP) && !Lst_IsEmpty (gn->cohorts)) gn = (GNode *)Lst_Datum(Lst_Last(gn->cohorts)); if ((gn->type & OP_TRANSFORM) && Lst_IsEmpty(gn->commands) && @@ -809,7 +811,7 @@ Suff_EndTransform(void *gnp, void *dummy fprintf(debug_file, "transformation %s complete\n", gn->name); } - return(dummy ? 0 : 0); + return 0; } /*- @@ -1215,7 +1217,7 @@ SuffAddSrc(void *sp, void *lsp) #ifdef DEBUG_SRC s2->cp = Lst_Init(FALSE); Lst_AtEnd(targ->cp, s2); - fprintf(debug_file, "1 add %x %x to %x:", targ, s2, ls->l); + fprintf(debug_file, "1 add %p %p to %p:", targ, s2, ls->l); Lst_ForEach(ls->l, PrintAddr, NULL); fprintf(debug_file, "\n"); #endif @@ -1233,7 +1235,7 @@ SuffAddSrc(void *sp, void *lsp) #ifdef DEBUG_SRC s2->cp = Lst_Init(FALSE); Lst_AtEnd(targ->cp, s2); - fprintf(debug_file, "2 add %x %x to %x:", targ, s2, ls->l); + fprintf(debug_file, "2 add %p %p to %p:", targ, s2, ls->l); Lst_ForEach(ls->l, PrintAddr, NULL); fprintf(debug_file, "\n"); #endif @@ -1305,14 +1307,14 @@ SuffRemoveSrc(Lst l) free(s->pref); else { #ifdef DEBUG_SRC - LstNode ln = Lst_Member(s->parent->cp, s); - if (ln != NULL) - Lst_Remove(s->parent->cp, ln); + LstNode ln2 = Lst_Member(s->parent->cp, s); + if (ln2 != NULL) + Lst_Remove(s->parent->cp, ln2); #endif --s->parent->children; } #ifdef DEBUG_SRC - fprintf(debug_file, "free: [l=%x] p=%x %d\n", l, s, s->children); + fprintf(debug_file, "free: [l=%p] p=%p %d\n", l, s, s->children); Lst_Destroy(s->cp, NULL); #endif Lst_Remove(l, ln); @@ -1323,7 +1325,7 @@ SuffRemoveSrc(Lst l) } #ifdef DEBUG_SRC else { - fprintf(debug_file, "keep: [l=%x] p=%x %d: ", l, s, s->children); + fprintf(debug_file, "keep: [l=%p] p=%p %d: ", l, s, s->children); Lst_ForEach(s->cp, PrintAddr, NULL); fprintf(debug_file, "\n"); } @@ -1372,7 +1374,7 @@ SuffFindThem(Lst srcs, Lst slst) */ if (Targ_FindNode(s->file, TARG_NOCREATE) != NULL) { #ifdef DEBUG_SRC - fprintf(debug_file, "remove %x from %x\n", s, srcs); + fprintf(debug_file, "remove %p from %p\n", s, srcs); #endif rs = s; break; @@ -1381,7 +1383,7 @@ SuffFindThem(Lst srcs, Lst slst) if ((ptr = Dir_FindFile(s->file, s->suff->searchPath)) != NULL) { rs = s; #ifdef DEBUG_SRC - fprintf(debug_file, "remove %x from %x\n", s, srcs); + fprintf(debug_file, "remove %p from %p\n", s, srcs); #endif free(ptr); break; @@ -1497,7 +1499,7 @@ SuffFindCmds(Src *targ, Lst slst) targ->children += 1; #ifdef DEBUG_SRC ret->cp = Lst_Init(FALSE); - fprintf(debug_file, "3 add %x %x\n", targ, ret); + fprintf(debug_file, "3 add %p %p\n", targ, ret); Lst_AtEnd(targ->cp, ret); #endif Lst_AtEnd(slst, ret); @@ -1616,7 +1618,7 @@ SuffExpandChildren(LstNode cln, GNode *p } free(freeIt); - } else if (*cp == '\\' && *cp != '\0') { + } else if (*cp == '\\' && cp[1] != '\0') { /* * Escaped something -- skip over it */ @@ -2597,8 +2599,10 @@ Suff_End(void) static int SuffPrintName(void *s, void *dummy) { + (void)dummy; + fprintf(debug_file, "%s ", ((Suff *)s)->name); - return (dummy ? 0 : 0); + return 0; } static int @@ -2608,6 +2612,8 @@ SuffPrintSuff(void *sp, void *dummy) int flags; int flag; + (void)dummy; + fprintf(debug_file, "# `%s' [%d] ", s->name, s->refCount); flags = s->flags; @@ -2640,7 +2646,7 @@ SuffPrintSuff(void *sp, void *dummy) fprintf(debug_file, "#\tSearch Path: "); Dir_PrintPath(s->searchPath); fputc('\n', debug_file); - return (dummy ? 0 : 0); + return 0; } static int @@ -2648,12 +2654,14 @@ SuffPrintTrans(void *tp, void *dummy) { GNode *t = (GNode *)tp; + (void)dummy; + fprintf(debug_file, "%-16s: ", t->name); Targ_PrintType(t->type); fputc('\n', debug_file); Lst_ForEach(t->commands, Targ_PrintCmd, NULL); fputc('\n', debug_file); - return(dummy ? 0 : 0); + return 0; } void Modified: user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist ============================================================================== --- user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/etc/mtree/BSD.tests.dist Fri Sep 9 21:00:07 2016 (r305674) @@ -308,6 +308,18 @@ ttyio .. .. + libcasper + services + cap_dns + .. + cap_grp + .. + cap_pwd + .. + cap_sysctl + .. + .. + .. libcrypt .. libdevdctl Modified: user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/Makefile.inc ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/Makefile.inc Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/lib/libc/aarch64/sys/Makefile.inc Fri Sep 9 21:00:07 2016 (r305674) @@ -11,13 +11,5 @@ MDASM= cerror.S \ vfork.S # Don't generate default code for these syscalls: -NOASM= break.o \ - exit.o \ - getlogin.o \ - sbrk.o \ - sstk.o \ - vfork.o \ - yield.o - -PSEUDO= _exit.o \ - _getlogin.o +NOASM+= sbrk.o \ + vfork.o Modified: user/alc/PQ_LAUNDRY/lib/libc/amd64/sys/Makefile.inc ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libc/amd64/sys/Makefile.inc Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/lib/libc/amd64/sys/Makefile.inc Fri Sep 9 21:00:07 2016 (r305674) @@ -8,6 +8,4 @@ MDASM= vfork.S brk.S cerror.S exect.S ge sbrk.S setlogin.S sigreturn.S # Don't generate default code for these syscalls: -NOASM= break.o exit.o getlogin.o sstk.o vfork.o yield.o - -PSEUDO= _getlogin.o _exit.o +NOASM+= vfork.o Modified: user/alc/PQ_LAUNDRY/lib/libc/arm/sys/Makefile.inc ============================================================================== --- user/alc/PQ_LAUNDRY/lib/libc/arm/sys/Makefile.inc Fri Sep 9 20:30:36 2016 (r305673) +++ user/alc/PQ_LAUNDRY/lib/libc/arm/sys/Makefile.inc Fri Sep 9 21:00:07 2016 (r305674) @@ -5,6 +5,4 @@ SRCS+= __vdso_gettc.c MDASM= Ovfork.S brk.S cerror.S sbrk.S shmat.S sigreturn.S syscall.S # Don't generate default code for these syscalls: -NOASM= break.o exit.o getlogin.o sstk.o vfork.o yield.o - -PSEUDO= _exit.o _getlogin.o +NOASM+= vfork.o *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@freebsd.org Sat Sep 10 17:15:00 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 1ADFFBD57A4 for ; Sat, 10 Sep 2016 17:15:00 +0000 (UTC) (envelope-from alc@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 B0417C52; Sat, 10 Sep 2016 17:14:59 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8AHExGi031780; Sat, 10 Sep 2016 17:14:59 GMT (envelope-from alc@FreeBSD.org) Received: (from alc@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8AHEvmd031762; Sat, 10 Sep 2016 17:14:57 GMT (envelope-from alc@FreeBSD.org) Message-Id: <201609101714.u8AHEvmd031762@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org using -f From: Alan Cox Date: Sat, 10 Sep 2016 17:14:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r305688 - in user/alc/PQ_LAUNDRY: sys/amd64/amd64 sys/arm/arm sys/arm64/arm64 sys/cddl/compat/opensolaris/sys sys/i386/i386 sys/kern sys/powerpc/booke sys/powerpc/conf sys/riscv/riscv s... 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.23 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, 10 Sep 2016 17:15:00 -0000 Author: alc Date: Sat Sep 10 17:14:57 2016 New Revision: 305688 URL: https://svnweb.freebsd.org/changeset/base/305688 Log: MFH r305685 Added: user/alc/PQ_LAUNDRY/tests/sys/kern/waitpid_nohang.c - copied unchanged from r305685, head/tests/sys/kern/waitpid_nohang.c Modified: user/alc/PQ_LAUNDRY/sys/amd64/amd64/pmap.c user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v6.c user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c user/alc/PQ_LAUNDRY/sys/cddl/compat/opensolaris/sys/random.h user/alc/PQ_LAUNDRY/sys/i386/i386/pmap.c user/alc/PQ_LAUNDRY/sys/kern/kern_exit.c user/alc/PQ_LAUNDRY/sys/kern/subr_witness.c user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XX user/alc/PQ_LAUNDRY/sys/riscv/riscv/pmap.c user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/pmap.c user/alc/PQ_LAUNDRY/sys/vm/pmap.h user/alc/PQ_LAUNDRY/tests/sys/kern/Makefile Directory Properties: user/alc/PQ_LAUNDRY/ (props changed) Modified: user/alc/PQ_LAUNDRY/sys/amd64/amd64/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/amd64/amd64/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/amd64/amd64/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -5816,8 +5816,6 @@ safe_to_clear_referenced(pmap_t pmap, pt return (FALSE); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -5826,10 +5824,6 @@ safe_to_clear_referenced(pmap_t pmap, pt * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. - * * As an optimization, update the page's dirty field if a modified bit is * found while counting reference bits. This opportunistic update can be * performed at low cost and can eliminate the need for some future calls @@ -5898,7 +5892,7 @@ retry: */ vm_page_dirty(m); } - if ((*pde & PG_A) != 0) { + if ((oldpde & PG_A) != 0) { /* * Since this reference bit is shared by 512 4KB * pages, it should not be cleared every time it is @@ -5919,7 +5913,7 @@ retry: */ if ((((pa >> PAGE_SHIFT) ^ (pv->pv_va >> PDRSHIFT) ^ (uintptr_t)pmap) & (NPTEPG - 1)) == 0 && - (*pde & PG_W) == 0) { + (oldpde & PG_W) == 0) { if (safe_to_clear_referenced(pmap, oldpde)) { atomic_clear_long(pde, PG_A); pmap_invalidate_page(pmap, pv->pv_va); Modified: user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v6.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v6.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/arm/arm/pmap-v6.c Sat Sep 10 17:14:57 2016 (r305688) @@ -5161,8 +5161,6 @@ pmap_is_referenced(vm_page_t m) return (rv); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -5171,10 +5169,6 @@ pmap_is_referenced(vm_page_t m) * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. - * * As an optimization, update the page's dirty field if a modified bit is * found while counting reference bits. This opportunistic update can be * performed at low cost and can eliminate the need for some future calls Modified: user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -3880,8 +3880,6 @@ safe_to_clear_referenced(pmap_t pmap, pt return (FALSE); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -3890,9 +3888,13 @@ safe_to_clear_referenced(pmap_t pmap, pt * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. + * As an optimization, update the page's dirty field if a modified bit is + * found while counting reference bits. This opportunistic update can be + * performed at low cost and can eliminate the need for some future calls + * to pmap_is_modified(). However, since this function stops after + * finding PMAP_TS_REFERENCED_MAX reference bits, it may not detect some + * dirty pages. Those dirty pages will only be detected by a future call + * to pmap_is_modified(). */ int pmap_ts_referenced(vm_page_t m) @@ -3947,6 +3949,14 @@ retry: ("pmap_ts_referenced: found an invalid l1 table")); pte = pmap_l1_to_l2(pde, pv->pv_va); tpte = pmap_load(pte); + if (pmap_page_dirty(tpte)) { + /* + * Although "tpte" is mapping a 2MB page, because + * this function is called at a 4KB page granularity, + * we only update the 4KB page under test. + */ + vm_page_dirty(m); + } if ((tpte & ATTR_AF) != 0) { /* * Since this reference bit is shared by 512 4KB @@ -4043,6 +4053,8 @@ small_mappings: ("pmap_ts_referenced: found an invalid l2 table")); pte = pmap_l2_to_l3(pde, pv->pv_va); tpte = pmap_load(pte); + if (pmap_page_dirty(tpte)) + vm_page_dirty(m); if ((tpte & ATTR_AF) != 0) { if (safe_to_clear_referenced(pmap, tpte)) { /* Modified: user/alc/PQ_LAUNDRY/sys/cddl/compat/opensolaris/sys/random.h ============================================================================== --- user/alc/PQ_LAUNDRY/sys/cddl/compat/opensolaris/sys/random.h Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/cddl/compat/opensolaris/sys/random.h Sat Sep 10 17:14:57 2016 (r305688) @@ -32,6 +32,6 @@ #include_next #define random_get_bytes(p, s) read_random((p), (int)(s)) -#define random_get_pseudo_bytes(p, s) read_random((p), (int)(s)) +#define random_get_pseudo_bytes(p, s) arc4rand((p), (int)(s), 0) #endif /* !_OPENSOLARIS_SYS_RANDOM_H_ */ Modified: user/alc/PQ_LAUNDRY/sys/i386/i386/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/i386/i386/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/i386/i386/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -4765,8 +4765,6 @@ retry: rw_wunlock(&pvh_global_lock); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -4775,10 +4773,6 @@ retry: * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. - * * As an optimization, update the page's dirty field if a modified bit is * found while counting reference bits. This opportunistic update can be * performed at low cost and can eliminate the need for some future calls Modified: user/alc/PQ_LAUNDRY/sys/kern/kern_exit.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/kern/kern_exit.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/kern/kern_exit.c Sat Sep 10 17:14:57 2016 (r305688) @@ -723,9 +723,9 @@ sys_wait4(struct thread *td, struct wait else rup = NULL; error = kern_wait(td, uap->pid, &status, uap->options, rup); - if (uap->status != NULL && error == 0) + if (uap->status != NULL && error == 0 && td->td_retval[0] != 0) error = copyout(&status, uap->status, sizeof(status)); - if (uap->rusage != NULL && error == 0) + if (uap->rusage != NULL && error == 0 && td->td_retval[0] != 0) error = copyout(&ru, uap->rusage, sizeof(struct rusage)); return (error); } @@ -759,9 +759,9 @@ sys_wait6(struct thread *td, struct wait */ error = kern_wait6(td, idtype, id, &status, uap->options, wrup, sip); - if (uap->status != NULL && error == 0) + if (uap->status != NULL && error == 0 && td->td_retval[0] != 0) error = copyout(&status, uap->status, sizeof(status)); - if (uap->wrusage != NULL && error == 0) + if (uap->wrusage != NULL && error == 0 && td->td_retval[0] != 0) error = copyout(&wru, uap->wrusage, sizeof(wru)); if (uap->info != NULL && error == 0) error = copyout(&si, uap->info, sizeof(si)); Modified: user/alc/PQ_LAUNDRY/sys/kern/subr_witness.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/kern/subr_witness.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/kern/subr_witness.c Sat Sep 10 17:14:57 2016 (r305688) @@ -623,6 +623,14 @@ static struct witness_order_list_entry o { "vnode interlock", &lock_class_mtx_sleep }, { NULL, NULL }, /* + * VFS namecache + */ + { "ncglobal", &lock_class_rw }, + { "ncbuc", &lock_class_rw }, + { "vnode interlock", &lock_class_mtx_sleep }, + { "ncneg", &lock_class_mtx_sleep }, + { NULL, NULL }, + /* * ZFS locking */ { "dn->dn_mtx", &lock_class_sx }, Modified: user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/kern/uipc_syscalls.c Sat Sep 10 17:14:57 2016 (r305688) @@ -1115,7 +1115,7 @@ orecvfrom(struct thread *td, struct recv #ifdef COMPAT_OLDSOCK int -orecv(struct thread *td, struct orecv_args) +orecv(struct thread *td, struct orecv_args *uap) { struct msghdr msg; struct iovec aiov; Modified: user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c Sat Sep 10 17:14:57 2016 (r305688) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -148,6 +149,23 @@ struct namecache_ts { * Upon reaching the last segment of a path, if the reference * is for DELETE, or NOCACHE is set (rewrite), and the * name is located in the cache, it will be dropped. + * + * These locks are used (in the order in which they can be taken): + * NAME TYPE ROLE + * cache_lock rwlock global, needed for all modifications + * bucketlock rwlock for access to given hash bucket + * ncneg_mtx mtx negative entry LRU management + * + * A name -> vnode lookup can be safely performed by either locking cache_lock + * or the relevant hash bucket. + * + * ".." and vnode -> name lookups require cache_lock. + * + * Modifications require both cache_lock and relevant bucketlock taken for + * writing. + * + * Negative entry LRU management requires ncneg_mtx taken on top of either + * cache_lock or bucketlock. */ /* @@ -179,8 +197,9 @@ SYSCTL_UINT(_vfs, OID_AUTO, ncsizefactor struct nchstats nchstats; /* cache effectiveness statistics */ static struct rwlock cache_lock; -RW_SYSINIT(vfscache, &cache_lock, "Name Cache"); +RW_SYSINIT(vfscache, &cache_lock, "ncglobal"); +#define CACHE_TRY_WLOCK() rw_try_wlock(&cache_lock) #define CACHE_UPGRADE_LOCK() rw_try_upgrade(&cache_lock) #define CACHE_RLOCK() rw_rlock(&cache_lock) #define CACHE_RUNLOCK() rw_runlock(&cache_lock) @@ -188,7 +207,12 @@ RW_SYSINIT(vfscache, &cache_lock, "Name #define CACHE_WUNLOCK() rw_wunlock(&cache_lock) static struct mtx_padalign ncneg_mtx; -MTX_SYSINIT(vfscache_neg, &ncneg_mtx, "Name Cache neg", MTX_DEF); +MTX_SYSINIT(vfscache_neg, &ncneg_mtx, "ncneg", MTX_DEF); + +static u_int numbucketlocks; +static struct rwlock_padalign *bucketlocks; +#define HASH2BUCKETLOCK(hash) \ + ((struct rwlock *)(&bucketlocks[((hash) % numbucketlocks)])) /* * UMA zones for the VFS cache. @@ -307,6 +331,8 @@ STATNODE_COUNTER(numfullpathfail4, "Numb STATNODE_COUNTER(numfullpathfound, "Number of successful fullpath calls"); static long numupgrades; STATNODE_ULONG(numupgrades, "Number of updates of the cache after lookup (write lock + retry)"); +static long zap_and_exit_bucket_fail; STATNODE_ULONG(zap_and_exit_bucket_fail, + "Number of times bucketlocked zap_and_exit case failed to writelock"); static void cache_zap(struct namecache *ncp); static int vn_vptocnp_locked(struct vnode **vp, struct ucred *cred, char *buf, @@ -326,6 +352,39 @@ cache_get_hash(char *name, u_char len, s return (hash); } +#ifdef INVARIANTS +static void +cache_assert_bucket_locked(struct namecache *ncp, int mode) +{ + struct rwlock *bucketlock; + uint32_t hash; + + hash = cache_get_hash(nc_get_name(ncp), ncp->nc_nlen, ncp->nc_dvp); + bucketlock = HASH2BUCKETLOCK(hash); + rw_assert(bucketlock, mode); +} +#else +#define cache_assert_bucket_locked(x, y) do { } while (0) +#endif + +static void +cache_lock_all_buckets(void) +{ + u_int i; + + for (i = 0; i < numbucketlocks; i++) + rw_wlock(&bucketlocks[i]); +} + +static void +cache_unlock_all_buckets(void) +{ + u_int i; + + for (i = 0; i < numbucketlocks; i++) + rw_wunlock(&bucketlocks[i]); +} + static int sysctl_nchstats(SYSCTL_HANDLER_ARGS) { @@ -442,21 +501,13 @@ SYSCTL_PROC(_debug_hashstat, OID_AUTO, n * Negative entries management */ static void -cache_negative_hit(struct namecache *ncp, int wlocked) +cache_negative_hit(struct namecache *ncp) { - if (!wlocked) { - rw_assert(&cache_lock, RA_RLOCKED); - mtx_lock(&ncneg_mtx); - } else { - rw_assert(&cache_lock, RA_WLOCKED); - } - + mtx_lock(&ncneg_mtx); TAILQ_REMOVE(&ncneg, ncp, nc_dst); TAILQ_INSERT_TAIL(&ncneg, ncp, nc_dst); - - if (!wlocked) - mtx_unlock(&ncneg_mtx); + mtx_unlock(&ncneg_mtx); } static void @@ -464,9 +515,12 @@ cache_negative_insert(struct namecache * { rw_assert(&cache_lock, RA_WLOCKED); + cache_assert_bucket_locked(ncp, RA_WLOCKED); MPASS(ncp->nc_vp == NULL); + mtx_lock(&ncneg_mtx); TAILQ_INSERT_TAIL(&ncneg, ncp, nc_dst); numneg++; + mtx_unlock(&ncneg_mtx); } static void @@ -474,9 +528,12 @@ cache_negative_remove(struct namecache * { rw_assert(&cache_lock, RA_WLOCKED); + cache_assert_bucket_locked(ncp, RA_WLOCKED); MPASS(ncp->nc_vp == NULL); + mtx_lock(&ncneg_mtx); TAILQ_REMOVE(&ncneg, ncp, nc_dst); numneg--; + mtx_unlock(&ncneg_mtx); } static struct namecache * @@ -499,10 +556,11 @@ cache_negative_zap_one(void) * pointer to a vnode or if it is just a negative cache entry. */ static void -cache_zap(struct namecache *ncp) +cache_zap_locked(struct namecache *ncp) { rw_assert(&cache_lock, RA_WLOCKED); + cache_assert_bucket_locked(ncp, RA_WLOCKED); CTR2(KTR_VFS, "cache_zap(%p) vp %p", ncp, ncp->nc_vp); if (ncp->nc_vp != NULL) { SDT_PROBE3(vfs, namecache, zap, done, ncp->nc_dvp, @@ -532,6 +590,21 @@ cache_zap(struct namecache *ncp) numcache--; } +static void +cache_zap(struct namecache *ncp) +{ + struct rwlock *bucketlock; + uint32_t hash; + + rw_assert(&cache_lock, RA_WLOCKED); + + hash = cache_get_hash(nc_get_name(ncp), ncp->nc_nlen, ncp->nc_dvp); + bucketlock = HASH2BUCKETLOCK(hash); + rw_wlock(bucketlock); + cache_zap_locked(ncp); + rw_wunlock(bucketlock); +} + /* * Lookup an entry in the cache * @@ -549,22 +622,42 @@ cache_zap(struct namecache *ncp) * not recursively acquired. */ +enum { UNLOCKED, WLOCKED, RLOCKED }; + +static void +cache_unlock(int cache_locked) +{ + + switch (cache_locked) { + case UNLOCKED: + break; + case WLOCKED: + CACHE_WUNLOCK(); + break; + case RLOCKED: + CACHE_RUNLOCK(); + break; + } +} + int cache_lookup(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, struct timespec *tsp, int *ticksp) { + struct rwlock *bucketlock; struct namecache *ncp; uint32_t hash; - int error, ltype, wlocked; + int error, ltype, cache_locked; if (!doingcache) { cnp->cn_flags &= ~MAKEENTRY; return (0); } retry: - wlocked = 0; - counter_u64_add(numcalls, 1); + bucketlock = NULL; + cache_locked = UNLOCKED; error = 0; + counter_u64_add(numcalls, 1); retry_wlocked: if (cnp->cn_nameptr[0] == '.') { @@ -598,17 +691,21 @@ retry_wlocked: } return (-1); } - if (!wlocked) - CACHE_RLOCK(); if (cnp->cn_namelen == 2 && cnp->cn_nameptr[1] == '.') { counter_u64_add(dotdothits, 1); + if (cache_locked == UNLOCKED) { + CACHE_RLOCK(); + cache_locked = RLOCKED; + } + if (dvp->v_cache_dd == NULL) { SDT_PROBE3(vfs, namecache, lookup, miss, dvp, "..", NULL); goto unlock; } if ((cnp->cn_flags & MAKEENTRY) == 0) { - if (!wlocked && !CACHE_UPGRADE_LOCK()) + if (cache_locked != WLOCKED && + !CACHE_UPGRADE_LOCK()) goto wlock; ncp = NULL; if (dvp->v_cache_dd->nc_flag & NCF_ISDOTDOT) { @@ -639,10 +736,14 @@ retry_wlocked: nc_dotdottime; goto success; } - } else if (!wlocked) - CACHE_RLOCK(); + } hash = cache_get_hash(cnp->cn_nameptr, cnp->cn_namelen, dvp); + if (cache_locked == UNLOCKED) { + bucketlock = HASH2BUCKETLOCK(hash); + rw_rlock(bucketlock); + } + LIST_FOREACH(ncp, (NCHHASH(hash)), nc_hash) { counter_u64_add(numchecks, 1); if (ncp->nc_dvp == dvp && ncp->nc_nlen == cnp->cn_namelen && @@ -665,12 +766,7 @@ retry_wlocked: /* We don't want to have an entry, so dump it */ if ((cnp->cn_flags & MAKEENTRY) == 0) { counter_u64_add(numposzaps, 1); - if (!wlocked && !CACHE_UPGRADE_LOCK()) - goto wlock; - cache_zap(ncp); - CACHE_WUNLOCK(); - cache_free(ncp); - return (0); + goto zap_and_exit; } /* We found a "positive" match, return the vnode */ @@ -689,25 +785,20 @@ negative_success: /* We found a negative match, and want to create it, so purge */ if (cnp->cn_nameiop == CREATE) { counter_u64_add(numnegzaps, 1); - if (!wlocked && !CACHE_UPGRADE_LOCK()) - goto wlock; - cache_zap(ncp); - CACHE_WUNLOCK(); - cache_free(ncp); - return (0); + goto zap_and_exit; } counter_u64_add(numneghits, 1); - cache_negative_hit(ncp, wlocked); + cache_negative_hit(ncp); if (ncp->nc_flag & NCF_WHITE) cnp->cn_flags |= ISWHITEOUT; SDT_PROBE2(vfs, namecache, lookup, hit__negative, dvp, nc_get_name(ncp)); cache_out_ts(ncp, tsp, ticksp); - if (wlocked) - CACHE_WUNLOCK(); - else - CACHE_RUNLOCK(); + MPASS(bucketlock != NULL || cache_locked != UNLOCKED); + if (bucketlock != NULL) + rw_runlock(bucketlock); + cache_unlock(cache_locked); return (ENOENT); wlock: @@ -716,9 +807,10 @@ wlock: * a write lock and retry the operation. */ CACHE_RUNLOCK(); +wlock_unlocked: CACHE_WLOCK(); numupgrades++; - wlocked = 1; + cache_locked = WLOCKED; goto retry_wlocked; success: @@ -733,10 +825,10 @@ success: VOP_UNLOCK(dvp, 0); } vhold(*vpp); - if (wlocked) - CACHE_WUNLOCK(); - else - CACHE_RUNLOCK(); + MPASS(bucketlock != NULL || cache_locked != UNLOCKED); + if (bucketlock != NULL) + rw_runlock(bucketlock); + cache_unlock(cache_locked); error = vget(*vpp, cnp->cn_lkflags | LK_VNHELD, cnp->cn_thread); if (cnp->cn_flags & ISDOTDOT) { vn_lock(dvp, ltype | LK_RETRY); @@ -758,10 +850,29 @@ success: return (-1); unlock: - if (wlocked) - CACHE_WUNLOCK(); - else - CACHE_RUNLOCK(); + MPASS(bucketlock != NULL || cache_locked != UNLOCKED); + if (bucketlock != NULL) + rw_runlock(bucketlock); + cache_unlock(cache_locked); + return (0); + +zap_and_exit: + if (bucketlock != NULL) { + rw_assert(&cache_lock, RA_UNLOCKED); + if (!CACHE_TRY_WLOCK()) { + rw_runlock(bucketlock); + bucketlock = NULL; + zap_and_exit_bucket_fail++; + goto wlock_unlocked; + } + cache_locked = WLOCKED; + rw_runlock(bucketlock); + bucketlock = NULL; + } else if (cache_locked != WLOCKED && !CACHE_UPGRADE_LOCK()) + goto wlock; + cache_zap(ncp); + CACHE_WUNLOCK(); + cache_free(ncp); return (0); } @@ -772,6 +883,7 @@ void cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp, struct timespec *tsp, struct timespec *dtsp) { + struct rwlock *bucketlock; struct namecache *ncp, *n2, *ndd, *nneg; struct namecache_ts *n3; struct nchashhead *ncpp; @@ -924,11 +1036,6 @@ cache_enter_time(struct vnode *dvp, stru } } - /* - * Insert the new namecache entry into the appropriate chain - * within the cache entries table. - */ - LIST_INSERT_HEAD(ncpp, ncp, nc_hash); if (flag != NCF_ISDOTDOT) { if (LIST_EMPTY(&dvp->v_cache_src)) { vhold(dvp); @@ -937,6 +1044,15 @@ cache_enter_time(struct vnode *dvp, stru LIST_INSERT_HEAD(&dvp->v_cache_src, ncp, nc_src); } + bucketlock = HASH2BUCKETLOCK(hash); + rw_wlock(bucketlock); + + /* + * Insert the new namecache entry into the appropriate chain + * within the cache entries table. + */ + LIST_INSERT_HEAD(ncpp, ncp, nc_hash); + /* * If the entry is "negative", we place it into the * "negative" cache queue, otherwise, we place it into the @@ -953,6 +1069,7 @@ cache_enter_time(struct vnode *dvp, stru SDT_PROBE2(vfs, namecache, enter_negative, done, dvp, nc_get_name(ncp)); } + rw_wunlock(bucketlock); if (numneg * ncnegfactor > numcache) nneg = cache_negative_zap_one(); CACHE_WUNLOCK(); @@ -960,12 +1077,24 @@ cache_enter_time(struct vnode *dvp, stru cache_free(nneg); } +static u_int +cache_roundup_2(u_int val) +{ + u_int res; + + for (res = 1; res <= val; res <<= 1) + continue; + + return (res); +} + /* * Name cache initialization, from vfs_init() when we are booting */ static void nchinit(void *dummy __unused) { + u_int i; TAILQ_INIT(&ncneg); @@ -983,6 +1112,13 @@ nchinit(void *dummy __unused) NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT); nchashtbl = hashinit(desiredvnodes * 2, M_VFSCACHE, &nchash); + numbucketlocks = cache_roundup_2(mp_ncpus * 16); + if (numbucketlocks > nchash) + numbucketlocks = nchash; + bucketlocks = malloc(sizeof(*bucketlocks) * numbucketlocks, M_VFSCACHE, + M_WAITOK | M_ZERO); + for (i = 0; i < numbucketlocks; i++) + rw_init_flags(&bucketlocks[i], "ncbuc", RW_DUPOK); numcalls = counter_u64_alloc(M_WAITOK); dothits = counter_u64_alloc(M_WAITOK); @@ -1023,6 +1159,7 @@ cache_changesize(int newmaxvnodes) * because to do so, they have to be removed from the hash table. */ CACHE_WLOCK(); + cache_lock_all_buckets(); old_nchashtbl = nchashtbl; old_nchash = nchash; nchashtbl = new_nchashtbl; @@ -1035,6 +1172,7 @@ cache_changesize(int newmaxvnodes) LIST_INSERT_HEAD(NCHHASH(hash), ncp, nc_hash); } } + cache_unlock_all_buckets(); CACHE_WUNLOCK(); free(old_nchashtbl, M_VFSCACHE); } @@ -1108,20 +1246,30 @@ void cache_purgevfs(struct mount *mp) { TAILQ_HEAD(, namecache) ncps; - struct nchashhead *ncpp; + struct rwlock *bucketlock; + struct nchashhead *bucket; struct namecache *ncp, *nnp; + u_long i, j, n_nchash; /* Scan hash tables for applicable entries */ SDT_PROBE1(vfs, namecache, purgevfs, done, mp); TAILQ_INIT(&ncps); CACHE_WLOCK(); - for (ncpp = &nchashtbl[nchash]; ncpp >= nchashtbl; ncpp--) { - LIST_FOREACH_SAFE(ncp, ncpp, nc_hash, nnp) { - if (ncp->nc_dvp->v_mount != mp) - continue; - cache_zap(ncp); - TAILQ_INSERT_TAIL(&ncps, ncp, nc_dst); + n_nchash = nchash + 1; + for (i = 0; i < numbucketlocks; i++) { + bucketlock = (struct rwlock *)&bucketlocks[i]; + rw_wlock(bucketlock); + for (j = i; j < n_nchash; j += numbucketlocks) { + bucket = &nchashtbl[j]; + LIST_FOREACH_SAFE(ncp, bucket, nc_hash, nnp) { + cache_assert_bucket_locked(ncp, RA_WLOCKED); + if (ncp->nc_dvp->v_mount != mp) + continue; + cache_zap_locked(ncp); + TAILQ_INSERT_HEAD(&ncps, ncp, nc_dst); + } } + rw_wunlock(bucketlock); } CACHE_WUNLOCK(); TAILQ_FOREACH_SAFE(ncp, &ncps, nc_dst, nnp) { Modified: user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -2499,9 +2499,13 @@ mmu_booke_clear_modify(mmu_t mmu, vm_pag * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. + * As an optimization, update the page's dirty field if a modified bit is + * found while counting reference bits. This opportunistic update can be + * performed at low cost and can eliminate the need for some future calls + * to pmap_is_modified(). However, since this function stops after + * finding PMAP_TS_REFERENCED_MAX reference bits, it may not detect some + * dirty pages. Those dirty pages will only be detected by a future call + * to pmap_is_modified(). */ static int mmu_booke_ts_referenced(mmu_t mmu, vm_page_t m) @@ -2518,6 +2522,8 @@ mmu_booke_ts_referenced(mmu_t mmu, vm_pa PMAP_LOCK(pv->pv_pmap); if ((pte = pte_find(mmu, pv->pv_pmap, pv->pv_va)) != NULL && PTE_ISVALID(pte)) { + if (PTE_ISMODIFIED(pte)) + vm_page_dirty(m); if (PTE_ISREFERENCED(pte)) { mtx_lock_spin(&tlbivax_mutex); tlb_miss_lock(); @@ -2528,7 +2534,7 @@ mmu_booke_ts_referenced(mmu_t mmu, vm_pa tlb_miss_unlock(); mtx_unlock_spin(&tlbivax_mutex); - if (++count > 4) { + if (++count >= PMAP_TS_REFERENCED_MAX) { PMAP_UNLOCK(pv->pv_pmap); break; } Modified: user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XX ============================================================================== --- user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XX Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XX Sat Sep 10 17:14:57 2016 (r305688) @@ -89,6 +89,7 @@ device tun device uart options USB_DEBUG # enable debug msgs #device uhci +device ehci device umass device usb device vlan Modified: user/alc/PQ_LAUNDRY/sys/riscv/riscv/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/riscv/riscv/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/riscv/riscv/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -2991,8 +2991,6 @@ safe_to_clear_referenced(pmap_t pmap, pt return (FALSE); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -3001,9 +2999,13 @@ safe_to_clear_referenced(pmap_t pmap, pt * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. + * As an optimization, update the page's dirty field if a modified bit is + * found while counting reference bits. This opportunistic update can be + * performed at low cost and can eliminate the need for some future calls + * to pmap_is_modified(). However, since this function stops after + * finding PMAP_TS_REFERENCED_MAX reference bits, it may not detect some + * dirty pages. Those dirty pages will only be detected by a future call + * to pmap_is_modified(). */ int pmap_ts_referenced(vm_page_t m) @@ -3012,7 +3014,7 @@ pmap_ts_referenced(vm_page_t m) pmap_t pmap; struct rwlock *lock; pd_entry_t *l2; - pt_entry_t *l3; + pt_entry_t *l3, old_l3; vm_paddr_t pa; int cleared, md_gen, not_cleared; struct spglist free; @@ -3050,15 +3052,18 @@ retry: ("pmap_ts_referenced: found an invalid l2 table")); l3 = pmap_l2_to_l3(l2, pv->pv_va); - if ((pmap_load(l3) & PTE_A) != 0) { - if (safe_to_clear_referenced(pmap, pmap_load(l3))) { + old_l3 = pmap_load(l3); + if (pmap_page_dirty(old_l3)) + vm_page_dirty(m); + if ((old_l3 & PTE_A) != 0) { + if (safe_to_clear_referenced(pmap, old_l3)) { /* * TODO: We don't handle the access flag * at all. We need to be able to set it in * the exception handler. */ panic("RISCVTODO: safe_to_clear_referenced\n"); - } else if ((pmap_load(l3) & PTE_SW_WIRED) == 0) { + } else if ((old_l3 & PTE_SW_WIRED) == 0) { /* * Wired pages cannot be paged out so * doing accessed bit emulation for Modified: user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/pmap.c ============================================================================== --- user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/pmap.c Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/sparc64/sparc64/pmap.c Sat Sep 10 17:14:57 2016 (r305688) @@ -2073,18 +2073,12 @@ pmap_page_is_mapped(vm_page_t m) return (rv); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * Return a count of reference bits for a page, clearing those bits. * It is not necessary for every reference bit to be cleared, but it * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. - * * As an optimization, update the page's dirty field if a modified bit is * found while counting reference bits. This opportunistic update can be * performed at low cost and can eliminate the need for some future calls Modified: user/alc/PQ_LAUNDRY/sys/vm/pmap.h ============================================================================== --- user/alc/PQ_LAUNDRY/sys/vm/pmap.h Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/sys/vm/pmap.h Sat Sep 10 17:14:57 2016 (r305688) @@ -104,6 +104,16 @@ extern vm_offset_t kernel_vm_end; #define PMAP_ENTER_NOSLEEP 0x0100 #define PMAP_ENTER_WIRED 0x0200 +/* + * Define the maximum number of machine-dependent reference bits that are + * cleared by a call to pmap_ts_referenced(). This limit serves two purposes. + * First, it bounds the cost of reference bit maintenance on widely shared + * pages. Second, it prevents numeric overflow during maintenance of a + * widely shared page's "act_count" field. An overflow could result in the + * premature deactivation of the page. + */ +#define PMAP_TS_REFERENCED_MAX 5 + void pmap_activate(struct thread *td); void pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice); Modified: user/alc/PQ_LAUNDRY/tests/sys/kern/Makefile ============================================================================== --- user/alc/PQ_LAUNDRY/tests/sys/kern/Makefile Sat Sep 10 17:00:08 2016 (r305687) +++ user/alc/PQ_LAUNDRY/tests/sys/kern/Makefile Sat Sep 10 17:14:57 2016 (r305688) @@ -12,6 +12,7 @@ PLAIN_TESTS_C+= subr_unit_test ATF_TESTS_C+= unix_seqpacket_test ATF_TESTS_C+= unix_passfd_test TEST_METADATA.unix_seqpacket_test+= timeout="15" +ATF_TESTS_C+= waitpid_nohang LIBADD.ptrace_test+= pthread LIBADD.unix_seqpacket_test+= pthread Copied: user/alc/PQ_LAUNDRY/tests/sys/kern/waitpid_nohang.c (from r305685, head/tests/sys/kern/waitpid_nohang.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/alc/PQ_LAUNDRY/tests/sys/kern/waitpid_nohang.c Sat Sep 10 17:14:57 2016 (r305688, copy of r305685, head/tests/sys/kern/waitpid_nohang.c) @@ -0,0 +1,70 @@ +/*- + * Copyright (c) 2016 Jilles Tjoelker + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include +#include +#include + +ATF_TC_WITHOUT_HEAD(waitpid_nohang); +ATF_TC_BODY(waitpid_nohang, tc) +{ + pid_t child, pid; + int status, r; + + child = fork(); + ATF_REQUIRE(child != -1); + if (child == 0) { + sleep(10); + _exit(1); + } + + status = 42; + pid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(pid == 0); + ATF_CHECK(status == 42); + + r = kill(child, SIGTERM); + ATF_REQUIRE(r == 0); + r = waitid(P_PID, child, NULL, WEXITED | WNOWAIT); + ATF_REQUIRE(r == 0); + + status = -1; + pid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(pid == child); + ATF_CHECK(WIFSIGNALED(status) && WTERMSIG(status) == SIGTERM); +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, waitpid_nohang); + return (atf_no_error()); +}