From owner-svn-src-user@freebsd.org Sun Mar 25 18:10:01 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8FFD3F5F7CC for ; Sun, 25 Mar 2018 18:10:01 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3C24171DE2; Sun, 25 Mar 2018 18:10:01 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 370B12180B; Sun, 25 Mar 2018 18:10:01 +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 w2PIA15q099018; Sun, 25 Mar 2018 18:10:01 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2PIA124099017; Sun, 25 Mar 2018 18:10:01 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803251810.w2PIA124099017@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Sun, 25 Mar 2018 18:10:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331535 - user/markj/vm-playground/sys/vm X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: user/markj/vm-playground/sys/vm X-SVN-Commit-Revision: 331535 X-SVN-Commit-Repository: base 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.25 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, 25 Mar 2018 18:10:01 -0000 Author: markj Date: Sun Mar 25 18:10:00 2018 New Revision: 331535 URL: https://svnweb.freebsd.org/changeset/base/331535 Log: Merge from user/jeff/numa. Modified: user/markj/vm-playground/sys/vm/vm_page.c Directory Properties: user/markj/vm-playground/ (props changed) Modified: user/markj/vm-playground/sys/vm/vm_page.c ============================================================================== --- user/markj/vm-playground/sys/vm/vm_page.c Sun Mar 25 17:12:09 2018 (r331534) +++ user/markj/vm-playground/sys/vm/vm_page.c Sun Mar 25 18:10:00 2018 (r331535) @@ -3922,8 +3922,12 @@ vm_page_launder(vm_page_t m) if (m->wire_count > 0 || (m->oflags & VPO_UNMANAGED) != 0) return; - vm_page_remque(m); - vm_page_enqueue_lazy(m, PQ_LAUNDRY); + if (m->queue == PQ_LAUNDRY) + vm_page_requeue(m); + else { + vm_page_remque(m); + vm_page_enqueue_lazy(m, PQ_LAUNDRY); + } } /* From owner-svn-src-user@freebsd.org Mon Mar 26 08:15:16 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 97AF3F50E42 for ; Mon, 26 Mar 2018 08:15:16 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ECA770E0F; Mon, 26 Mar 2018 08:15:16 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 48F1D221F; Mon, 26 Mar 2018 08:15:16 +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 w2Q8FG39042298; Mon, 26 Mar 2018 08:15:16 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2Q8FGwh042297; Mon, 26 Mar 2018 08:15:16 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201803260815.w2Q8FGwh042297@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Mon, 26 Mar 2018 08:15:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331544 - user/pho/stress2/misc X-SVN-Group: user X-SVN-Commit-Author: pho X-SVN-Commit-Paths: user/pho/stress2/misc X-SVN-Commit-Revision: 331544 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 08:15:16 -0000 Author: pho Date: Mon Mar 26 08:15:15 2018 New Revision: 331544 URL: https://svnweb.freebsd.org/changeset/base/331544 Log: Added a regression test for deadlock seen with "vmstat -z". Sponsored by: Dell EMC Isilon Added: user/pho/stress2/misc/vmstat.sh (contents, props changed) Added: user/pho/stress2/misc/vmstat.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/misc/vmstat.sh Mon Mar 26 08:15:15 2018 (r331544) @@ -0,0 +1,48 @@ +#!/bin/sh + +# +# Copyright (c) 2018 Dell EMC Isilon +# 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$ +# + +# vmstat(8) test scenario. +# Deadlock seen: +# https://people.freebsd.org/~pho/stress/log/vmstat.txt +# Fixed by r331489. + +. ../default.cfg + +set -e +(cd ../testcases/thr1; ./thr1 -t 1m -i 20 -l 100 > /dev/null) & # churn +pids=$! +for i in `jot 16`; do + while true; do vmstat -z > /dev/null; done & + pids="$pids $!" +done +sleep 60 +kill $pids > /dev/null 2>&1 +wait +exit 0 From owner-svn-src-user@freebsd.org Mon Mar 26 09:07:17 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5750BF54B19 for ; Mon, 26 Mar 2018 09:07:17 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0D38372AD2; Mon, 26 Mar 2018 09:07:17 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 07F542A02; Mon, 26 Mar 2018 09:07:17 +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 w2Q97GIk067427; Mon, 26 Mar 2018 09:07:16 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2Q97GxO067426; Mon, 26 Mar 2018 09:07:16 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201803260907.w2Q97GxO067426@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Mon, 26 Mar 2018 09:07:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331545 - user/pho/stress2/misc X-SVN-Group: user X-SVN-Commit-Author: pho X-SVN-Commit-Paths: user/pho/stress2/misc X-SVN-Commit-Revision: 331545 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 09:07:17 -0000 Author: pho Date: Mon Mar 26 09:07:16 2018 New Revision: 331545 URL: https://svnweb.freebsd.org/changeset/base/331545 Log: Cleaned up test, with no functional change intended, except limit runtime to 5 minutes. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/mount2.sh Modified: user/pho/stress2/misc/mount2.sh ============================================================================== --- user/pho/stress2/misc/mount2.sh Mon Mar 26 08:15:15 2018 (r331544) +++ user/pho/stress2/misc/mount2.sh Mon Mar 26 09:07:16 2018 (r331545) @@ -29,8 +29,10 @@ # # Stress test by performing parallel calls to mount and umount. Alternate -# between forced and non-forced unmounts +# between forced and non-forced unmounts. +# "kernel: g_dev_taste: make_dev_p() failed (gp->name=md10, error=17)" seen. + [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg @@ -38,45 +40,36 @@ mounts=15 # Number of parallel scripts D=$diskimage -if [ $# -eq 0 ]; then - for i in `jot $mounts`; do - m=$(( i + mdstart - 1 )) - [ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m - mount | grep "$mntpoint" | grep -q md$m && - umount ${mntpoint}$m - mdconfig -l | grep -q md$m && mdconfig -d -u $m +for i in `jot $mounts`; do + m=$(( i + mdstart - 1 )) + [ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m + mount | grep "$mntpoint" | grep -q md$m && + umount ${mntpoint}$m + mdconfig -l | grep -q md$m && mdconfig -d -u $m - dd if=/dev/zero of=$D$m bs=1m count=1 > /dev/null 2>&1 - mdconfig -a -t vnode -f $D$m -u $m || { rm -f $D$m; exit 1; } - bsdlabel -w md$m auto - newfs md${m}$part > /dev/null 2>&1 - done + dd if=/dev/zero of=$D$m bs=1m count=1 status=none + mdconfig -a -t vnode -f $D$m -u $m || { rm -f $D$m; exit 1; } + bsdlabel -w md$m auto + newfs md${m}$part > /dev/null +done - # start the parallel tests - for i in `jot $mounts`; do - m=$(( i + mdstart - 1 )) - ./$0 $m & - done - - - for i in `jot $mounts`; do - wait - done - - for i in `jot $mounts`; do - m=$(( i + mdstart - 1 )) - mdconfig -d -u $m - rm -f $D$m - done - -else - # The test: Parallel mount and unmounts - for i in `jot 1024`; do - m=$1 +# start the parallel tests +for i in `jot $mounts`; do + m=$(( i + mdstart - 1 )) + start=`date +%s` + while [ $((`date +%s` - start)) -lt 300 ]; do opt=`[ $(( m % 2 )) -eq 0 ] && echo -f` mount /dev/md${m}$part ${mntpoint}$m while mount | grep -q ${mntpoint}$m; do umount $opt ${mntpoint}$m > /dev/null 2>&1 done - done -fi + done & +done +wait + +for i in `jot $mounts`; do + m=$((i + mdstart - 1)) + mdconfig -d -u $m + rm -f $D$m +done +exit 0 From owner-svn-src-user@freebsd.org Mon Mar 26 16:06:04 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B5F09F511CF for ; Mon, 26 Mar 2018 16:06:04 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 88747849CA; Mon, 26 Mar 2018 16:06:04 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7DC6E7224; Mon, 26 Mar 2018 16:06:04 +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 w2QG645U082498; Mon, 26 Mar 2018 16:06:04 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2QG64bx082497; Mon, 26 Mar 2018 16:06:04 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803261606.w2QG64bx082497@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 26 Mar 2018 16:06:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331556 - user/markj/vm-playground/sys/vm X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: user/markj/vm-playground/sys/vm X-SVN-Commit-Revision: 331556 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 16:06:04 -0000 Author: markj Date: Mon Mar 26 16:06:04 2018 New Revision: 331556 URL: https://svnweb.freebsd.org/changeset/base/331556 Log: Fix some accounting errors in vm_page_alloc_pages_domain_after(). Modified: user/markj/vm-playground/sys/vm/vm_page.c Modified: user/markj/vm-playground/sys/vm/vm_page.c ============================================================================== --- user/markj/vm-playground/sys/vm/vm_page.c Mon Mar 26 15:22:25 2018 (r331555) +++ user/markj/vm-playground/sys/vm/vm_page.c Mon Mar 26 16:06:04 2018 (r331556) @@ -1968,15 +1968,15 @@ again: VM_FREEPOOL_DIRECT; vm_domain_free_lock(vmd); do { - i = vm_phys_alloc_npages(domain, pool, &m, - avail - nalloc); + i = vm_phys_alloc_npages(domain, pool, &m, avail); if (i == 0) { - vm_domain_freecnt_inc(vmd, avail - nalloc); + vm_domain_freecnt_inc(vmd, avail); break; } + avail -= i; for (; i > 0; i--) ma[nalloc++] = m++; - } while (nalloc < avail); + } while (avail > 0); vm_domain_free_unlock(vmd); } if (nalloc == 0 || (nalloc < nreq && (req & VM_ALLOC_WAITOK) != 0)) { From owner-svn-src-user@freebsd.org Mon Mar 26 18:07:35 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 683BDF5CDAD for ; Mon, 26 Mar 2018 18:07:35 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 17D0C6A75A; Mon, 26 Mar 2018 18:07:34 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id ED01310A8BE; Mon, 26 Mar 2018 14:07:27 -0400 (EDT) From: John Baldwin To: rgrimes@freebsd.org Cc: Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm Date: Mon, 26 Mar 2018 10:12:16 -0700 Message-ID: <1621825.K6AdhHRnSW@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201803241540.w2OFeOcX037035@pdx.rh.CN85.dnsmgr.net> References: <201803241540.w2OFeOcX037035@pdx.rh.CN85.dnsmgr.net> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Mon, 26 Mar 2018 14:07:28 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:07:35 -0000 On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > I know this is on a private branch, but when/if it > > > > is merged this becomes part of the main line. > > > > > > Not with svn, I think. > > > At least, the way we use it. > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > svn branch so that it's marginally easier for others to test. > > None the less as stated in: > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > 12 General guidelines: > 13 > 14 * Should be relevant to FreeBSD. > 15 * Should be at least conceivably of interest to somebody else. > 16 * Should be in a format that is suitable to merge into the base tree. > 17 * Should be something that is worth people's time to read commit mail for. > 18 * Write decent commit messages! > > Thanks, We generally don't do that for user, etc. branches. Merging from a projects/user branch into head in svn is often a disaster due to svn's limitations, so normally a projects/user branch is treated as a work area and the resulting diff is then hand-applied to head with a suitable commit message that describes the entire change. This is similar to using something like 'git rebase' to rewrite history and compress a long tail of changes down to a small number of commits prior to merging to head. You generally don't see these work branches in svn as most developers do them outside of svn in git, p4, hg, etc. due to svn's limitations. For things that live permanently in user/projects (e.g. the code for core elections or the patches for freebsd-update), we do want standard commit messages. However, I don't think we want to impose that on WIP branches that are later compressed down before merging. -- John Baldwin From owner-svn-src-user@freebsd.org Mon Mar 26 18:13:35 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D8A4FF5D3B8 for ; Mon, 26 Mar 2018 18:13:35 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3A6C16AC8E; Mon, 26 Mar 2018 18:13:34 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w2QIDXfG048334; Mon, 26 Mar 2018 11:13:33 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w2QIDX15048333; Mon, 26 Mar 2018 11:13:33 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201803261813.w2QIDX15048333@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm In-Reply-To: <1621825.K6AdhHRnSW@ralph.baldwin.cx> To: John Baldwin Date: Mon, 26 Mar 2018 11:13:33 -0700 (PDT) CC: rgrimes@freebsd.org, Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:13:36 -0000 > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > I know this is on a private branch, but when/if it > > > > > is merged this becomes part of the main line. > > > > > > > > Not with svn, I think. > > > > At least, the way we use it. > > > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > svn branch so that it's marginally easier for others to test. > > > > None the less as stated in: > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > 12 General guidelines: > > 13 > > 14 * Should be relevant to FreeBSD. > > 15 * Should be at least conceivably of interest to somebody else. > > 16 * Should be in a format that is suitable to merge into the base tree. > > 17 * Should be something that is worth people's time to read commit mail for. > > 18 * Write decent commit messages! > > > > Thanks, > > We generally don't do that for user, etc. branches. Merging from a > projects/user branch into head in svn is often a disaster due to svn's > limitations, so normally a projects/user branch is treated as a work area > and the resulting diff is then hand-applied to head with a suitable commit > message that describes the entire change. This is similar to using something > like 'git rebase' to rewrite history and compress a long tail of changes > down to a small number of commits prior to merging to head. I was quoting from a document that is specifically addressing "user and project" branches. It seems we have a conflict of opionion on this. > You generally don't see these work branches in svn as most developers do them > outside of svn in git, p4, hg, etc. due to svn's limitations. > > For things that live permanently in user/projects (e.g. the code for core > elections or the patches for freebsd-update), we do want standard commit > messages. However, I don't think we want to impose that on WIP branches > that are later compressed down before merging. Then why bother mailing them to @committers and having us all read through them. I am sure that was Peters intent when he wrote this guideline. And as far as I am aware all things in user/projects are permanent, and globally mirrored. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-user@freebsd.org Mon Mar 26 18:23:17 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 050BCF5DF6C for ; Mon, 26 Mar 2018 18:23:17 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AB04E6B528; Mon, 26 Mar 2018 18:23:16 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A5EF6108C7; Mon, 26 Mar 2018 18:23:16 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2QINGvT054415; Mon, 26 Mar 2018 18:23:16 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2QING5c054413; Mon, 26 Mar 2018 18:23:16 GMT (envelope-from des@FreeBSD.org) Message-Id: <201803261823.w2QING5c054413@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Mon, 26 Mar 2018 18:23:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331558 - user/des/fbce X-SVN-Group: user X-SVN-Commit-Author: des X-SVN-Commit-Paths: user/des/fbce X-SVN-Commit-Revision: 331558 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:23:17 -0000 Author: des Date: Mon Mar 26 18:23:16 2018 New Revision: 331558 URL: https://svnweb.freebsd.org/changeset/base/331558 Log: Document the dependency on MooseX::Types::Common::Numeric. Modified: user/des/fbce/Makefile.PL user/des/fbce/README Modified: user/des/fbce/Makefile.PL ============================================================================== --- user/des/fbce/Makefile.PL Mon Mar 26 16:31:12 2018 (r331557) +++ user/des/fbce/Makefile.PL Mon Mar 26 18:23:16 2018 (r331558) @@ -16,8 +16,8 @@ requires 'Catalyst::Plugin::Authentication'; requires 'Catalyst::Plugin::ConfigLoader'; requires 'Config::General'; requires 'Catalyst::Plugin::DateTime'; -requires 'MooseX::Types::DateTime::MoreCoercions'; requires 'MooseX::Types::Common::Numeric'; +requires 'MooseX::Types::DateTime::MoreCoercions'; requires 'Catalyst::Plugin::Session'; requires 'Catalyst::Plugin::Session::State::Cookie'; requires 'Catalyst::Plugin::Session::Store::FastMmap'; Modified: user/des/fbce/README ============================================================================== --- user/des/fbce/README Mon Mar 26 16:31:12 2018 (r331557) +++ user/des/fbce/README Mon Mar 26 18:23:16 2018 (r331558) @@ -17,6 +17,7 @@ pkg install \ p5-Catalyst-Plugin-Session-Store-FastMmap \ p5-Catalyst-Plugin-Static-Simple \ p5-Catalyst-View-TT \ + p5-MooseX-Types-Common \ p5-MooseX-Types-DateTime-MoreCoercions \ p5-Crypt-SaltedHash \ p5-Text-WikiFormat From owner-svn-src-user@freebsd.org Mon Mar 26 18:27:36 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BB656F5E57B for ; Mon, 26 Mar 2018 18:27:35 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1b.ore.mailhop.org (outbound1b.ore.mailhop.org [54.200.247.200]) (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 3D96F6B9DF for ; Mon, 26 Mar 2018 18:27:34 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-User: 1b3bd53d-3123-11e8-bb8e-b35b57339d60 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound1.ore.mailhop.org (Halon) with ESMTPSA id 1b3bd53d-3123-11e8-bb8e-b35b57339d60; Mon, 26 Mar 2018 18:25:49 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id w2QIQPaZ057933; Mon, 26 Mar 2018 12:26:25 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1522088785.49673.25.camel@freebsd.org> Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm From: Ian Lepore To: John Baldwin , rgrimes@freebsd.org Cc: Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Date: Mon, 26 Mar 2018 12:26:25 -0600 In-Reply-To: <1621825.K6AdhHRnSW@ralph.baldwin.cx> References: <201803241540.w2OFeOcX037035@pdx.rh.CN85.dnsmgr.net> <1621825.K6AdhHRnSW@ralph.baldwin.cx> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:27:36 -0000 On Mon, 2018-03-26 at 10:12 -0700, John Baldwin wrote: > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > > > > > I know this is on a private branch, but when/if it > > > > > is merged this becomes part of the main line. > > > > Not with svn, I think. > > > > At least, the way we use it. > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > svn branch so that it's marginally easier for others to test. > > None the less as stated in: > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > 12  General guidelines: > > 13  > > 14  * Should be relevant to FreeBSD. > > 15  * Should be at least conceivably of interest to somebody else. > > 16  * Should be in a format that is suitable to merge into the base tree. > > 17  * Should be something that is worth people's time to read commit mail for. > > 18  * Write decent commit messages! > > > > Thanks, > We generally don't do that for user, etc. branches.  Merging from a > projects/user branch into head in svn is often a disaster due to svn's > limitations, so normally a projects/user branch is treated as a work area > and the resulting diff is then hand-applied to head with a suitable commit > message that describes the entire change.  This is similar to using something > like 'git rebase' to rewrite history and compress a long tail of changes > down to a small number of commits prior to merging to head. > > You generally don't see these work branches in svn as most developers do them > outside of svn in git, p4, hg, etc. due to svn's limitations. > > For things that live permanently in user/projects (e.g. the code for core > elections or the patches for freebsd-update), we do want standard commit > messages.  However, I don't think we want to impose that on WIP branches > that are later compressed down before merging. > The support for armv6 happened this way... lots of out-of-tree and project-branch work, with nothing much useful in the way of commit messages, followed by a single massive import with a commit summary of something like "import armv6 support". Now when you try to search svn history for how something came to be, all you can find out is that it was part of the incomprehensibly-huge initial commit.  You can't even figure out who to ask about something, let alone why something was done. -- Ian From owner-svn-src-user@freebsd.org Mon Mar 26 18:34:04 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5EF97F5EDA3 for ; Mon, 26 Mar 2018 18:34:04 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 112BD6C08D; Mon, 26 Mar 2018 18:34:04 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0C01110A9F; Mon, 26 Mar 2018 18:34:04 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2QIY3rY059627; Mon, 26 Mar 2018 18:34:03 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2QIY3wG059625; Mon, 26 Mar 2018 18:34:03 GMT (envelope-from des@FreeBSD.org) Message-Id: <201803261834.w2QIY3wG059625@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Mon, 26 Mar 2018 18:34:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331560 - in user/des/fbce: . db X-SVN-Group: user X-SVN-Commit-Author: des X-SVN-Commit-Paths: in user/des/fbce: . db X-SVN-Commit-Revision: 331560 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:34:04 -0000 Author: des Date: Mon Mar 26 18:34:03 2018 New Revision: 331560 URL: https://svnweb.freebsd.org/changeset/base/331560 Log: The name of the postgresql superuser has changed. Modified: user/des/fbce/db/notes user/des/fbce/fbce.conf Modified: user/des/fbce/db/notes ============================================================================== --- user/des/fbce/db/notes Mon Mar 26 18:24:16 2018 (r331559) +++ user/des/fbce/db/notes Mon Mar 26 18:34:03 2018 (r331560) @@ -12,7 +12,7 @@ sudo service postgresql initdb sudo service postgresql start # Create a superuser for myself -sudo -u pgsql createuser -s des +sudo -u postgres createuser -s des # Create a regular user and database for FBCE createuser -S -D -R fbce Modified: user/des/fbce/fbce.conf ============================================================================== --- user/des/fbce/fbce.conf Mon Mar 26 18:24:16 2018 (r331559) +++ user/des/fbce/fbce.conf Mon Mar 26 18:34:03 2018 (r331560) @@ -1,7 +1,7 @@ # $FreeBSD$ -title = 2016 FreeBSD Core Team Election -descr = 2016 FreeBSD core team election +title = 2018 FreeBSD Core Team Election +descr = 2018 FreeBSD core team election @@ -12,12 +12,12 @@ descr = 2016 FreeBSD core team election - nominating_starts = 2016-05-18 18:00:00 UTC - nominating_ends = 2016-05-25 18:00:00 UTC - voting_starts = 2016-05-25 18:00:00 UTC - voting_ends = 2016-06-22 18:00:00 UTC - announcement = 2016-06-29 18:00:00 UTC - investiture = 2016-07-06 18:00:00 UTC + nominating_starts = 2018-05-16 18:00:00 UTC + nominating_ends = 2018-05-23 18:00:00 UTC + voting_starts = 2018-05-23 18:00:00 UTC + voting_ends = 2018-06-20 18:00:00 UTC + announcement = 2018-06-27 18:00:00 UTC + investiture = 2018-07-04 18:00:00 UTC From owner-svn-src-user@freebsd.org Mon Mar 26 18:42:38 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 82663F5F975 for ; Mon, 26 Mar 2018 18:42:38 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0B9C36C93F; Mon, 26 Mar 2018 18:42:37 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w2QIgXKe048429; Mon, 26 Mar 2018 11:42:33 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w2QIgXFJ048428; Mon, 26 Mar 2018 11:42:33 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201803261842.w2QIgXFJ048428@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm In-Reply-To: <1522088785.49673.25.camel@freebsd.org> To: Ian Lepore Date: Mon, 26 Mar 2018 11:42:33 -0700 (PDT) CC: John Baldwin , rgrimes@freebsd.org, Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 18:42:38 -0000 > On Mon, 2018-03-26 at 10:12 -0700, John Baldwin wrote: > > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > > > > > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > > > > > > > I know this is on a private branch, but when/if it > > > > > > is merged this becomes part of the main line. > > > > > Not with svn, I think. > > > > > At least, the way we use it. > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > > svn branch so that it's marginally easier for others to test. > > > None the less as stated in: > > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > > > 12? General guidelines: > > > 13? > > > 14? * Should be relevant to FreeBSD. > > > 15? * Should be at least conceivably of interest to somebody else. > > > 16? * Should be in a format that is suitable to merge into the base tree. > > > 17? * Should be something that is worth people's time to read commit mail for. > > > 18? * Write decent commit messages! > > > > > > Thanks, > > We generally don't do that for user, etc. branches.??Merging from a > > projects/user branch into head in svn is often a disaster due to svn's > > limitations, so normally a projects/user branch is treated as a work area > > and the resulting diff is then hand-applied to head with a suitable commit > > message that describes the entire change.??This is similar to using something > > like 'git rebase' to rewrite history and compress a long tail of changes > > down to a small number of commits prior to merging to head. > > > > You generally don't see these work branches in svn as most developers do them > > outside of svn in git, p4, hg, etc. due to svn's limitations. > > > > For things that live permanently in user/projects (e.g. the code for core > > elections or the patches for freebsd-update), we do want standard commit > > messages.??However, I don't think we want to impose that on WIP branches > > that are later compressed down before merging. > > > > The support for armv6 happened this way... lots of out-of-tree and > project-branch work, with nothing much useful in the way of commit > messages, followed by a single massive import with a commit summary of > something like "import armv6 support". > > Now when you try to search svn history for how something came to be, > all you can find out is that it was part of the incomprehensibly-huge > initial commit. ?You can't even figure out who to ask about something, > let alone why something was done. Similiarly I have tried to find out who and why certain former hard link files in /usr/bin that are extremly security related got changed from hard links to symlinks breaking a security assumption. A symlink can not contain the immutable attribute, -r-sr-xr-x 1 root wheel schg,uarch 25488 Jul 20 2017 /usr/bin/chpass lrwxr-xr-x 1 root wheel 6 Jul 20 2017 chfn -> chpass lrwxr-xr-x 1 root wheel 6 Jul 20 2017 chsh -> chpass lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchfn -> chpass lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchpass -> chpass lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchsh -> chpass This removes the immutable attribe that use to exist on these files, making it easier for them to be altered. This occurred on a branch that was merged by gjb, with out even a clue as to where that branch lives. I suppose our only method to research these types of things is through the mail archives? And if those commit messages are crap, that wont do us much good either, other than maybe yielding a name to contact. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-user@freebsd.org Mon Mar 26 21:54:04 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 27425F6EB19 for ; Mon, 26 Mar 2018 21:54:04 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A881C7614D; Mon, 26 Mar 2018 21:54:02 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id 2406910A8BA; Mon, 26 Mar 2018 17:54:02 -0400 (EDT) From: John Baldwin To: rgrimes@freebsd.org Cc: Ian Lepore , Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm Date: Mon, 26 Mar 2018 14:26:53 -0700 Message-ID: <2474043.hPEXl2xGZH@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201803261842.w2QIgXFJ048428@pdx.rh.CN85.dnsmgr.net> References: <201803261842.w2QIgXFJ048428@pdx.rh.CN85.dnsmgr.net> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Mon, 26 Mar 2018 17:54:02 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 21:54:04 -0000 On Monday, March 26, 2018 11:42:33 AM Rodney W. Grimes wrote: > > On Mon, 2018-03-26 at 10:12 -0700, John Baldwin wrote: > > > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > > > > > > > > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > > > > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > > > > > > > > > I know this is on a private branch, but when/if it > > > > > > > is merged this becomes part of the main line. > > > > > > Not with svn, I think. > > > > > > At least, the way we use it. > > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > > > svn branch so that it's marginally easier for others to test. > > > > None the less as stated in: > > > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > > > > > 12? General guidelines: > > > > 13? > > > > 14? * Should be relevant to FreeBSD. > > > > 15? * Should be at least conceivably of interest to somebody else. > > > > 16? * Should be in a format that is suitable to merge into the base tree. > > > > 17? * Should be something that is worth people's time to read commit mail for. > > > > 18? * Write decent commit messages! > > > > > > > > Thanks, > > > We generally don't do that for user, etc. branches.??Merging from a > > > projects/user branch into head in svn is often a disaster due to svn's > > > limitations, so normally a projects/user branch is treated as a work area > > > and the resulting diff is then hand-applied to head with a suitable commit > > > message that describes the entire change.??This is similar to using something > > > like 'git rebase' to rewrite history and compress a long tail of changes > > > down to a small number of commits prior to merging to head. > > > > > > You generally don't see these work branches in svn as most developers do them > > > outside of svn in git, p4, hg, etc. due to svn's limitations. > > > > > > For things that live permanently in user/projects (e.g. the code for core > > > elections or the patches for freebsd-update), we do want standard commit > > > messages.??However, I don't think we want to impose that on WIP branches > > > that are later compressed down before merging. > > > > > > > The support for armv6 happened this way... lots of out-of-tree and > > project-branch work, with nothing much useful in the way of commit > > messages, followed by a single massive import with a commit summary of > > something like "import armv6 support". > > > > Now when you try to search svn history for how something came to be, > > all you can find out is that it was part of the incomprehensibly-huge > > initial commit. ?You can't even figure out who to ask about something, > > let alone why something was done. > > Similiarly I have tried to find out who and why certain former > hard link files in /usr/bin that are extremly security related got > changed from hard links to symlinks breaking a security > assumption. A symlink can not contain the immutable attribute, > > -r-sr-xr-x 1 root wheel schg,uarch 25488 Jul 20 2017 /usr/bin/chpass > > lrwxr-xr-x 1 root wheel 6 Jul 20 2017 chfn -> chpass > lrwxr-xr-x 1 root wheel 6 Jul 20 2017 chsh -> chpass > lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchfn -> chpass > lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchpass -> chpass > lrwxr-xr-x 1 root wheel 6 Jul 20 2017 ypchsh -> chpass > > This removes the immutable attribe that use to exist on these files, > making it easier for them to be altered. > > This occurred on a branch that was merged by gjb, with out even > a clue as to where that branch lives. > > I suppose our only method to research these types of things is > through the mail archives? And if those commit messages are crap, > that wont do us much good either, other than maybe yielding a > name to contact. I suspect it is due to pkgbase and hardlinks not being "portable" (though tar can store them). I would agree that wholesale merges of branches isn't always the best strategy as I said in my reply to Ian. An example of this for me currently is my branch to add a debug server to bhyve. I've split out each of the new ioctls into its own commit / review with the initial debug server being a separate commit (I still need to create an initial review for that) rather than committing the entire thing as one blob. If you look at the commits on that branch though on github, some of them do have more details, some are skimpy (compile fixes, etc.) and it includes some false starts that had to be redone (e.g. I first implemented vCPU suspension using one method and then had to throw it away to implement the current one in review). That would be a messy history to wade through in comparison to N reasonably-sized commits on head each with a suitable commit log. This is not just a FreeBSD thing either. For my commits to GDB I end up compressing my work branches down to a smaller number of well-formed commits via 'git rebase' before pushing them into GDB's master. There are no merge commits that pull in branches in GDB, only pushes of "polished" commits. -- John Baldwin From owner-svn-src-user@freebsd.org Mon Mar 26 21:54:06 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 375EAF6EB31 for ; Mon, 26 Mar 2018 21:54:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D68B076166; Mon, 26 Mar 2018 21:54:05 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id 11B2110A7DB; Mon, 26 Mar 2018 17:54:05 -0400 (EDT) From: John Baldwin To: rgrimes@freebsd.org Cc: Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm Date: Mon, 26 Mar 2018 11:58:51 -0700 Message-ID: <126863891.cbjKKnxzry@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201803261813.w2QIDX15048333@pdx.rh.CN85.dnsmgr.net> References: <201803261813.w2QIDX15048333@pdx.rh.CN85.dnsmgr.net> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Mon, 26 Mar 2018 17:54:05 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 21:54:06 -0000 On Monday, March 26, 2018 11:13:33 AM Rodney W. Grimes wrote: > > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > I know this is on a private branch, but when/if it > > > > > > is merged this becomes part of the main line. > > > > > > > > > > Not with svn, I think. > > > > > At least, the way we use it. > > > > > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > > svn branch so that it's marginally easier for others to test. > > > > > > None the less as stated in: > > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > > > 12 General guidelines: > > > 13 > > > 14 * Should be relevant to FreeBSD. > > > 15 * Should be at least conceivably of interest to somebody else. > > > 16 * Should be in a format that is suitable to merge into the base tree. > > > 17 * Should be something that is worth people's time to read commit mail for. > > > 18 * Write decent commit messages! > > > > > > Thanks, > > > > We generally don't do that for user, etc. branches. Merging from a > > projects/user branch into head in svn is often a disaster due to svn's > > limitations, so normally a projects/user branch is treated as a work area > > and the resulting diff is then hand-applied to head with a suitable commit > > message that describes the entire change. This is similar to using something > > like 'git rebase' to rewrite history and compress a long tail of changes > > down to a small number of commits prior to merging to head. > > I was quoting from a document that is specifically addressing "user and > project" branches. It seems we have a conflict of opionion on this. There is less consensus on this than that document implies. Actual uses are more varied. > > You generally don't see these work branches in svn as most developers do them > > outside of svn in git, p4, hg, etc. due to svn's limitations. > > > > For things that live permanently in user/projects (e.g. the code for core > > elections or the patches for freebsd-update), we do want standard commit > > messages. However, I don't think we want to impose that on WIP branches > > that are later compressed down before merging. > > Then why bother mailing them to @committers and having us all read > through them. I am sure that was Peters intent when he wrote this > guideline. > > And as far as I am aware all things in user/projects are permanent, > and globally mirrored. Yes, they are. I don't do any of my work branches in svn personally, but I also don't generally have to coordinate with other developers for most of my branches. -- John Baldwin From owner-svn-src-user@freebsd.org Mon Mar 26 21:54:08 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05D6EF6EB42 for ; Mon, 26 Mar 2018 21:54:08 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3284376189; Mon, 26 Mar 2018 21:54:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) by mail.baldwin.cx (Postfix) with ESMTPSA id 60D0F10A8C2; Mon, 26 Mar 2018 17:54:06 -0400 (EDT) From: John Baldwin To: Ian Lepore Cc: rgrimes@freebsd.org, Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm Date: Mon, 26 Mar 2018 11:55:27 -0700 Message-ID: <2082659.Evq4QelJlA@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <1522088785.49673.25.camel@freebsd.org> References: <201803241540.w2OFeOcX037035@pdx.rh.CN85.dnsmgr.net> <1621825.K6AdhHRnSW@ralph.baldwin.cx> <1522088785.49673.25.camel@freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Mon, 26 Mar 2018 17:54:06 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 21:54:08 -0000 On Monday, March 26, 2018 12:26:25 PM Ian Lepore wrote: > On Mon, 2018-03-26 at 10:12 -0700, John Baldwin wrote: > > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > > > > > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > > > > > > > I know this is on a private branch, but when/if it > > > > > > is merged this becomes part of the main line. > > > > > Not with svn, I think. > > > > > At least, the way we use it. > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > > svn branch so that it's marginally easier for others to test. > > > None the less as stated in: > > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > > > 12 General guidelines: > > > 13 > > > 14 * Should be relevant to FreeBSD. > > > 15 * Should be at least conceivably of interest to somebody else. > > > 16 * Should be in a format that is suitable to merge into the base tree. > > > 17 * Should be something that is worth people's time to read commit mail for. > > > 18 * Write decent commit messages! > > > > > > Thanks, > > We generally don't do that for user, etc. branches. Merging from a > > projects/user branch into head in svn is often a disaster due to svn's > > limitations, so normally a projects/user branch is treated as a work area > > and the resulting diff is then hand-applied to head with a suitable commit > > message that describes the entire change. This is similar to using something > > like 'git rebase' to rewrite history and compress a long tail of changes > > down to a small number of commits prior to merging to head. > > > > You generally don't see these work branches in svn as most developers do them > > outside of svn in git, p4, hg, etc. due to svn's limitations. > > > > For things that live permanently in user/projects (e.g. the code for core > > elections or the patches for freebsd-update), we do want standard commit > > messages. However, I don't think we want to impose that on WIP branches > > that are later compressed down before merging. > > > > The support for armv6 happened this way... lots of out-of-tree and > project-branch work, with nothing much useful in the way of commit > messages, followed by a single massive import with a commit summary of > something like "import armv6 support". > > Now when you try to search svn history for how something came to be, > all you can find out is that it was part of the incomprehensibly-huge > initial commit. You can't even figure out who to ask about something, > let alone why something was done. That isn't fixed by having detailed commits in a WIP branch for compile fixes. To me that particular issue should be addressed by doing a better job importing things into HEAD including pulling out pieces of long-running branches and merging them as multiple commits each with useful commit messages. We should not rely on being able to find the history behind commits to HEAD because that history (if it exists) lives in random places. -- John Baldwin From owner-svn-src-user@freebsd.org Mon Mar 26 23:21:07 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E35D4F515D7 for ; Mon, 26 Mar 2018 23:21:06 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x22b.google.com (mail-io0-x22b.google.com [IPv6:2607:f8b0:4001:c06::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 74C607C51D for ; Mon, 26 Mar 2018 23:21:06 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x22b.google.com with SMTP id q80so14386111ioi.13 for ; Mon, 26 Mar 2018 16:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=hfPx+cH/xFhVCeMTzQGiEQsgMkVw3bGgITLn68dajy0=; b=Esjr3799sYsvTuhB4uJ0Cv5QUv1PKDMDzDhyaMjBvtV6AMEdEE5CjqUq1w/CVUCkis 06ywMHrLwdsIn512SjZ0wuvDQOb45jhxZD+AhRNaSRRnHKWlv8lwUx4Y64CIZ7Cj7lx5 DGmqSDlXNuKPon52Lq83u0gGI8883LsQne0EVF4yykSpMEiNaqcbwwMQHz2FYTFTG5fp J7VVRNFzF0P/Wto29lZa5dHHJwimoDpwwtysN8+tA4pjqJ+fJfi0GxQFriSjQ51o4ExT RFjtB5yQJcdKM1PKBDtPhOdTxgskq2bGSykpMmD6Anp5vJ5xSlHiw92WezPcTg78h7Cv n2dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=hfPx+cH/xFhVCeMTzQGiEQsgMkVw3bGgITLn68dajy0=; b=ST/Qtqrn1ChCkBZ60zkARnf+cXF65/lGkUPON4RNDXHBhLsELdEbwB67mVzuto9X6u R4LykjXDSXKaygGVqZDf7yX1fdBZb3KAiSU2QguQfPn5xwG3SOkklkMxUGVCnLMcadGV dw8Yfk+j9L67OZC+zgPMOGPKfkABvyMjHok0Un/aN8HPHu6QH2m1WLg5EXKjSKnT81Ap sbNMdjXYGy95CtcitYm3oIFe+e2LyPFot04K+8CTm7HMA96VyETAU4DR92t3XtKNVT8R lMm02g7nUeTqqxO/IxzjSRr8ovJEMCr/L7obN9koFoi4LWf25h+Ru7WH0KymfjK5sicY 6NCA== X-Gm-Message-State: AElRT7Hife5fMo2YcsMFHRj+CM4Kt8iadA07vq0i6C/xaLfSELTT4UE1 gUoSo/ip0YWDmAQyi1niIm2YL8LVImZb4F8JPXD7eA== X-Google-Smtp-Source: AG47ELvn8k1pOphLCTn9UCGpVEGKFh8CIcLp1G9z4OQaBDkAR7NePq+gB6psNsHBPRHYA9+TiOdvWShWVPlBstBIhS4= X-Received: by 10.107.58.134 with SMTP id h128mr41223496ioa.299.1522106465374; Mon, 26 Mar 2018 16:21:05 -0700 (PDT) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.203.196 with HTTP; Mon, 26 Mar 2018 16:21:04 -0700 (PDT) X-Originating-IP: [2607:fb90:485c:937b:7dbf:9fc4:8aeb:59f] Received: by 10.79.203.196 with HTTP; Mon, 26 Mar 2018 16:21:04 -0700 (PDT) In-Reply-To: <2082659.Evq4QelJlA@ralph.baldwin.cx> References: <201803241540.w2OFeOcX037035@pdx.rh.CN85.dnsmgr.net> <1621825.K6AdhHRnSW@ralph.baldwin.cx> <1522088785.49673.25.camel@freebsd.org> <2082659.Evq4QelJlA@ralph.baldwin.cx> From: Warner Losh Date: Mon, 26 Mar 2018 16:21:04 -0700 X-Google-Sender-Auth: 8cl03YbkaSMFxvol8bcb7_jK_ko Message-ID: Subject: Re: svn commit: r331461 - in user/markj/netdump/sys: kern netinet/netdump sys vm To: John Baldwin Cc: Ian Lepore , "Rodney W. Grimes" , Mark Johnston , Andriy Gapon , src-committers@freebsd.org, svn-src-user@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Mar 2018 23:21:07 -0000 On Mar 26, 2018 2:54 PM, "John Baldwin" wrote: On Monday, March 26, 2018 12:26:25 PM Ian Lepore wrote: > On Mon, 2018-03-26 at 10:12 -0700, John Baldwin wrote: > > On Saturday, March 24, 2018 08:40:24 AM Rodney W. Grimes wrote: > > > > > > > > > > > On Sat, Mar 24, 2018 at 02:17:02PM +0200, Andriy Gapon wrote: > > > > > > > > > > On 24/03/2018 04:46, Rodney W. Grimes wrote: > > > > > > > > > > > > I know this is on a private branch, but when/if it > > > > > > is merged this becomes part of the main line. > > > > > Not with svn, I think. > > > > > At least, the way we use it. > > > > Indeed, I have no intention to merge the branch directly. I'm using an > > > > svn branch so that it's marginally easier for others to test. > > > None the less as stated in: > > > https://svnweb.freebsd.org/base/projects/GUIDELINES.txt?view=markup > > > > > > 12 General guidelines: > > > 13 > > > 14 * Should be relevant to FreeBSD. > > > 15 * Should be at least conceivably of interest to somebody else. > > > 16 * Should be in a format that is suitable to merge into the base tree. > > > 17 * Should be something that is worth people's time to read commit mail for. > > > 18 * Write decent commit messages! > > > > > > Thanks, > > We generally don't do that for user, etc. branches. Merging from a > > projects/user branch into head in svn is often a disaster due to svn's > > limitations, so normally a projects/user branch is treated as a work area > > and the resulting diff is then hand-applied to head with a suitable commit > > message that describes the entire change. This is similar to using something > > like 'git rebase' to rewrite history and compress a long tail of changes > > down to a small number of commits prior to merging to head. > > > > You generally don't see these work branches in svn as most developers do them > > outside of svn in git, p4, hg, etc. due to svn's limitations. > > > > For things that live permanently in user/projects (e.g. the code for core > > elections or the patches for freebsd-update), we do want standard commit > > messages. However, I don't think we want to impose that on WIP branches > > that are later compressed down before merging. > > > > The support for armv6 happened this way... lots of out-of-tree and > project-branch work, with nothing much useful in the way of commit > messages, followed by a single massive import with a commit summary of > something like "import armv6 support". > > Now when you try to search svn history for how something came to be, > all you can find out is that it was part of the incomprehensibly-huge > initial commit. You can't even figure out who to ask about something, > let alone why something was done. That isn't fixed by having detailed commits in a WIP branch for compile fixes. To me that particular issue should be addressed by doing a better job importing things into HEAD including pulling out pieces of long-running branches and merging them as multiple commits each with useful commit messages. We should not rely on being able to find the history behind commits to HEAD because that history (if it exists) lives in random places. I have been doing longterm work with git rebase to curate the work for pushing to FreeBSD as the sub parts become available. For Lua thete were a hundred or so cleanup commits that preceded tthe main push it in commits (4 or 5 I think). Had I done a traditional svn branch, it would have been a huge dump all at once. By doing the 100 or so cleanup over several months, l found the mistakes in the small, bisectable bites earlier and easier than if I had pushed the whole mess in. Plus l developed a bunch of regression tests to make sure I caught the common rehressions the easrly cleanups caused. The actual development history was destoyed as i often did a messy cleanup on my lua branch, then transported diff hunks to another branch to polish up, push upstream then rebase the lua branch to erase the messy version. Early on, I published the git branch on github, but stopped becausenobody was testing or helping. That help didn't come until I pushed the 95% done loader sources with what I thought was 75% done lua menu things. Turns out Kyle Evans and a few others rewrote it in the month after my push, which makes me kijnda wish I'd pushed sooner... but it has worked out well... Warner From owner-svn-src-user@freebsd.org Tue Mar 27 21:37:59 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 53C18F5F9AD for ; Tue, 27 Mar 2018 21:37:59 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 047D883B13; Tue, 27 Mar 2018 21:37:59 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F34C721B80; Tue, 27 Mar 2018 21:37:58 +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 w2RLbw4J089876; Tue, 27 Mar 2018 21:37:58 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2RLbwFF089874; Tue, 27 Mar 2018 21:37:58 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803272137.w2RLbwFF089874@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 27 Mar 2018 21:37:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331655 - user/jeff/numa/sys/vm X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: user/jeff/numa/sys/vm X-SVN-Commit-Revision: 331655 X-SVN-Commit-Repository: base 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.25 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: Tue, 27 Mar 2018 21:37:59 -0000 Author: markj Date: Tue Mar 27 21:37:58 2018 New Revision: 331655 URL: https://svnweb.freebsd.org/changeset/base/331655 Log: Refactor some page queue scanning code. - Use a common subroutine to collect a batch of pages for processing. - Use a common subroutine to detect pages that were logically dequeued after being added to a batch. - Use batching in the laundry queue scan. Remove vm_pageout_fallback_object_lock() and vm_pageout_page_lock(). - Remove a racy assert from vm_page_alloc_check(). [1] Reported by: pho [1] Modified: user/jeff/numa/sys/vm/vm_page.c user/jeff/numa/sys/vm/vm_pageout.c Modified: user/jeff/numa/sys/vm/vm_page.c ============================================================================== --- user/jeff/numa/sys/vm/vm_page.c Tue Mar 27 21:14:39 2018 (r331654) +++ user/jeff/numa/sys/vm/vm_page.c Tue Mar 27 21:37:58 2018 (r331655) @@ -2087,8 +2087,6 @@ vm_page_alloc_check(vm_page_t m) KASSERT(m->object == NULL, ("page %p has object", m)); KASSERT(m->queue == PQ_NONE, ("page %p has unexpected queue %d", m, m->queue)); - KASSERT((m->aflags & PGA_QUEUE_STATE_MASK) == 0, - ("page %p has unexpected queue state", m)); KASSERT(!vm_page_held(m), ("page %p is held", m)); KASSERT(!vm_page_busied(m), ("page %p is busy", m)); KASSERT(m->dirty == 0, ("page %p is dirty", m)); Modified: user/jeff/numa/sys/vm/vm_pageout.c ============================================================================== --- user/jeff/numa/sys/vm/vm_pageout.c Tue Mar 27 21:14:39 2018 (r331654) +++ user/jeff/numa/sys/vm/vm_pageout.c Tue Mar 27 21:37:58 2018 (r331655) @@ -201,11 +201,9 @@ SYSCTL_INT(_vm, OID_AUTO, max_wired, CTLFLAG_RW, &vm_page_max_wired, 0, "System-wide limit to wired page count"); static u_int isqrt(u_int num); -static boolean_t vm_pageout_fallback_object_lock(vm_page_t, vm_page_t *); static int vm_pageout_launder(struct vm_domain *vmd, int launder, bool in_shortfall); static void vm_pageout_laundry_worker(void *arg); -static boolean_t vm_pageout_page_lock(vm_page_t, vm_page_t *); /* * Initialize a dummy page for marking the caller's place in the specified @@ -226,97 +224,64 @@ vm_pageout_init_marker(vm_page_t marker, u_short queue marker->aflags = PGA_ENQUEUED; } -/* - * vm_pageout_fallback_object_lock: - * - * Lock vm object currently associated with `m'. VM_OBJECT_TRYWLOCK is - * known to have failed and page queue must be either PQ_ACTIVE or - * PQ_INACTIVE. To avoid lock order violation, unlock the page queue - * while locking the vm object. Use marker page to detect page queue - * changes and maintain notion of next page on page queue. Return - * TRUE if no changes were detected, FALSE otherwise. vm object is - * locked on return. - * - * This function depends on both the lock portion of struct vm_object - * and normal struct vm_page being type stable. - */ -static boolean_t -vm_pageout_fallback_object_lock(vm_page_t m, vm_page_t *next) +static inline bool +vm_pageout_page_queued(vm_page_t m, int queue) { - struct vm_page marker; - struct vm_pagequeue *pq; - boolean_t unchanged; - u_short queue; - vm_object_t object; - queue = m->queue; - vm_pageout_init_marker(&marker, queue); - pq = vm_page_pagequeue(m); - object = m->object; - - TAILQ_INSERT_AFTER(&pq->pq_pl, m, &marker, plinks.q); - vm_pagequeue_unlock(pq); - vm_page_unlock(m); - VM_OBJECT_WLOCK(object); - vm_page_lock(m); - vm_pagequeue_lock(pq); + vm_page_assert_locked(m); - /* - * The page's object might have changed, and/or the page might - * have moved from its original position in the queue. If the - * page's object has changed, then the caller should abandon - * processing the page because the wrong object lock was - * acquired. Use the marker's plinks.q, not the page's, to - * determine if the page has been moved. The state of the - * page's plinks.q can be indeterminate; whereas, the marker's - * plinks.q must be valid. - */ - *next = TAILQ_NEXT(&marker, plinks.q); - unchanged = m->object == object && - m == TAILQ_PREV(&marker, pglist, plinks.q); - KASSERT(!unchanged || m->queue == queue, - ("page %p queue %d %d", m, queue, m->queue)); - TAILQ_REMOVE(&pq->pq_pl, &marker, plinks.q); - return (unchanged); + if ((m->aflags & PGA_DEQUEUE) != 0) + return (false); + atomic_thread_fence_acq(); + return (m->queue == queue); } /* - * Lock the page while holding the page queue lock. Use marker page - * to detect page queue changes and maintain notion of next page on - * page queue. Return TRUE if no changes were detected, FALSE - * otherwise. The page is locked on return. The page queue lock might - * be dropped and reacquired. + * Add a small number of queued pages to a batch queue for later processing + * without the corresponding queue lock held. The caller must have enqueued a + * marker page at the desired start point for the scan. * - * This function depends on normal struct vm_page being type stable. + * When processing the batch queue, vm_pageout_page_queued() must be used to + * determine whether the page was logically dequeued by another thread. Once + * this check is performed, the page lock guarantees that the page will not be + * disassociated from the queue. */ -static boolean_t -vm_pageout_page_lock(vm_page_t m, vm_page_t *next) +static inline void +vm_pageout_collect_batch(struct vm_pagequeue *pq, struct vm_batchqueue *bq, + vm_page_t marker, int maxscan, const bool dequeue) { - struct vm_page marker; - struct vm_pagequeue *pq; - boolean_t unchanged; - u_short queue; + vm_page_t m; - vm_page_lock_assert(m, MA_NOTOWNED); - if (vm_page_trylock(m)) - return (TRUE); + vm_pagequeue_assert_locked(pq); - queue = m->queue; - vm_pageout_init_marker(&marker, queue); - pq = vm_page_pagequeue(m); + vm_batchqueue_init(bq); + for (m = TAILQ_NEXT(marker, plinks.q); m != NULL && maxscan > 0; + m = TAILQ_NEXT(m, plinks.q), maxscan--) { + VM_CNT_INC(v_pdpages); + if (__predict_false((m->flags & PG_MARKER) != 0)) + continue; - TAILQ_INSERT_AFTER(&pq->pq_pl, m, &marker, plinks.q); - vm_pagequeue_unlock(pq); - vm_page_lock(m); - vm_pagequeue_lock(pq); + KASSERT((m->aflags & PGA_ENQUEUED) != 0, + ("page %p not enqueued", m)); + KASSERT((m->flags & PG_FICTITIOUS) == 0, + ("Fictitious page %p cannot be in page queue", m)); + KASSERT((m->oflags & VPO_UNMANAGED) == 0, + ("Unmanaged page %p cannot be in page queue", m)); - /* Page queue might have changed. */ - *next = TAILQ_NEXT(&marker, plinks.q); - unchanged = m == TAILQ_PREV(&marker, pglist, plinks.q); - KASSERT(!unchanged || m->queue == queue, - ("page %p queue %d %d", m, queue, m->queue)); - TAILQ_REMOVE(&pq->pq_pl, &marker, plinks.q); - return (unchanged); + if (!vm_batchqueue_insert(bq, m)) + break; + if (dequeue) { + TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); + vm_page_aflag_clear(m, PGA_ENQUEUED); + } + } + TAILQ_REMOVE(&pq->pq_pl, marker, plinks.q); + if (__predict_true(m != NULL)) + TAILQ_INSERT_BEFORE(m, marker, plinks.q); + else + TAILQ_INSERT_TAIL(&pq->pq_pl, marker, plinks.q); + if (dequeue) + vm_pagequeue_cnt_add(pq, -bq->bq_cnt); } /* @@ -694,12 +659,14 @@ unlock_mp: static int vm_pageout_launder(struct vm_domain *vmd, int launder, bool in_shortfall) { + struct vm_batchqueue bq, rq; struct vm_pagequeue *pq; + struct mtx *mtx; vm_object_t object; - vm_page_t m, next; + vm_page_t m; int act_delta, error, maxscan, numpagedout, queue, starting_target; int vnodes_skipped; - bool pageout_ok, queue_locked; + bool obj_locked, pageout_ok; starting_target = launder; vnodes_skipped = 0; @@ -717,217 +684,227 @@ vm_pageout_launder(struct vm_domain *vmd, int launder, * As an optimization, we avoid laundering from PQ_UNSWAPPABLE when no * swap devices are configured. */ - if (atomic_load_acq_int(&swapdev_enabled)) { + if (atomic_load_acq_int(&swapdev_enabled)) queue = PQ_UNSWAPPABLE; - pq = &vmd->vmd_pagequeues[queue]; - } else { + else queue = PQ_LAUNDRY; - pq = &vmd->vmd_pagequeues[queue]; - } + pq = &vmd->vmd_pagequeues[queue]; scan: vm_pagequeue_lock(pq); - maxscan = pq->pq_cnt; - queue_locked = true; - for (m = TAILQ_FIRST(&pq->pq_pl); - m != NULL && maxscan-- > 0 && launder > 0; - m = next) { - vm_pagequeue_assert_locked(pq); - KASSERT(queue_locked, ("unlocked laundry queue")); - KASSERT(vm_page_in_laundry(m), - ("page %p has an inconsistent queue", m)); - KASSERT((m->aflags & PGA_ENQUEUED) != 0, - ("page %p not enqueued", m)); + TAILQ_INSERT_HEAD(&pq->pq_pl, &vmd->vmd_laundry_marker, plinks.q); + for (maxscan = pq->pq_cnt; maxscan > 0 && launder > 0 && + TAILQ_NEXT(&vmd->vmd_laundry_marker, plinks.q) != NULL; + maxscan -= bq.bq_cnt) { + vm_pageout_collect_batch(pq, &bq, &vmd->vmd_laundry_marker, + min(maxscan, launder), false); + vm_pagequeue_unlock(pq); - VM_CNT_INC(v_pdpages); - next = TAILQ_NEXT(m, plinks.q); - if ((m->flags & PG_MARKER) != 0) - continue; + mtx = NULL; + obj_locked = false; + object = NULL; + vm_batchqueue_init(&rq); + VM_BATCHQ_FOREACH(&bq, m) { + vm_page_change_lock(m, &mtx); - KASSERT((m->flags & PG_FICTITIOUS) == 0, - ("PG_FICTITIOUS page %p cannot be in laundry queue", m)); - KASSERT((m->oflags & VPO_UNMANAGED) == 0, - ("VPO_UNMANAGED page %p cannot be in laundry queue", m)); +recheck: + /* + * The page may have been disassociated from the queue + * while locks were dropped. + */ + if (!vm_pageout_page_queued(m, queue)) + continue; - if (!vm_pageout_page_lock(m, &next) || m->hold_count != 0) { - vm_page_unlock(m); - continue; - } - if (m->wire_count != 0 || (m->aflags & PGA_DEQUEUE) != 0) { - vm_page_dequeue_locked(m); - vm_page_unlock(m); - continue; - } - object = m->object; - if ((!VM_OBJECT_TRYWLOCK(object) && - (!vm_pageout_fallback_object_lock(m, &next) || - vm_page_held(m))) || vm_page_busied(m)) { - VM_OBJECT_WUNLOCK(object); - if ((m->wire_count != 0 || - (m->aflags & PGA_DEQUEUE) != 0) && - vm_page_pagequeue(m) == pq) - vm_page_dequeue_locked(m); - vm_page_unlock(m); - continue; - } + /* + * A requeue was requested, so this page gets a second + * chance. + */ + if ((m->aflags & PGA_REQUEUE) != 0) + goto reenqueue; - /* - * Unlock the laundry queue, invalidating the 'next' pointer. - * Use a marker to remember our place in the laundry queue. - * After this point we have to handle a concurrent dequeue of - * the page. The page will not be re-enqueued while we hold - * the page lock, however. - */ - TAILQ_INSERT_AFTER(&pq->pq_pl, m, &vmd->vmd_laundry_marker, - plinks.q); - vm_pagequeue_unlock(pq); - queue_locked = false; + /* + * Wired pages may not be freed. Complete their removal + * from the queue now to avoid needless revisits during + * future scans. + */ + if (m->hold_count != 0) + goto reenqueue; + if (m->wire_count != 0) { + vm_page_dequeue(m); + continue; + } - /* - * Invalid pages can be easily freed. They cannot be - * mapped; vm_page_free() asserts this. - */ - if (m->valid == 0) - goto free_page; + if (object != m->object) { + if (obj_locked) { + VM_OBJECT_WUNLOCK(object); + obj_locked = false; + } + object = m->object; + } + if (!obj_locked) { + if (!VM_OBJECT_TRYWLOCK(object)) { + mtx_unlock(mtx); + VM_OBJECT_WLOCK(object); + obj_locked = true; + mtx_lock(mtx); + goto recheck; + } else + obj_locked = true; + } - /* - * If the page has been referenced and the object is not dead, - * reactivate or requeue the page depending on whether the - * object is mapped. - */ - if ((m->aflags & PGA_REFERENCED) != 0) { - vm_page_aflag_clear(m, PGA_REFERENCED); - act_delta = 1; - } else - act_delta = 0; - if (object->ref_count != 0) - act_delta += pmap_ts_referenced(m); - else { - KASSERT(!pmap_page_is_mapped(m), - ("page %p is mapped", m)); - } - if (act_delta != 0) { - if (object->ref_count != 0) { - VM_CNT_INC(v_reactivated); - vm_page_activate(m); + if (vm_page_busied(m)) + goto reenqueue; - /* - * Increase the activation count if the page - * was referenced while in the laundry queue. - * This makes it less likely that the page will - * be returned prematurely to the inactive - * queue. - */ - m->act_count += act_delta + ACT_ADVANCE; + /* + * Invalid pages can be easily freed. They cannot be + * mapped; vm_page_free() asserts this. + */ + if (m->valid == 0) + goto free_page; - /* - * If this was a background laundering, count - * activated pages towards our target. The - * purpose of background laundering is to ensure - * that pages are eventually cycled through the - * laundry queue, and an activation is a valid - * way out. - */ - if (!in_shortfall) - launder--; - goto drop_page; - } else if ((object->flags & OBJ_DEAD) == 0) - goto requeue_page; - } + /* + * If the page has been referenced and the object is not + * dead, reactivate or requeue the page depending on + * whether the object is mapped. + */ + if ((m->aflags & PGA_REFERENCED) != 0) { + vm_page_aflag_clear(m, PGA_REFERENCED); + act_delta = 1; + } else + act_delta = 0; + if (object->ref_count != 0) + act_delta += pmap_ts_referenced(m); + else { + KASSERT(!pmap_page_is_mapped(m), + ("page %p is mapped", m)); + } + if (act_delta != 0) { + if (object->ref_count != 0) { + VM_CNT_INC(v_reactivated); + vm_page_activate(m); - /* - * If the page appears to be clean at the machine-independent - * layer, then remove all of its mappings from the pmap in - * anticipation of freeing it. If, however, any of the page's - * mappings allow write access, then the page may still be - * modified until the last of those mappings are removed. - */ - if (object->ref_count != 0) { - vm_page_test_dirty(m); - if (m->dirty == 0) - pmap_remove_all(m); - } + /* + * Increase the activation count if the + * page was referenced while in the + * laundry queue. This makes it less + * likely that the page will be returned + * prematurely to the inactive queue. + */ + m->act_count += act_delta + ACT_ADVANCE; - /* - * Clean pages are freed, and dirty pages are paged out unless - * they belong to a dead object. Requeueing dirty pages from - * dead objects is pointless, as they are being paged out and - * freed by the thread that destroyed the object. - */ - if (m->dirty == 0) { -free_page: - vm_page_free(m); - VM_CNT_INC(v_dfree); - } else if ((object->flags & OBJ_DEAD) == 0) { - if (object->type != OBJT_SWAP && - object->type != OBJT_DEFAULT) - pageout_ok = true; - else if (disable_swap_pageouts) - pageout_ok = false; - else - pageout_ok = true; - if (!pageout_ok) { -requeue_page: - vm_pagequeue_lock(pq); - queue_locked = true; - KASSERT(m->queue == queue || - m->queue == PQ_NONE, - ("%s: page %p migrated between queues", - __func__, m)); - if (m->queue == queue) { - TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); - TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); - } else { - m->queue = queue; - TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); - vm_pagequeue_cnt_add(pq, 1); - vm_page_aflag_set(m, PGA_ENQUEUED); - if (__predict_false((m->aflags & - PGA_REQUEUE) != 0)) - vm_page_aflag_clear(m, - PGA_REQUEUE); + /* + * If this was a background laundering, + * count activated pages towards our + * target. The purpose of background + * laundering is to ensure that pages + * are eventually cycled through the + * laundry queue, and an activation is a + * valid way out. + */ + if (!in_shortfall) + launder--; + continue; + } else if ((object->flags & OBJ_DEAD) == 0) { + vm_page_aflag_set(m, PGA_REQUEUE); + goto reenqueue; } - goto drop_page; } /* - * Form a cluster with adjacent, dirty pages from the - * same object, and page out that entire cluster. - * - * The adjacent, dirty pages must also be in the - * laundry. However, their mappings are not checked - * for new references. Consequently, a recently - * referenced page may be paged out. However, that - * page will not be prematurely reclaimed. After page - * out, the page will be placed in the inactive queue, - * where any new references will be detected and the - * page reactivated. + * If the page appears to be clean at the + * machine-independent layer, then remove all of its + * mappings from the pmap in anticipation of freeing it. + * If, however, any of the page's mappings allow write + * access, then the page may still be modified until the + * last of those mappings are removed. */ - error = vm_pageout_clean(m, &numpagedout); - if (error == 0) { - launder -= numpagedout; - maxscan -= numpagedout - 1; - } else if (error == EDEADLK) { - pageout_lock_miss++; - vnodes_skipped++; + if (object->ref_count != 0) { + vm_page_test_dirty(m); + if (m->dirty == 0) + pmap_remove_all(m); } - goto relock_queue; + + /* + * Clean pages are freed, and dirty pages are paged out + * unless they belong to a dead object. Requeueing + * dirty pages from dead objects is pointless, as they + * are being paged out and freed by the thread that + * destroyed the object. + */ + if (m->dirty == 0) { +free_page: + vm_page_free(m); + VM_CNT_INC(v_dfree); + } else if ((object->flags & OBJ_DEAD) == 0) { + if (object->type != OBJT_SWAP && + object->type != OBJT_DEFAULT) + pageout_ok = true; + else if (disable_swap_pageouts) + pageout_ok = false; + else + pageout_ok = true; + if (!pageout_ok) { + vm_page_aflag_set(m, PGA_REQUEUE); + goto reenqueue; + } + + /* + * Form a cluster with adjacent, dirty pages from the + * same object, and page out that entire cluster. + * + * The adjacent, dirty pages must also be in the + * laundry. However, their mappings are not checked + * for new references. Consequently, a recently + * referenced page may be paged out. However, that + * page will not be prematurely reclaimed. After page + * out, the page will be placed in the inactive queue, + * where any new references will be detected and the + * page reactivated. + */ + error = vm_pageout_clean(m, &numpagedout); + if (error == 0) { + launder -= numpagedout; + maxscan -= numpagedout - 1; + } else if (error == EDEADLK) { + pageout_lock_miss++; + vnodes_skipped++; + } + + mtx = NULL; + obj_locked = false; + } + continue; +reenqueue: + if (!vm_batchqueue_insert(&rq, m)) + panic("failed to requeue page %p", m); } -drop_page: - vm_page_unlock(m); - VM_OBJECT_WUNLOCK(object); -relock_queue: - if (!queue_locked) { - vm_pagequeue_lock(pq); - queue_locked = true; + if (mtx != NULL) + mtx_unlock(mtx); + if (obj_locked) + VM_OBJECT_WUNLOCK(object); + + vm_pagequeue_lock(pq); + VM_BATCHQ_FOREACH(&rq, m) { + if (m->queue == queue && + (m->aflags & PGA_ENQUEUED) != 0) { + TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); + if ((m->aflags & PGA_REQUEUE) != 0) { + TAILQ_INSERT_TAIL(&pq->pq_pl, m, + plinks.q); + vm_page_aflag_clear(m, PGA_REQUEUE); + } else + TAILQ_INSERT_BEFORE(&vmd->vmd_marker, m, + plinks.q); + vm_pagequeue_cnt_inc(pq); + } } - next = TAILQ_NEXT(&vmd->vmd_laundry_marker, plinks.q); - TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_laundry_marker, plinks.q); } + TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_laundry_marker, plinks.q); vm_pagequeue_unlock(pq); if (launder > 0 && pq == &vmd->vmd_pagequeues[PQ_UNSWAPPABLE]) { - pq = &vmd->vmd_pagequeues[PQ_LAUNDRY]; + queue = PQ_LAUNDRY; + pq = &vmd->vmd_pagequeues[queue]; goto scan; } @@ -1199,7 +1176,7 @@ vm_pageout_scan(struct vm_domain *vmd, int pass, int s { struct vm_batchqueue bq, rq; struct mtx *mtx; - vm_page_t m, next; + vm_page_t m; struct vm_pagequeue *pq; vm_object_t object; long min_scan; @@ -1246,8 +1223,6 @@ vm_pageout_scan(struct vm_domain *vmd, int pass, int s page_shortage = deficit = 0; starting_page_shortage = page_shortage; - vm_batchqueue_init(&bq); - /* * Start scanning the inactive queue for pages that we can free. The * scan will stop when we reach the target or we have scanned the @@ -1255,38 +1230,13 @@ vm_pageout_scan(struct vm_domain *vmd, int pass, int s * decisions for the inactive queue, only for the active queue.) */ pq = &vmd->vmd_pagequeues[PQ_INACTIVE]; - maxscan = pq->pq_cnt; vm_pagequeue_lock(pq); - for (m = TAILQ_FIRST(&pq->pq_pl); - m != NULL && maxscan-- > 0 && page_shortage > 0; - m = next) { - vm_pagequeue_assert_locked(pq); - KASSERT(vm_page_inactive(m), ("Inactive queue %p", m)); - KASSERT((m->aflags & PGA_ENQUEUED) != 0, - ("page %p not enqueued", m)); - - VM_CNT_INC(v_pdpages); - next = TAILQ_NEXT(m, plinks.q); - if ((m->flags & PG_MARKER) != 0) - continue; - - KASSERT((m->flags & PG_FICTITIOUS) == 0, - ("Fictitious page %p cannot be in inactive queue", m)); - KASSERT((m->oflags & VPO_UNMANAGED) == 0, - ("Unmanaged page %p cannot be in inactive queue", m)); - - /* - * Dequeue pages to be processed without the page queue lock - * held. - */ - if (vm_batchqueue_insert(&bq, m)) { - TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); - vm_page_aflag_clear(m, PGA_ENQUEUED); - vm_pagequeue_cnt_dec(pq); - continue; - } - - TAILQ_INSERT_BEFORE(m, &vmd->vmd_marker, plinks.q); + TAILQ_INSERT_HEAD(&pq->pq_pl, &vmd->vmd_marker, plinks.q); + for (maxscan = pq->pq_cnt; maxscan > 0 && page_shortage > 0 && + TAILQ_NEXT(&vmd->vmd_marker, plinks.q) != NULL; + maxscan -= bq.bq_cnt) { + vm_pageout_collect_batch(pq, &bq, &vmd->vmd_marker, + min(maxscan, page_shortage), true); vm_pagequeue_unlock(pq); mtx = NULL; @@ -1298,14 +1248,11 @@ vm_pageout_scan(struct vm_domain *vmd, int pass, int s recheck: /* - * The page may have been dequeued while locks were - * dropped. + * The page may have been disassociated from the queue + * while locks were dropped. */ - if ((m->aflags & PGA_DEQUEUE) != 0) + if (!vm_pageout_page_queued(m, PQ_INACTIVE)) continue; - atomic_thread_fence_acq(); - if (m->queue != PQ_INACTIVE) - continue; /* * A requeue was requested, so this page gets a second @@ -1395,8 +1342,8 @@ recheck: m->act_count += act_delta + ACT_ADVANCE; continue; } else if ((object->flags & OBJ_DEAD) == 0) { - vm_page_requeue(m); - continue; + vm_page_aflag_set(m, PGA_REQUEUE); + goto reenqueue; } } @@ -1436,7 +1383,6 @@ reenqueue: mtx_unlock(mtx); if (obj_locked) VM_OBJECT_WUNLOCK(object); - vm_batchqueue_init(&bq); vm_pagequeue_lock(pq); VM_BATCHQ_FOREACH(&rq, m) { @@ -1453,19 +1399,8 @@ reenqueue: vm_pagequeue_cnt_inc(pq); } } - - /* Pick up where we left off. */ - next = TAILQ_NEXT(&vmd->vmd_marker, plinks.q); - TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_marker, plinks.q); } - - /* Requeue batched pages for next time. */ - VM_BATCHQ_FOREACH(&bq, m) { - if (vm_page_inactive(m) && (m->aflags & PGA_ENQUEUED) == 0) { - TAILQ_INSERT_HEAD(&pq->pq_pl, m, plinks.q); - vm_page_aflag_set(m, PGA_ENQUEUED); - } - } + TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_marker, plinks.q); vm_pagequeue_unlock(pq); /* @@ -1529,7 +1464,6 @@ reenqueue: pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; vm_pagequeue_lock(pq); - maxscan = pq->pq_cnt; /* * If we're just idle polling attempt to visit every @@ -1550,29 +1484,14 @@ reenqueue: * the per-page activity counter and use it to identify deactivation * candidates. Held pages may be deactivated. */ - vm_batchqueue_init(&bq); - for (m = TAILQ_FIRST(&pq->pq_pl), scanned = 0; m != NULL && (scanned < - min_scan || (inactq_shortage > 0 && scanned < maxscan)); m = next, - scanned++) { - KASSERT(m->queue == PQ_ACTIVE, - ("vm_pageout_scan: page %p isn't active", m)); - KASSERT((m->aflags & PGA_ENQUEUED) != 0, - ("page %p not enqueued", m)); - - VM_CNT_INC(v_pdpages); - next = TAILQ_NEXT(m, plinks.q); - if ((m->flags & PG_MARKER) != 0) - continue; - - KASSERT((m->flags & PG_FICTITIOUS) == 0, - ("Fictitious page %p cannot be in active queue", m)); - KASSERT((m->oflags & VPO_UNMANAGED) == 0, - ("Unmanaged page %p cannot be in active queue", m)); - - if (vm_batchqueue_insert(&bq, m)) - continue; - - TAILQ_INSERT_BEFORE(m, &vmd->vmd_marker, plinks.q); + TAILQ_INSERT_HEAD(&pq->pq_pl, &vmd->vmd_marker, plinks.q); + for (maxscan = pq->pq_cnt, scanned = 0; + TAILQ_NEXT(&vmd->vmd_marker, plinks.q) != NULL && + (scanned < min_scan || (inactq_shortage > 0 && scanned < maxscan)); + scanned += bq.bq_cnt) { + vm_pageout_collect_batch(pq, &bq, &vmd->vmd_marker, + (inactq_shortage > 0 ? maxscan : min_scan) - scanned, + false); vm_pagequeue_unlock(pq); mtx = NULL; @@ -1581,14 +1500,11 @@ reenqueue: vm_page_change_lock(m, &mtx); /* - * The page may have been dequeued while locks were - * dropped. + * The page may have been disassociated from the queue + * while locks were dropped. */ - if ((m->aflags & PGA_DEQUEUE) != 0) + if (!vm_pageout_page_queued(m, PQ_ACTIVE)) continue; - atomic_thread_fence_acq(); - if (m->queue != PQ_ACTIVE) - continue; /* * Perform lazy dequeues. @@ -1678,26 +1594,23 @@ reenqueue: } if (mtx != NULL) mtx_unlock(mtx); - vm_batchqueue_init(&bq); vm_pagequeue_lock(pq); /* * XXXMJ this step could be avoided if we used a CLOCK scan for - * the active queue + * the active queue. This would involve modifying + * vm_page_enqueue() to insert after a marker page rather than + * at the tail of the queue. */ VM_BATCHQ_FOREACH(&rq, m) { - if (vm_page_active(m)) { - if ((m->aflags & PGA_ENQUEUED) != 0) - TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); + if (vm_page_active(m) && + (m->aflags & PGA_ENQUEUED) != 0) { + TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); - vm_page_aflag_set(m, PGA_ENQUEUED); } } - - /* Pick up where we left off. */ - next = TAILQ_NEXT(&vmd->vmd_marker, plinks.q); - TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_marker, plinks.q); } + TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_marker, plinks.q); vm_pagequeue_unlock(pq); if (pass > 0) vm_swapout_run_idle(); From owner-svn-src-user@freebsd.org Wed Mar 28 14:29:35 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CF28DF634D4 for ; Wed, 28 Mar 2018 14:29:35 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7F96A6DCB4; Wed, 28 Mar 2018 14:29:35 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5AF124380; Wed, 28 Mar 2018 14:29:35 +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 w2SETZ0H095848; Wed, 28 Mar 2018 14:29:35 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SETZNn095847; Wed, 28 Mar 2018 14:29:35 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803281429.w2SETZNn095847@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 28 Mar 2018 14:29:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331674 - user/markj/netdump/share/man/man4 X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: user/markj/netdump/share/man/man4 X-SVN-Commit-Revision: 331674 X-SVN-Commit-Repository: base 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.25 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, 28 Mar 2018 14:29:36 -0000 Author: markj Date: Wed Mar 28 14:29:34 2018 New Revision: 331674 URL: https://svnweb.freebsd.org/changeset/base/331674 Log: Add a rough description of the protocol. Modified: user/markj/netdump/share/man/man4/netdump.4 Modified: user/markj/netdump/share/man/man4/netdump.4 ============================================================================== --- user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:01:26 2018 (r331673) +++ user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:29:34 2018 (r331674) @@ -25,8 +25,8 @@ .\" .\" $FreeBSD$ .\" -.Dd March 6, 2018 -.Dt netdump 4 +.Dd March 27, 2018 +.Dt NETDUMP 4 .Os .Sh NAME .Nm netdump @@ -54,6 +54,54 @@ clients are configured using the .Xr dumpon 8 utility. .Pp +.Nm +client messages consist of a fixed-size header followed by a variable-sized +payload. +The header contains the message type, a sequence number, the offset of +the payload data in the kernel dump, and the length of the payload data +(not including the header). +The message types are +.Dv HERALD , FINISHED , KDH , VMCORE , +and +.Dv EKCD_KEY . +.Nm +server messages have a fixed size and contain only the sequence number of +the client message. +These messages indicate that the server has successfully processed the +client message with the corresponding sequence number. +All client messages are acknowledged this way. +Server messages are always sent to port 20024 of the client. +.Pp +To initiate a +.Nm , +the client sends a +.Dv HERALD +message to the server at port 20023. +The client may include a relative path in its payload, in which case the +.Nm +server should attempt to save the dump at that path relative to its configured +dump directory. +The server will acknowledge the +.Dv HERALD +using a random source port, and the client must send all subsequent messages +to that port. +.Pp +The +.Dv KDH , VMCORE , +and +.Dv EKCD_KEY +message payloads contain the kernel dump header, dump contents, and +dump encryption key respectively. +The offset in the message header should be treated as a seek offset +in the corresponding file. +There are no ordering requirements for these messages. +.Pp +A +.Nm +is completed by sending the +.Dv FINISHED +message to the server. +.Pp The following network drivers support netdump: .Xr alc 4 , .Xr bge 4 , @@ -63,7 +111,9 @@ The following network drivers support netdump: .Xr re 4 , .Xr vtnet 4 . .Sh SEE ALSO -.Xr dumpon 8 +.Xr decryptcore 8 , +.Xr dumpon 8 , +.Xr savecore 8 .Sh HISTORY .Nm client support first appeared in From owner-svn-src-user@freebsd.org Wed Mar 28 14:31:13 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9D765F6382E for ; Wed, 28 Mar 2018 14:31:13 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4F4D46DF60; Wed, 28 Mar 2018 14:31:13 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4A5B344A4; Wed, 28 Mar 2018 14:31:13 +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 w2SEVD91096886; Wed, 28 Mar 2018 14:31:13 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SEVCbM096878; Wed, 28 Mar 2018 14:31:12 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803281431.w2SEVCbM096878@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 28 Mar 2018 14:31:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331675 - in user/markj/netdump/sys: dev/alc dev/bge dev/re dev/virtio/network net netinet/netdump X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in user/markj/netdump/sys: dev/alc dev/bge dev/re dev/virtio/network net netinet/netdump X-SVN-Commit-Revision: 331675 X-SVN-Commit-Repository: base 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.25 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, 28 Mar 2018 14:31:13 -0000 Author: markj Date: Wed Mar 28 14:31:12 2018 New Revision: 331675 URL: https://svnweb.freebsd.org/changeset/base/331675 Log: Simplify the driver configuration routine, and use ifnet accessors. Modified: user/markj/netdump/sys/dev/alc/if_alc.c user/markj/netdump/sys/dev/bge/if_bge.c user/markj/netdump/sys/dev/re/if_re.c user/markj/netdump/sys/dev/virtio/network/if_vtnet.c user/markj/netdump/sys/net/iflib.c user/markj/netdump/sys/netinet/netdump/netdump.h user/markj/netdump/sys/netinet/netdump/netdump_client.c Modified: user/markj/netdump/sys/dev/alc/if_alc.c ============================================================================== --- user/markj/netdump/sys/dev/alc/if_alc.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/alc/if_alc.c Wed Mar 28 14:31:12 2018 (r331675) @@ -4658,11 +4658,10 @@ sysctl_hw_alc_int_mod(SYSCTL_HANDLER_ARGS) #ifdef NETDUMP static void -alc_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +alc_netdump_init(struct ifnet *ifp __unused, int *nrxr) { - *nmbufp += ALC_RX_RING_CNT; - *nclustp += ALC_RX_RING_CNT; + *nrxr = ALC_RX_RING_CNT; } static void @@ -4670,7 +4669,7 @@ alc_netdump_event(struct ifnet *ifp, enum netdump_ev e { struct alc_softc *sc; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->alc_buf_size = imin(sc->alc_buf_size, MCLBYTES); @@ -4686,8 +4685,7 @@ alc_netdump_transmit(struct ifnet *ifp, struct mbuf *m struct alc_softc *sc; int error; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -4703,8 +4701,7 @@ alc_netdump_poll(struct ifnet *ifp, int count) { struct alc_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); Modified: user/markj/netdump/sys/dev/bge/if_bge.c ============================================================================== --- user/markj/netdump/sys/dev/bge/if_bge.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/bge/if_bge.c Wed Mar 28 14:31:12 2018 (r331675) @@ -6811,13 +6811,12 @@ bge_get_counter(if_t ifp, ift_counter cnt) #ifdef NETDUMP static void -bge_netdump_init(if_t ifp, int *nmbufp, int *nclustp) +bge_netdump_init(if_t ifp, int *nrxr) { struct bge_softc *sc; sc = if_getsoftc(ifp); - *nmbufp += sc->bge_return_ring_cnt; - *nclustp += sc->bge_return_ring_cnt; + *nrxr = sc->bge_return_ring_cnt; } static void @@ -6842,11 +6841,11 @@ bge_netdump_transmit(if_t ifp, struct mbuf *m) uint32_t prodidx; int error; + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (1); - sc = if_getsoftc(ifp); prodidx = sc->bge_tx_prodidx; error = bge_encap(sc, &m, &prodidx); if (error == 0) @@ -6861,7 +6860,6 @@ bge_netdump_poll(if_t ifp, int count) uint32_t rx_prod, tx_cons; sc = if_getsoftc(ifp); - if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (1); Modified: user/markj/netdump/sys/dev/re/if_re.c ============================================================================== --- user/markj/netdump/sys/dev/re/if_re.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/re/if_re.c Wed Mar 28 14:31:12 2018 (r331675) @@ -4095,14 +4095,12 @@ sysctl_hw_re_int_mod(SYSCTL_HANDLER_ARGS) #ifdef NETDUMP static void -re_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +re_netdump_init(struct ifnet *ifp, int *nrxr) { struct rl_softc *sc; - sc = ifp->if_softc; - - *nmbufp += sc->rl_ldata.rl_rx_desc_cnt; - *nclustp += sc->rl_ldata.rl_rx_desc_cnt; + sc = if_getsoftc(ifp); + *nrxr = sc->rl_ldata.rl_rx_desc_cnt; } static void @@ -4110,8 +4108,7 @@ re_netdump_event(struct ifnet *ifp, enum netdump_ev ev { struct rl_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->rl_flags &= ~RL_FLAG_JUMBOV2; @@ -4127,9 +4124,8 @@ re_netdump_transmit(struct ifnet *ifp, struct mbuf *m) struct rl_softc *sc; int error; - sc = ifp->if_softc; - - if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING || (sc->rl_flags & RL_FLAG_LINK) == 0) return (EBUSY); @@ -4145,10 +4141,9 @@ re_netdump_poll(struct ifnet *ifp, int count) struct rl_softc *sc; int error; - sc = ifp->if_softc; - - if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != - IFF_DRV_RUNNING || (sc->rl_flags & RL_FLAG_LINK) == 0) + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 || + (sc->rl_flags & RL_FLAG_LINK) == 0) return (EBUSY); re_txeof(sc); Modified: user/markj/netdump/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/markj/netdump/sys/dev/virtio/network/if_vtnet.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/virtio/network/if_vtnet.c Wed Mar 28 14:31:12 2018 (r331675) @@ -3984,20 +3984,14 @@ vtnet_tunable_int(struct vtnet_softc *sc, const char * #ifdef NETDUMP static void -vtnet_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +vtnet_netdump_init(struct ifnet *ifp, int *nrxr) { struct vtnet_softc *sc; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); + *nrxr = sc->vtnet_max_vq_pairs; /* - * Allocate enough packet buffers to fill an entire queue. This ought - * to be enough provided that we don't have many queues. - */ - *nmbufp += virtqueue_size(sc->vtnet_rxqs[0].vtnrx_vq); - *nclustp += virtqueue_size(sc->vtnet_rxqs[0].vtnrx_vq); - - /* * We need to allocate from this zone in the transmit path, so ensure * that we have at least one item per header available. * XXX add a separate zone like we do for mbufs? otherwise we may alloc @@ -4012,8 +4006,7 @@ vtnet_netdump_event(struct ifnet *ifp, enum netdump_ev { struct vtnet_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->vtnet_rx_clsize = MCLBYTES; @@ -4030,8 +4023,7 @@ vtnet_netdump_transmit(struct ifnet *ifp, struct mbuf struct vtnet_txq *txq; int error; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -4049,8 +4041,7 @@ vtnet_netdump_poll(struct ifnet *ifp, int count) struct vtnet_softc *sc; int i; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); Modified: user/markj/netdump/sys/net/iflib.c ============================================================================== --- user/markj/netdump/sys/net/iflib.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/net/iflib.c Wed Mar 28 14:31:12 2018 (r331675) @@ -5973,14 +5973,12 @@ iflib_fixup_rx(struct mbuf *m) #ifdef NETDUMP static void -iflib_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +iflib_netdump_init(struct ifnet *ifp, int *nrxr) { if_ctx_t ctx; - ctx = ifp->if_softc; - - *nmbufp += ctx->ifc_rxqs[0].ifr_fl->ifl_size; - *nclustp += ctx->ifc_rxqs[0].ifr_fl->ifl_size; + ctx = if_getsoftc(ifp); + *nrxr = NRXQSETS(ctx); } static void @@ -5990,7 +5988,7 @@ iflib_netdump_event(struct ifnet *ifp, enum netdump_ev if_softc_ctx_t scctx; int i; - ctx = ifp->if_softc; + ctx = if_getsoftc(ifp); scctx = &ctx->ifc_softc_ctx; switch (event) { @@ -6011,8 +6009,7 @@ iflib_netdump_transmit(struct ifnet *ifp, struct mbuf iflib_txq_t txq; int error; - ctx = ifp->if_softc; - + ctx = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -6032,7 +6029,7 @@ iflib_netdump_poll(struct ifnet *ifp, int count) iflib_txq_t txq; int i; - ctx = ifp->if_softc; + ctx = if_getsoftc(ifp); scctx = &ctx->ifc_softc_ctx; if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != Modified: user/markj/netdump/sys/netinet/netdump/netdump.h ============================================================================== --- user/markj/netdump/sys/netinet/netdump/netdump.h Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/netinet/netdump/netdump.h Wed Mar 28 14:31:12 2018 (r331675) @@ -86,7 +86,7 @@ enum netdump_ev { struct ifnet; struct mbuf; -typedef void netdump_init_t(struct ifnet *, int *nmbufp, int *nclustp); +typedef void netdump_init_t(struct ifnet *, int *nrxr); typedef void netdump_event_t(struct ifnet *, enum netdump_ev); typedef int netdump_transmit_t(struct ifnet *, struct mbuf *); typedef int netdump_poll_t(struct ifnet *, int); Modified: user/markj/netdump/sys/netinet/netdump/netdump_client.c ============================================================================== --- user/markj/netdump/sys/netinet/netdump/netdump_client.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/netinet/netdump/netdump_client.c Wed Mar 28 14:31:12 2018 (r331675) @@ -1048,7 +1048,7 @@ static int netdump_configure(struct netdump_conf *conf) { struct ifnet *ifp; - int nmbuf, nclust; + int nmbuf, nclust, nrxr; IFNET_RLOCK_NOSLEEP(); TAILQ_FOREACH(ifp, &V_ifnet, if_link) { @@ -1067,13 +1067,15 @@ netdump_configure(struct netdump_conf *conf) return (1); } + ifp->if_netdump_methods->nd_init(ifp, &nrxr); + KASSERT(nrxr > 0, ("invalid receive ring count %d", nrxr)); + /* - * We need two headers per message. Multiply by four to give us some - * breathing room. + * We need two headers per message on the transmit side. Multiply by + * four to give us some breathing room. */ - nmbuf = NETDUMP_MAX_IN_FLIGHT * 4; - nclust = 0; - ifp->if_netdump_methods->nd_init(ifp, &nmbuf, &nclust); + nmbuf = NETDUMP_MAX_IN_FLIGHT * (4 + nrxr); + nclust = NETDUMP_MAX_IN_FLIGHT * nrxr; netdump_mbuf_init(nmbuf, nclust); nd_ifp = ifp; From owner-svn-src-user@freebsd.org Wed Mar 28 14:32:25 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5EDDCF639B1 for ; Wed, 28 Mar 2018 14:32:25 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0CD8E6E151; Wed, 28 Mar 2018 14:32:25 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E38B744FE; Wed, 28 Mar 2018 14:32:24 +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 w2SEWOJQ001099; Wed, 28 Mar 2018 14:32:24 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SEWOBb001095; Wed, 28 Mar 2018 14:32:24 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803281432.w2SEWOBb001095@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 28 Mar 2018 14:32:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331676 - in user/markj/netdump: share/man/man4 sys/dev/cxgb X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in user/markj/netdump: share/man/man4 sys/dev/cxgb X-SVN-Commit-Revision: 331676 X-SVN-Commit-Repository: base 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.25 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, 28 Mar 2018 14:32:25 -0000 Author: markj Date: Wed Mar 28 14:32:24 2018 New Revision: 331676 URL: https://svnweb.freebsd.org/changeset/base/331676 Log: Add netdump support to cxgb(4). Tested with a T320 adapter. Modified: user/markj/netdump/share/man/man4/netdump.4 user/markj/netdump/sys/dev/cxgb/cxgb_adapter.h user/markj/netdump/sys/dev/cxgb/cxgb_main.c user/markj/netdump/sys/dev/cxgb/cxgb_sge.c Modified: user/markj/netdump/share/man/man4/netdump.4 ============================================================================== --- user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:31:12 2018 (r331675) +++ user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:32:24 2018 (r331676) @@ -105,6 +105,7 @@ message to the server. The following network drivers support netdump: .Xr alc 4 , .Xr bge 4 , +.Xr cxgb 4 , .Xr em 4 , .Xr igb 4 , .Xr ix 4 , Modified: user/markj/netdump/sys/dev/cxgb/cxgb_adapter.h ============================================================================== --- user/markj/netdump/sys/dev/cxgb/cxgb_adapter.h Wed Mar 28 14:31:12 2018 (r331675) +++ user/markj/netdump/sys/dev/cxgb/cxgb_adapter.h Wed Mar 28 14:32:24 2018 (r331676) @@ -576,4 +576,11 @@ int cxgb_transmit(struct ifnet *ifp, struct mbuf *m); void cxgb_qflush(struct ifnet *ifp); void t3_iterate(void (*)(struct adapter *, void *), void *); void cxgb_refresh_stats(struct port_info *); + +#ifdef NETDUMP +int cxgb_netdump_encap(struct sge_qset *qs, struct mbuf **m); +int cxgb_netdump_poll_rx(adapter_t *adap, struct sge_qset *qs); +int cxgb_netdump_poll_tx(struct sge_qset *qs); +#endif + #endif Modified: user/markj/netdump/sys/dev/cxgb/cxgb_main.c ============================================================================== --- user/markj/netdump/sys/dev/cxgb/cxgb_main.c Wed Mar 28 14:31:12 2018 (r331675) +++ user/markj/netdump/sys/dev/cxgb/cxgb_main.c Wed Mar 28 14:32:24 2018 (r331676) @@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -191,6 +192,8 @@ static devclass_t cxgb_port_devclass; DRIVER_MODULE(cxgb, cxgbc, cxgb_port_driver, cxgb_port_devclass, 0, 0); MODULE_VERSION(cxgb, 1); +NETDUMP_DEFINE(cxgb); + static struct mtx t3_list_lock; static SLIST_HEAD(, adapter) t3_list; #ifdef TCP_OFFLOAD @@ -1045,6 +1048,9 @@ cxgb_port_attach(device_t dev) ether_ifattach(ifp, p->hw_addr); + /* Attach driver netdump methods. */ + NETDUMP_SET(ifp, cxgb); + #ifdef DEFAULT_JUMBO if (sc->params.nports <= 2) ifp->if_mtu = ETHERMTU_JUMBO; @@ -3578,3 +3584,64 @@ cxgbc_mod_event(module_t mod, int cmd, void *arg) return (rc); } + +#ifdef NETDUMP +static void +cxgb_netdump_init(struct ifnet *ifp, int *nrxr) +{ + + *nrxr = SGE_QSETS; +} + +static void +cxgb_netdump_event(struct ifnet *ifp, enum netdump_ev event) +{ + struct port_info *pi; + struct sge_qset *qs; + int i; + + pi = if_getsoftc(ifp); + if (event == NETDUMP_START) + for (i = 0; i < SGE_QSETS; i++) { + qs = &pi->adapter->sge.qs[i]; + + /* Need to reinit after netdump_mbuf_dump(). */ + qs->fl[0].zone = zone_pack; + qs->fl[1].zone = zone_pack; + qs->lro.enabled = 0; + } +} + +static int +cxgb_netdump_transmit(struct ifnet *ifp, struct mbuf *m) +{ + struct port_info *pi; + struct sge_qset *qs; + + pi = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != + IFF_DRV_RUNNING) + return (ENOENT); + + qs = &pi->adapter->sge.qs[pi->first_qset]; + return (cxgb_netdump_encap(qs, &m)); +} + +static int +cxgb_netdump_poll(struct ifnet *ifp, int count) +{ + struct port_info *pi; + adapter_t *adap; + int i; + + pi = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) + return (ENOENT); + + adap = pi->adapter; + for (i = 0; i < SGE_QSETS; i++) + (void)cxgb_netdump_poll_rx(adap, &adap->sge.qs[i]); + (void)cxgb_netdump_poll_tx(&adap->sge.qs[pi->first_qset]); + return (0); +} +#endif /* NETDUMP */ Modified: user/markj/netdump/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- user/markj/netdump/sys/dev/cxgb/cxgb_sge.c Wed Mar 28 14:31:12 2018 (r331675) +++ user/markj/netdump/sys/dev/cxgb/cxgb_sge.c Wed Mar 28 14:32:24 2018 (r331676) @@ -390,6 +390,15 @@ reclaim_completed_tx(struct sge_qset *qs, int reclaim_ return (reclaim); } +#ifdef NETDUMP +int +cxgb_netdump_poll_tx(struct sge_qset *qs) +{ + + return (reclaim_completed_tx(qs, TX_RECLAIM_MAX, TXQ_ETH)); +} +#endif + /** * should_restart_tx - are there enough resources to restart a Tx queue? * @q: the Tx queue @@ -1586,6 +1595,23 @@ t3_encap(struct sge_qset *qs, struct mbuf **m) return (0); } +#ifdef NETDUMP +int +cxgb_netdump_encap(struct sge_qset *qs, struct mbuf **m) +{ + int error; + + error = t3_encap(qs, m); + if (error == 0) + check_ring_tx_db(qs->port->adapter, &qs->txq[TXQ_ETH], 1); + else if (*m != NULL) { + m_freem(*m); + *m = NULL; + } + return (error); +} +#endif + void cxgb_tx_watchdog(void *arg) { @@ -3014,6 +3040,14 @@ process_responses_gts(adapter_t *adap, struct sge_rspq return (work); } +#ifdef NETDUMP +int +cxgb_netdump_poll_rx(adapter_t *adap, struct sge_qset *qs) +{ + + return (process_responses_gts(adap, &qs->rspq)); +} +#endif /* * Interrupt handler for legacy INTx interrupts for T3B-based cards. From owner-svn-src-user@freebsd.org Wed Mar 28 14:33:37 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 081A9F63AF8 for ; Wed, 28 Mar 2018 14:33:37 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id ADCD16E2B1; Wed, 28 Mar 2018 14:33:36 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A80F94510; Wed, 28 Mar 2018 14:33:36 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2SEXajP001212; Wed, 28 Mar 2018 14:33:36 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SEXaA6001209; Wed, 28 Mar 2018 14:33:36 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803281433.w2SEXaA6001209@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 28 Mar 2018 14:33:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331677 - in user/markj/netdump: share/man/man4 sys/dev/bxe X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in user/markj/netdump: share/man/man4 sys/dev/bxe X-SVN-Commit-Revision: 331677 X-SVN-Commit-Repository: base 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.25 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, 28 Mar 2018 14:33:37 -0000 Author: markj Date: Wed Mar 28 14:33:35 2018 New Revision: 331677 URL: https://svnweb.freebsd.org/changeset/base/331677 Log: Add netdump support to bxe(4). Modified: user/markj/netdump/share/man/man4/netdump.4 user/markj/netdump/sys/dev/bxe/bxe.c user/markj/netdump/sys/dev/bxe/bxe.h Modified: user/markj/netdump/share/man/man4/netdump.4 ============================================================================== --- user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:32:24 2018 (r331676) +++ user/markj/netdump/share/man/man4/netdump.4 Wed Mar 28 14:33:35 2018 (r331677) @@ -105,6 +105,7 @@ message to the server. The following network drivers support netdump: .Xr alc 4 , .Xr bge 4 , +.Xr bxe 4 , .Xr cxgb 4 , .Xr em 4 , .Xr igb 4 , Modified: user/markj/netdump/sys/dev/bxe/bxe.c ============================================================================== --- user/markj/netdump/sys/dev/bxe/bxe.c Wed Mar 28 14:32:24 2018 (r331676) +++ user/markj/netdump/sys/dev/bxe/bxe.c Wed Mar 28 14:33:35 2018 (r331677) @@ -236,6 +236,8 @@ MODULE_DEPEND(bxe, pci, 1, 1, 1); MODULE_DEPEND(bxe, ether, 1, 1, 1); DRIVER_MODULE(bxe, pci, bxe_driver, bxe_devclass, 0, 0); +NETDUMP_DEFINE(bxe); + /* resources needed for unloading a previously loaded device */ #define BXE_PREV_WAIT_NEEDED 1 @@ -12767,6 +12769,9 @@ bxe_init_ifnet(struct bxe_softc *sc) /* attach to the Ethernet interface list */ ether_ifattach(ifp, sc->link_params.mac_addr); + /* Attach driver netdump methods. */ + NETDUMP_SET(ifp, bxe); + return (0); } @@ -19164,3 +19169,53 @@ bxe_eioctl(struct cdev *dev, u_long cmd, caddr_t data, return (rval); } + +#ifdef NETDUMP +static void +bxe_netdump_init(struct ifnet *ifp, int *nrxr) +{ + struct bxe_softc *sc; + + sc = if_getsoftc(ifp); + *nrxr = sc->num_queues; +} + +static void +bxe_netdump_event(struct ifnet *ifp __unused, enum netdump_ev event __unused) +{ +} + +static int +bxe_netdump_transmit(struct ifnet *ifp, struct mbuf *m) +{ + struct bxe_softc *sc; + int error; + + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != + IFF_DRV_RUNNING || !sc->link_vars.link_up) + return (ENOENT); + + error = bxe_tx_encap(&sc->fp[0], &m); + if (error != 0 && m != NULL) + m_freem(m); + return (error); +} + +static int +bxe_netdump_poll(struct ifnet *ifp, int count) +{ + struct bxe_softc *sc; + int i; + + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 || + !sc->link_vars.link_up) + return (ENOENT); + + for (i = 0; i < sc->num_queues; i++) + (void)bxe_rxeof(sc, &sc->fp[0]); + (void)bxe_txeof(sc, &sc->fp[0]); + return (0); +} +#endif /* NETDUMP */ Modified: user/markj/netdump/sys/dev/bxe/bxe.h ============================================================================== --- user/markj/netdump/sys/dev/bxe/bxe.h Wed Mar 28 14:32:24 2018 (r331676) +++ user/markj/netdump/sys/dev/bxe/bxe.h Wed Mar 28 14:33:35 2018 (r331677) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include From owner-svn-src-user@freebsd.org Wed Mar 28 16:37:59 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 694A8F6BA07 for ; Wed, 28 Mar 2018 16:37:59 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0830A759D9; Wed, 28 Mar 2018 16:37:59 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F1AF5586E; Wed, 28 Mar 2018 16:37:58 +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 w2SGbweY061638; Wed, 28 Mar 2018 16:37:58 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SGbwBE061635; Wed, 28 Mar 2018 16:37:58 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201803281637.w2SGbwBE061635@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 28 Mar 2018 16:37:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331684 - user/jeff/numa/sys/vm X-SVN-Group: user X-SVN-Commit-Author: markj X-SVN-Commit-Paths: user/jeff/numa/sys/vm X-SVN-Commit-Revision: 331684 X-SVN-Commit-Repository: base 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.25 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, 28 Mar 2018 16:37:59 -0000 Author: markj Date: Wed Mar 28 16:37:58 2018 New Revision: 331684 URL: https://svnweb.freebsd.org/changeset/base/331684 Log: Further simplify and optimize pageout batching. - Don't requeue items during the laundry queue scan, just use the per-CPU batchqueues by calling vm_page_requeue(). - Perform deferred dequeues of wired pages found during a scan. Modified: user/jeff/numa/sys/vm/vm_page.c user/jeff/numa/sys/vm/vm_page.h user/jeff/numa/sys/vm/vm_pageout.c Modified: user/jeff/numa/sys/vm/vm_page.c ============================================================================== --- user/jeff/numa/sys/vm/vm_page.c Wed Mar 28 16:28:24 2018 (r331683) +++ user/jeff/numa/sys/vm/vm_page.c Wed Mar 28 16:37:58 2018 (r331684) @@ -3091,7 +3091,7 @@ vm_pqbatch_process(struct vm_pagequeue *pq, struct vm_ } /* - * vm_page_dequeue_lazy: + * vm_page_dequeue_lazy: [ internal use only ] * * Request removal of the given page from its current page * queue. Physical removal from the queue may be deferred @@ -3100,7 +3100,7 @@ vm_pqbatch_process(struct vm_pagequeue *pq, struct vm_ * * The page must be locked. */ -static void +void vm_page_dequeue_lazy(vm_page_t m) { struct vm_batchqueue *bq; Modified: user/jeff/numa/sys/vm/vm_page.h ============================================================================== --- user/jeff/numa/sys/vm/vm_page.h Wed Mar 28 16:28:24 2018 (r331683) +++ user/jeff/numa/sys/vm/vm_page.h Wed Mar 28 16:37:58 2018 (r331684) @@ -529,6 +529,7 @@ int vm_page_grab_pages(vm_object_t object, vm_pindex_t void vm_page_deactivate(vm_page_t); void vm_page_deactivate_noreuse(vm_page_t); void vm_page_dequeue(vm_page_t m); +void vm_page_dequeue_lazy(vm_page_t m); void vm_page_dequeue_locked(vm_page_t m); vm_page_t vm_page_find_least(vm_object_t, vm_pindex_t); void vm_page_free_phys_pglist(struct pglist *tq); Modified: user/jeff/numa/sys/vm/vm_pageout.c ============================================================================== --- user/jeff/numa/sys/vm/vm_pageout.c Wed Mar 28 16:28:24 2018 (r331683) +++ user/jeff/numa/sys/vm/vm_pageout.c Wed Mar 28 16:37:58 2018 (r331684) @@ -248,15 +248,15 @@ vm_pageout_page_queued(vm_page_t m, int queue) */ static inline void vm_pageout_collect_batch(struct vm_pagequeue *pq, struct vm_batchqueue *bq, - vm_page_t marker, int maxscan, const bool dequeue) + vm_page_t marker, int maxcollect, const bool dequeue) { vm_page_t m; vm_pagequeue_assert_locked(pq); vm_batchqueue_init(bq); - for (m = TAILQ_NEXT(marker, plinks.q); m != NULL && maxscan > 0; - m = TAILQ_NEXT(m, plinks.q), maxscan--) { + for (m = TAILQ_NEXT(marker, plinks.q); m != NULL && maxcollect > 0; + m = TAILQ_NEXT(m, plinks.q), maxcollect--) { VM_CNT_INC(v_pdpages); if (__predict_false((m->flags & PG_MARKER) != 0)) continue; @@ -659,7 +659,7 @@ unlock_mp: static int vm_pageout_launder(struct vm_domain *vmd, int launder, bool in_shortfall) { - struct vm_batchqueue bq, rq; + struct vm_batchqueue bq; struct vm_pagequeue *pq; struct mtx *mtx; vm_object_t object; @@ -703,7 +703,6 @@ scan: mtx = NULL; obj_locked = false; object = NULL; - vm_batchqueue_init(&rq); VM_BATCHQ_FOREACH(&bq, m) { vm_page_change_lock(m, &mtx); @@ -719,18 +718,22 @@ recheck: * A requeue was requested, so this page gets a second * chance. */ - if ((m->aflags & PGA_REQUEUE) != 0) - goto reenqueue; + if ((m->aflags & PGA_REQUEUE) != 0) { + vm_page_requeue(m); + continue; + } /* + * Held pages are essentially stuck in the queue. + * * Wired pages may not be freed. Complete their removal * from the queue now to avoid needless revisits during * future scans. */ if (m->hold_count != 0) - goto reenqueue; + continue; if (m->wire_count != 0) { - vm_page_dequeue(m); + vm_page_dequeue_lazy(m); continue; } @@ -753,7 +756,7 @@ recheck: } if (vm_page_busied(m)) - goto reenqueue; + continue; /* * Invalid pages can be easily freed. They cannot be @@ -805,8 +808,8 @@ recheck: launder--; continue; } else if ((object->flags & OBJ_DEAD) == 0) { - vm_page_aflag_set(m, PGA_REQUEUE); - goto reenqueue; + vm_page_requeue(m); + continue; } } @@ -844,8 +847,8 @@ free_page: else pageout_ok = true; if (!pageout_ok) { - vm_page_aflag_set(m, PGA_REQUEUE); - goto reenqueue; + vm_page_requeue(m); + continue; } /* @@ -869,14 +872,9 @@ free_page: pageout_lock_miss++; vnodes_skipped++; } - mtx = NULL; obj_locked = false; } - continue; -reenqueue: - if (!vm_batchqueue_insert(&rq, m)) - panic("failed to requeue page %p", m); } if (mtx != NULL) mtx_unlock(mtx); @@ -884,20 +882,6 @@ reenqueue: VM_OBJECT_WUNLOCK(object); vm_pagequeue_lock(pq); - VM_BATCHQ_FOREACH(&rq, m) { - if (m->queue == queue && - (m->aflags & PGA_ENQUEUED) != 0) { - TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); - if ((m->aflags & PGA_REQUEUE) != 0) { - TAILQ_INSERT_TAIL(&pq->pq_pl, m, - plinks.q); - vm_page_aflag_clear(m, PGA_REQUEUE); - } else - TAILQ_INSERT_BEFORE(&vmd->vmd_marker, m, - plinks.q); - vm_pagequeue_cnt_inc(pq); - } - } } TAILQ_REMOVE(&pq->pq_pl, &vmd->vmd_laundry_marker, plinks.q); vm_pagequeue_unlock(pq); @@ -1251,15 +1235,17 @@ recheck: * The page may have been disassociated from the queue * while locks were dropped. */ - if (!vm_pageout_page_queued(m, PQ_INACTIVE)) + if (!vm_pageout_page_queued(m, PQ_INACTIVE)) { + addl_page_shortage++; continue; + } /* * A requeue was requested, so this page gets a second * chance. */ if ((m->aflags & PGA_REQUEUE) != 0) - goto reenqueue; + goto reinsert; /* * Held pages are essentially stuck in the queue. So, @@ -1273,11 +1259,11 @@ recheck: */ if (m->hold_count != 0) { addl_page_shortage++; - goto reenqueue; + goto reinsert; } if (m->wire_count != 0) { addl_page_shortage++; - vm_page_dequeue(m); + vm_page_dequeue_lazy(m); continue; } @@ -1301,7 +1287,7 @@ recheck: if (vm_page_busied(m)) { addl_page_shortage++; - goto reenqueue; + goto reinsert; } /* @@ -1343,7 +1329,7 @@ recheck: continue; } else if ((object->flags & OBJ_DEAD) == 0) { vm_page_aflag_set(m, PGA_REQUEUE); - goto reenqueue; + goto reinsert; } } @@ -1375,7 +1361,7 @@ free_page: } else if ((object->flags & OBJ_DEAD) == 0) vm_page_launder(m); continue; -reenqueue: +reinsert: if (!vm_batchqueue_insert(&rq, m)) panic("failed to requeue page %p", m); } @@ -1507,10 +1493,10 @@ reenqueue: continue; /* - * Perform lazy dequeues. + * Wired pages are dequeued lazily. */ if (m->wire_count != 0) { - vm_page_dequeue(m); + vm_page_dequeue_lazy(m); continue; } From owner-svn-src-user@freebsd.org Thu Mar 29 20:39:08 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B52C1F752C7 for ; Thu, 29 Mar 2018 20:39:07 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 630DA83D96; Thu, 29 Mar 2018 20:39:07 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5BE2C1F00C; Thu, 29 Mar 2018 20:39:07 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2TKd7co014859; Thu, 29 Mar 2018 20:39:07 GMT (envelope-from jeff@FreeBSD.org) Received: (from jeff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2TKd7p3014855; Thu, 29 Mar 2018 20:39:07 GMT (envelope-from jeff@FreeBSD.org) Message-Id: <201803292039.w2TKd7p3014855@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jeff set sender to jeff@FreeBSD.org using -f From: Jeff Roberson Date: Thu, 29 Mar 2018 20:39:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331748 - in user/jeff/numa: . cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opens... X-SVN-Group: user X-SVN-Commit-Author: jeff X-SVN-Commit-Paths: in user/jeff/numa: . cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/common/ctf cddl/co... X-SVN-Commit-Revision: 331748 X-SVN-Commit-Repository: base 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.25 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Mar 2018 20:39:08 -0000 Author: jeff Date: Thu Mar 29 20:39:05 2018 New Revision: 331748 URL: https://svnweb.freebsd.org/changeset/base/331748 Log: Merge from head Added: user/jeff/numa/contrib/tzdata/ziguard.awk - copied unchanged from r331747, head/contrib/tzdata/ziguard.awk user/jeff/numa/lib/libc/sys/cpuset_getdomain.2 - copied unchanged from r331747, head/lib/libc/sys/cpuset_getdomain.2 user/jeff/numa/share/man/man4/vmci.4 - copied unchanged from r331747, head/share/man/man4/vmci.4 user/jeff/numa/share/man/man9/domainset.9 - copied unchanged from r331747, head/share/man/man9/domainset.9 user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.cityhash - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.cityhash user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.cityhash.descrip - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/THIRDPARTYLICENSE.cityhash.descrip user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/aggsum.c - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/aggsum.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/cityhash.c - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/cityhash.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_checkpoint.c - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_checkpoint.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/aggsum.h - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/aggsum.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/cityhash.h - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/cityhash.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_checkpoint.h - copied unchanged from r331747, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_checkpoint.h user/jeff/numa/sys/contrib/dev/iwm/iwm-3168-22.fw.uu - copied unchanged from r331747, head/sys/contrib/dev/iwm/iwm-3168-22.fw.uu user/jeff/numa/sys/contrib/zstd/doc/images/CSpeed2.png - copied unchanged from r331747, head/sys/contrib/zstd/doc/images/CSpeed2.png user/jeff/numa/sys/contrib/zstd/doc/images/DSpeed3.png - copied unchanged from r331747, head/sys/contrib/zstd/doc/images/DSpeed3.png user/jeff/numa/sys/contrib/zstd/lib/common/cpu.h - copied unchanged from r331747, head/sys/contrib/zstd/lib/common/cpu.h user/jeff/numa/sys/contrib/zstd/tests/checkTag.c - copied unchanged from r331747, head/sys/contrib/zstd/tests/checkTag.c user/jeff/numa/sys/crypto/chacha20/chacha-sw.c - copied unchanged from r331747, head/sys/crypto/chacha20/chacha-sw.c user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_crspace.c - copied unchanged from r331747, head/sys/dev/mlx5/mlx5_core/mlx5_crspace.c user/jeff/numa/sys/dev/vmware/vmci/ - copied from r331747, head/sys/dev/vmware/vmci/ user/jeff/numa/sys/dts/arm/overlays/ - copied from r331747, head/sys/dts/arm/overlays/ user/jeff/numa/sys/modules/adlink/ - copied from r331747, head/sys/modules/adlink/ user/jeff/numa/sys/modules/dtb/overlays/ - copied from r331747, head/sys/modules/dtb/overlays/ user/jeff/numa/sys/modules/iwmfw/iwm3168fw/ - copied from r331747, head/sys/modules/iwmfw/iwm3168fw/ user/jeff/numa/sys/modules/vmware/vmci/ - copied from r331747, head/sys/modules/vmware/vmci/ user/jeff/numa/sys/sys/_uio.h - copied unchanged from r331747, head/sys/sys/_uio.h user/jeff/numa/sys/tools/fdt/make_dtbo.sh - copied unchanged from r331747, head/sys/tools/fdt/make_dtbo.sh user/jeff/numa/tools/tools/crypto/cryptocheck.c - copied unchanged from r331747, head/tools/tools/crypto/cryptocheck.c Deleted: user/jeff/numa/sys/contrib/zstd/doc/images/Cspeed4.png user/jeff/numa/sys/contrib/zstd/doc/images/Dspeed4.png user/jeff/numa/sys/net/if_iso88025subr.c user/jeff/numa/sys/net/iso88025.h Modified: user/jeff/numa/UPDATING user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.8 user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.c user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c user/jeff/numa/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c user/jeff/numa/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 user/jeff/numa/cddl/contrib/opensolaris/cmd/zpool/zpool.8 user/jeff/numa/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c user/jeff/numa/cddl/contrib/opensolaris/cmd/ztest/ztest.c user/jeff/numa/cddl/contrib/opensolaris/common/ctf/ctf_lookup.c user/jeff/numa/cddl/contrib/opensolaris/lib/libctf/common/ctf_lib.c user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h user/jeff/numa/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h user/jeff/numa/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c user/jeff/numa/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c user/jeff/numa/contrib/llvm/tools/lld/ELF/InputFiles.cpp user/jeff/numa/contrib/llvm/tools/lld/ELF/InputFiles.h user/jeff/numa/contrib/llvm/tools/lld/ELF/SymbolTable.cpp user/jeff/numa/contrib/tzdata/CONTRIBUTING user/jeff/numa/contrib/tzdata/Makefile user/jeff/numa/contrib/tzdata/NEWS user/jeff/numa/contrib/tzdata/africa user/jeff/numa/contrib/tzdata/antarctica user/jeff/numa/contrib/tzdata/asia user/jeff/numa/contrib/tzdata/australasia user/jeff/numa/contrib/tzdata/backzone user/jeff/numa/contrib/tzdata/checktab.awk user/jeff/numa/contrib/tzdata/europe user/jeff/numa/contrib/tzdata/northamerica user/jeff/numa/contrib/tzdata/southamerica user/jeff/numa/contrib/tzdata/theory.html user/jeff/numa/contrib/tzdata/version user/jeff/numa/contrib/tzdata/zishrink.awk user/jeff/numa/contrib/tzdata/zone.tab user/jeff/numa/contrib/tzdata/zone1970.tab user/jeff/numa/crypto/openssl/CHANGES user/jeff/numa/crypto/openssl/Configure user/jeff/numa/crypto/openssl/LICENSE user/jeff/numa/crypto/openssl/Makefile user/jeff/numa/crypto/openssl/NEWS user/jeff/numa/crypto/openssl/README user/jeff/numa/crypto/openssl/apps/app_rand.c user/jeff/numa/crypto/openssl/apps/apps.c user/jeff/numa/crypto/openssl/apps/ca.c user/jeff/numa/crypto/openssl/apps/ciphers.c user/jeff/numa/crypto/openssl/apps/cms.c user/jeff/numa/crypto/openssl/apps/dgst.c user/jeff/numa/crypto/openssl/apps/dsaparam.c user/jeff/numa/crypto/openssl/apps/ecparam.c user/jeff/numa/crypto/openssl/apps/enc.c user/jeff/numa/crypto/openssl/apps/errstr.c user/jeff/numa/crypto/openssl/apps/ocsp.c user/jeff/numa/crypto/openssl/apps/openssl.c user/jeff/numa/crypto/openssl/apps/passwd.c user/jeff/numa/crypto/openssl/apps/pkcs12.c user/jeff/numa/crypto/openssl/apps/pkcs8.c user/jeff/numa/crypto/openssl/apps/rand.c user/jeff/numa/crypto/openssl/apps/req.c user/jeff/numa/crypto/openssl/apps/s_client.c user/jeff/numa/crypto/openssl/apps/s_server.c user/jeff/numa/crypto/openssl/apps/s_socket.c user/jeff/numa/crypto/openssl/apps/s_time.c user/jeff/numa/crypto/openssl/apps/speed.c user/jeff/numa/crypto/openssl/apps/x509.c user/jeff/numa/crypto/openssl/crypto/asn1/a_gentm.c user/jeff/numa/crypto/openssl/crypto/asn1/a_mbstr.c user/jeff/numa/crypto/openssl/crypto/asn1/a_object.c user/jeff/numa/crypto/openssl/crypto/asn1/a_strex.c user/jeff/numa/crypto/openssl/crypto/asn1/a_time.c user/jeff/numa/crypto/openssl/crypto/asn1/a_utctm.c user/jeff/numa/crypto/openssl/crypto/asn1/asn1.h user/jeff/numa/crypto/openssl/crypto/asn1/asn1_err.c user/jeff/numa/crypto/openssl/crypto/asn1/asn1_lib.c user/jeff/numa/crypto/openssl/crypto/asn1/asn1_par.c user/jeff/numa/crypto/openssl/crypto/asn1/asn_mime.c user/jeff/numa/crypto/openssl/crypto/asn1/t_x509a.c user/jeff/numa/crypto/openssl/crypto/asn1/tasn_dec.c user/jeff/numa/crypto/openssl/crypto/asn1/tasn_prn.c user/jeff/numa/crypto/openssl/crypto/bf/bftest.c user/jeff/numa/crypto/openssl/crypto/bio/b_dump.c user/jeff/numa/crypto/openssl/crypto/bio/b_print.c user/jeff/numa/crypto/openssl/crypto/bio/bio_cb.c user/jeff/numa/crypto/openssl/crypto/bio/bss_bio.c user/jeff/numa/crypto/openssl/crypto/bio/bss_conn.c user/jeff/numa/crypto/openssl/crypto/bio/bss_file.c user/jeff/numa/crypto/openssl/crypto/bn/bn_exp.c user/jeff/numa/crypto/openssl/crypto/bn/bn_lib.c user/jeff/numa/crypto/openssl/crypto/bn/bn_mont.c user/jeff/numa/crypto/openssl/crypto/bn/bn_print.c user/jeff/numa/crypto/openssl/crypto/bn/bntest.c user/jeff/numa/crypto/openssl/crypto/bn/expspeed.c user/jeff/numa/crypto/openssl/crypto/bn/exptest.c user/jeff/numa/crypto/openssl/crypto/conf/conf_def.c user/jeff/numa/crypto/openssl/crypto/conf/conf_mod.c user/jeff/numa/crypto/openssl/crypto/des/destest.c user/jeff/numa/crypto/openssl/crypto/des/ecb_enc.c user/jeff/numa/crypto/openssl/crypto/des/fcrypt.c user/jeff/numa/crypto/openssl/crypto/des/read_pwd.c user/jeff/numa/crypto/openssl/crypto/des/set_key.c user/jeff/numa/crypto/openssl/crypto/dh/dhtest.c user/jeff/numa/crypto/openssl/crypto/dsa/dsatest.c user/jeff/numa/crypto/openssl/crypto/ec/ec_lib.c user/jeff/numa/crypto/openssl/crypto/ec/ec_mult.c user/jeff/numa/crypto/openssl/crypto/ec/ecp_nistp224.c user/jeff/numa/crypto/openssl/crypto/ec/ecp_nistp256.c user/jeff/numa/crypto/openssl/crypto/ec/ecp_nistp521.c user/jeff/numa/crypto/openssl/crypto/ec/ecp_nistz256.c user/jeff/numa/crypto/openssl/crypto/ec/ecp_smpl.c user/jeff/numa/crypto/openssl/crypto/ec/ectest.c user/jeff/numa/crypto/openssl/crypto/ecdh/ecdhtest.c user/jeff/numa/crypto/openssl/crypto/engine/eng_cryptodev.c user/jeff/numa/crypto/openssl/crypto/engine/eng_table.c user/jeff/numa/crypto/openssl/crypto/err/err.c user/jeff/numa/crypto/openssl/crypto/err/err_prn.c user/jeff/numa/crypto/openssl/crypto/evp/bio_b64.c user/jeff/numa/crypto/openssl/crypto/evp/digest.c user/jeff/numa/crypto/openssl/crypto/evp/e_aes.c user/jeff/numa/crypto/openssl/crypto/evp/e_camellia.c user/jeff/numa/crypto/openssl/crypto/evp/evp_enc.c user/jeff/numa/crypto/openssl/crypto/evp/evp_locl.h user/jeff/numa/crypto/openssl/crypto/evp/evp_pbe.c user/jeff/numa/crypto/openssl/crypto/evp/evp_test.c user/jeff/numa/crypto/openssl/crypto/evp/openbsd_hw.c user/jeff/numa/crypto/openssl/crypto/evp/p5_crpt2.c user/jeff/numa/crypto/openssl/crypto/hmac/hmac.c user/jeff/numa/crypto/openssl/crypto/jpake/jpake.c user/jeff/numa/crypto/openssl/crypto/md2/md2_dgst.c user/jeff/numa/crypto/openssl/crypto/md4/md4.c user/jeff/numa/crypto/openssl/crypto/mem_dbg.c user/jeff/numa/crypto/openssl/crypto/o_init.c user/jeff/numa/crypto/openssl/crypto/o_time.c user/jeff/numa/crypto/openssl/crypto/objects/o_names.c user/jeff/numa/crypto/openssl/crypto/objects/obj_dat.c user/jeff/numa/crypto/openssl/crypto/opensslv.h user/jeff/numa/crypto/openssl/crypto/pem/pem_info.c user/jeff/numa/crypto/openssl/crypto/pem/pem_lib.c user/jeff/numa/crypto/openssl/crypto/pkcs7/pk7_doit.c user/jeff/numa/crypto/openssl/crypto/rand/md_rand.c user/jeff/numa/crypto/openssl/crypto/rand/rand_egd.c user/jeff/numa/crypto/openssl/crypto/rand/rand_unix.c user/jeff/numa/crypto/openssl/crypto/rsa/rsa_crpt.c user/jeff/numa/crypto/openssl/crypto/rsa/rsa_gen.c user/jeff/numa/crypto/openssl/crypto/rsa/rsa_pss.c user/jeff/numa/crypto/openssl/crypto/rsa/rsa_test.c user/jeff/numa/crypto/openssl/crypto/srp/srp_grps.h user/jeff/numa/crypto/openssl/crypto/threads/mttest.c user/jeff/numa/crypto/openssl/crypto/ts/Makefile user/jeff/numa/crypto/openssl/crypto/ts/ts_rsp_sign.c user/jeff/numa/crypto/openssl/crypto/ui/ui_openssl.c user/jeff/numa/crypto/openssl/crypto/x509/x509_txt.c user/jeff/numa/crypto/openssl/crypto/x509/x509_v3.c user/jeff/numa/crypto/openssl/crypto/x509/x509_vpm.c user/jeff/numa/crypto/openssl/crypto/x509v3/v3_alt.c user/jeff/numa/crypto/openssl/crypto/x509v3/v3_conf.c user/jeff/numa/crypto/openssl/crypto/x509v3/v3_info.c user/jeff/numa/crypto/openssl/doc/apps/ca.pod user/jeff/numa/crypto/openssl/doc/apps/ecparam.pod user/jeff/numa/crypto/openssl/doc/apps/s_client.pod user/jeff/numa/crypto/openssl/doc/apps/verify.pod user/jeff/numa/crypto/openssl/doc/apps/x509.pod user/jeff/numa/crypto/openssl/doc/crypto/ASN1_STRING_length.pod user/jeff/numa/crypto/openssl/doc/crypto/BIO_s_mem.pod user/jeff/numa/crypto/openssl/doc/crypto/BN_zero.pod user/jeff/numa/crypto/openssl/doc/crypto/EVP_EncryptInit.pod user/jeff/numa/crypto/openssl/doc/crypto/X509_VERIFY_PARAM_set_flags.pod user/jeff/numa/crypto/openssl/doc/crypto/threads.pod user/jeff/numa/crypto/openssl/engines/ccgost/README.gost user/jeff/numa/crypto/openssl/engines/ccgost/gost_eng.c user/jeff/numa/crypto/openssl/engines/e_atalla.c user/jeff/numa/crypto/openssl/ssl/Makefile user/jeff/numa/crypto/openssl/ssl/bad_dtls_test.c user/jeff/numa/crypto/openssl/ssl/d1_lib.c user/jeff/numa/crypto/openssl/ssl/d1_pkt.c user/jeff/numa/crypto/openssl/ssl/fatalerrtest.c user/jeff/numa/crypto/openssl/ssl/kssl.c user/jeff/numa/crypto/openssl/ssl/s23_srvr.c user/jeff/numa/crypto/openssl/ssl/s2_clnt.c user/jeff/numa/crypto/openssl/ssl/s2_enc.c user/jeff/numa/crypto/openssl/ssl/s2_lib.c user/jeff/numa/crypto/openssl/ssl/s2_srvr.c user/jeff/numa/crypto/openssl/ssl/s3_clnt.c user/jeff/numa/crypto/openssl/ssl/s3_lib.c user/jeff/numa/crypto/openssl/ssl/s3_pkt.c user/jeff/numa/crypto/openssl/ssl/s3_srvr.c user/jeff/numa/crypto/openssl/ssl/ssl_cert.c user/jeff/numa/crypto/openssl/ssl/ssl_lib.c user/jeff/numa/crypto/openssl/ssl/ssl_sess.c user/jeff/numa/crypto/openssl/ssl/ssltest.c user/jeff/numa/crypto/openssl/ssl/t1_enc.c user/jeff/numa/crypto/openssl/ssl/t1_lib.c user/jeff/numa/crypto/openssl/ssl/t1_trce.c user/jeff/numa/etc/rc.d/pf user/jeff/numa/lib/libc/sys/Makefile.inc user/jeff/numa/lib/libc/sys/cpuset.2 user/jeff/numa/lib/libc/sys/cpuset_getaffinity.2 user/jeff/numa/lib/libdl/Makefile user/jeff/numa/lib/libusb/libusb20.c user/jeff/numa/lib/libusb/libusb20_int.h user/jeff/numa/lib/libusb/libusb20_ugen20.c user/jeff/numa/release/amd64/mkisoimages.sh user/jeff/numa/release/arm/BANANAPI.conf user/jeff/numa/release/arm/BEAGLEBONE.conf user/jeff/numa/release/arm/CUBIEBOARD.conf user/jeff/numa/release/arm/CUBIEBOARD2.conf user/jeff/numa/release/arm/CUBOX-HUMMINGBOARD.conf user/jeff/numa/release/arm/GUMSTIX.conf user/jeff/numa/release/arm/PANDABOARD.conf user/jeff/numa/release/arm/RPI-B.conf user/jeff/numa/release/arm/RPI2.conf user/jeff/numa/release/arm/WANDBOARD.conf user/jeff/numa/release/tools/gce.conf user/jeff/numa/sbin/ifconfig/af_link.c user/jeff/numa/sbin/ifconfig/ifconfig.c user/jeff/numa/sbin/ipfw/ipfw2.c user/jeff/numa/sbin/ipfw/ipfw2.h user/jeff/numa/sbin/ipfw/main.c user/jeff/numa/sbin/mount/mount.8 user/jeff/numa/sbin/savecore/savecore.8 user/jeff/numa/secure/lib/libcrypto/Makefile.inc user/jeff/numa/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 user/jeff/numa/secure/lib/libcrypto/man/ASN1_STRING_length.3 user/jeff/numa/secure/lib/libcrypto/man/ASN1_STRING_new.3 user/jeff/numa/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 user/jeff/numa/secure/lib/libcrypto/man/ASN1_TIME_set.3 user/jeff/numa/secure/lib/libcrypto/man/ASN1_generate_nconf.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_ctrl.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_base64.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_buffer.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_cipher.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_md.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_null.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_f_ssl.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_find_type.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_new.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_new_CMS.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_push.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_read.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_accept.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_bio.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_connect.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_fd.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_file.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_mem.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_null.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_s_socket.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_set_callback.3 user/jeff/numa/secure/lib/libcrypto/man/BIO_should_retry.3 user/jeff/numa/secure/lib/libcrypto/man/BN_BLINDING_new.3 user/jeff/numa/secure/lib/libcrypto/man/BN_CTX_new.3 user/jeff/numa/secure/lib/libcrypto/man/BN_CTX_start.3 user/jeff/numa/secure/lib/libcrypto/man/BN_add.3 user/jeff/numa/secure/lib/libcrypto/man/BN_add_word.3 user/jeff/numa/secure/lib/libcrypto/man/BN_bn2bin.3 user/jeff/numa/secure/lib/libcrypto/man/BN_cmp.3 user/jeff/numa/secure/lib/libcrypto/man/BN_copy.3 user/jeff/numa/secure/lib/libcrypto/man/BN_generate_prime.3 user/jeff/numa/secure/lib/libcrypto/man/BN_mod_inverse.3 user/jeff/numa/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 user/jeff/numa/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 user/jeff/numa/secure/lib/libcrypto/man/BN_new.3 user/jeff/numa/secure/lib/libcrypto/man/BN_num_bytes.3 user/jeff/numa/secure/lib/libcrypto/man/BN_rand.3 user/jeff/numa/secure/lib/libcrypto/man/BN_set_bit.3 user/jeff/numa/secure/lib/libcrypto/man/BN_swap.3 user/jeff/numa/secure/lib/libcrypto/man/BN_zero.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_add0_cert.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_add1_signer.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_compress.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_decrypt.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_encrypt.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_final.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_get0_type.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_sign.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_sign_receipt.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_uncompress.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_verify.3 user/jeff/numa/secure/lib/libcrypto/man/CMS_verify_receipt.3 user/jeff/numa/secure/lib/libcrypto/man/CONF_modules_free.3 user/jeff/numa/secure/lib/libcrypto/man/CONF_modules_load_file.3 user/jeff/numa/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 user/jeff/numa/secure/lib/libcrypto/man/DH_generate_key.3 user/jeff/numa/secure/lib/libcrypto/man/DH_generate_parameters.3 user/jeff/numa/secure/lib/libcrypto/man/DH_get_ex_new_index.3 user/jeff/numa/secure/lib/libcrypto/man/DH_new.3 user/jeff/numa/secure/lib/libcrypto/man/DH_set_method.3 user/jeff/numa/secure/lib/libcrypto/man/DH_size.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_SIG_new.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_do_sign.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_dup_DH.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_generate_key.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_generate_parameters.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_new.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_set_method.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_sign.3 user/jeff/numa/secure/lib/libcrypto/man/DSA_size.3 user/jeff/numa/secure/lib/libcrypto/man/EC_GFp_simple_method.3 user/jeff/numa/secure/lib/libcrypto/man/EC_GROUP_copy.3 user/jeff/numa/secure/lib/libcrypto/man/EC_GROUP_new.3 user/jeff/numa/secure/lib/libcrypto/man/EC_KEY_new.3 user/jeff/numa/secure/lib/libcrypto/man/EC_POINT_add.3 user/jeff/numa/secure/lib/libcrypto/man/EC_POINT_new.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_GET_LIB.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_clear_error.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_error_string.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_get_error.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_load_strings.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_print_errors.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_put_error.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_remove_state.3 user/jeff/numa/secure/lib/libcrypto/man/ERR_set_mark.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_BytesToKey.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_DigestInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_DigestSignInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_EncodeInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_EncryptInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_OpenInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_derive.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_meth_new.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_new.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_sign.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_verify.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_SealInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_SignInit.3 user/jeff/numa/secure/lib/libcrypto/man/EVP_VerifyInit.3 user/jeff/numa/secure/lib/libcrypto/man/OBJ_nid2obj.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_Applink.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_config.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_instrument_bus.3 user/jeff/numa/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 user/jeff/numa/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 user/jeff/numa/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 user/jeff/numa/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS12_create.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS12_parse.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS7_decrypt.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS7_encrypt.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS7_sign.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 user/jeff/numa/secure/lib/libcrypto/man/PKCS7_verify.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_add.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_bytes.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_cleanup.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_egd.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_load_file.3 user/jeff/numa/secure/lib/libcrypto/man/RAND_set_rand_method.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_blinding_on.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_check_key.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_generate_key.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_new.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_print.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_private_encrypt.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_public_encrypt.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_set_method.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_sign.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 user/jeff/numa/secure/lib/libcrypto/man/RSA_size.3 user/jeff/numa/secure/lib/libcrypto/man/SMIME_read_CMS.3 user/jeff/numa/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 user/jeff/numa/secure/lib/libcrypto/man/SMIME_write_CMS.3 user/jeff/numa/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 user/jeff/numa/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 user/jeff/numa/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 user/jeff/numa/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 user/jeff/numa/secure/lib/libcrypto/man/X509_NAME_print_ex.3 user/jeff/numa/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 user/jeff/numa/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 user/jeff/numa/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 user/jeff/numa/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 user/jeff/numa/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 user/jeff/numa/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 user/jeff/numa/secure/lib/libcrypto/man/X509_check_host.3 user/jeff/numa/secure/lib/libcrypto/man/X509_check_private_key.3 user/jeff/numa/secure/lib/libcrypto/man/X509_new.3 user/jeff/numa/secure/lib/libcrypto/man/X509_verify_cert.3 user/jeff/numa/secure/lib/libcrypto/man/bio.3 user/jeff/numa/secure/lib/libcrypto/man/blowfish.3 user/jeff/numa/secure/lib/libcrypto/man/bn.3 user/jeff/numa/secure/lib/libcrypto/man/bn_internal.3 user/jeff/numa/secure/lib/libcrypto/man/buffer.3 user/jeff/numa/secure/lib/libcrypto/man/crypto.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_DHparams.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_ECPKParameters.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_ECPrivateKey.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_PrivateKey.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509_CRL.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509_NAME.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509_REQ.3 user/jeff/numa/secure/lib/libcrypto/man/d2i_X509_SIG.3 user/jeff/numa/secure/lib/libcrypto/man/des.3 user/jeff/numa/secure/lib/libcrypto/man/dh.3 user/jeff/numa/secure/lib/libcrypto/man/dsa.3 user/jeff/numa/secure/lib/libcrypto/man/ec.3 user/jeff/numa/secure/lib/libcrypto/man/ecdsa.3 user/jeff/numa/secure/lib/libcrypto/man/engine.3 user/jeff/numa/secure/lib/libcrypto/man/err.3 user/jeff/numa/secure/lib/libcrypto/man/evp.3 user/jeff/numa/secure/lib/libcrypto/man/hmac.3 user/jeff/numa/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 user/jeff/numa/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 user/jeff/numa/secure/lib/libcrypto/man/lh_stats.3 user/jeff/numa/secure/lib/libcrypto/man/lhash.3 user/jeff/numa/secure/lib/libcrypto/man/md5.3 user/jeff/numa/secure/lib/libcrypto/man/mdc2.3 user/jeff/numa/secure/lib/libcrypto/man/pem.3 user/jeff/numa/secure/lib/libcrypto/man/rand.3 user/jeff/numa/secure/lib/libcrypto/man/rc4.3 user/jeff/numa/secure/lib/libcrypto/man/ripemd.3 user/jeff/numa/secure/lib/libcrypto/man/rsa.3 user/jeff/numa/secure/lib/libcrypto/man/sha.3 user/jeff/numa/secure/lib/libcrypto/man/threads.3 user/jeff/numa/secure/lib/libcrypto/man/ui.3 user/jeff/numa/secure/lib/libcrypto/man/ui_compat.3 user/jeff/numa/secure/lib/libcrypto/man/x509.3 user/jeff/numa/secure/lib/libssl/man/SSL_CIPHER_get_name.3 user/jeff/numa/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_CTX_new.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_CTX_set1_prefix.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_CTX_set_flags.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_CTX_set_ssl_ctx.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_cmd.3 user/jeff/numa/secure/lib/libssl/man/SSL_CONF_cmd_argv.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_add1_chain_cert.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_add_session.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_ctrl.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_free.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_get0_param.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_new.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_sess_number.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_sessions.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set1_curves.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set1_verify_cert_store.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_alpn_select_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_cert_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_custom_cli_ext.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_mode.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_options.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_timeout.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_tlsext_servername_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_tlsext_status_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_set_verify.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_use_certificate.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 user/jeff/numa/secure/lib/libssl/man/SSL_CTX_use_serverinfo.3 user/jeff/numa/secure/lib/libssl/man/SSL_SESSION_free.3 user/jeff/numa/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 user/jeff/numa/secure/lib/libssl/man/SSL_SESSION_get_time.3 user/jeff/numa/secure/lib/libssl/man/SSL_accept.3 user/jeff/numa/secure/lib/libssl/man/SSL_alert_type_string.3 user/jeff/numa/secure/lib/libssl/man/SSL_check_chain.3 user/jeff/numa/secure/lib/libssl/man/SSL_clear.3 user/jeff/numa/secure/lib/libssl/man/SSL_connect.3 user/jeff/numa/secure/lib/libssl/man/SSL_do_handshake.3 user/jeff/numa/secure/lib/libssl/man/SSL_export_keying_material.3 user/jeff/numa/secure/lib/libssl/man/SSL_free.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_SSL_CTX.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_ciphers.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_client_CA_list.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_current_cipher.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_default_timeout.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_error.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_ex_new_index.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_fd.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_peer_certificate.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_psk_identity.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_rbio.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_session.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_verify_result.3 user/jeff/numa/secure/lib/libssl/man/SSL_get_version.3 user/jeff/numa/secure/lib/libssl/man/SSL_library_init.3 user/jeff/numa/secure/lib/libssl/man/SSL_load_client_CA_file.3 user/jeff/numa/secure/lib/libssl/man/SSL_new.3 user/jeff/numa/secure/lib/libssl/man/SSL_pending.3 user/jeff/numa/secure/lib/libssl/man/SSL_read.3 user/jeff/numa/secure/lib/libssl/man/SSL_rstate_string.3 user/jeff/numa/secure/lib/libssl/man/SSL_session_reused.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_bio.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_connect_state.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_fd.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_session.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_shutdown.3 user/jeff/numa/secure/lib/libssl/man/SSL_set_verify_result.3 user/jeff/numa/secure/lib/libssl/man/SSL_shutdown.3 user/jeff/numa/secure/lib/libssl/man/SSL_state_string.3 user/jeff/numa/secure/lib/libssl/man/SSL_want.3 user/jeff/numa/secure/lib/libssl/man/SSL_write.3 user/jeff/numa/secure/lib/libssl/man/d2i_SSL_SESSION.3 user/jeff/numa/secure/lib/libssl/man/ssl.3 user/jeff/numa/secure/usr.bin/openssl/man/CA.pl.1 user/jeff/numa/secure/usr.bin/openssl/man/asn1parse.1 user/jeff/numa/secure/usr.bin/openssl/man/ca.1 user/jeff/numa/secure/usr.bin/openssl/man/ciphers.1 user/jeff/numa/secure/usr.bin/openssl/man/cms.1 user/jeff/numa/secure/usr.bin/openssl/man/crl.1 user/jeff/numa/secure/usr.bin/openssl/man/crl2pkcs7.1 user/jeff/numa/secure/usr.bin/openssl/man/dgst.1 user/jeff/numa/secure/usr.bin/openssl/man/dhparam.1 user/jeff/numa/secure/usr.bin/openssl/man/dsa.1 user/jeff/numa/secure/usr.bin/openssl/man/dsaparam.1 user/jeff/numa/secure/usr.bin/openssl/man/ec.1 user/jeff/numa/secure/usr.bin/openssl/man/ecparam.1 user/jeff/numa/secure/usr.bin/openssl/man/enc.1 user/jeff/numa/secure/usr.bin/openssl/man/errstr.1 user/jeff/numa/secure/usr.bin/openssl/man/gendsa.1 user/jeff/numa/secure/usr.bin/openssl/man/genpkey.1 user/jeff/numa/secure/usr.bin/openssl/man/genrsa.1 user/jeff/numa/secure/usr.bin/openssl/man/nseq.1 user/jeff/numa/secure/usr.bin/openssl/man/ocsp.1 user/jeff/numa/secure/usr.bin/openssl/man/openssl.1 user/jeff/numa/secure/usr.bin/openssl/man/passwd.1 user/jeff/numa/secure/usr.bin/openssl/man/pkcs12.1 user/jeff/numa/secure/usr.bin/openssl/man/pkcs7.1 user/jeff/numa/secure/usr.bin/openssl/man/pkcs8.1 user/jeff/numa/secure/usr.bin/openssl/man/pkey.1 user/jeff/numa/secure/usr.bin/openssl/man/pkeyparam.1 user/jeff/numa/secure/usr.bin/openssl/man/pkeyutl.1 user/jeff/numa/secure/usr.bin/openssl/man/rand.1 user/jeff/numa/secure/usr.bin/openssl/man/req.1 user/jeff/numa/secure/usr.bin/openssl/man/rsa.1 user/jeff/numa/secure/usr.bin/openssl/man/rsautl.1 user/jeff/numa/secure/usr.bin/openssl/man/s_client.1 user/jeff/numa/secure/usr.bin/openssl/man/s_server.1 user/jeff/numa/secure/usr.bin/openssl/man/s_time.1 user/jeff/numa/secure/usr.bin/openssl/man/sess_id.1 user/jeff/numa/secure/usr.bin/openssl/man/smime.1 user/jeff/numa/secure/usr.bin/openssl/man/speed.1 user/jeff/numa/secure/usr.bin/openssl/man/spkac.1 user/jeff/numa/secure/usr.bin/openssl/man/ts.1 user/jeff/numa/secure/usr.bin/openssl/man/tsget.1 user/jeff/numa/secure/usr.bin/openssl/man/verify.1 user/jeff/numa/secure/usr.bin/openssl/man/version.1 user/jeff/numa/secure/usr.bin/openssl/man/x509.1 user/jeff/numa/secure/usr.bin/openssl/man/x509v3_config.1 user/jeff/numa/share/man/man4/iwm.4 user/jeff/numa/share/man/man4/iwmfw.4 user/jeff/numa/share/man/man7/development.7 user/jeff/numa/share/man/man7/release.7 user/jeff/numa/share/man/man9/MODULE_PNP_INFO.9 user/jeff/numa/share/man/man9/Makefile user/jeff/numa/share/man/man9/bhnd.9 user/jeff/numa/share/man/man9/malloc.9 user/jeff/numa/share/man/man9/pfil.9 user/jeff/numa/share/man/man9/zone.9 user/jeff/numa/share/misc/committers-ports.dot user/jeff/numa/share/misc/committers-src.dot user/jeff/numa/share/misc/pci_vendors user/jeff/numa/share/mk/bsd.dtb.mk user/jeff/numa/share/mk/bsd.kmod.mk user/jeff/numa/share/mk/bsd.own.mk user/jeff/numa/stand/defaults/loader.conf user/jeff/numa/stand/defaults/loader.conf.5 user/jeff/numa/stand/efi/libefi/efi_console.c user/jeff/numa/stand/efi/loader/framebuffer.c user/jeff/numa/stand/i386/libi386/biosdisk.c user/jeff/numa/stand/i386/libi386/vidconsole.c user/jeff/numa/stand/i386/zfsboot/zfsboot.8 user/jeff/numa/stand/lua/config.lua user/jeff/numa/stand/lua/core.lua user/jeff/numa/stand/lua/loader.lua user/jeff/numa/sys/amd64/amd64/machdep.c user/jeff/numa/sys/amd64/amd64/ptrace_machdep.c user/jeff/numa/sys/amd64/amd64/trap.c user/jeff/numa/sys/amd64/conf/GENERIC user/jeff/numa/sys/amd64/ia32/ia32_signal.c user/jeff/numa/sys/amd64/ia32/ia32_sigtramp.S user/jeff/numa/sys/amd64/ia32/ia32_syscall.c user/jeff/numa/sys/amd64/linux/linux_machdep.c user/jeff/numa/sys/amd64/linux/linux_sysvec.c user/jeff/numa/sys/amd64/linux32/linux32_machdep.c user/jeff/numa/sys/amd64/linux32/linux32_sysvec.c user/jeff/numa/sys/arm/allwinner/aw_sid.c user/jeff/numa/sys/arm/conf/GENERIC user/jeff/numa/sys/cam/scsi/scsi_da.c user/jeff/numa/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c user/jeff/numa/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h user/jeff/numa/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c user/jeff/numa/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h user/jeff/numa/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/Makefile.files user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/vnode.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_removal.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zthr.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_indirect.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_removal.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zcp.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zcp_synctask.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zthr.c user/jeff/numa/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h user/jeff/numa/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c user/jeff/numa/sys/cddl/dev/dtrace/amd64/dtrace_subr.c user/jeff/numa/sys/cddl/dev/dtrace/i386/dtrace_subr.c user/jeff/numa/sys/compat/freebsd32/freebsd32_ioctl.c user/jeff/numa/sys/compat/freebsd32/freebsd32_ioctl.h user/jeff/numa/sys/compat/freebsd32/freebsd32_misc.c user/jeff/numa/sys/compat/linux/linux_ioctl.h user/jeff/numa/sys/compat/linux/linux_ipc.h user/jeff/numa/sys/compat/linux/linux_mib.h user/jeff/numa/sys/compat/linux/linux_misc.h user/jeff/numa/sys/compat/linux/linux_signal.h user/jeff/numa/sys/compat/linuxkpi/common/include/asm/byteorder.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/bitops.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/cdev.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/compiler.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/device.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/dma-attrs.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/dma-mapping.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/err.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/errno.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/etherdevice.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/fs.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/idr.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/if_ether.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/if_vlan.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/io.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/jiffies.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/kernel.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/kmod.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/kobject.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/ktime.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/list.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/log2.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/miscdevice.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/mutex.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/pci.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/rwlock.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/rwsem.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/slab.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/spinlock.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/sysfs.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/usb.h user/jeff/numa/sys/compat/linuxkpi/common/include/linux/workqueue.h user/jeff/numa/sys/compat/linuxkpi/common/include/net/if_inet6.h user/jeff/numa/sys/compat/linuxkpi/common/include/net/ipv6.h user/jeff/numa/sys/compat/linuxkpi/common/include/net/netevent.h user/jeff/numa/sys/compat/linuxkpi/common/src/linux_compat.c user/jeff/numa/sys/compat/linuxkpi/common/src/linux_idr.c user/jeff/numa/sys/compat/linuxkpi/common/src/linux_radix.c user/jeff/numa/sys/compat/linuxkpi/common/src/linux_usb.c user/jeff/numa/sys/conf/NOTES user/jeff/numa/sys/conf/dtb.mk user/jeff/numa/sys/conf/files user/jeff/numa/sys/conf/files.amd64 user/jeff/numa/sys/conf/files.i386 user/jeff/numa/sys/conf/files.powerpc user/jeff/numa/sys/conf/kmod.mk user/jeff/numa/sys/conf/options user/jeff/numa/sys/contrib/libb2/blake2-impl.h user/jeff/numa/sys/contrib/rdma/krping/krping.c user/jeff/numa/sys/contrib/zstd/Makefile user/jeff/numa/sys/contrib/zstd/NEWS user/jeff/numa/sys/contrib/zstd/README.md user/jeff/numa/sys/contrib/zstd/appveyor.yml user/jeff/numa/sys/contrib/zstd/contrib/gen_html/Makefile user/jeff/numa/sys/contrib/zstd/contrib/meson/meson.build user/jeff/numa/sys/contrib/zstd/contrib/meson/meson_options.txt user/jeff/numa/sys/contrib/zstd/contrib/seekable_format/zstdseek_compress.c user/jeff/numa/sys/contrib/zstd/contrib/seekable_format/zstdseek_decompress.c user/jeff/numa/sys/contrib/zstd/doc/README.md user/jeff/numa/sys/contrib/zstd/doc/images/dict-cr.png user/jeff/numa/sys/contrib/zstd/doc/images/dict-cs.png user/jeff/numa/sys/contrib/zstd/doc/images/dict-ds.png user/jeff/numa/sys/contrib/zstd/doc/zstd_compression_format.md user/jeff/numa/sys/contrib/zstd/doc/zstd_manual.html user/jeff/numa/sys/contrib/zstd/lib/BUCK user/jeff/numa/sys/contrib/zstd/lib/README.md user/jeff/numa/sys/contrib/zstd/lib/common/bitstream.h user/jeff/numa/sys/contrib/zstd/lib/common/compiler.h user/jeff/numa/sys/contrib/zstd/lib/common/error_private.c user/jeff/numa/sys/contrib/zstd/lib/common/fse.h user/jeff/numa/sys/contrib/zstd/lib/common/fse_decompress.c user/jeff/numa/sys/contrib/zstd/lib/common/huf.h user/jeff/numa/sys/contrib/zstd/lib/common/pool.c user/jeff/numa/sys/contrib/zstd/lib/common/pool.h user/jeff/numa/sys/contrib/zstd/lib/common/threading.h user/jeff/numa/sys/contrib/zstd/lib/common/zstd_errors.h user/jeff/numa/sys/contrib/zstd/lib/common/zstd_internal.h user/jeff/numa/sys/contrib/zstd/lib/compress/fse_compress.c user/jeff/numa/sys/contrib/zstd/lib/compress/huf_compress.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_compress.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_compress_internal.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_double_fast.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_double_fast.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_fast.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_fast.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_lazy.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_lazy.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_ldm.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_ldm.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_opt.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstd_opt.h user/jeff/numa/sys/contrib/zstd/lib/compress/zstdmt_compress.c user/jeff/numa/sys/contrib/zstd/lib/compress/zstdmt_compress.h user/jeff/numa/sys/contrib/zstd/lib/decompress/huf_decompress.c user/jeff/numa/sys/contrib/zstd/lib/decompress/zstd_decompress.c user/jeff/numa/sys/contrib/zstd/lib/dictBuilder/cover.c user/jeff/numa/sys/contrib/zstd/lib/dictBuilder/zdict.c user/jeff/numa/sys/contrib/zstd/lib/dictBuilder/zdict.h user/jeff/numa/sys/contrib/zstd/lib/legacy/zstd_legacy.h user/jeff/numa/sys/contrib/zstd/lib/legacy/zstd_v04.c user/jeff/numa/sys/contrib/zstd/lib/legacy/zstd_v06.c user/jeff/numa/sys/contrib/zstd/lib/legacy/zstd_v07.c user/jeff/numa/sys/contrib/zstd/lib/zstd.h user/jeff/numa/sys/contrib/zstd/programs/Makefile user/jeff/numa/sys/contrib/zstd/programs/README.md user/jeff/numa/sys/contrib/zstd/programs/bench.c user/jeff/numa/sys/contrib/zstd/programs/bench.h user/jeff/numa/sys/contrib/zstd/programs/fileio.c user/jeff/numa/sys/contrib/zstd/programs/fileio.h user/jeff/numa/sys/contrib/zstd/programs/platform.h user/jeff/numa/sys/contrib/zstd/programs/util.h user/jeff/numa/sys/contrib/zstd/programs/zstd.1 user/jeff/numa/sys/contrib/zstd/programs/zstd.1.md user/jeff/numa/sys/contrib/zstd/programs/zstdcli.c user/jeff/numa/sys/contrib/zstd/tests/.gitignore user/jeff/numa/sys/contrib/zstd/tests/Makefile user/jeff/numa/sys/contrib/zstd/tests/fullbench.c user/jeff/numa/sys/contrib/zstd/tests/fuzz/zstd_helpers.c user/jeff/numa/sys/contrib/zstd/tests/fuzzer.c user/jeff/numa/sys/contrib/zstd/tests/legacy.c user/jeff/numa/sys/contrib/zstd/tests/paramgrill.c user/jeff/numa/sys/contrib/zstd/tests/playTests.sh user/jeff/numa/sys/contrib/zstd/tests/roundTripCrash.c user/jeff/numa/sys/contrib/zstd/tests/zstreamtest.c user/jeff/numa/sys/contrib/zstd/zlibWrapper/examples/zwrapbench.c user/jeff/numa/sys/crypto/blake2/config.h user/jeff/numa/sys/crypto/ccp/ccp.c user/jeff/numa/sys/dev/adlink/adlink.c user/jeff/numa/sys/dev/bhnd/bcma/bcma_erom.c user/jeff/numa/sys/dev/bhnd/bhnd.h user/jeff/numa/sys/dev/bhnd/bhnd_erom.c user/jeff/numa/sys/dev/bhnd/bhnd_erom.h user/jeff/numa/sys/dev/bhnd/bhnd_eromvar.h user/jeff/numa/sys/dev/bhnd/bhnd_subr.c user/jeff/numa/sys/dev/bhnd/bhndb/bhndb.c user/jeff/numa/sys/dev/bhnd/bhndb/bhndb_pci.c user/jeff/numa/sys/dev/bhnd/nvram/bhnd_nvram_private.h user/jeff/numa/sys/dev/bhnd/siba/siba_erom.c user/jeff/numa/sys/dev/ciss/ciss.c user/jeff/numa/sys/dev/cxgbe/cxgbei/icl_cxgbei.c user/jeff/numa/sys/dev/cxgbe/t4_main.c user/jeff/numa/sys/dev/cxgbe/tom/t4_cpl_io.c user/jeff/numa/sys/dev/cxgbe/tom/t4_ddp.c user/jeff/numa/sys/dev/cxgbe/tom/t4_tls.c user/jeff/numa/sys/dev/cxgbe/tom/t4_tom.c user/jeff/numa/sys/dev/cxgbe/tom/t4_tom.h user/jeff/numa/sys/dev/de/if_de.c user/jeff/numa/sys/dev/de/if_devar.h user/jeff/numa/sys/dev/ed/if_ed_pci.c user/jeff/numa/sys/dev/efidev/efirt.c (contents, props changed) user/jeff/numa/sys/dev/iwm/if_iwm.c user/jeff/numa/sys/dev/iwm/if_iwm_7000.c user/jeff/numa/sys/dev/iwm/if_iwm_config.h user/jeff/numa/sys/dev/md/md.c user/jeff/numa/sys/dev/mlx5/device.h user/jeff/numa/sys/dev/mlx5/driver.h user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_cmd.c user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_core.h user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_fw.c user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_health.c user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_main.c user/jeff/numa/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c user/jeff/numa/sys/dev/mlx5/mlx5_en/en.h user/jeff/numa/sys/dev/mlx5/mlx5_en/mlx5_en_main.c user/jeff/numa/sys/dev/mlx5/mlx5_ifc.h user/jeff/numa/sys/dev/mpr/mpr_sas.c user/jeff/numa/sys/dev/mps/mps_sas.c user/jeff/numa/sys/dev/nxge/if_nxge.c user/jeff/numa/sys/dev/pci/pci_user.c user/jeff/numa/sys/dev/qlxgbe/ql_dbg.h user/jeff/numa/sys/dev/qlxgbe/ql_hw.c user/jeff/numa/sys/dev/qlxgbe/ql_ioctl.c user/jeff/numa/sys/dev/qlxgbe/ql_isr.c user/jeff/numa/sys/dev/qlxgbe/ql_os.c user/jeff/numa/sys/dev/qlxgbe/ql_ver.h user/jeff/numa/sys/dev/sbni/if_sbni.c user/jeff/numa/sys/dev/tcp_log/tcp_log_dev.h user/jeff/numa/sys/dev/usb/controller/musb_otg.c user/jeff/numa/sys/dev/usb/input/ukbd.c user/jeff/numa/sys/dev/usb/input/wsp.c user/jeff/numa/sys/dev/xl/if_xl.c user/jeff/numa/sys/dts/Makefile.inc user/jeff/numa/sys/geom/journal/g_journal_ufs.c user/jeff/numa/sys/geom/label/g_label_ufs.c user/jeff/numa/sys/i386/i386/machdep.c user/jeff/numa/sys/i386/i386/trap.c user/jeff/numa/sys/i386/i386/vm86.c user/jeff/numa/sys/i386/i386/vm86bios.s user/jeff/numa/sys/i386/linux/linux_machdep.c user/jeff/numa/sys/i386/linux/linux_sysvec.c user/jeff/numa/sys/kern/kern_cpuset.c user/jeff/numa/sys/kern/kern_descrip.c user/jeff/numa/sys/kern/kern_ntptime.c user/jeff/numa/sys/kern/kern_shutdown.c user/jeff/numa/sys/kern/kern_sig.c user/jeff/numa/sys/kern/kern_thread.c user/jeff/numa/sys/kern/subr_sleepqueue.c user/jeff/numa/sys/kern/subr_trap.c user/jeff/numa/sys/kern/sysv_shm.c user/jeff/numa/sys/kern/tty_pts.c user/jeff/numa/sys/kern/uipc_syscalls.c user/jeff/numa/sys/kern/vfs_bio.c user/jeff/numa/sys/kern/vfs_mount.c user/jeff/numa/sys/kern/vfs_subr.c user/jeff/numa/sys/kern/vfs_vnops.c user/jeff/numa/sys/mips/broadcom/bhnd_nexus.c user/jeff/numa/sys/mips/include/elf.h user/jeff/numa/sys/mips/mips/stdatomic.c user/jeff/numa/sys/modules/crypto/Makefile user/jeff/numa/sys/modules/iwmfw/Makefile user/jeff/numa/sys/modules/mlx5/Makefile user/jeff/numa/sys/modules/vmware/Makefile user/jeff/numa/sys/net/ethernet.h user/jeff/numa/sys/net/if.c user/jeff/numa/sys/net/if.h user/jeff/numa/sys/net/if_arcsubr.c user/jeff/numa/sys/net/if_bridge.c user/jeff/numa/sys/net/if_enc.c user/jeff/numa/sys/net/if_ethersubr.c user/jeff/numa/sys/net/if_fddisubr.c user/jeff/numa/sys/net/if_fwsubr.c user/jeff/numa/sys/net/if_var.h user/jeff/numa/sys/net/if_vlan.c user/jeff/numa/sys/net/if_vlan_var.h user/jeff/numa/sys/net/iflib.c user/jeff/numa/sys/net/pfil.c user/jeff/numa/sys/net/pfil.h user/jeff/numa/sys/net/pfvar.h user/jeff/numa/sys/netinet/cc/cc.h user/jeff/numa/sys/netinet/cc/cc_cubic.c user/jeff/numa/sys/netinet/cc/cc_cubic.h user/jeff/numa/sys/netinet/in_pcb.c user/jeff/numa/sys/netinet/ip_carp.c user/jeff/numa/sys/netinet/ip_fastfwd.c user/jeff/numa/sys/netinet/ip_input.c user/jeff/numa/sys/netinet/ip_output.c user/jeff/numa/sys/netinet/tcp_log_buf.c user/jeff/numa/sys/netinet/tcp_log_buf.h user/jeff/numa/sys/netinet/tcp_subr.c user/jeff/numa/sys/netinet/tcp_usrreq.c user/jeff/numa/sys/netinet6/dest6.c user/jeff/numa/sys/netinet6/icmp6.c user/jeff/numa/sys/netinet6/in6.c user/jeff/numa/sys/netinet6/in6_ifattach.c user/jeff/numa/sys/netinet6/ip6_fastfwd.c user/jeff/numa/sys/netinet6/ip6_forward.c user/jeff/numa/sys/netinet6/ip6_input.c user/jeff/numa/sys/netinet6/ip6_output.c user/jeff/numa/sys/netinet6/nd6.c user/jeff/numa/sys/netinet6/nd6_nbr.c user/jeff/numa/sys/netinet6/udp6_usrreq.c user/jeff/numa/sys/netpfil/pf/pf.c user/jeff/numa/sys/netpfil/pf/pf.h user/jeff/numa/sys/netpfil/pf/pf_ioctl.c user/jeff/numa/sys/nfs/bootp_subr.c user/jeff/numa/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c user/jeff/numa/sys/opencrypto/crypto.c user/jeff/numa/sys/opencrypto/cryptodev.c user/jeff/numa/sys/opencrypto/cryptodev.h user/jeff/numa/sys/opencrypto/cryptosoft.c user/jeff/numa/sys/opencrypto/xform_enc.h user/jeff/numa/sys/powerpc/powerpc/trap.c user/jeff/numa/sys/sys/elf_common.h user/jeff/numa/sys/sys/imgact.h user/jeff/numa/sys/sys/namei.h user/jeff/numa/sys/sys/priv.h user/jeff/numa/sys/sys/proc.h user/jeff/numa/sys/sys/refcount.h user/jeff/numa/sys/sys/seq.h user/jeff/numa/sys/sys/sockio.h user/jeff/numa/sys/sys/syscallsubr.h user/jeff/numa/sys/sys/uio.h user/jeff/numa/sys/vm/uma_core.c user/jeff/numa/sys/vm/vm.h user/jeff/numa/sys/vm/vm_domainset.c user/jeff/numa/sys/vm/vm_domainset.h user/jeff/numa/sys/vm/vm_fault.c user/jeff/numa/sys/vm/vm_glue.c user/jeff/numa/sys/vm/vm_pageout.c user/jeff/numa/sys/vm/vm_pagequeue.h user/jeff/numa/sys/vm/vm_reserv.c user/jeff/numa/sys/x86/include/signal.h user/jeff/numa/sys/x86/include/trap.h user/jeff/numa/sys/x86/x86/identcpu.c user/jeff/numa/sys/x86/x86/intr_machdep.c user/jeff/numa/tests/sys/cddl/zfs/bin/devname2devid.c user/jeff/numa/tests/sys/cddl/zfs/bin/zpool_bsd.ksh user/jeff/numa/tests/sys/cddl/zfs/bin/zpool_smi.ksh user/jeff/numa/tests/sys/cddl/zfs/include/libtest.kshlib user/jeff/numa/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add.kshlib user/jeff/numa/tests/sys/cddl/zfs/tests/delegate/delegate_common.kshlib user/jeff/numa/tests/sys/cddl/zfs/tests/devices/devices_common.kshlib user/jeff/numa/tests/sys/cddl/zfs/tests/hotspare/hotspare_add_003_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/hotspare/hotspare_create_001_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/hotspare/hotspare_remove_002_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/interop/interop.cfg user/jeff/numa/tests/sys/cddl/zfs/tests/largest_pool/largest_pool.cfg user/jeff/numa/tests/sys/cddl/zfs/tests/slog/slog_013_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_001_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_002_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_005_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_006_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_008_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/utils_test/utils_test_009_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/xattr/xattr_004_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zones/zones_001_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_common.kshlib user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_misc/zvol_misc_001_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_misc/zvol_misc_003_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_misc/zvol_misc_004_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_misc/zvol_misc_005_neg.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_misc/zvol_misc_006_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/cleanup.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_001_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_002_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_003_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_004_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_005_pos.ksh user/jeff/numa/tests/sys/cddl/zfs/tests/zvol/zvol_swap/zvol_swap_006_pos.ksh user/jeff/numa/tools/boot/lua-lint.sh user/jeff/numa/tools/tools/crypto/Makefile user/jeff/numa/tools/tools/crypto/cryptotest.c user/jeff/numa/usr.bin/cpuset/cpuset.1 user/jeff/numa/usr.bin/cpuset/cpuset.c user/jeff/numa/usr.bin/timeout/timeout.1 user/jeff/numa/usr.bin/truss/syscall.h user/jeff/numa/usr.bin/truss/syscalls.c user/jeff/numa/usr.sbin/arp/arp.c user/jeff/numa/usr.sbin/ctld/ctld.8 user/jeff/numa/usr.sbin/makefs/cd9660/cd9660_eltorito.c user/jeff/numa/usr.sbin/makefs/cd9660/cd9660_eltorito.h user/jeff/numa/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5 Directory Properties: user/jeff/numa/ (props changed) user/jeff/numa/cddl/ (props changed) user/jeff/numa/cddl/contrib/opensolaris/ (props changed) user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/ (props changed) user/jeff/numa/cddl/contrib/opensolaris/cmd/zfs/ (props changed) user/jeff/numa/cddl/contrib/opensolaris/lib/libzfs/ (props changed) user/jeff/numa/contrib/llvm/ (props changed) user/jeff/numa/contrib/llvm/tools/lld/ (props changed) user/jeff/numa/contrib/tzdata/ (props changed) user/jeff/numa/crypto/openssl/ (props changed) user/jeff/numa/sys/cddl/contrib/opensolaris/ (props changed) user/jeff/numa/sys/contrib/zstd/ (props changed) Modified: user/jeff/numa/UPDATING ============================================================================== --- user/jeff/numa/UPDATING Thu Mar 29 19:53:56 2018 (r331747) +++ user/jeff/numa/UPDATING Thu Mar 29 20:39:05 2018 (r331748) @@ -51,6 +51,22 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20180328: + Support for token ring networks has been removed. If you + have "device token" in your kernel config you should remove + it. No device drivers supported token ring. + +20180323: + makefs was modified to be able to tag ISO9660 El Torito boot catalog + entries as EFI instead of overloading the i386 tag as done previously. + The amd64 mkisoimages.sh script used to build amd64 ISO images for + release was updated to use this. This may mean that makefs must be + updated before "make cdrom" can be run in the release directory. This + should be as simple as: + + $ cd $SRCDIR/usr.sbin/makefs + $ make depend all install + 20180212: FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf. @@ -613,7 +629,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: rebooting, e.g.: make buildworld - make kernel KERNCONF=YOUR_KERNEL_HERE + make buildkernel KERNCONF=YOUR_KERNEL_HERE + make installkernel KERNCONF=YOUR_KERNEL_HERE make -C sys/boot install @@ -1984,7 +2001,8 @@ COMMON ITEMS: ---------------------------------------------- make buildworld [9] - make kernel KERNCONF=YOUR_KERNEL_HERE [8] + make buildkernel KERNCONF=YOUR_KERNEL_HERE [8] + make installkernel KERNCONF=YOUR_KERNEL_HERE [1] [3] mergemaster -Fp [5] Modified: user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.8 ============================================================================== --- user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Thu Mar 29 19:53:56 2018 (r331747) +++ user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Thu Mar 29 20:39:05 2018 (r331748) @@ -21,7 +21,7 @@ .Nd display zpool debugging and consistency information .Sh SYNOPSIS .Nm -.Op Fl AbcdDFGhiLMPsvX +.Op Fl AbcdDFGhikLMPsvX .Op Fl e Oo Fl V Oc Op Fl p Ar path ... .Op Fl I Ar inflight I/Os .Oo Fl o Ar var Ns = Ns Ar value Oc Ns ... @@ -170,6 +170,9 @@ Display information about intent log .Pq ZIL entries relating to each dataset. If specified multiple times, display counts of each intent log transaction type. +.It Fl k +Examine the checkpointed state of the pool. +Note, the on disk format of the pool is not reverted to the checkpointed state. .It Fl l Ar device Read the vdev labels from the specified device. .Nm Fl l Modified: user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Mar 29 19:53:56 2018 (r331747) +++ user/jeff/numa/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Mar 29 20:39:05 2018 (r331748) @@ -24,6 +24,7 @@ * Copyright (c) 2011, 2017 by Delphix. All rights reserved. * Copyright (c) 2014 Integros [integros.com] * Copyright 2017 Nexenta Systems, Inc. + * Copyright 2017 RackTop Systems. */ #include @@ -88,12 +89,14 @@ extern boolean_t zfs_recover; extern uint64_t zfs_arc_max, zfs_arc_meta_limit; extern int zfs_vdev_async_read_max_active; extern boolean_t spa_load_verify_dryrun; +extern int aok; #else int reference_tracking_enable; boolean_t zfs_recover; uint64_t zfs_arc_max, zfs_arc_meta_limit; int zfs_vdev_async_read_max_active; boolean_t spa_load_verify_dryrun; +int aok; #endif static const char cmdname[] = "zdb"; @@ -128,7 +131,7 @@ static void usage(void) { (void) fprintf(stderr, - "Usage:\t%s [-AbcdDFGhiLMPsvX] [-e [-V] [-p ...]] " + "Usage:\t%s [-AbcdDFGhikLMPsvX] [-e [-V] [-p ...]] " "[-I ]\n" "\t\t[-o =]... [-t ] [-U ] [-x ]\n" "\t\t[ [ ...]]\n" @@ -165,6 +168,8 @@ usage(void) (void) fprintf(stderr, " -h pool history\n"); (void) fprintf(stderr, " -i intent logs\n"); (void) fprintf(stderr, " -l read label contents\n"); + (void) fprintf(stderr, " -k examine the checkpointed state " + "of the pool\n"); (void) fprintf(stderr, " -L disable leak tracking (do not " "load spacemaps)\n"); (void) fprintf(stderr, " -m metaslabs\n"); @@ -726,6 +731,22 @@ get_prev_obsolete_spacemap_refcount(spa_t *spa) } static int +get_checkpoint_refcount(vdev_t *vd) +{ + int refcount = 0; + + if (vd->vdev_top == vd && vd->vdev_top_zap != 0 && + zap_contains(spa_meta_objset(vd->vdev_spa), + vd->vdev_top_zap, VDEV_TOP_ZAP_POOL_CHECKPOINT_SM) == 0) + refcount++; + + for (uint64_t c = 0; c < vd->vdev_children; c++) + refcount += get_checkpoint_refcount(vd->vdev_child[c]); + + return (refcount); +} + +static int verify_spacemap_refcounts(spa_t *spa) { uint64_t expected_refcount = 0; @@ -738,6 +759,7 @@ verify_spacemap_refcounts(spa_t *spa) actual_refcount += get_metaslab_refcount(spa->spa_root_vdev); actual_refcount += get_obsolete_refcount(spa->spa_root_vdev); actual_refcount += get_prev_obsolete_spacemap_refcount(spa); + actual_refcount += get_checkpoint_refcount(spa->spa_root_vdev); if (expected_refcount != actual_refcount) { (void) printf("space map refcount mismatch: expected %lld != " @@ -811,8 +833,8 @@ static void dump_metaslab_stats(metaslab_t *msp) { char maxbuf[32]; - range_tree_t *rt = msp->ms_tree; - avl_tree_t *t = &msp->ms_size_tree; + range_tree_t *rt = msp->ms_allocatable; + avl_tree_t *t = &msp->ms_allocatable_by_size; int free_pct = range_tree_space(rt) * 100 / msp->ms_size; /* max sure nicenum has enough space */ @@ -848,7 +870,7 @@ dump_metaslab(metaslab_t *msp) metaslab_load_wait(msp); if (!msp->ms_loaded) { VERIFY0(metaslab_load(msp)); - range_tree_stat_verify(msp->ms_tree); + range_tree_stat_verify(msp->ms_allocatable); } dump_metaslab_stats(msp); metaslab_unload(msp); @@ -2286,6 +2308,8 @@ dump_uberblock(uberblock_t *ub, const char *header, co snprintf_blkptr(blkbuf, sizeof (blkbuf), &ub->ub_rootbp); (void) printf("\trootbp = %s\n", blkbuf); } + (void) printf("\tcheckpoint_txg = %llu\n", + (u_longlong_t)ub->ub_checkpoint_txg); (void) printf("%s", footer ? footer : ""); } @@ -2646,6 +2670,7 @@ static const char *zdb_ot_extname[] = { typedef struct zdb_cb { zdb_blkstats_t zcb_type[ZB_TOTAL + 1][ZDB_OT_TOTAL + 1]; uint64_t zcb_removing_size; + uint64_t zcb_checkpoint_size; uint64_t zcb_dedup_asize; uint64_t zcb_dedup_blocks; uint64_t zcb_embedded_blocks[NUM_BP_EMBEDDED_TYPES]; @@ -2745,7 +2770,7 @@ zdb_count_block(zdb_cb_t *zcb, zilog_t *zilog, const b } VERIFY3U(zio_wait(zio_claim(NULL, zcb->zcb_spa, - refcnt ? 0 : spa_first_txg(zcb->zcb_spa), + refcnt ? 0 : spa_min_claim_txg(zcb->zcb_spa), bp, NULL, NULL, ZIO_FLAG_CANFAIL)), ==, 0); } @@ -2947,7 +2972,7 @@ claim_segment_impl_cb(uint64_t inner_offset, vdev_t *v ASSERT(vdev_is_concrete(vd)); VERIFY0(metaslab_claim_impl(vd, offset, size, - spa_first_txg(vd->vdev_spa))); + spa_min_claim_txg(vd->vdev_spa))); } static void @@ -3008,70 +3033,6 @@ zdb_claim_removing(spa_t *spa, zdb_cb_t *zcb) spa_config_exit(spa, SCL_CONFIG, FTAG); } -/* - * vm_idxp is an in-out parameter which (for indirect vdevs) is the - * index in vim_entries that has the first entry in this metaslab. On - * return, it will be set to the first entry after this metaslab. - */ -static void -zdb_leak_init_ms(metaslab_t *msp, uint64_t *vim_idxp) -{ - metaslab_group_t *mg = msp->ms_group; - vdev_t *vd = mg->mg_vd; - vdev_t *rvd = vd->vdev_spa->spa_root_vdev; - - mutex_enter(&msp->ms_lock); - metaslab_unload(msp); - - /* - * We don't want to spend the CPU manipulating the size-ordered - * tree, so clear the range_tree ops. - */ - msp->ms_tree->rt_ops = NULL; - - (void) fprintf(stderr, - "\rloading vdev %llu of %llu, metaslab %llu of %llu ...", - (longlong_t)vd->vdev_id, - (longlong_t)rvd->vdev_children, - (longlong_t)msp->ms_id, - (longlong_t)vd->vdev_ms_count); - - /* - * For leak detection, we overload the metaslab ms_tree to - * contain allocated segments instead of free segments. As a - * result, we can't use the normal metaslab_load/unload - * interfaces. - */ - if (vd->vdev_ops == &vdev_indirect_ops) { - vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; - for (; *vim_idxp < vdev_indirect_mapping_num_entries(vim); - (*vim_idxp)++) { - vdev_indirect_mapping_entry_phys_t *vimep = - &vim->vim_entries[*vim_idxp]; - uint64_t ent_offset = DVA_MAPPING_GET_SRC_OFFSET(vimep); - uint64_t ent_len = DVA_GET_ASIZE(&vimep->vimep_dst); - ASSERT3U(ent_offset, >=, msp->ms_start); - if (ent_offset >= msp->ms_start + msp->ms_size) - break; - - /* - * Mappings do not cross metaslab boundaries, - * because we create them by walking the metaslabs. - */ - ASSERT3U(ent_offset + ent_len, <=, - msp->ms_start + msp->ms_size); - range_tree_add(msp->ms_tree, ent_offset, ent_len); - } - } else if (msp->ms_sm != NULL) { - VERIFY0(space_map_load(msp->ms_sm, msp->ms_tree, SM_ALLOC)); - } - - if (!msp->ms_loaded) { - msp->ms_loaded = B_TRUE; - } - mutex_exit(&msp->ms_lock); -} - /* ARGSUSED */ static int increment_indirect_mapping_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) @@ -3128,7 +3089,243 @@ zdb_load_obsolete_counts(vdev_t *vd) return (counts); } +typedef struct checkpoint_sm_exclude_entry_arg { + vdev_t *cseea_vd; + uint64_t cseea_checkpoint_size; +} checkpoint_sm_exclude_entry_arg_t; + +static int +checkpoint_sm_exclude_entry_cb(maptype_t type, uint64_t offset, uint64_t size, + void *arg) +{ + checkpoint_sm_exclude_entry_arg_t *cseea = arg; + vdev_t *vd = cseea->cseea_vd; + metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; + uint64_t end = offset + size; + + ASSERT(type == SM_FREE); + + /* + * Since the vdev_checkpoint_sm exists in the vdev level + * and the ms_sm space maps exist in the metaslab level, + * an entry in the checkpoint space map could theoretically + * cross the boundaries of the metaslab that it belongs. + * + * In reality, because of the way that we populate and + * manipulate the checkpoint's space maps currently, + * there shouldn't be any entries that cross metaslabs. + * Hence the assertion below. + * + * That said, there is no fundamental requirement that + * the checkpoint's space map entries should not cross + * metaslab boundaries. So if needed we could add code + * that handles metaslab-crossing segments in the future. + */ + VERIFY3U(offset, >=, ms->ms_start); + VERIFY3U(end, <=, ms->ms_start + ms->ms_size); + + /* + * By removing the entry from the allocated segments we + * also verify that the entry is there to begin with. + */ + mutex_enter(&ms->ms_lock); + range_tree_remove(ms->ms_allocatable, offset, size); + mutex_exit(&ms->ms_lock); + + cseea->cseea_checkpoint_size += size; + return (0); +} + static void +zdb_leak_init_vdev_exclude_checkpoint(vdev_t *vd, zdb_cb_t *zcb) +{ + spa_t *spa = vd->vdev_spa; + space_map_t *checkpoint_sm = NULL; + uint64_t checkpoint_sm_obj; + + /* + * If there is no vdev_top_zap, we are in a pool whose + * version predates the pool checkpoint feature. + */ + if (vd->vdev_top_zap == 0) + return; + + /* + * If there is no reference of the vdev_checkpoint_sm in + * the vdev_top_zap, then one of the following scenarios + * is true: + * + * 1] There is no checkpoint + * 2] There is a checkpoint, but no checkpointed blocks + * have been freed yet + * 3] The current vdev is indirect + * + * In these cases we return immediately. + */ + if (zap_contains(spa_meta_objset(spa), vd->vdev_top_zap, + VDEV_TOP_ZAP_POOL_CHECKPOINT_SM) != 0) + return; + + VERIFY0(zap_lookup(spa_meta_objset(spa), vd->vdev_top_zap, + VDEV_TOP_ZAP_POOL_CHECKPOINT_SM, sizeof (uint64_t), 1, + &checkpoint_sm_obj)); + + checkpoint_sm_exclude_entry_arg_t cseea; + cseea.cseea_vd = vd; + cseea.cseea_checkpoint_size = 0; + + VERIFY0(space_map_open(&checkpoint_sm, spa_meta_objset(spa), + checkpoint_sm_obj, 0, vd->vdev_asize, vd->vdev_ashift)); + space_map_update(checkpoint_sm); + + VERIFY0(space_map_iterate(checkpoint_sm, + checkpoint_sm_exclude_entry_cb, &cseea)); + space_map_close(checkpoint_sm); + + zcb->zcb_checkpoint_size += cseea.cseea_checkpoint_size; +} + +static void +zdb_leak_init_exclude_checkpoint(spa_t *spa, zdb_cb_t *zcb) +{ + vdev_t *rvd = spa->spa_root_vdev; + for (uint64_t c = 0; c < rvd->vdev_children; c++) { + ASSERT3U(c, ==, rvd->vdev_child[c]->vdev_id); + zdb_leak_init_vdev_exclude_checkpoint(rvd->vdev_child[c], zcb); + } +} + +static void +load_concrete_ms_allocatable_trees(spa_t *spa, maptype_t maptype) +{ + vdev_t *rvd = spa->spa_root_vdev; + for (uint64_t i = 0; i < rvd->vdev_children; i++) { + vdev_t *vd = rvd->vdev_child[i]; + + ASSERT3U(i, ==, vd->vdev_id); + + if (vd->vdev_ops == &vdev_indirect_ops) + continue; + + for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { + metaslab_t *msp = vd->vdev_ms[m]; + + (void) fprintf(stderr, + "\rloading concrete vdev %llu, " + "metaslab %llu of %llu ...", + (longlong_t)vd->vdev_id, + (longlong_t)msp->ms_id, + (longlong_t)vd->vdev_ms_count); + + mutex_enter(&msp->ms_lock); + metaslab_unload(msp); + + /* + * We don't want to spend the CPU manipulating the + * size-ordered tree, so clear the range_tree ops. + */ + msp->ms_allocatable->rt_ops = NULL; + + if (msp->ms_sm != NULL) { + VERIFY0(space_map_load(msp->ms_sm, + msp->ms_allocatable, maptype)); + } + if (!msp->ms_loaded) + msp->ms_loaded = B_TRUE; + mutex_exit(&msp->ms_lock); + } + } +} + +/* + * vm_idxp is an in-out parameter which (for indirect vdevs) is the + * index in vim_entries that has the first entry in this metaslab. + * On return, it will be set to the first entry after this metaslab. + */ +static void +load_indirect_ms_allocatable_tree(vdev_t *vd, metaslab_t *msp, + uint64_t *vim_idxp) +{ + vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; + + mutex_enter(&msp->ms_lock); + metaslab_unload(msp); + + /* + * We don't want to spend the CPU manipulating the + * size-ordered tree, so clear the range_tree ops. + */ + msp->ms_allocatable->rt_ops = NULL; + + for (; *vim_idxp < vdev_indirect_mapping_num_entries(vim); + (*vim_idxp)++) { + vdev_indirect_mapping_entry_phys_t *vimep = + &vim->vim_entries[*vim_idxp]; + uint64_t ent_offset = DVA_MAPPING_GET_SRC_OFFSET(vimep); + uint64_t ent_len = DVA_GET_ASIZE(&vimep->vimep_dst); + ASSERT3U(ent_offset, >=, msp->ms_start); + if (ent_offset >= msp->ms_start + msp->ms_size) + break; + + /* + * Mappings do not cross metaslab boundaries, + * because we create them by walking the metaslabs. + */ + ASSERT3U(ent_offset + ent_len, <=, + msp->ms_start + msp->ms_size); + range_tree_add(msp->ms_allocatable, ent_offset, ent_len); + } + + if (!msp->ms_loaded) + msp->ms_loaded = B_TRUE; + mutex_exit(&msp->ms_lock); +} + +static void +zdb_leak_init_prepare_indirect_vdevs(spa_t *spa, zdb_cb_t *zcb) +{ + vdev_t *rvd = spa->spa_root_vdev; + for (uint64_t c = 0; c < rvd->vdev_children; c++) { + vdev_t *vd = rvd->vdev_child[c]; + + ASSERT3U(c, ==, vd->vdev_id); + + if (vd->vdev_ops != &vdev_indirect_ops) + continue; + + /* + * Note: we don't check for mapping leaks on + * removing vdevs because their ms_allocatable's + * are used to look for leaks in allocated space. + */ + zcb->zcb_vd_obsolete_counts[c] = zdb_load_obsolete_counts(vd); + + /* + * Normally, indirect vdevs don't have any + * metaslabs. We want to set them up for + * zio_claim(). + */ + VERIFY0(vdev_metaslab_init(vd, 0)); + + vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; + uint64_t vim_idx = 0; + for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { + + (void) fprintf(stderr, + "\rloading indirect vdev %llu, " + "metaslab %llu of %llu ...", + (longlong_t)vd->vdev_id, + (longlong_t)vd->vdev_ms[m]->ms_id, + (longlong_t)vd->vdev_ms_count); + + load_indirect_ms_allocatable_tree(vd, vd->vdev_ms[m], + &vim_idx); + } + ASSERT3U(vim_idx, ==, vdev_indirect_mapping_num_entries(vim)); + } +} + +static void zdb_leak_init(spa_t *spa, zdb_cb_t *zcb) { zcb->zcb_spa = spa; @@ -3139,7 +3336,7 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb) /* * We are going to be changing the meaning of the metaslab's - * ms_tree. Ensure that the allocator doesn't try to + * ms_allocatable. Ensure that the allocator doesn't try to * use the tree. */ spa->spa_normal_class->mc_ops = &zdb_metaslab_ops; @@ -3149,39 +3346,37 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb) umem_zalloc(rvd->vdev_children * sizeof (uint32_t *), UMEM_NOFAIL); + /* + * For leak detection, we overload the ms_allocatable trees + * to contain allocated segments instead of free segments. + * As a result, we can't use the normal metaslab_load/unload + * interfaces. + */ + zdb_leak_init_prepare_indirect_vdevs(spa, zcb); + load_concrete_ms_allocatable_trees(spa, SM_ALLOC); - for (uint64_t c = 0; c < rvd->vdev_children; c++) { - vdev_t *vd = rvd->vdev_child[c]; - uint64_t vim_idx = 0; + /* + * On load_concrete_ms_allocatable_trees() we loaded all the + * allocated entries from the ms_sm to the ms_allocatable for + * each metaslab. If the pool has a checkpoint or is in the + * middle of discarding a checkpoint, some of these blocks + * may have been freed but their ms_sm may not have been + * updated because they are referenced by the checkpoint. In + * order to avoid false-positives during leak-detection, we + * go through the vdev's checkpoint space map and exclude all + * its entries from their relevant ms_allocatable. + * + * We also aggregate the space held by the checkpoint and add + * it to zcb_checkpoint_size. + * + * Note that at this point we are also verifying that all the + * entries on the checkpoint_sm are marked as allocated in + * the ms_sm of their relevant metaslab. + * [see comment in checkpoint_sm_exclude_entry_cb()] + */ + zdb_leak_init_exclude_checkpoint(spa, zcb); - ASSERT3U(c, ==, vd->vdev_id); - - /* - * Note: we don't check for mapping leaks on - * removing vdevs because their ms_tree's are - * used to look for leaks in allocated space. - */ - if (vd->vdev_ops == &vdev_indirect_ops) { - zcb->zcb_vd_obsolete_counts[c] = - zdb_load_obsolete_counts(vd); - - /* - * Normally, indirect vdevs don't have any - * metaslabs. We want to set them up for - * zio_claim(). - */ - VERIFY0(vdev_metaslab_init(vd, 0)); - } - - for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { - zdb_leak_init_ms(vd->vdev_ms[m], &vim_idx); - } - if (vd->vdev_ops == &vdev_indirect_ops) { - ASSERT3U(vim_idx, ==, - vdev_indirect_mapping_num_entries( - vd->vdev_indirect_mapping)); - } - } + /* for cleaner progress output */ (void) fprintf(stderr, "\n"); if (bpobj_is_open(&dp->dp_obsolete_bpobj)) { @@ -3190,12 +3385,16 @@ zdb_leak_init(spa_t *spa, zdb_cb_t *zcb) (void) bpobj_iterate_nofree(&dp->dp_obsolete_bpobj, increment_indirect_mapping_cb, zcb, NULL); } + } else { + /* + * If leak tracing is disabled, we still need to consider + * any checkpointed space in our space verification. + */ + zcb->zcb_checkpoint_size += spa_get_checkpoint_space(spa); } spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER); - zdb_ddt_leak_init(spa, zcb); - spa_config_exit(spa, SCL_CONFIG, FTAG); } @@ -3222,7 +3421,7 @@ zdb_check_for_obsolete_leaks(vdev_t *vd, zdb_cb_t *zcb for (uint64_t inner_offset = 0; inner_offset < DVA_GET_ASIZE(&vimep->vimep_dst); inner_offset += 1 << vd->vdev_ashift) { - if (range_tree_contains(msp->ms_tree, + if (range_tree_contains(msp->ms_allocatable, offset + inner_offset, 1 << vd->vdev_ashift)) { obsolete_bytes += 1 << vd->vdev_ashift; } @@ -3288,23 +3487,23 @@ zdb_leak_fini(spa_t *spa, zdb_cb_t *zcb) ASSERT3P(mg, ==, msp->ms_group); /* - * The ms_tree has been overloaded to - * contain allocated segments. Now that we - * finished traversing all blocks, any - * block that remains in the ms_tree + * ms_allocatable has been overloaded + * to contain allocated segments. Now that + * we finished traversing all blocks, any + * block that remains in the ms_allocatable * represents an allocated block that we * did not claim during the traversal. * Claimed blocks would have been removed - * from the ms_tree. For indirect vdevs, - * space remaining in the tree represents - * parts of the mapping that are not - * referenced, which is not a bug. + * from the ms_allocatable. For indirect + * vdevs, space remaining in the tree + * represents parts of the mapping that are + * not referenced, which is not a bug. */ if (vd->vdev_ops == &vdev_indirect_ops) { - range_tree_vacate(msp->ms_tree, + range_tree_vacate(msp->ms_allocatable, NULL, NULL); } else { - range_tree_vacate(msp->ms_tree, + range_tree_vacate(msp->ms_allocatable, zdb_leak, vd); } @@ -3427,7 +3626,7 @@ dump_block_stats(spa_t *spa) total_alloc = norm_alloc + metaslab_class_get_alloc(spa_log_class(spa)); total_found = tzb->zb_asize - zcb.zcb_dedup_asize + - zcb.zcb_removing_size; + zcb.zcb_removing_size + zcb.zcb_checkpoint_size; if (total_found == total_alloc) { if (!dump_opt['L']) @@ -3836,7 +4035,385 @@ verify_device_removal_feature_counts(spa_t *spa) return (ret); } +#define BOGUS_SUFFIX "_CHECKPOINTED_UNIVERSE" +/* + * Import the checkpointed state of the pool specified by the target + * parameter as readonly. The function also accepts a pool config + * as an optional parameter, else it attempts to infer the config by + * the name of the target pool. + * + * Note that the checkpointed state's pool name will be the name of + * the original pool with the above suffix appened to it. In addition, + * if the target is not a pool name (e.g. a path to a dataset) then + * the new_path parameter is populated with the updated path to + * reflect the fact that we are looking into the checkpointed state. + * + * The function returns a newly-allocated copy of the name of the + * pool containing the checkpointed state. When this copy is no + * longer needed it should be freed with free(3C). Same thing + * applies to the new_path parameter if allocated. + */ +static char * +import_checkpointed_state(char *target, nvlist_t *cfg, char **new_path) +{ + int error = 0; + char *poolname, *bogus_name; + + /* If the target is not a pool, the extract the pool name */ + char *path_start = strchr(target, '/'); + if (path_start != NULL) { + size_t poolname_len = path_start - target; + poolname = strndup(target, poolname_len); + } else { + poolname = target; + } + + if (cfg == NULL) { + error = spa_get_stats(poolname, &cfg, NULL, 0); + if (error != 0) { + fatal("Tried to read config of pool \"%s\" but " + "spa_get_stats() failed with error %d\n", + poolname, error); + } + } + + (void) asprintf(&bogus_name, "%s%s", poolname, BOGUS_SUFFIX); + fnvlist_add_string(cfg, ZPOOL_CONFIG_POOL_NAME, bogus_name); + + error = spa_import(bogus_name, cfg, NULL, + ZFS_IMPORT_MISSING_LOG | ZFS_IMPORT_CHECKPOINT); + if (error != 0) { + fatal("Tried to import pool \"%s\" but spa_import() failed " + "with error %d\n", bogus_name, error); + } + + if (new_path != NULL && path_start != NULL) + (void) asprintf(new_path, "%s%s", bogus_name, path_start); + + if (target != poolname) + free(poolname); + + return (bogus_name); +} + +typedef struct verify_checkpoint_sm_entry_cb_arg { + vdev_t *vcsec_vd; + + /* the following fields are only used for printing progress */ + uint64_t vcsec_entryid; + uint64_t vcsec_num_entries; +} verify_checkpoint_sm_entry_cb_arg_t; + +#define ENTRIES_PER_PROGRESS_UPDATE 10000 + +static int +verify_checkpoint_sm_entry_cb(maptype_t type, uint64_t offset, uint64_t size, + void *arg) +{ + verify_checkpoint_sm_entry_cb_arg_t *vcsec = arg; + vdev_t *vd = vcsec->vcsec_vd; + metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; + uint64_t end = offset + size; + + ASSERT(type == SM_FREE); + + if ((vcsec->vcsec_entryid % ENTRIES_PER_PROGRESS_UPDATE) == 0) { + (void) fprintf(stderr, + "\rverifying vdev %llu, space map entry %llu of %llu ...", + (longlong_t)vd->vdev_id, + (longlong_t)vcsec->vcsec_entryid, + (longlong_t)vcsec->vcsec_num_entries); + } + vcsec->vcsec_entryid++; + + /* + * See comment in checkpoint_sm_exclude_entry_cb() + */ + VERIFY3U(offset, >=, ms->ms_start); + VERIFY3U(end, <=, ms->ms_start + ms->ms_size); + + /* + * The entries in the vdev_checkpoint_sm should be marked as + * allocated in the checkpointed state of the pool, therefore + * their respective ms_allocateable trees should not contain them. + */ + mutex_enter(&ms->ms_lock); + range_tree_verify(ms->ms_allocatable, offset, size); + mutex_exit(&ms->ms_lock); + + return (0); +} + +/* + * Verify that all segments in the vdev_checkpoint_sm are allocated + * according to the checkpoint's ms_sm (i.e. are not in the checkpoint's + * ms_allocatable). + * + * Do so by comparing the checkpoint space maps (vdev_checkpoint_sm) of + * each vdev in the current state of the pool to the metaslab space maps + * (ms_sm) of the checkpointed state of the pool. + * + * Note that the function changes the state of the ms_allocatable + * trees of the current spa_t. The entries of these ms_allocatable + * trees are cleared out and then repopulated from with the free + * entries of their respective ms_sm space maps. + */ static void +verify_checkpoint_vdev_spacemaps(spa_t *checkpoint, spa_t *current) +{ + vdev_t *ckpoint_rvd = checkpoint->spa_root_vdev; + vdev_t *current_rvd = current->spa_root_vdev; + + load_concrete_ms_allocatable_trees(checkpoint, SM_FREE); + + for (uint64_t c = 0; c < ckpoint_rvd->vdev_children; c++) { + vdev_t *ckpoint_vd = ckpoint_rvd->vdev_child[c]; + vdev_t *current_vd = current_rvd->vdev_child[c]; + + space_map_t *checkpoint_sm = NULL; + uint64_t checkpoint_sm_obj; + + if (ckpoint_vd->vdev_ops == &vdev_indirect_ops) { + /* + * Since we don't allow device removal in a pool + * that has a checkpoint, we expect that all removed + * vdevs were removed from the pool before the + * checkpoint. + */ + ASSERT3P(current_vd->vdev_ops, ==, &vdev_indirect_ops); + continue; + } + + /* + * If the checkpoint space map doesn't exist, then nothing + * here is checkpointed so there's nothing to verify. + */ + if (current_vd->vdev_top_zap == 0 || + zap_contains(spa_meta_objset(current), + current_vd->vdev_top_zap, + VDEV_TOP_ZAP_POOL_CHECKPOINT_SM) != 0) + continue; + + VERIFY0(zap_lookup(spa_meta_objset(current), + current_vd->vdev_top_zap, VDEV_TOP_ZAP_POOL_CHECKPOINT_SM, + sizeof (uint64_t), 1, &checkpoint_sm_obj)); + + VERIFY0(space_map_open(&checkpoint_sm, spa_meta_objset(current), + checkpoint_sm_obj, 0, current_vd->vdev_asize, + current_vd->vdev_ashift)); + space_map_update(checkpoint_sm); + + verify_checkpoint_sm_entry_cb_arg_t vcsec; + vcsec.vcsec_vd = ckpoint_vd; + vcsec.vcsec_entryid = 0; + vcsec.vcsec_num_entries = + space_map_length(checkpoint_sm) / sizeof (uint64_t); + VERIFY0(space_map_iterate(checkpoint_sm, + verify_checkpoint_sm_entry_cb, &vcsec)); + dump_spacemap(current->spa_meta_objset, checkpoint_sm); + space_map_close(checkpoint_sm); + } + + /* + * If we've added vdevs since we took the checkpoint, ensure + * that their checkpoint space maps are empty. + */ + if (ckpoint_rvd->vdev_children < current_rvd->vdev_children) { + for (uint64_t c = ckpoint_rvd->vdev_children; + c < current_rvd->vdev_children; c++) { + vdev_t *current_vd = current_rvd->vdev_child[c]; + ASSERT3P(current_vd->vdev_checkpoint_sm, ==, NULL); + } + } + + /* for cleaner progress output */ + (void) fprintf(stderr, "\n"); +} + +/* + * Verifies that all space that's allocated in the checkpoint is + * still allocated in the current version, by checking that everything + * in checkpoint's ms_allocatable (which is actually allocated, not + * allocatable/free) is not present in current's ms_allocatable. + * + * Note that the function changes the state of the ms_allocatable + * trees of both spas when called. The entries of all ms_allocatable + * trees are cleared out and then repopulated from their respective + * ms_sm space maps. In the checkpointed state we load the allocated + * entries, and in the current state we load the free entries. + */ +static void +verify_checkpoint_ms_spacemaps(spa_t *checkpoint, spa_t *current) +{ + vdev_t *ckpoint_rvd = checkpoint->spa_root_vdev; + vdev_t *current_rvd = current->spa_root_vdev; + + load_concrete_ms_allocatable_trees(checkpoint, SM_ALLOC); + load_concrete_ms_allocatable_trees(current, SM_FREE); + + for (uint64_t i = 0; i < ckpoint_rvd->vdev_children; i++) { + vdev_t *ckpoint_vd = ckpoint_rvd->vdev_child[i]; + vdev_t *current_vd = current_rvd->vdev_child[i]; + + if (ckpoint_vd->vdev_ops == &vdev_indirect_ops) { + /* + * See comment in verify_checkpoint_vdev_spacemaps() + */ + ASSERT3P(current_vd->vdev_ops, ==, &vdev_indirect_ops); + continue; + } + + for (uint64_t m = 0; m < ckpoint_vd->vdev_ms_count; m++) { + metaslab_t *ckpoint_msp = ckpoint_vd->vdev_ms[m]; + metaslab_t *current_msp = current_vd->vdev_ms[m]; + + (void) fprintf(stderr, + "\rverifying vdev %llu of %llu, " + "metaslab %llu of %llu ...", + (longlong_t)current_vd->vdev_id, + (longlong_t)current_rvd->vdev_children, + (longlong_t)current_vd->vdev_ms[m]->ms_id, + (longlong_t)current_vd->vdev_ms_count); + + /* + * We walk through the ms_allocatable trees that + * are loaded with the allocated blocks from the + * ms_sm spacemaps of the checkpoint. For each + * one of these ranges we ensure that none of them + * exists in the ms_allocatable trees of the + * current state which are loaded with the ranges + * that are currently free. + * + * This way we ensure that none of the blocks that + * are part of the checkpoint were freed by mistake. + */ + range_tree_walk(ckpoint_msp->ms_allocatable, + (range_tree_func_t *)range_tree_verify, + current_msp->ms_allocatable); + } + } + + /* for cleaner progress output */ + (void) fprintf(stderr, "\n"); +} + +static void +verify_checkpoint_blocks(spa_t *spa) +{ + spa_t *checkpoint_spa; + char *checkpoint_pool; + nvlist_t *config = NULL; + int error = 0; + + /* + * We import the checkpointed state of the pool (under a different + * name) so we can do verification on it against the current state + * of the pool. + */ + checkpoint_pool = import_checkpointed_state(spa->spa_name, config, + NULL); + ASSERT(strcmp(spa->spa_name, checkpoint_pool) != 0); + + error = spa_open(checkpoint_pool, &checkpoint_spa, FTAG); + if (error != 0) { + fatal("Tried to open pool \"%s\" but spa_open() failed with " + "error %d\n", checkpoint_pool, error); + } + + /* + * Ensure that ranges in the checkpoint space maps of each vdev + * are allocated according to the checkpointed state's metaslab + * space maps. + */ + verify_checkpoint_vdev_spacemaps(checkpoint_spa, spa); + + /* + * Ensure that allocated ranges in the checkpoint's metaslab + * space maps remain allocated in the metaslab space maps of + * the current state. + */ + verify_checkpoint_ms_spacemaps(checkpoint_spa, spa); + + /* + * Once we are done, we get rid of the checkpointed state. + */ + spa_close(checkpoint_spa, FTAG); + free(checkpoint_pool); +} + +static void +dump_leftover_checkpoint_blocks(spa_t *spa) +{ + vdev_t *rvd = spa->spa_root_vdev; + + for (uint64_t i = 0; i < rvd->vdev_children; i++) { + vdev_t *vd = rvd->vdev_child[i]; + + space_map_t *checkpoint_sm = NULL; + uint64_t checkpoint_sm_obj; + + if (vd->vdev_top_zap == 0) + continue; + + if (zap_contains(spa_meta_objset(spa), vd->vdev_top_zap, + VDEV_TOP_ZAP_POOL_CHECKPOINT_SM) != 0) + continue; + + VERIFY0(zap_lookup(spa_meta_objset(spa), vd->vdev_top_zap, + VDEV_TOP_ZAP_POOL_CHECKPOINT_SM, + sizeof (uint64_t), 1, &checkpoint_sm_obj)); + + VERIFY0(space_map_open(&checkpoint_sm, spa_meta_objset(spa), + checkpoint_sm_obj, 0, vd->vdev_asize, vd->vdev_ashift)); + space_map_update(checkpoint_sm); + dump_spacemap(spa->spa_meta_objset, checkpoint_sm); + space_map_close(checkpoint_sm); + } +} + +static int *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@freebsd.org Fri Mar 30 01:31:07 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F191BF63216 for ; Fri, 30 Mar 2018 01:31:06 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9FD596EFE5; Fri, 30 Mar 2018 01:31:06 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9959F21FC1; Fri, 30 Mar 2018 01:31:06 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2U1V6cv060978; Fri, 30 Mar 2018 01:31:06 GMT (envelope-from jeff@FreeBSD.org) Received: (from jeff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2U1V6cS060977; Fri, 30 Mar 2018 01:31:06 GMT (envelope-from jeff@FreeBSD.org) Message-Id: <201803300131.w2U1V6cS060977@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jeff set sender to jeff@FreeBSD.org using -f From: Jeff Roberson Date: Fri, 30 Mar 2018 01:31:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331753 - user/jeff/numa/sys/vm X-SVN-Group: user X-SVN-Commit-Author: jeff X-SVN-Commit-Paths: user/jeff/numa/sys/vm X-SVN-Commit-Revision: 331753 X-SVN-Commit-Repository: base 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.25 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, 30 Mar 2018 01:31:07 -0000 Author: jeff Date: Fri Mar 30 01:31:06 2018 New Revision: 331753 URL: https://svnweb.freebsd.org/changeset/base/331753 Log: Fix a couple of pageout control issues. Reset pass after we meet our target. Don't sleep if we met the target. Don't touch unnecessary pages in vm_pageout_free_pages(). Cache misses to page structures are the biggest cost of the pageout daemon. Modified: user/jeff/numa/sys/vm/vm_pageout.c Modified: user/jeff/numa/sys/vm/vm_pageout.c ============================================================================== --- user/jeff/numa/sys/vm/vm_pageout.c Fri Mar 30 01:22:47 2018 (r331752) +++ user/jeff/numa/sys/vm/vm_pageout.c Fri Mar 30 01:31:06 2018 (r331753) @@ -1108,9 +1108,12 @@ vm_pageout_free_pages(vm_object_t object, vm_page_t m, p = vm_page_next(m); vm_page_free(m); /* Iterate through the block range and free compatible pages. */ - /* XXX Fix cache miss on last page. */ - for (m = p; m != NULL && m->pindex < start + pcount; m = p) { - p = TAILQ_NEXT(m, listq); + for (m = p; m != NULL; m = p) { + /* Don't cache miss for the next page after the tail. */ + if (m->pindex < start + pcount) + p = TAILQ_NEXT(m, listq); + else + p = NULL; vm_page_change_lock(m, mtxp); if (vm_page_held(m) || vm_page_busied(m) || m->queue != PQ_INACTIVE) @@ -1869,7 +1872,7 @@ vm_pageout_worker(void *arg) * scan, then sleep a bit and try again. */ vm_domain_pageout_unlock(vmd); - if (pass > 1) + if (pass > 1 && !target_met) pause("pwait", hz / VM_INACT_SCAN_RATE); } else { /* @@ -1899,6 +1902,8 @@ vm_pageout_worker(void *arg) */ if (!target_met) pass++; + else if (shortage) + pass = 1; } } From owner-svn-src-user@freebsd.org Fri Mar 30 01:33:11 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A7BDDF63586 for ; Fri, 30 Mar 2018 01:33:11 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5B3EE6F216; Fri, 30 Mar 2018 01:33:11 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 562F42211B; Fri, 30 Mar 2018 01:33:11 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2U1XBAu065084; Fri, 30 Mar 2018 01:33:11 GMT (envelope-from jeff@FreeBSD.org) Received: (from jeff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2U1XAmV065080; Fri, 30 Mar 2018 01:33:10 GMT (envelope-from jeff@FreeBSD.org) Message-Id: <201803300133.w2U1XAmV065080@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jeff set sender to jeff@FreeBSD.org using -f From: Jeff Roberson Date: Fri, 30 Mar 2018 01:33:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331754 - user/jeff/numa/sys/vm X-SVN-Group: user X-SVN-Commit-Author: jeff X-SVN-Commit-Paths: user/jeff/numa/sys/vm X-SVN-Commit-Revision: 331754 X-SVN-Commit-Repository: base 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.25 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, 30 Mar 2018 01:33:11 -0000 Author: jeff Date: Fri Mar 30 01:33:10 2018 New Revision: 331754 URL: https://svnweb.freebsd.org/changeset/base/331754 Log: Re-implement the page free cache with UMA. Change the limits so the import function doesn't grab the lock if it's not going to succeed. Modified: user/jeff/numa/sys/vm/uma.h user/jeff/numa/sys/vm/uma_core.c user/jeff/numa/sys/vm/vm_page.c user/jeff/numa/sys/vm/vm_page.h Modified: user/jeff/numa/sys/vm/uma.h ============================================================================== --- user/jeff/numa/sys/vm/uma.h Fri Mar 30 01:31:06 2018 (r331753) +++ user/jeff/numa/sys/vm/uma.h Fri Mar 30 01:33:10 2018 (r331754) @@ -286,6 +286,10 @@ uma_zone_t uma_zcache_create(char *name, int size, uma * NUMA aware Zone. Implements a best * effort first-touch policy. */ +#define UMA_ZONE_NOBUCKETCACHE 0x20000 /* + * Don't cache full buckets. Limit + * UMA to per-cpu state. + */ /* * These flags are shared between the keg and zone. In zones wishing to add Modified: user/jeff/numa/sys/vm/uma_core.c ============================================================================== --- user/jeff/numa/sys/vm/uma_core.c Fri Mar 30 01:31:06 2018 (r331753) +++ user/jeff/numa/sys/vm/uma_core.c Fri Mar 30 01:33:10 2018 (r331754) @@ -2965,7 +2965,13 @@ zfree_start: /* ub_cnt is pointing to the last free item */ KASSERT(bucket->ub_cnt != 0, ("uma_zfree: Attempting to insert an empty bucket onto the full list.\n")); - LIST_INSERT_HEAD(&zdom->uzd_buckets, bucket, ub_link); + if ((zone->uz_flags & UMA_ZONE_NOBUCKETCACHE) != 0) { + ZONE_UNLOCK(zone); + bucket_drain(zone, bucket); + bucket_free(zone, bucket, udata); + goto zfree_restart; + } else + LIST_INSERT_HEAD(&zdom->uzd_buckets, bucket, ub_link); } /* Modified: user/jeff/numa/sys/vm/vm_page.c ============================================================================== --- user/jeff/numa/sys/vm/vm_page.c Fri Mar 30 01:31:06 2018 (r331753) +++ user/jeff/numa/sys/vm/vm_page.c Fri Mar 30 01:33:10 2018 (r331754) @@ -134,7 +134,6 @@ extern int vmem_startup_count(void); struct vm_domain vm_dom[MAXMEMDOM]; static DPCPU_DEFINE(struct vm_batchqueue, pqbatch[MAXMEMDOM][PQ_COUNT]); -static DPCPU_DEFINE(struct vm_batchqueue, freeqbatch[MAXMEMDOM]); struct mtx_padalign __exclusive_cache_line pa_lock[PA_LOCK_COUNT]; @@ -221,8 +220,7 @@ vm_page_init_cache_zones(void *dummy __unused) vmd->vmd_pgcache = uma_zcache_create("vm pgcache", sizeof(struct vm_page), NULL, NULL, NULL, NULL, vm_page_import, vm_page_release, vmd, - /* UMA_ZONE_NOBUCKETCACHE |*/ - UMA_ZONE_MAXBUCKET | UMA_ZONE_VM); + UMA_ZONE_NOBUCKETCACHE | UMA_ZONE_MAXBUCKET | UMA_ZONE_VM); } } SYSINIT(vm_page2, SI_SUB_VM_CONF, SI_ORDER_ANY, vm_page_init_cache_zones, NULL); @@ -1781,6 +1779,11 @@ again: } #endif vmd = VM_DOMAIN(domain); + if (object != NULL && vmd->vmd_pgcache != NULL) { + m = uma_zalloc(vmd->vmd_pgcache, M_NOWAIT); + if (m != NULL) + goto found; + } if (vm_domain_allocate(vmd, req, 1)) { /* * If not, allocate it from the free page queues. @@ -2188,22 +2191,23 @@ vm_page_import(void *arg, void **store, int cnt, int d int i, j, n; vmd = arg; + /* Only import if we can bring in a full bucket. */ + if (cnt == 1 || !vm_domain_allocate(vmd, VM_ALLOC_NORMAL, cnt)) + return (0); domain = vmd->vmd_domain; - n = 64; /* Starting stride. */ + n = 64; /* Starting stride, arbitrary. */ vm_domain_free_lock(vmd); for (i = 0; i < cnt; i+=n) { n = vm_phys_alloc_npages(domain, VM_FREELIST_DEFAULT, &m, MIN(n, cnt-i)); if (n == 0) break; - if (!vm_domain_allocate(vmd, VM_ALLOC_NORMAL, n)) { - vm_phys_free_contig(m, n); - break; - } for (j = 0; j < n; j++) store[i+j] = m++; } vm_domain_free_unlock(vmd); + if (cnt != i) + vm_domain_freecnt_inc(vmd, cnt - i); return (i); } @@ -3431,36 +3435,6 @@ vm_page_free_prep(vm_page_t m) return (true); } -void -vm_page_free_phys_pglist(struct pglist *tq) -{ - struct vm_domain *vmd; - vm_page_t m; - int cnt; - - if (TAILQ_EMPTY(tq)) - return; - vmd = NULL; - cnt = 0; - TAILQ_FOREACH(m, tq, listq) { - if (vmd != vm_pagequeue_domain(m)) { - if (vmd != NULL) { - vm_domain_free_unlock(vmd); - vm_domain_freecnt_inc(vmd, cnt); - cnt = 0; - } - vmd = vm_pagequeue_domain(m); - vm_domain_free_lock(vmd); - } - vm_phys_free_pages(m, 0); - cnt++; - } - if (vmd != NULL) { - vm_domain_free_unlock(vmd); - vm_domain_freecnt_inc(vmd, cnt); - } -} - /* * vm_page_free_toq: * @@ -3473,35 +3447,20 @@ vm_page_free_phys_pglist(struct pglist *tq) void vm_page_free_toq(vm_page_t m) { - struct vm_batchqueue *cpubq, bq; struct vm_domain *vmd; - int domain, freed; if (!vm_page_free_prep(m)) return; - domain = vm_phys_domain(m); - vmd = VM_DOMAIN(domain); - - critical_enter(); - cpubq = DPCPU_PTR(freeqbatch[domain]); - if (vm_batchqueue_insert(cpubq, m)) { - critical_exit(); + vmd = vm_pagequeue_domain(m); + if (m->pool == VM_FREEPOOL_DEFAULT && vmd->vmd_pgcache != NULL) { + uma_zfree(vmd->vmd_pgcache, m); return; } - memcpy(&bq, cpubq, sizeof(bq)); - vm_batchqueue_init(cpubq); - critical_exit(); - vm_domain_free_lock(vmd); vm_phys_free_pages(m, 0); - freed = 1; - VM_BATCHQ_FOREACH(&bq, m) { - vm_phys_free_pages(m, 0); - freed++; - } vm_domain_free_unlock(vmd); - vm_domain_freecnt_inc(vmd, freed); + vm_domain_freecnt_inc(vmd, 1); } /* Modified: user/jeff/numa/sys/vm/vm_page.h ============================================================================== --- user/jeff/numa/sys/vm/vm_page.h Fri Mar 30 01:31:06 2018 (r331753) +++ user/jeff/numa/sys/vm/vm_page.h Fri Mar 30 01:33:10 2018 (r331754) @@ -532,7 +532,6 @@ void vm_page_dequeue(vm_page_t m); void vm_page_dequeue_lazy(vm_page_t m); void vm_page_dequeue_locked(vm_page_t m); vm_page_t vm_page_find_least(vm_object_t, vm_pindex_t); -void vm_page_free_phys_pglist(struct pglist *tq); bool vm_page_free_prep(vm_page_t m); vm_page_t vm_page_getfake(vm_paddr_t paddr, vm_memattr_t memattr); void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr); From owner-svn-src-user@freebsd.org Sat Mar 31 16:57:40 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B64FF70075 for ; Sat, 31 Mar 2018 16:57:40 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0ECD86BEB2; Sat, 31 Mar 2018 16:57:40 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 09B9C1A871; Sat, 31 Mar 2018 16:57:40 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2VGvdPd083499; Sat, 31 Mar 2018 16:57:39 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2VGvdMU083498; Sat, 31 Mar 2018 16:57:39 GMT (envelope-from des@FreeBSD.org) Message-Id: <201803311657.w2VGvdMU083498@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Sat, 31 Mar 2018 16:57:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331845 - user/des/fbce/db X-SVN-Group: user X-SVN-Commit-Author: des X-SVN-Commit-Paths: user/des/fbce/db X-SVN-Commit-Revision: 331845 X-SVN-Commit-Repository: base 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.25 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, 31 Mar 2018 16:57:40 -0000 Author: des Date: Sat Mar 31 16:57:39 2018 New Revision: 331845 URL: https://svnweb.freebsd.org/changeset/base/331845 Log: Update for 2018 Modified: user/des/fbce/db/notes Modified: user/des/fbce/db/notes ============================================================================== --- user/des/fbce/db/notes Sat Mar 31 15:06:14 2018 (r331844) +++ user/des/fbce/db/notes Sat Mar 31 16:57:39 2018 (r331845) @@ -39,30 +39,34 @@ perl -Ilib -MFBCE -e 'FBCE->model("FBCE::Person")->fin # that purpose by gjb: # # des@freefall ~% ~gjb/bin/genuserlist.sh -# des@freefall ~% sort users.txt >users-20160518.txt -# des@freefall ~% getent passwd >gecos-20160518.txt +# des@freefall ~% sort users.txt >users-20180516.txt +# des@freefall ~% getent passwd >gecos-20180516.txt # -./script/fbce_user.pl import users-20160518.txt -./script/fbce_user.pl gecos gecos-20160518.txt +./script/fbce_user.pl import users-20180516.txt +./script/fbce_user.pl gecos gecos-20180516.txt # +# The smash command clears the active and incumbent flags for all users: +# +./script/fbce_user.pl smash + +# # The list of active committers is extracted from fst3k: # # fst3k=# \t on # Showing only tuples. -# fst3k=# \o active-20160518.txt -# fst3k=# select p.login from persons p join revisions r on p.id = r.author where r.datetime >= '2015-05-18' group by p.login; +# fst3k=# \o active-20180516.txt +# fst3k=# select p.login from persons p join revisions r on p.id = r.author where r.datetime >= '2017-05-16' group by p.login; # fst3k=# \o # -./script/fbce_user.pl smash -./script/fbce_user.pl activate active-20160518.txt +./script/fbce_user.pl activate active-20180516.txt # # The list of incumbents is obtained from freefall: # -# des@freefall ~% getent group core | grep -v matthew | cut -d: -f4 | tr , '\n' >core-20160518.txt +# des@freefall ~% getent group core | cut -d: -f4 | tr , '\n' | grep -v matthew >core-20180516.txt # -./script/fbce_user.pl incumbent core-20160518.txt +./script/fbce_user.pl incumbent core-20180516.txt # # Finally, generate passwords From owner-svn-src-user@freebsd.org Sat Mar 31 16:58:03 2018 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 59C71F700EB for ; Sat, 31 Mar 2018 16:58:03 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 09B526BFCD; Sat, 31 Mar 2018 16:58:03 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 04CCD1A874; Sat, 31 Mar 2018 16:58:03 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2VGw2mk083575; Sat, 31 Mar 2018 16:58:02 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2VGw2Pn083574; Sat, 31 Mar 2018 16:58:02 GMT (envelope-from des@FreeBSD.org) Message-Id: <201803311658.w2VGw2Pn083574@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Sat, 31 Mar 2018 16:58:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331846 - user/des/fbce X-SVN-Group: user X-SVN-Commit-Author: des X-SVN-Commit-Paths: user/des/fbce X-SVN-Commit-Revision: 331846 X-SVN-Commit-Repository: base 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.25 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, 31 Mar 2018 16:58:03 -0000 Author: des Date: Sat Mar 31 16:58:02 2018 New Revision: 331846 URL: https://svnweb.freebsd.org/changeset/base/331846 Log: Add missing dependency and reorder. Modified: user/des/fbce/README Modified: user/des/fbce/README ============================================================================== --- user/des/fbce/README Sat Mar 31 16:57:39 2018 (r331845) +++ user/des/fbce/README Sat Mar 31 16:58:02 2018 (r331846) @@ -17,9 +17,10 @@ pkg install \ p5-Catalyst-Plugin-Session-Store-FastMmap \ p5-Catalyst-Plugin-Static-Simple \ p5-Catalyst-View-TT \ + p5-Crypt-SaltedHash \ + p5-FCGI-Engine \ p5-MooseX-Types-Common \ p5-MooseX-Types-DateTime-MoreCoercions \ - p5-Crypt-SaltedHash \ p5-Text-WikiFormat In addition, you will need a database (PostgreSQL recommended) and the