From owner-svn-src-user@freebsd.org  Sun Oct  2 21:13:47 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5413DAC6889
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sun,  2 Oct 2016 21:13:47 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 2C9EBD21;
 Sun,  2 Oct 2016 21:13:47 +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 u92LDkGP060475;
 Sun, 2 Oct 2016 21:13:46 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u92LDkDY060472;
 Sun, 2 Oct 2016 21:13:46 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610022113.u92LDkDY060472@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Sun, 2 Oct 2016 21:13:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306595 - in user/alc/PQ_LAUNDRY/sys: sys vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Oct 2016 21:13:47 -0000

Author: markj
Date: Sun Oct  2 21:13:45 2016
New Revision: 306595
URL: https://svnweb.freebsd.org/changeset/base/306595

Log:
  Make the shortfall target smaller and wake the laundry thread on demand.
  
  Rather than waking up periodically, the laundry is now woken up by the
  pagedaemon after an inactive queue scan. If the scan failed to reach its
  target, the laundry thread will attempt to make up the shortfall before
  the next inactive queue scan. This helps avoid excessive laundering in
  scenarios where the inactive queue is not a significant source of
  reclaimable memory (e.g., when most of a system's memory belongs to the ZFS
  ARC) by giving lowmem handlers a chance to help make up for a page shortage
  before setting a laundering target.
  
  Reported by:	pho
  Reviewed by:	alc

Modified:
  user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Sun Oct  2 21:11:25 2016	(r306594)
+++ user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Sun Oct  2 21:13:45 2016	(r306595)
@@ -77,6 +77,7 @@ struct vmmeter {
 	u_int v_intrans;	/* (p) intransit blocking page faults */
 	u_int v_reactivated;	/* (p) pages reactivated by the pagedaemon */
 	u_int v_pdwakeups;	/* (p) times daemon has awaken from sleep */
+	u_int v_ltwakeups;	/* (p) times laundry thread has been woken */
 	u_int v_pdpages;	/* (p) pages analyzed by daemon */
 
 	u_int v_tcached;	/* (p) total pages cached */
@@ -112,7 +113,6 @@ struct vmmeter {
 	u_int v_vforkpages;	/* (p) VM pages affected by vfork() */
 	u_int v_rforkpages;	/* (p) VM pages affected by rfork() */
 	u_int v_kthreadpages;	/* (p) VM pages affected by fork() by kernel */
-	u_int v_spare[1];
 };
 #ifdef _KERNEL
 
@@ -193,8 +193,7 @@ static inline int
 vm_laundry_target(void)
 {
 
-	return (vm_cnt.v_inactive_target - vm_cnt.v_inactive_count +
-	    vm_paging_target());
+	return (vm_paging_target());
 }
 
 /*

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Sun Oct  2 21:11:25 2016	(r306594)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Sun Oct  2 21:13:45 2016	(r306595)
@@ -239,6 +239,7 @@ extern struct vm_domain vm_dom[MAXMEMDOM
 
 #define	vm_pagequeue_assert_locked(pq)	mtx_assert(&(pq)->pq_mutex, MA_OWNED)
 #define	vm_pagequeue_lock(pq)		mtx_lock(&(pq)->pq_mutex)
+#define	vm_pagequeue_lockptr(pq)	(&(pq)->pq_mutex)
 #define	vm_pagequeue_unlock(pq)		mtx_unlock(&(pq)->pq_mutex)
 
 #ifdef _KERNEL

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Sun Oct  2 21:11:25 2016	(r306594)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Sun Oct  2 21:13:45 2016	(r306595)
@@ -166,6 +166,12 @@ static int vm_pageout_oom_seq = 12;
 bool vm_pageout_wanted;		/* Event on which pageout daemon sleeps */
 bool vm_pages_needed;		/* Are threads waiting for free pages? */
 
+static enum {
+	VM_LAUNDRY_IDLE,
+	VM_LAUNDRY_BACKGROUND,
+	VM_LAUNDRY_SHORTFALL,
+} vm_laundry_request;		/* Pending request for dirty page laundering. */
+
 #if !defined(NO_SWAPPING)
 static int vm_pageout_req_swapout;	/* XXX */
 static int vm_daemon_needed;
@@ -1105,19 +1111,21 @@ static void
 vm_pageout_laundry_worker(void *arg)
 {
 	struct vm_domain *domain;
+	struct vm_pagequeue *pq;
 	uint64_t nclean, ndirty;
 	u_int last_launder, wakeups;
 	int cycle, domidx, last_target, launder, prev_shortfall, shortfall;
-	int target;
+	int sleeptime, target;
 
 	domidx = (uintptr_t)arg;
 	domain = &vm_dom[domidx];
+	pq = &domain->vmd_pagequeues[PQ_LAUNDRY];
 	KASSERT(domain->vmd_segs != 0, ("domain without segments"));
 	vm_pageout_init_marker(&domain->vmd_laundry_marker, PQ_LAUNDRY);
 
 	cycle = 0;
 	last_launder = 0;
-	prev_shortfall = 0;
+	shortfall = prev_shortfall = 0;
 	target = 0;
 
 	/*
@@ -1133,18 +1141,9 @@ vm_pageout_laundry_worker(void *arg)
 		 * First determine whether we need to launder pages to meet a
 		 * shortage of free pages.
 		 */
-		shortfall = vm_laundry_target() + vm_pageout_deficit;
 		if (shortfall > 0) {
-			/*
-			 * If we're in shortfall and we haven't yet started a
-			 * laundering cycle to get us out of it, begin a run.
-			 * If we're still in shortfall despite a previous
-			 * laundering run, start a new one.
-			 */
-			if (prev_shortfall == 0 || cycle == 0) {
-				target = shortfall;
-				cycle = VM_LAUNDER_RATE;
-			}
+			target = shortfall;
+			cycle = VM_LAUNDER_RATE;
 			prev_shortfall = shortfall;
 		}
 		if (prev_shortfall > 0) {
@@ -1155,7 +1154,7 @@ vm_pageout_laundry_worker(void *arg)
 			 * shortfall, we have no immediate need to launder
 			 * pages.  Otherwise keep laundering.
 			 */
-			if (shortfall <= 0 || cycle == 0) {
+			if (vm_laundry_target() <= 0 || cycle == 0) {
 				prev_shortfall = target = 0;
 			} else {
 				last_launder = wakeups;
@@ -1211,17 +1210,34 @@ vm_pageout_laundry_worker(void *arg)
 		}
 
 dolaundry:
-		if (launder > 0) {
+		if (launder > 0)
 			/*
 			 * Because of I/O clustering, the number of laundered
 			 * pages could exceed "target" by the maximum size of
 			 * a cluster minus one. 
 			 */
 			target -= min(vm_pageout_launder(domain, launder,
-			    prev_shortfall > 0), target);
-		}
-		tsleep(&vm_cnt.v_laundry_count, PVM, "laundr",
-		    hz / VM_LAUNDER_INTERVAL);
+			    shortfall > 0), target);
+
+		/*
+		 * Sleep for a little bit if we're in the middle of a laundering
+		 * run or a pagedaemon thread has signalled us since the last run
+		 * started.  Otherwise, wait for a kick from the pagedaemon.
+		 */
+		vm_pagequeue_lock(pq);
+		if (target > 0 || vm_laundry_request != VM_LAUNDRY_IDLE)
+			sleeptime = hz / VM_LAUNDER_INTERVAL;
+		else
+			sleeptime = 0;
+		(void)mtx_sleep(&vm_laundry_request, vm_pagequeue_lockptr(pq),
+		    PVM, "laundr", sleeptime);
+		if (vm_laundry_request == VM_LAUNDRY_SHORTFALL)
+			shortfall = vm_laundry_target() + vm_pageout_deficit;
+		else
+			shortfall = 0;
+		if (target == 0)
+			vm_laundry_request = VM_LAUNDRY_IDLE;
+		vm_pagequeue_unlock(pq);
 	}
 }
 
@@ -1235,7 +1251,7 @@ static void
 vm_pageout_scan(struct vm_domain *vmd, int pass)
 {
 	vm_page_t m, next;
-	struct vm_pagequeue *pq;
+	struct vm_pagequeue *pq, *laundryq;
 	vm_object_t object;
 	long min_scan;
 	int act_delta, addl_page_shortage, deficit, maxscan;
@@ -1456,11 +1472,22 @@ drop_page:
 	vm_pagequeue_unlock(pq);
 
 	/*
-	 * Wakeup the laundry thread(s) if we didn't free the targeted number
-	 * of pages.
-	 */
-	if (page_shortage > 0)
-		wakeup(&vm_cnt.v_laundry_count);
+	 * Wake up the laundry thread so that it can perform any needed
+	 * laundering.  If we didn't meet our target, we're in shortfall and
+	 * need to launder more aggressively.
+	 */
+	if (vm_laundry_request == VM_LAUNDRY_IDLE &&
+	    starting_page_shortage > 0) {
+		laundryq = &vm_dom[0].vmd_pagequeues[PQ_LAUNDRY];
+		vm_pagequeue_lock(laundryq);
+		if (page_shortage > 0)
+			vm_laundry_request = VM_LAUNDRY_SHORTFALL;
+		else if (vm_laundry_request != VM_LAUNDRY_SHORTFALL)
+			vm_laundry_request = VM_LAUNDRY_BACKGROUND;
+		wakeup(&vm_laundry_request);
+		vm_pagequeue_unlock(laundryq);
+		PCPU_INC(cnt.v_ltwakeups);
+	}
 
 #if !defined(NO_SWAPPING)
 	/*

From owner-svn-src-user@freebsd.org  Sun Oct  2 21:14:39 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7B54DAC690D
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sun,  2 Oct 2016 21:14:39 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 4C09DECC;
 Sun,  2 Oct 2016 21:14:39 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u92LEc0x060549;
 Sun, 2 Oct 2016 21:14:38 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u92LEc58060548;
 Sun, 2 Oct 2016 21:14:38 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610022114.u92LEc58060548@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Sun, 2 Oct 2016 21:14:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306596 - user/alc/PQ_LAUNDRY/usr.bin/vmstat
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Oct 2016 21:14:39 -0000

Author: markj
Date: Sun Oct  2 21:14:38 2016
New Revision: 306596
URL: https://svnweb.freebsd.org/changeset/base/306596

Log:
  Remove a stray reference to the t_cached statistic.

Modified:
  user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c

Modified: user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Sun Oct  2 21:13:45 2016	(r306595)
+++ user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Sun Oct  2 21:14:38 2016	(r306596)
@@ -1082,8 +1082,6 @@ dosum(void)
 		sum.v_vforkpages);
 	xo_emit("{:pages-rfork/%9u} {N:pages affected by rfork}()\n",
 		sum.v_rforkpages);
-	xo_emit("{:pages-total-cached/%9u} {N:pages cached}\n",
-		sum.v_tcached);
 	xo_emit("{:pages-freed/%9u} {N:pages freed}\n",
 		sum.v_tfree);
 	xo_emit("{:pages-freed-by-daemon/%9u} {N:pages freed by daemon}\n",

From owner-svn-src-user@freebsd.org  Mon Oct  3 19:52:12 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2AD8FAF4754
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Mon,  3 Oct 2016 19:52:12 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id E3073B73;
 Mon,  3 Oct 2016 19:52:11 +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 u93JqBil081189;
 Mon, 3 Oct 2016 19:52:11 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u93Jq7sP080479;
 Mon, 3 Oct 2016 19:52:07 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610031952.u93Jq7sP080479@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Mon, 3 Oct 2016 19:52:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306655 - in user/alc/PQ_LAUNDRY: . bin/chio bin/chmod
 bin/ed bin/kill gnu/lib gnu/usr.bin/binutils include lib/libc/gen lib/libjail
 lib/librt lib/libstand sbin/ccdconfig sbin/dmesg sbi...
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Oct 2016 19:52:12 -0000

Author: markj
Date: Mon Oct  3 19:52:06 2016
New Revision: 306655
URL: https://svnweb.freebsd.org/changeset/base/306655

Log:
  MFH r306654

Added:
  user/alc/PQ_LAUNDRY/sys/modules/evdev/
     - copied from r306654, head/sys/modules/evdev/
  user/alc/PQ_LAUNDRY/sys/modules/rpi_ft5406/
     - copied from r306654, head/sys/modules/rpi_ft5406/
  user/alc/PQ_LAUNDRY/sys/modules/uinput/
     - copied from r306654, head/sys/modules/uinput/
Deleted:
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/a20/std.a20
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/a31/std.a31
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/a83t/std.a83t
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/h3/std.h3
  user/alc/PQ_LAUNDRY/tools/build/options/WITHOUT_ELFCOPY_AS_OBJCOPY
  user/alc/PQ_LAUNDRY/tools/build/options/WITH_ELFCOPY_AS_OBJCOPY
Modified:
  user/alc/PQ_LAUNDRY/ObsoleteFiles.inc
  user/alc/PQ_LAUNDRY/UPDATING
  user/alc/PQ_LAUNDRY/bin/chio/chio.1
  user/alc/PQ_LAUNDRY/bin/chmod/chmod.c
  user/alc/PQ_LAUNDRY/bin/ed/ed.1
  user/alc/PQ_LAUNDRY/bin/kill/kill.1
  user/alc/PQ_LAUNDRY/gnu/lib/Makefile
  user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/Makefile
  user/alc/PQ_LAUNDRY/include/mqueue.h
  user/alc/PQ_LAUNDRY/include/stdio.h
  user/alc/PQ_LAUNDRY/include/stdlib.h
  user/alc/PQ_LAUNDRY/include/time.h
  user/alc/PQ_LAUNDRY/include/unistd.h
  user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map
  user/alc/PQ_LAUNDRY/lib/libc/gen/arc4random.c
  user/alc/PQ_LAUNDRY/lib/libc/gen/crypt.c
  user/alc/PQ_LAUNDRY/lib/libjail/jail.c
  user/alc/PQ_LAUNDRY/lib/librt/Symbol.map
  user/alc/PQ_LAUNDRY/lib/librt/mq.c
  user/alc/PQ_LAUNDRY/lib/librt/timer.c
  user/alc/PQ_LAUNDRY/lib/libstand/cd9660.c
  user/alc/PQ_LAUNDRY/sbin/ccdconfig/ccdconfig.8
  user/alc/PQ_LAUNDRY/sbin/dmesg/dmesg.8
  user/alc/PQ_LAUNDRY/sbin/dump/dump.8
  user/alc/PQ_LAUNDRY/sbin/dumpon/dumpon.8
  user/alc/PQ_LAUNDRY/sbin/etherswitchcfg/etherswitchcfg.8
  user/alc/PQ_LAUNDRY/sbin/fsck_msdosfs/fsck_msdosfs.8
  user/alc/PQ_LAUNDRY/sbin/fsdb/fsdb.8
  user/alc/PQ_LAUNDRY/sbin/gbde/gbde.8
  user/alc/PQ_LAUNDRY/sbin/init/init.8
  user/alc/PQ_LAUNDRY/sbin/mknod/mknod.8
  user/alc/PQ_LAUNDRY/sbin/mksnap_ffs/mksnap_ffs.8
  user/alc/PQ_LAUNDRY/sbin/mount_fusefs/mount_fusefs.8
  user/alc/PQ_LAUNDRY/sbin/mount_msdosfs/mount_msdosfs.8
  user/alc/PQ_LAUNDRY/sbin/mount_nullfs/mount_nullfs.8
  user/alc/PQ_LAUNDRY/sbin/mount_unionfs/mount_unionfs.8
  user/alc/PQ_LAUNDRY/sbin/pfctl/pfctl.8
  user/alc/PQ_LAUNDRY/sbin/sconfig/sconfig.8
  user/alc/PQ_LAUNDRY/sbin/setkey/setkey.8
  user/alc/PQ_LAUNDRY/sbin/shutdown/shutdown.8
  user/alc/PQ_LAUNDRY/sbin/swapon/swapon.8
  user/alc/PQ_LAUNDRY/share/man/man9/taskqueue.9
  user/alc/PQ_LAUNDRY/share/mk/src.opts.mk
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_arm11x6.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv6.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/genassym.c
  user/alc/PQ_LAUNDRY/sys/arm/broadcom/bcm2835/bcm2835_fbd.c
  user/alc/PQ_LAUNDRY/sys/arm/broadcom/bcm2835/bcm2835_ft5406.c
  user/alc/PQ_LAUNDRY/sys/arm/conf/BEAGLEBONE
  user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC
  user/alc/PQ_LAUNDRY/sys/arm/conf/RPI-B
  user/alc/PQ_LAUNDRY/sys/arm/conf/RPI2
  user/alc/PQ_LAUNDRY/sys/arm/include/armreg.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra124/tegra124_clk_pll.c
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra124/tegra124_coretemp.c
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra124/tegra124_cpufreq.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpsw.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/ti_adc.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/ti_adcvar.h
  user/alc/PQ_LAUNDRY/sys/cddl/dev/fbt/arm/fbt_isa.c
  user/alc/PQ_LAUNDRY/sys/cddl/dev/fbt/fbt.c
  user/alc/PQ_LAUNDRY/sys/cddl/dev/fbt/powerpc/fbt_isa.c
  user/alc/PQ_LAUNDRY/sys/cddl/dev/fbt/x86/fbt_isa.c
  user/alc/PQ_LAUNDRY/sys/conf/Makefile.arm
  user/alc/PQ_LAUNDRY/sys/conf/NOTES
  user/alc/PQ_LAUNDRY/sys/conf/options
  user/alc/PQ_LAUNDRY/sys/dev/bwi/if_bwi.c
  user/alc/PQ_LAUNDRY/sys/dev/bwn/if_bwn.c
  user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev.c
  user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev.h
  user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev_private.h
  user/alc/PQ_LAUNDRY/sys/dev/evdev/uinput.c
  user/alc/PQ_LAUNDRY/sys/dev/fb/fbd.c
  user/alc/PQ_LAUNDRY/sys/dev/fdt/simplebus.c
  user/alc/PQ_LAUNDRY/sys/dev/iicbus/iicbus.c
  user/alc/PQ_LAUNDRY/sys/dev/iwm/if_iwm.c
  user/alc/PQ_LAUNDRY/sys/dev/iwm/if_iwmvar.h
  user/alc/PQ_LAUNDRY/sys/dev/iwn/if_iwn.c
  user/alc/PQ_LAUNDRY/sys/dev/iwn/if_iwnvar.h
  user/alc/PQ_LAUNDRY/sys/dev/lmc/if_lmc.c
  user/alc/PQ_LAUNDRY/sys/dev/otus/if_otus.c
  user/alc/PQ_LAUNDRY/sys/dev/otus/if_otusreg.h
  user/alc/PQ_LAUNDRY/sys/dev/ral/if_ral_pci.c
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2560.c
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2560var.h
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2661.c
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2661var.h
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2860.c
  user/alc/PQ_LAUNDRY/sys/dev/ral/rt2860var.h
  user/alc/PQ_LAUNDRY/sys/dev/urtwn/if_urtwn.c
  user/alc/PQ_LAUNDRY/sys/dev/urtwn/if_urtwnreg.h
  user/alc/PQ_LAUNDRY/sys/dev/urtwn/if_urtwnvar.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/input/ukbd.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/input/ums.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_rum.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_rumvar.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_run.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_runvar.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_ural.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_uralvar.h
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_zyd.c
  user/alc/PQ_LAUNDRY/sys/dev/usb/wlan/if_zydreg.h
  user/alc/PQ_LAUNDRY/sys/dev/wpi/if_wpi.c
  user/alc/PQ_LAUNDRY/sys/dev/wpi/if_wpivar.h
  user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c
  user/alc/PQ_LAUNDRY/sys/modules/Makefile
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_amrr.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_node.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_node.h
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_ratectl.h
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_ratectl_none.c
  user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_rssadapt.c
  user/alc/PQ_LAUNDRY/sys/netinet/if_ether.c
  user/alc/PQ_LAUNDRY/sys/netinet/in.c
  user/alc/PQ_LAUNDRY/sys/netinet/in_var.h
  user/alc/PQ_LAUNDRY/sys/netinet/udp_usrreq.c
  user/alc/PQ_LAUNDRY/sys/netinet6/nd6_nbr.c
  user/alc/PQ_LAUNDRY/sys/sys/errno.h
  user/alc/PQ_LAUNDRY/sys/sys/fbio.h
  user/alc/PQ_LAUNDRY/sys/sys/param.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_init.c
  user/alc/PQ_LAUNDRY/tests/sys/mqueue/Makefile
  user/alc/PQ_LAUNDRY/tests/sys/mqueue/mqtest3.c
  user/alc/PQ_LAUNDRY/tests/sys/mqueue/mqtest4.c
  user/alc/PQ_LAUNDRY/tools/build/mk/OptionalObsoleteFiles.inc
  user/alc/PQ_LAUNDRY/usr.bin/elfcopy/Makefile
  user/alc/PQ_LAUNDRY/usr.bin/kdump/kdump.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/apm.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/bsd.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/ebr.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/format.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/gpt.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/image.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/mbr.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/mkimg.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/mkimg.h
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/pc98.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/qcow.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/raw.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/scheme.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/vhd.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/vmdk.c
  user/alc/PQ_LAUNDRY/usr.bin/mkimg/vtoc8.c
  user/alc/PQ_LAUNDRY/usr.bin/patch/common.h
  user/alc/PQ_LAUNDRY/usr.sbin/arp/arp.4
  user/alc/PQ_LAUNDRY/usr.sbin/bhyve/dbgport.c
  user/alc/PQ_LAUNDRY/usr.sbin/rtsold/rtsol.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/gnu/lib/   (props changed)
  user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/   (props changed)

Modified: user/alc/PQ_LAUNDRY/ObsoleteFiles.inc
==============================================================================
--- user/alc/PQ_LAUNDRY/ObsoleteFiles.inc	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/ObsoleteFiles.inc	Mon Oct  3 19:52:06 2016	(r306655)
@@ -38,6 +38,9 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20161003: MK_ELFCOPY_AS_OBJCOPY option retired
+OLD_FILES+=usr/bin/elfcopy
+OLD_FILES+=usr/share/man/man1/elfcopy.1.gz
 # 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue
 OLD_FILES+=usr/tests/sys/kqueue/kqtest
 OLD_FILES+=usr/tests/sys/kqueue/kqueue_test

Modified: user/alc/PQ_LAUNDRY/UPDATING
==============================================================================
--- user/alc/PQ_LAUNDRY/UPDATING	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/UPDATING	Mon Oct  3 19:52:06 2016	(r306655)
@@ -31,6 +31,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20161003:
+	The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired.
+	ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy.
+
 20160924:
 	Relocatable object files with the extension of .So have been renamed
 	to use an extension of .pico instead.  The purpose of this change is

Modified: user/alc/PQ_LAUNDRY/bin/chio/chio.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/chio/chio.1	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/bin/chio/chio.1	Mon Oct  3 19:52:06 2016	(r306655)
@@ -32,7 +32,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 14, 1998
+.Dd October 2, 2016
 .Dt CHIO 1
 .Os
 .Sh NAME
@@ -61,10 +61,6 @@ rather than the default device
 .Pa /dev/ch0 .
 .El
 .Pp
-The default changer may be overridden by setting the environment variable
-.Ev CHANGER
-to the desired changer device.
-.Pp
 A medium changer apparatus is made up of
 .Em elements .
 There are five element types:
@@ -265,6 +261,12 @@ Element supports passing media (exportin
 .It INENAB
 Element supports receiving media (importing) from an outside human operator.
 .El
+.Sh ENVIRONMENT
+.Bl -tag -width CHANGER
+.It Ev CHANGER
+The default changer may be overridden by setting this environmental
+variable to the desired changer device.
+.El
 .Sh FILES
 .Bl -tag -width /dev/ch0 -compact
 .It Pa /dev/ch0

Modified: user/alc/PQ_LAUNDRY/bin/chmod/chmod.c
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/chmod/chmod.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/bin/chmod/chmod.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -91,12 +91,11 @@ main(int argc, char *argv[])
 			break;
 		case 'h':
 			/*
-			 * In System V (and probably POSIX.2) the -h option
-			 * causes chmod to change the mode of the symbolic
-			 * link.  4.4BSD's symbolic links didn't have modes,
-			 * so it was an undocumented noop.  In FreeBSD 3.0,
-			 * lchmod(2) is introduced and this option does real
-			 * work.
+			 * In System V the -h option causes chmod to change
+			 * the mode of the symbolic link. 4.4BSD's symbolic
+			 * links didn't have modes, so it was an undocumented
+			 * noop.  In FreeBSD 3.0, lchmod(2) is introduced and
+			 * this option does real work.
 			 */
 			hflag = 1;
 			break;

Modified: user/alc/PQ_LAUNDRY/bin/ed/ed.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/ed/ed.1	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/bin/ed/ed.1	Mon Oct  3 19:52:06 2016	(r306655)
@@ -1,5 +1,5 @@
 .\" $FreeBSD$
-.Dd July 3, 2004
+.Dd October 2, 2016
 .Dt ED 1
 .Os
 .Sh NAME
@@ -998,7 +998,7 @@ per line overhead: 4 ints
 An
 .Nm
 command appeared in
-Version 1 AT&T UNIX.
+.At v1 .
 .Sh BUGS
 The
 .Nm

Modified: user/alc/PQ_LAUNDRY/bin/kill/kill.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/kill/kill.1	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/bin/kill/kill.1	Mon Oct  3 19:52:06 2016	(r306655)
@@ -32,7 +32,7 @@
 .\"	@(#)kill.1	8.2 (Berkeley) 4/28/95
 .\" $FreeBSD$
 .\"
-.Dd April 28, 1995
+.Dd October 3, 2016
 .Dt KILL 1
 .Os
 .Sh NAME
@@ -147,7 +147,8 @@ compatible.
 A
 .Nm
 command appeared in
-.At v3 .
+.At v3
+in section 8 of the manual.
 .Sh BUGS
 A replacement for the command
 .Dq Li kill 0

Modified: user/alc/PQ_LAUNDRY/gnu/lib/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/gnu/lib/Makefile	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/gnu/lib/Makefile	Mon Oct  3 19:52:06 2016	(r306655)
@@ -2,7 +2,9 @@
 
 .include <src.opts.mk>
 
-SUBDIR= csu libgcc libdialog libregex
+SUBDIR= csu libgcc libregex
+
+SUBDIR.${MK_DIALOG}+=	libdialog
 
 .if ${MK_GCC} != "no"
 SUBDIR+= libgcov libgomp

Modified: user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/Makefile	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/Makefile	Mon Oct  3 19:52:06 2016	(r306655)
@@ -9,17 +9,12 @@ SUBDIR=	doc\
 	libbinutils \
 	as \
 	ld \
-	${_objcopy} \
-	objdump \
+	objdump
 
-.if ${MK_ELFCOPY_AS_OBJCOPY} == "no"
-_objcopy=	objcopy
-.endif
 
 SUBDIR_DEPEND_libbinutils=libbfd		# for bfdver.h
 SUBDIR_DEPEND_as=libbfd libiberty libopcodes
 SUBDIR_DEPEND_ld=libbfd libiberty
-SUBDIR_DEPEND_objcopy=libbfd libiberty libbinutils
 SUBDIR_DEPEND_objdump=libbfd libiberty libbinutils libopcodes
 
 .if !make(install)

Modified: user/alc/PQ_LAUNDRY/include/mqueue.h
==============================================================================
--- user/alc/PQ_LAUNDRY/include/mqueue.h	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/include/mqueue.h	Mon Oct  3 19:52:06 2016	(r306655)
@@ -50,7 +50,9 @@ ssize_t	mq_timedreceive(mqd_t, char *__r
 int	mq_timedsend(mqd_t, const char *, size_t, unsigned,
 		const struct timespec *);
 int	mq_unlink(const char *);
-int	__mq_oshandle(mqd_t mqd);
+#if __BSD_VISIBLE
+int	mq_getfd_np(mqd_t mqd);
+#endif /* __BSD_VISIBLE */
 
 __END_DECLS
 #endif

Modified: user/alc/PQ_LAUNDRY/include/stdio.h
==============================================================================
--- user/alc/PQ_LAUNDRY/include/stdio.h	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/include/stdio.h	Mon Oct  3 19:52:06 2016	(r306655)
@@ -356,10 +356,10 @@ ssize_t	 getdelim(char ** __restrict, si
 	    FILE * __restrict);
 FILE	*open_memstream(char **, size_t *);
 int	 renameat(int, const char *, int, const char *);
-int	 vdprintf(int, const char * __restrict, __va_list);
+int	 vdprintf(int, const char * __restrict, __va_list) __printflike(2, 0);
 /* _WITH_GETLINE to allow pre 11 sources to build on 11+ systems */
 ssize_t	 getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-int	 dprintf(int, const char * __restrict, ...);
+int	 dprintf(int, const char * __restrict, ...) __printflike(2, 3);
 #endif /* __POSIX_VISIBLE >= 200809 */
 
 /*

Modified: user/alc/PQ_LAUNDRY/include/stdlib.h
==============================================================================
--- user/alc/PQ_LAUNDRY/include/stdlib.h	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/include/stdlib.h	Mon Oct  3 19:52:06 2016	(r306655)
@@ -221,10 +221,6 @@ int	 putenv(char *);
 long	 random(void);
 unsigned short
 	*seed48(unsigned short[3]);
-#ifndef _SETKEY_DECLARED
-int	 setkey(const char *);
-#define	_SETKEY_DECLARED
-#endif
 char	*setstate(/* const */ char *);
 void	 srand48(long);
 void	 srandom(unsigned int);

Modified: user/alc/PQ_LAUNDRY/include/time.h
==============================================================================
--- user/alc/PQ_LAUNDRY/include/time.h	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/include/time.h	Mon Oct  3 19:52:06 2016	(r306655)
@@ -194,6 +194,7 @@ char *timezone(int, int);	/* XXX XSI con
 void tzsetwall(void);
 time_t timelocal(struct tm * const);
 time_t timegm(struct tm * const);
+int timer_oshandle_np(timer_t timerid);
 #endif /* __BSD_VISIBLE */
 
 #if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)

Modified: user/alc/PQ_LAUNDRY/include/unistd.h
==============================================================================
--- user/alc/PQ_LAUNDRY/include/unistd.h	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/include/unistd.h	Mon Oct  3 19:52:06 2016	(r306655)
@@ -449,8 +449,6 @@ int	 symlink(const char * __restrict, co
 /* X/Open System Interfaces */
 #if __XSI_VISIBLE
 char	*crypt(const char *, const char *);
-/* char	*ctermid(char *); */		/* XXX ??? */
-int	 encrypt(char *, int);
 long	 gethostid(void);
 int	 lockf(int, int, off_t);
 int	 nice(int);
@@ -498,8 +496,6 @@ const char *
 	 crypt_get_format(void);
 char	*crypt_r(const char *, const char *, struct crypt_data *);
 int	 crypt_set_format(const char *);
-int	 des_cipher(const char *, char *, long, int);
-int	 des_setkey(const char *key);
 int	 dup3(int, int, int);
 int	 eaccess(const char *, int);
 void	 endusershell(void);
@@ -567,10 +563,6 @@ int	 setdomainname(const char *, int);
 int	 setgroups(int, const gid_t *);
 void	 sethostid(long);
 int	 sethostname(const char *, int);
-#ifndef _SETKEY_DECLARED
-int	 setkey(const char *);
-#define	_SETKEY_DECLARED
-#endif
 int	 setlogin(const char *);
 int	 setloginclass(const char *);
 void	*setmode(const char *);

Modified: user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map	Mon Oct  3 19:52:06 2016	(r306655)
@@ -73,10 +73,6 @@ FBSD_1.0 {
 	clock;
 	closedir;
 	confstr;
-	encrypt;
-	des_setkey;
-	des_cipher;
-	setkey;
 	ctermid;
 	ctermid_r;
 	daemon;

Modified: user/alc/PQ_LAUNDRY/lib/libc/gen/arc4random.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/arc4random.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/arc4random.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -137,35 +137,17 @@ arc4_sysctl(u_char *buf, size_t size)
 static void
 arc4_stir(void)
 {
-	int done, fd, i;
-	struct {
-		struct timeval	tv;
-		pid_t		pid;
-		u_char	 	rnd[KEYSIZE];
-	} rdat;
+	u_char rdat[KEYSIZE];
+	int i;
 
 	if (!rs_initialized) {
 		arc4_init();
 		rs_initialized = 1;
 	}
-	done = 0;
-	if (arc4_sysctl((u_char *)&rdat, KEYSIZE) == KEYSIZE)
-		done = 1;
-	if (!done) {
-		fd = _open(RANDOMDEV, O_RDONLY | O_CLOEXEC, 0);
-		if (fd >= 0) {
-			if (_read(fd, &rdat, KEYSIZE) == KEYSIZE)
-				done = 1;
-			(void)_close(fd);
-		}
-	}
-	if (!done) {
-		(void)gettimeofday(&rdat.tv, NULL);
-		rdat.pid = getpid();
-		/* We'll just take whatever was on the stack too... */
-	}
+	if (arc4_sysctl(rdat, KEYSIZE) != KEYSIZE)
+		abort(); /* Random sysctl cannot fail. */
 
-	arc4_addrandom((u_char *)&rdat, KEYSIZE);
+	arc4_addrandom(rdat, KEYSIZE);
 
 	/*
 	 * Discard early keystream, as per recommendations in:

Modified: user/alc/PQ_LAUNDRY/lib/libc/gen/crypt.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/crypt.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/crypt.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -48,47 +48,41 @@ __FBSDID("$FreeBSD$");
  * encryption, make sure you've got libcrypt.a around.
  */
 
-__warn_references(des_setkey,
-	"WARNING!  des_setkey(3) not present in the system!");
-
 /* ARGSUSED */
 int
-des_setkey(const char *key __unused)
+__freebsd11_des_setkey(const char *key __unused)
 {
 	fprintf(stderr, "WARNING!  des_setkey(3) not present in the system!\n");
 	return (0);
 }
 
-__warn_references(des_cipher,
-	"WARNING!  des_cipher(3) not present in the system!");
-
 /* ARGSUSED */
 int
-des_cipher(const char *in, char *out, long salt __unused, int num_iter __unused)
+__freebsd11_des_cipher(const char *in, char *out, long salt __unused,
+    int num_iter __unused)
 {
 	fprintf(stderr, "WARNING!  des_cipher(3) not present in the system!\n");
 	bcopy(in, out, 8);
 	return (0);
 }
 
-__warn_references(setkey,
-	"WARNING!  setkey(3) not present in the system!");
-
 /* ARGSUSED */
 int
-setkey(const char *key __unused)
+__freebsd11_setkey(const char *key __unused)
 {
 	fprintf(stderr, "WARNING!  setkey(3) not present in the system!\n");
 	return (0);
 }
 
-__warn_references(encrypt,
-	"WARNING!  encrypt(3) not present in the system!");
-
 /* ARGSUSED */
 int
-encrypt(char *block __unused, int flag __unused)
+__freebsd11_encrypt(char *block __unused, int flag __unused)
 {
 	fprintf(stderr, "WARNING!  encrypt(3) not present in the system!\n");
 	return (0);
 }
+
+__sym_compat(des_setkey, __freebsd11_des_setkey, FBSD_1.0);
+__sym_compat(des_cipher, __freebsd11_des_cipher, FBSD_1.0);
+__sym_compat(setkey, __freebsd11_setkey, FBSD_1.0);
+__sym_compat(encrypt, __freebsd11_encrypt, FBSD_1.0);

Modified: user/alc/PQ_LAUNDRY/lib/libjail/jail.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libjail/jail.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/libjail/jail.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -223,11 +223,16 @@ jailparam_all(struct jailparam **jpp)
 		/* Get the next parameter. */
 		mlen2 = sizeof(mib2);
 		if (sysctl(mib1, mlen1 + 2, mib2, &mlen2, NULL, 0) < 0) {
+			if (errno == ENOENT) {
+				/* No more entries. */
+				break;
+			}
 			snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 			    "sysctl(0.2): %s", strerror(errno));
 			goto error;
 		}
-		if (mib2[0] != mib1[2] || mib2[1] != mib1[3] ||
+		if (mib2[0] != mib1[2] ||
+		    mib2[1] != mib1[3] ||
 		    mib2[2] != mib1[4])
 			break;
 		/* Convert it to an ascii name. */

Modified: user/alc/PQ_LAUNDRY/lib/librt/Symbol.map
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/librt/Symbol.map	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/librt/Symbol.map	Mon Oct  3 19:52:06 2016	(r306655)
@@ -25,6 +25,11 @@ FBSD_1.0 {
 	timer_getoverrun;
 };
 
+FBSD_1.5 {
+	mq_getfd_np;
+	timer_oshandle_np;
+};
+
 FBSDprivate_1.0 {
 	_aio_read;
 	_aio_write;

Modified: user/alc/PQ_LAUNDRY/lib/librt/mq.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/librt/mq.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/librt/mq.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -272,8 +272,9 @@ __mq_unlink(const char *path)
 	return __sys_kmq_unlink(path);
 }
 
+#pragma weak mq_getfd_np
 int
-__mq_oshandle(mqd_t mqd)
+mq_getfd_np(mqd_t mqd)
 {
 
 	return (mqd->oshandle);

Modified: user/alc/PQ_LAUNDRY/lib/librt/timer.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/librt/timer.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/librt/timer.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -175,8 +175,9 @@ __timer_settime(timer_t timerid, int fla
 		flags, value, ovalue);
 }
 
+#pragma weak timer_oshandle_np
 int
-__timer_oshandle(timer_t timerid)
+timer_oshandle_np(timer_t timerid)
 {
 
 	return (timerid->oshandle);

Modified: user/alc/PQ_LAUNDRY/lib/libstand/cd9660.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libstand/cd9660.c	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/lib/libstand/cd9660.c	Mon Oct  3 19:52:06 2016	(r306655)
@@ -353,15 +353,13 @@ cd9660_open(const char *path, struct ope
 
 			dp = (struct iso_directory_record *)
 				((char *) dp + isonum_711(dp->length));
-
-			/* if the new block is zero length, its padding */
+			/* If the new block has zero length, it is padding. */
 			if (isonum_711(dp->length) == 0) {
-				/* skip to next block, if any */
+				/* Skip to next block, if any. */
 				off = boff * ISO_DEFAULT_BLOCK_SIZE;
 				continue;
-			} else {
-				off += isonum_711(dp->length);
 			}
+			off += isonum_711(dp->length);
 		}
 		if (off >= dsize) {
 			rc = ENOENT;

Modified: user/alc/PQ_LAUNDRY/sbin/ccdconfig/ccdconfig.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/ccdconfig/ccdconfig.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/ccdconfig/ccdconfig.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 1, 2013
+.Dd October 3, 2016
 .Dt CCDCONFIG 8
 .Os
 .Sh NAME
@@ -159,7 +159,7 @@ It reads as a two disk stripe of da4 and
 to a two disk stripe of da6 and da7.
 The last example is a simple
 mirror.
-The 2nd slice of /dev/da8 is mirrored with the 3rd slice of /dev/da9
+The second slice of /dev/da8 is mirrored with the third slice of /dev/da9
 and assigned to ccd0.
 .Bd -literal
 # ccdconfig ccd0 64 none /dev/da0s1 /dev/da1s1 /dev/da2s1 /dev/da3s1
@@ -246,7 +246,7 @@ and
 The
 .Nm
 utility first appeared in
-.Nx 1.0a .
+.Nx 1.1 .
 .Sh BUGS
 The initial disklabel returned by
 .Xr ccd 4

Modified: user/alc/PQ_LAUNDRY/sbin/dmesg/dmesg.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/dmesg/dmesg.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/dmesg/dmesg.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -28,7 +28,7 @@
 .\"     @(#)dmesg.8	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd May 9, 2013
+.Dd October 3, 2016
 .Dt DMESG 8
 .Os
 .Sh NAME
@@ -84,4 +84,4 @@ at startup time
 The
 .Nm
 utility appeared in
-.Bx 4.0 .
+.Bx 3 .

Modified: user/alc/PQ_LAUNDRY/sbin/dump/dump.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/dump/dump.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/dump/dump.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -29,7 +29,7 @@
 .\"     @(#)dump.8	8.3 (Berkeley) 5/1/95
 .\" $FreeBSD$
 .\"
-.Dd February 24, 2006
+.Dd October 3, 2016
 .Dt DUMP 8
 .Os
 .Sh NAME
@@ -514,7 +514,7 @@ Many, and verbose.
 A
 .Nm
 utility appeared in
-.At v6 .
+.At v4 .
 .Sh BUGS
 Fewer than 32 read errors on the file system are ignored, though all
 errors will generate a warning message.

Modified: user/alc/PQ_LAUNDRY/sbin/dumpon/dumpon.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/dumpon/dumpon.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/dumpon/dumpon.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -28,7 +28,7 @@
 .\"     From: @(#)swapon.8	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd October 8, 2014
+.Dd October 3, 2016
 .Dt DUMPON 8
 .Os
 .Sh NAME
@@ -154,7 +154,7 @@ boot-time system configuration
 The
 .Nm
 utility appeared in
-.Fx 2.1 .
+.Fx 2.0.5 .
 .Sh BUGS
 Because the file system layer is already dead by the time a crash dump
 is taken, it is not possible to send crash dumps directly to a file.

Modified: user/alc/PQ_LAUNDRY/sbin/etherswitchcfg/etherswitchcfg.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/etherswitchcfg/etherswitchcfg.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/etherswitchcfg/etherswitchcfg.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 20, 2013
+.Dd October 2, 2016
 .Dt ETHERSWITCHCFG 8
 .Os
 .Sh NAME
@@ -116,12 +116,13 @@ for details on
 and
 .Cm mediaopt .
 .It Cm led Ar number style
-Sets the display style for a given LED.  Available styles are: 
-.Cm default 
+Sets the display style for a given LED.
+Available styles are:
+.Cm default
 (usually flash on activity),
-.Cm on , 
-.Cm off , 
-and 
+.Cm on ,
+.Cm off ,
+and
 .Cm blink .
 Not all switches will support all styles.
 .El

Modified: user/alc/PQ_LAUNDRY/sbin/fsck_msdosfs/fsck_msdosfs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fsck_msdosfs/fsck_msdosfs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/fsck_msdosfs/fsck_msdosfs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 4, 2009
+.Dd October 3, 2016
 .Dt FSCK_MSDOSFS 8
 .Os
 .Sh NAME
@@ -114,7 +114,10 @@ as the answer to all operator questions.
 .Sh HISTORY
 The
 .Nm
-utility first appeared in
+utility appeared in
+.Nx 1.2 .
+.Nm
+first appeared in
 .Fx 4.4 .
 .Sh BUGS
 The

Modified: user/alc/PQ_LAUNDRY/sbin/fsdb/fsdb.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fsdb/fsdb.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/fsdb/fsdb.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 24, 2006
+.Dd October 3, 2016
 .Dt FSDB 8
 .Os
 .Sh NAME
@@ -239,19 +239,20 @@ Exit the program.
 .Sh HISTORY
 The
 .Nm
-utility uses the source code for
+utility appeared in
+.Bx 4.3 Tahoe .
+It used the source code for
 .Xr fsck 8
 to implement most of the file system manipulation code.
 The remainder of
 .Nm
-first appeared in
-.Nx ,
+appeared in
+.Nx 1.1
 written by
 .An John T. Kohl .
-.Pp
-.An Peter Wemm
-ported it to
-.Fx .
+It first appeared in
+.Fx 2.1.5 
+ported by Peter Wemm.
 .Sh BUGS
 Manipulation of ``short'' symlinks has no effect.
 In particular, one should not

Modified: user/alc/PQ_LAUNDRY/sbin/gbde/gbde.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/gbde/gbde.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/gbde/gbde.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -31,7 +31,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 27, 2014
+.Dd October 3, 2016
 .Dt GBDE 8
 .Os
 .Sh NAME
@@ -263,6 +263,9 @@ under DARPA/SPAWAR contract N66001-01-C-
 .Pq Dq CBOSS ,
 as part of the
 DARPA CHATS research program.
+.Nm
+first appeared in
+.Fx 5.0 .
 .Sh AUTHORS
 .An Poul-Henning Kamp Aq Mt phk@FreeBSD.org
 .Sh BUGS

Modified: user/alc/PQ_LAUNDRY/sbin/init/init.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/init/init.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/init/init.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -31,7 +31,7 @@
 .\"     @(#)init.8	8.3 (Berkeley) 4/18/94
 .\" $FreeBSD$
 .\"
-.Dd July 24, 2015
+.Dd October 3, 2016
 .Dt INIT 8
 .Os
 .Sh NAME
@@ -345,7 +345,7 @@ a persistent device error condition.
 An
 .Nm
 utility appeared in
-.At v6 .
+.At v1 .
 .Sh CAVEATS
 Systems without
 .Xr sysctl 8

Modified: user/alc/PQ_LAUNDRY/sbin/mknod/mknod.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mknod/mknod.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mknod/mknod.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -28,7 +28,7 @@
 .\"     @(#)mknod.8	8.2 (Berkeley) 12/11/93
 .\" $FreeBSD$
 .\"
-.Dd January 31, 2010
+.Dd October 3, 2016
 .Dt MKNOD 8
 .Os
 .Sh NAME
@@ -149,4 +149,4 @@ nodes cannot be used to access devices.
 A
 .Nm
 utility appeared in
-.At v6 .
+.At v4 .

Modified: user/alc/PQ_LAUNDRY/sbin/mksnap_ffs/mksnap_ffs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mksnap_ffs/mksnap_ffs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mksnap_ffs/mksnap_ffs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -34,7 +34,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 14, 2011
+.Dd October 3, 2016
 .Dt MKSNAP_FFS 8
 .Os
 .Sh NAME
@@ -75,7 +75,7 @@ mount -o ro /dev/md0 /mnt/
 The
 .Nm
 utility first appeared in
-.Fx 5.0 .
+.Fx 5.1 .
 .Sh CAVEATS
 The disk full situation is not handled gracefully and may
 lead to a system panic when no free blocks are found.

Modified: user/alc/PQ_LAUNDRY/sbin/mount_fusefs/mount_fusefs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mount_fusefs/mount_fusefs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mount_fusefs/mount_fusefs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 11, 2012
+.Dd October 3, 2016
 .Dt MOUNT_FUSEFS 8
 .Os
 .Sh NAME
@@ -52,7 +52,8 @@
 .Sh DESCRIPTION
 Basic usage is to start a fuse daemon on the given
 .Ar special
-file.  In practice, the daemon is assigned a
+file.
+In practice, the daemon is assigned a
 .Ar special
 file automatically, which can then be indentified via
 .Xr fstat 1 .
@@ -68,7 +69,8 @@ is appended to the list of arguments,
 .Nm
 will call the
 .Ar fuse_daemon
-via that command.  In that way the
+via that command.
+In that way the
 .Ar fuse_daemon
 will be instructed to attach itself to
 .Ar special .
@@ -101,7 +103,8 @@ The options are as follows:
 .It Fl A , Ic --reject-allow_other
 Prohibit the
 .Cm allow_other
-mount flag. Intended for use in scripts and the
+mount flag.
+Intended for use in scripts and the
 .Xr sudoers 5
 file.
 .It Fl S , Ic --safe
@@ -143,8 +146,8 @@ Only root can use this option
 Limit size of read requests to
 .Ar n
 .It Cm private
-Refuse shared mounting of the daemon. This is the default behaviour,
-to allow sharing, expicitly use
+Refuse shared mounting of the daemon.
+This is the default behaviour, to allow sharing, expicitly use
 .Fl o Cm noprivate
 .It Cm neglect_shares
 Do not refuse unmounting if there are secondary mounts
@@ -154,11 +157,13 @@ Prefix absolute symlinks with the mountp
 .El
 .Pp
 Besides the above mount options, there is a set of pseudo-mount options which
-are supported by the Fuse library. One can list these by passing
+are supported by the Fuse library.
+One can list these by passing
 .Fl h
-to a Fuse daemon. Most of these options have effect only on the behaviour of
-the daemon (that is, their scope is limited to userspace). However,
-there are some which do require in-kernel support.
+to a Fuse daemon.
+Most of these options only have affect on the behavior of the daemon (that is,
+their scope is limited to userspace).
+However, there are some which do require in-kernel support.
 Currently the options supported by the kernel are:
 .Bl -tag -width indent
 .It Cm direct_io
@@ -189,7 +194,7 @@ only if the filesystem daemon has the sa
 real gid) as the user.
 .Pp
 This is applied for Fuse mounts by default and only root can mount without
-the strict access policy (ie. the
+the strict access policy (i.e. the
 .Cm allow_other
 mount option).
 .Pp
@@ -201,7 +206,7 @@ Users might opt to willingly relax stric
 are concerned) by doing their own secondary mount (See
 .Sx SHARED MOUNTS ) .
 .Sh SHARED MOUNTS
-A Fuse daemon can be shared (ie. mounted multiple times).
+A Fuse daemon can be shared (i.e. mounted multiple times).
 When doing the first (primary) mount, the spawner and the mounter of the daemon
 must have the same uid, or the mounter should be the superuser.
 .Pp
@@ -212,9 +217,9 @@ The behaviour of a secondary mount is an
 links: they redirect all filesystem operations to the primary mount.
 .Pp
 Doing a secondary mount is like signing an agreement: by this action, the mounter
-agrees that the Fuse daemon can trace her I/O activities. From then on
-she is not banned from using the filesystem (either via her own mount or
-via the primary mount), regardless whether
+agrees that the Fuse daemon can trace her I/O activities.
+From then on she is not banned from using the filesystem
+(either via her own mount or via the primary mount), regardless whether
 .Cm allow_other
 is used or not.
 .Pp
@@ -226,14 +231,15 @@ mount; e.g.
 System administrators might want to use a custom mount policy (ie., one going
 beyond the
 .Va vfs.usermount
-sysctl). The primary tool for such purposes is
+sysctl).
+The primary tool for such purposes is
 .Xr sudo 8 .
 However, given that
 .Nm
 is capable of invoking an arbitrary program, one must be careful when doing this.
 .Nm
-is designed in a way such that it makes that easy. For this purpose,
-there are options which disable certain risky features (ie.
+is designed in a way such that it makes that easy.
+For this purpose, there are options which disable certain risky features (i.e.
 .Fl S
 and
 .Fl A ) ,
@@ -269,8 +275,8 @@ If set,
 .Nm
 will ignore uknown mount options.
 .It Ev MOUNT_FUSEFS_CALL_BY_LIB
-Adjust behaviour to the needs of the FUSE library. Currently it effects
-help output.
+Adjust behavior to the needs of the FUSE library.
+Currently it effects help output.
 .El
 .Pp
 Although the following variables do not have any effect on
@@ -278,11 +284,13 @@ Although the following variables do not 
 itself, they affect the behaviour of fuse daemons:
 .Bl -tag -width ".Ev FUSE_DEV_NAME"
 .It Ev FUSE_DEV_NAME
-Device to attach. If not set, the multiplexer path
+Device to attach.
+If not set, the multiplexer path
 .Ar /dev/fuse
 is used.
 .It Ev FUSE_DEV_FD
-File desciptor of an opened Fuse device to use. Overrides
+File desciptor of an opened Fuse device to use.
+Overrides
 .Ev FUSE_DEV_NAME .
 .It Ev FUSE_NO_MOUNT
 If set, the library will not attempt to mount the filesystem, even
@@ -293,7 +301,8 @@ if a mountpoint argument is supplied.
 .It Pa /dev/fuse
 Fuse device with which the kernel and Fuse daemons can communicate.
 .It Pa /dev/fuse
-The multiplexer path. An
+The multiplexer path.
+An
 .Xr open 2
 performed on it automatically is passed to a free Fuse device by the kernel
 (which might be created just for this puprose).
@@ -330,12 +339,19 @@ does not call any external utility and a
 .Xr umount 8
 .Sh HISTORY
 .Nm
-appears as the part of the FreeBSD implementation of the Fuse userspace filesystem
-framework (see http://fuse.sourceforge.net). This user interface is FreeBSD specific.
+appeared in
+.Fx 10.0
+as the part of the
+.Fx
+implementation of the Fuse userspace filesystem
+framework (see http://fuse.sourceforge.net).
 .Sh CAVEATS
-Secondary mounts should be unmounted via their device name. If an attempt is
-made to be unmount them via their filesystem root path, the unmount request
-will be forwarded to the primary mount path.
+This user interface is
+.Fx
+specific.
+Secondary mounts should be unmounted via their device name.
+If an attempt is made to unmount them via their filesystem root path,
+the unmount request will be forwarded to the primary mount path.
 In general, unmounting by device name is less error-prone than by mount path
 (although the latter will also work under normal circumstances).
 .Pp

Modified: user/alc/PQ_LAUNDRY/sbin/mount_msdosfs/mount_msdosfs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mount_msdosfs/mount_msdosfs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mount_msdosfs/mount_msdosfs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -30,7 +30,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 1, 2013
+.Dd October 3, 2016
 .Dt MOUNT_MSDOSFS 8
 .Os
 .Sh NAME
@@ -193,21 +193,32 @@ To mount a Japanese MS-DOS file system l
 List of Localized MS Operating Systems:
 .Pa http://www.microsoft.com/globaldev/reference/oslocversion.mspx .
 .Sh HISTORY
-The
-.Nm
-utility first appeared in
+The predecessor to
+.Nm mount_msdos
+utility named
+.Nm mount_pcfs
+appeared in
+.Bx 386 .
+It was rewritten in
+.Nx 1.0
+and first appeared in
 .Fx 2.0 .
-Its predecessor, the
+.Nm mount_msdos
+was renamed to the more aptly-named
+.Nm
+in
+.Fx 5.0.
+The character code conversion routine was added in 2003.
+.Sh AUTHORS
+Initial implementation as
 .Nm mount_pcfs
-utility appeared in
-.Fx 1.0 ,
-and was abandoned in favor
-of the more aptly-named
-.Nm .
-.Pp
+was written by
+.An -nosplit
+.An Paul Popelka Aq Mt paulp@uts.amdahl.com .
+It was rewritten by
+.An Christopher G. Demetriou Aq Mt cgd@NetBSD.org .
 The character code conversion routine was added by
-.An Ryuichiro Imura Aq Mt imura@ryu16.org
-in 2003.
+.An Ryuichiro Imura Aq Mt imura@ryu16.org .
 .Sh CAVEATS
 The use of the
 .Fl 9

Modified: user/alc/PQ_LAUNDRY/sbin/mount_nullfs/mount_nullfs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mount_nullfs/mount_nullfs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mount_nullfs/mount_nullfs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -33,7 +33,7 @@
 .\"     @(#)mount_null.8	8.6 (Berkeley) 5/1/95
 .\" $FreeBSD$
 .\"
-.Dd May 1, 1995
+.Dd October 3, 2016
 .Dt MOUNT_NULLFS 8
 .Os
 .Sh NAME
@@ -240,6 +240,10 @@ UCLA Technical Report CSD-910056,
 .Em "Stackable Layers: an Architecture for File System Development" .
 .Sh HISTORY
 The
-.Nm
+.Nm mount_null
 utility first appeared in
 .Bx 4.4 .
+It was renamed to
+.Nm
+in
+.Fx 5.0 .

Modified: user/alc/PQ_LAUNDRY/sbin/mount_unionfs/mount_unionfs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/mount_unionfs/mount_unionfs.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/mount_unionfs/mount_unionfs.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -31,7 +31,7 @@
 .\"	@(#)mount_union.8	8.6 (Berkeley) 3/27/94
 .\" $FreeBSD$
 .\"
-.Dd November 30, 2006
+.Dd October 3, 2016
 .Dt MOUNT_UNIONFS 8
 .Os
 .Sh NAME
@@ -328,9 +328,13 @@ accessible via
 .Xr mount_nullfs 8
 .Sh HISTORY
 The
-.Nm
+.Nm mount_null
 utility first appeared in
 .Bx 4.4 .
+It was renamed to
+.Nm
+in
+.Fx 5.0 .
 .Pp
 The
 .Fl r

Modified: user/alc/PQ_LAUNDRY/sbin/pfctl/pfctl.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/pfctl/pfctl.8	Mon Oct  3 19:48:56 2016	(r306654)
+++ user/alc/PQ_LAUNDRY/sbin/pfctl/pfctl.8	Mon Oct  3 19:52:06 2016	(r306655)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 21, 2011
+.Dd October 3, 2016
 .Dt PFCTL 8
 .Os
 .Sh NAME
@@ -390,7 +390,7 @@ Note that the
 optimization done automatically by the kernel
 will skip evaluation of rules where possible.
 Packets passed statefully are counted in the rule that created the state
-(even though the rule isn't evaluated more than once for the entire
+(even though the rule is not evaluated more than once for the entire
 connection).
 .It Fl s Cm Anchors
 Show the currently loaded anchors directly attached to the main ruleset.
@@ -593,7 +593,7 @@ counters are incremented instead of the
 .Dq Pass
 counters when a
 .Dq stateful
-packet is passed but doesn't match the table anymore.

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-user@freebsd.org  Wed Oct  5 17:26:34 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A4FBFAF6BF7
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Wed,  5 Oct 2016 17:26:34 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 6E229DE0;
 Wed,  5 Oct 2016 17:26:34 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u95HQX0Q024376;
 Wed, 5 Oct 2016 17:26:33 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u95HQWWL024367;
 Wed, 5 Oct 2016 17:26:32 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610051726.u95HQWWL024367@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Wed, 5 Oct 2016 17:26:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306711 - in user/alc/PQ_LAUNDRY:
 contrib/blacklist/libexec contrib/byacc contrib/byacc/package
 contrib/byacc/package/debian contrib/byacc/package/pkgsrc contrib/byacc/test
 contrib/byac...
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Oct 2016 17:26:34 -0000

Author: alc
Date: Wed Oct  5 17:26:32 2016
New Revision: 306711
URL: https://svnweb.freebsd.org/changeset/base/306711

Log:
  MFH r306655-306707
  
  Note: Due to differences in vm_pageout_scan() between HEAD and the
  PQ_LAUNDRY branch, this merge required manual conflict resolution.

Added:
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c
     - copied unchanged from r306707, head/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.mtree.bz2.uu
     - copied unchanged from r306707, head/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.mtree.bz2.uu
  user/alc/PQ_LAUNDRY/lib/libcapsicum/
     - copied from r306707, head/lib/libcapsicum/
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslhelp.c
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/compiler/aslhelp.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslhelpers.y
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/compiler/aslhelpers.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslkeywords.y
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/compiler/aslkeywords.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslprimaries.y
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/compiler/aslprimaries.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/platform/acgccex.h
     - copied unchanged from r306707, head/sys/contrib/dev/acpica/include/platform/acgccex.h
  user/alc/PQ_LAUNDRY/sys/mips/atheros/ar531x/
     - copied from r306707, head/sys/mips/atheros/ar531x/
Deleted:
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utprint.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/os_specific/service_layers/oslibcfs.c
Modified:
  user/alc/PQ_LAUNDRY/contrib/blacklist/libexec/blacklistd-helper
  user/alc/PQ_LAUNDRY/contrib/byacc/CHANGES
  user/alc/PQ_LAUNDRY/contrib/byacc/MANIFEST
  user/alc/PQ_LAUNDRY/contrib/byacc/VERSION
  user/alc/PQ_LAUNDRY/contrib/byacc/aclocal.m4
  user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.c
  user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.skel
  user/alc/PQ_LAUNDRY/contrib/byacc/configure
  user/alc/PQ_LAUNDRY/contrib/byacc/defs.h
  user/alc/PQ_LAUNDRY/contrib/byacc/error.c
  user/alc/PQ_LAUNDRY/contrib/byacc/lalr.c
  user/alc/PQ_LAUNDRY/contrib/byacc/lr0.c
  user/alc/PQ_LAUNDRY/contrib/byacc/mkpar.c
  user/alc/PQ_LAUNDRY/contrib/byacc/output.c
  user/alc/PQ_LAUNDRY/contrib/byacc/package/byacc.spec
  user/alc/PQ_LAUNDRY/contrib/byacc/package/debian/changelog
  user/alc/PQ_LAUNDRY/contrib/byacc/package/mingw-byacc.spec
  user/alc/PQ_LAUNDRY/contrib/byacc/package/pkgsrc/Makefile
  user/alc/PQ_LAUNDRY/contrib/byacc/reader.c
  user/alc/PQ_LAUNDRY/contrib/byacc/skel2c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_calc1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_demo.error
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_demo.output
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_demo.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_destroy1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_destroy2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/btyacc_destroy3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/calc1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/calc2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/calc3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/code_calc.code.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/code_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/code_calc.tab.h
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/code_error.code.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/empty.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit3.output
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit4.output
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit4.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_inherit5.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax10.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax11.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax12.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax13.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax14.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax15.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax16.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax17.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax18.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax19.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax20.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax21.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax22.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax23.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax24.error
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax24.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax25.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax26.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax27.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax4.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax5.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax6.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax7.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax7a.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax7b.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax8.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax8a.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/err_syntax9.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/error.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/grammar.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/inherit0.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/inherit1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/inherit2.output
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/inherit2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/ok_syntax1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/pure_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/pure_error.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc2-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc3-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc4-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/quote_calc4.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/rename_debug.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/btyacc/varsyntax_calc1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/code_calc.y
  user/alc/PQ_LAUNDRY/contrib/byacc/test/err_inherit4.y
  user/alc/PQ_LAUNDRY/contrib/byacc/test/run_make.sh
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/calc1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/calc2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/calc3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/code_calc.code.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/code_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/code_calc.tab.h
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/code_error.code.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/empty.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax10.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax11.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax12.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax18.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax20.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/err_syntax24.error
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/error.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/grammar.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/ok_syntax1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/pure_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/pure_error.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc2-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc2.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc3-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc3.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc4-s.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/quote_calc4.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/rename_debug.c
  user/alc/PQ_LAUNDRY/contrib/byacc/test/yacc/varsyntax_calc1.tab.c
  user/alc/PQ_LAUNDRY/contrib/byacc/verbose.c
  user/alc/PQ_LAUNDRY/contrib/byacc/yaccpar.c
  user/alc/PQ_LAUNDRY/contrib/byacc/yaccpar.skel
  user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/main.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/test.h
  user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/main.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/test.h
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/main.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_set_format.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/subst.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/main.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test.h
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_H_upper.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_L_upper.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_U_upper.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_n.c
  user/alc/PQ_LAUNDRY/contrib/libarchive/tar/write.c
  user/alc/PQ_LAUNDRY/etc/periodic/security/520.pfdenied
  user/alc/PQ_LAUNDRY/lib/Makefile
  user/alc/PQ_LAUNDRY/lib/libarchive/tests/Makefile
  user/alc/PQ_LAUNDRY/lib/libcasper/libcasper/libcasper.3
  user/alc/PQ_LAUNDRY/sbin/pfctl/parse.y
  user/alc/PQ_LAUNDRY/sbin/pfctl/pfctl_parser.c
  user/alc/PQ_LAUNDRY/share/man/man5/pf.conf.5
  user/alc/PQ_LAUNDRY/sys/amd64/amd64/mp_machdep.c
  user/alc/PQ_LAUNDRY/sys/amd64/include/pcpu.h
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/std.allwinner
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/std.allwinner_up
  user/alc/PQ_LAUNDRY/sys/arm/altera/socfpga/std.socfpga
  user/alc/PQ_LAUNDRY/sys/arm/amlogic/aml8726/std.aml8726
  user/alc/PQ_LAUNDRY/sys/arm/annapurna/alpine/std.alpine
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpuinfo.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/elf_trampoline.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/generic_timer.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/machdep.c
  user/alc/PQ_LAUNDRY/sys/arm/broadcom/bcm2835/std.bcm2836
  user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC
  user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/std.imx51
  user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/std.imx53
  user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/std.imx6
  user/alc/PQ_LAUNDRY/sys/arm/freescale/vybrid/std.vybrid
  user/alc/PQ_LAUNDRY/sys/arm/include/atomic-v6.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpuconf.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpuinfo.h
  user/alc/PQ_LAUNDRY/sys/arm/include/intr.h
  user/alc/PQ_LAUNDRY/sys/arm/mv/armada38x/std.armada38x
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra124/std.tegra124
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra_pcie.c
  user/alc/PQ_LAUNDRY/sys/arm/qemu/std.virt
  user/alc/PQ_LAUNDRY/sys/arm/rockchip/std.rk30xx
  user/alc/PQ_LAUNDRY/sys/arm/samsung/exynos/std.exynos5250
  user/alc/PQ_LAUNDRY/sys/arm/samsung/exynos/std.exynos5420
  user/alc/PQ_LAUNDRY/sys/arm/ti/am335x/std.am335x
  user/alc/PQ_LAUNDRY/sys/arm/ti/omap4/std.omap4
  user/alc/PQ_LAUNDRY/sys/arm/ti/std.ti
  user/alc/PQ_LAUNDRY/sys/arm/xilinx/std.zynq7
  user/alc/PQ_LAUNDRY/sys/arm64/acpica/OsdEnvironment.c
  user/alc/PQ_LAUNDRY/sys/boot/geli/geliboot.c
  user/alc/PQ_LAUNDRY/sys/cam/scsi/scsi_all.c
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  user/alc/PQ_LAUNDRY/sys/conf/Makefile.arm
  user/alc/PQ_LAUNDRY/sys/conf/files
  user/alc/PQ_LAUNDRY/sys/conf/files.arm
  user/alc/PQ_LAUNDRY/sys/conf/options.arm
  user/alc/PQ_LAUNDRY/sys/conf/options.mips
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/acpica_prep.sh
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/changes.txt
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/acfileio.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/acgetline.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/adisasm.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/ahtable.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/cmfsize.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/dmtable.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/dmtables.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/dmtbdump.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/dmtbinfo.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/common/getopt.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslcompiler.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslcstyle.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslmain.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslmaputils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/asloperands.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslopt.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/asloptions.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslparser.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslresources.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslrules.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslstubs.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/asltokens.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/asltypes.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslutils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/aslxref.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dtcompiler.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dtfield.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dtparser.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dttable.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dttemplate.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/dtutils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/compiler/prparser.y
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/debugger/dbconvert.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/debugger/dbexec.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/debugger/dbfileio.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/debugger/dbinput.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/debugger/dbmethod.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/events/evgpe.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/events/evgpeinit.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/events/evrgnini.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/events/evxfgpe.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exconcat.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exconfig.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exconvrt.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exmisc.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exoparg1.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exresop.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/extrace.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/executer/exutils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/hardware/hwgpe.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/namespace/nsconvert.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/namespace/nsload.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/namespace/nsparse.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/namespace/nsutils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/parser/psparse.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/parser/psxface.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbdata.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbfadt.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbfind.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbinstal.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbutils.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbxface.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbxfload.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/tables/tbxfroot.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utaddress.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utbuffer.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utdebug.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/uthex.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utinit.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utnonansi.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utosi.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utpredef.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/uttrack.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utxface.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/components/utilities/utxfinit.c
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acapps.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acclib.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acconfig.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acdebug.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acdisasm.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acevents.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acglobal.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/aclocal.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acnamesp.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acparser.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acpiosxf.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acpixf.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/actables.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/actbl.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/actypes.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/acutils.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/platform/acenv.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/platform/acenvex.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/platform/acfreebsd.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/include/platform/acgcc.h
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
  user/alc/PQ_LAUNDRY/sys/dev/acpica/Osd/OsdTable.c
  user/alc/PQ_LAUNDRY/sys/dev/atkbdc/psm.c
  user/alc/PQ_LAUNDRY/sys/geom/geom_redboot.c
  user/alc/PQ_LAUNDRY/sys/i386/include/pcpu.h
  user/alc/PQ_LAUNDRY/sys/kern/imgact_elf.c
  user/alc/PQ_LAUNDRY/sys/kern/inflate.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_subr.c
  user/alc/PQ_LAUNDRY/sys/netpfil/pf/pf.c
  user/alc/PQ_LAUNDRY/sys/netpfil/pf/pf_ioctl.c
  user/alc/PQ_LAUNDRY/sys/powerpc/mpc85xx/platform_mpc85xx.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
  user/alc/PQ_LAUNDRY/sys/x86/acpica/OsdEnvironment.c
  user/alc/PQ_LAUNDRY/sys/x86/acpica/madt.c
  user/alc/PQ_LAUNDRY/sys/x86/acpica/srat.c
  user/alc/PQ_LAUNDRY/sys/x86/include/x86_smp.h
  user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c
  user/alc/PQ_LAUNDRY/sys/x86/xen/pvcpu_enum.c
  user/alc/PQ_LAUNDRY/usr.sbin/acpi/acpidb/Makefile
  user/alc/PQ_LAUNDRY/usr.sbin/acpi/iasl/Makefile
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/byacc/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/libarchive/   (props changed)
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/   (props changed)
  user/alc/PQ_LAUNDRY/sys/contrib/dev/acpica/   (props changed)

Modified: user/alc/PQ_LAUNDRY/contrib/blacklist/libexec/blacklistd-helper
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/blacklist/libexec/blacklistd-helper	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/blacklist/libexec/blacklistd-helper	Wed Oct  5 17:26:32 2016	(r306711)
@@ -19,8 +19,8 @@ fi
 if [ -z "$pf" ]; then
 	for f in npf pf ipf; do
 		if [ -f "/etc/$f.conf" ]; then
-			pf="$f"
-			break
+		    pf="$f"
+		    break
 		fi
 	done
 fi
@@ -54,8 +54,8 @@ add)
 	ipf)
 		/sbin/ipfstat -io | /sbin/ipf -I -f - >/dev/null 2>&1
 		echo block in quick $proto from $addr/$mask to \
-			any port=$6 head port$6 | \
-			/sbin/ipf -I -f - -s >/dev/null 2>&1
+		    any port=$6 head port$6 | \
+		    /sbin/ipf -I -f - -s >/dev/null 2>&1 && echo OK
 		;;
 	ipfw)
 		# use $ipfw_offset+$port for rule number
@@ -64,17 +64,21 @@ add)
 		/sbin/ipfw table $tname create type addr 2>/dev/null
 		/sbin/ipfw -q table $tname add "$addr/$mask"
 		/sbin/ipfw -q add $rule drop $3 from "table("$tname")" to \
-			any dst-port $6
+		    any dst-port $6 && echo OK
 		;;
 	npf)
 		/sbin/npfctl rule "$2" add block in final $proto from \
 		    "$addr/$mask" to any $port
 		;;
 	pf)
-		# insert $ip/$mask into per-protocol anchored table
-		/sbin/pfctl -a "$2" -t "port$6" -T add "$addr/$mask"
-		echo "block in quick $proto from <port$6> to any $port" | \
-		    /sbin/pfctl -a "$2" -f -
+		# if the filtering rule does not exist, create it
+		/sbin/pfctl -a "$2/$6" -sr 2>/dev/null | \
+		    grep -q "<port$6>" || \
+		    echo "block in quick $proto from <port$6> to any $port" | \
+		    /sbin/pfctl -a "$2/$6" -f -
+		# insert $ip/$mask into per-protocol/port anchored table
+		/sbin/pfctl -a "$2/$6" -t "port$6" -T add "$addr/$mask" && \
+		    echo OK
 		;;
 	esac
 	;;
@@ -83,33 +87,35 @@ rem)
 	ipf)
 		/sbin/ipfstat -io | /sbin/ipf -I -f - >/dev/null 2>&1
 		echo block in quick $proto from $addr/$mask to \
-			any port=$6 head port$6 | \
-			/sbin/ipf -I -r -f - -s >/dev/null 2>&1
+		    any port=$6 head port$6 | \
+		    /sbin/ipf -I -r -f - -s >/dev/null 2>&1 && echo OK
 		;;
 	ipfw)
-		/sbin/ipfw table "port$6" delete "$addr/$mask" 2>/dev/null
+		/sbin/ipfw table "port$6" delete "$addr/$mask" 2>/dev/null && \
+		    echo OK
 		;;
 	npf)
 		/sbin/npfctl rule "$2" rem-id "$7"
 		;;
 	pf)
-		/sbin/pfctl -a "$2" -t "port$6" -T delete "$addr/$mask"
+		/sbin/pfctl -a "$2/$6" -t "port$6" -T delete "$addr/$mask" && \
+		    echo OK
 		;;
 	esac
 	;;
 flush)
 	case "$pf" in
 	ipf)
-		/sbin/ipf -Z -I -Fi -s > /dev/null
+		/sbin/ipf -Z -I -Fi -s > /dev/null && echo OK
 		;;
 	ipfw)
-		/sbin/ipfw table "port$6" flush 2>/dev/null
+		/sbin/ipfw table "port$6" flush 2>/dev/null && echo OK
 		;;
 	npf)
 		/sbin/npfctl rule "$2" flush
 		;;
 	pf)
-		/sbin/pfctl -a "$2" -t "port$6" -T flush
+		/sbin/pfctl -a "$2/$6" -t "port$6" -T flush && echo OK
 		;;
 	esac
 	;;

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/CHANGES
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/CHANGES	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/CHANGES	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1,3 +1,82 @@
+2016-06-06  Thomas E. Dickey  <tom@invisible-island.net>
+
+	* configure: regen
+
+	* aclocal.m4: improved autoconf macros:
+	CF_CC_ENV_FLAGS - don't limit the check to -I, -U and -D options, since the
+		added options can include various compiler options before and after
+		preprocessor options.
+	CF_PROG_LINT - add cpplint to programs to use; drop ad hoc tdlint and alint.
+
+	* VERSION, package/byacc.spec, package/debian/changelog, package/mingw-byacc.spec, package/pkgsrc/Makefile:
+	bump
+
+	* lalr.c: indented
+
+	* btyaccpar.c: regen
+
+	* skel2c:
+	adjust whitespace so that generated skeleton will follow the same format
+	as other code
+
+	* mkpar.c, verbose.c, lr0.c, reader.c, error.c, output.c: indented
+
+	* reader.c: fix two compiler warnings
+
+	* test/btyacc/inherit2.tab.c, test/btyacc/ok_syntax1.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/error.tab.c, test/btyacc/grammar.tab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.tab.c, test/btyacc/btyacc_destroy1.tab.c, test/btyacc/btyacc_destroy2.tab.c, test/btyacc/btyacc_destroy3.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit3.tab.c,
  test/btyacc/err_inherit4.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.tab.c, test/btyacc/rename_debug.c, btyaccpar.c, test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/ok_syntax1.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/rename_debug.c, yaccpar.c:
+	regen
+
+2016-06-06  Tom.Shields
+
+	* btyaccpar.skel, yaccpar.skel:
+	small fix for an edge case of initialized data in Chris Dodd's btyacc changes:
+	"Avoid crash when input pops up an Action error at the first token"
+
+2016-06-01  Thomas E. Dickey  <tom@invisible-island.net>
+
+	* test/yacc/quote_calc2-s.tab.c, test/yacc/quote_calc3-s.tab.c, test/yacc/quote_calc3.tab.c, test/yacc/quote_calc4-s.tab.c, test/yacc/quote_calc4.tab.c, test/yacc/varsyntax_calc1.tab.c, test/yacc/err_syntax18.tab.c, test/yacc/err_syntax20.tab.c, test/yacc/err_syntax24.error, test/yacc/error.tab.c, test/yacc/grammar.tab.c, test/yacc/ok_syntax1.tab.c, test/yacc/pure_calc.tab.c, test/yacc/pure_error.tab.c, test/yacc/quote_calc-s.tab.c, test/yacc/quote_calc.tab.c, test/yacc/quote_calc2.tab.c, test/yacc/calc.tab.c, test/yacc/calc1.tab.c, test/yacc/calc2.tab.c, test/yacc/calc3.tab.c, test/yacc/code_calc.code.c, test/yacc/code_calc.tab.c, test/yacc/code_calc.tab.h, test/yacc/code_error.code.c, test/yacc/empty.tab.c, test/yacc/err_syntax10.tab.c, test/yacc/err_syntax11.tab.c, test/yacc/err_syntax12.tab.c, test/yacc/rename_debug.c, yaccpar.c, test/btyacc/quote_calc-s.tab.c, test/btyacc/quote_calc.tab.c, test/btyacc/quote_calc2-s.tab.c, test/btyacc/quote_calc2.tab.c, test/btyacc/quote_calc3-
 s.tab.c, test/btyacc/quote_calc3.tab.c, test/btyacc/quote_calc4-s.tab.c, test/btyacc/quote_calc4.tab.c, test/btyacc/varsyntax_calc1.tab.c, test/btyacc/err_syntax13.tab.c, test/btyacc/err_syntax14.tab.c, test/btyacc/err_syntax15.tab.c, test/btyacc/err_syntax16.tab.c, test/btyacc/err_syntax17.tab.c, test/btyacc/err_syntax18.tab.c, test/btyacc/err_syntax19.tab.c, test/btyacc/err_syntax2.tab.c, test/btyacc/err_syntax20.tab.c, test/btyacc/err_syntax21.tab.c, test/btyacc/err_syntax22.tab.c, test/btyacc/err_syntax23.tab.c, test/btyacc/err_syntax24.error, test/btyacc/err_syntax24.tab.c, test/btyacc/err_syntax25.tab.c, test/btyacc/err_syntax26.tab.c, test/btyacc/err_syntax27.tab.c, test/btyacc/err_syntax3.tab.c, test/btyacc/err_syntax4.tab.c, test/btyacc/err_syntax5.tab.c, test/btyacc/err_syntax6.tab.c, test/btyacc/err_syntax7.tab.c, test/btyacc/err_syntax7a.tab.c, test/btyacc/err_syntax7b.tab.c, test/btyacc/err_syntax8.tab.c, test/btyacc/err_syntax8a.tab.c, test/btyacc/err_syntax9.tab.c, te
 st/btyacc/error.tab.c, test/btyacc/grammar.t!
 ab.c, test/btyacc/inherit0.tab.c, test/btyacc/inherit1.tab.c, test/btyacc/inherit2.output, test/btyacc/inherit2.tab.c, test/btyacc/ok_syntax1.tab.c, test/btyacc/pure_calc.tab.c, test/btyacc/pure_error.tab.c, test/btyacc/btyacc_calc1.tab.c, test/btyacc/btyacc_demo.error, test/btyacc/btyacc_demo.output, test/btyacc/btyacc_demo.tab.c, test/btyacc/btyacc_destroy1.tab.c, test/btyacc/btyacc_destroy2.tab.c, test/btyacc/btyacc_destroy3.tab.c, test/btyacc/calc.tab.c, test/btyacc/calc1.tab.c, test/btyacc/calc2.tab.c, test/btyacc/calc3.tab.c, test/btyacc/code_calc.code.c, test/btyacc/code_calc.tab.c, test/btyacc/code_calc.tab.h, test/btyacc/code_error.code.c, test/btyacc/empty.tab.c, test/btyacc/err_inherit1.tab.c, test/btyacc/err_inherit2.tab.c, test/btyacc/err_inherit3.output, test/btyacc/err_inherit3.tab.c, test/btyacc/err_inherit4.output, test/btyacc/err_inherit4.tab.c, test/btyacc/err_inherit5.tab.c, test/btyacc/err_syntax1.tab.c, test/btyacc/err_syntax10.tab.c, test/btyacc/err_syntax11.t
 ab.c, test/btyacc/err_syntax12.tab.c, test/btyacc/rename_debug.c, btyaccpar.c:
+	regen
+
+2016-06-01  Tom.Shields
+
+	* btyaccpar.skel, defs.h, error.c, output.c, reader.c, test/code_calc.y, test/err_inherit4.y, test/run_make.sh, yaccpar.skel:
+	fixes for issues in btyacc (report by Francis Andre):
+
+	+ correction to the placement of the #line directive for a %union specification
+
+	+ recovery of a set of casts originally added into btyaccpar.c rather than into
+	  btyaccpar.skel, and so are lost whenever building from scratch
+
+	+ Chris Dodd's btyacc improved handling of inherited attributes to eliminate
+	  implicit empty copy rules that are not necessary, and thereby avoiding the
+	  introduction of extra parsing ambiguity
+
+	+ Chris Dodd's added support for @-N syntax to reference inherited position
+	  information
+
+	+ correction to bad interaction between %token-table and YYDEBUG, where YYDEBUG
+	  was required to be defined in order to compile the generated code
+
+	+ correction to yyname[] access in code included with YYDEBUG defined for
+	  single character symbols not recognized (e.g., input containing '&' character
+	  where grammar doesn't define that as a symbol) - map to existing
+	  "illegal-symbol" entry in byname[]
+
+	+ fixes to test/run_make.sh:  skip test-err_* files; in the bison test phase
+	  skip additional files that contain features not supported by bison and
+	  inhibit new bison warning messages
+
+	+ minor changes to btyaccpar.skel & yaccpar.skel so they are more similar in
+	  their commonality; makes it easier to maintain the pair of files using
+	  vimdiff
+
+	+ changes to a couple of test cases for coverage of #3, #4 and #5 above
+
+2016-06-01  Thomas E. Dickey  <tom@invisible-island.net>
+
+	* VERSION, package/byacc.spec, package/debian/changelog, package/mingw-byacc.spec, package/pkgsrc/Makefile:
+	bump
+
 2016-03-24  Thomas E. Dickey  <tom@invisible-island.net>
 
 	* reader.c: unused variable

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/MANIFEST
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/MANIFEST	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/MANIFEST	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1,4 +1,4 @@
-MANIFEST for byacc-20160324, version t20160324
+MANIFEST for byacc-20160606, version t20160606
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 ACKNOWLEDGEMENTS                original version of byacc - 1993

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/VERSION
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/VERSION	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/VERSION	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1 +1 @@
-20160324
+20160606

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/aclocal.m4
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/aclocal.m4	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/aclocal.m4	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.39 2016/03/25 00:06:44 tom Exp $
+dnl $Id: aclocal.m4,v 1.40 2016/06/07 00:48:07 tom Exp $
 dnl Macros for byacc configure script (Thomas E. Dickey)
 dnl ---------------------------------------------------------------------------
 dnl Copyright 2004-2015,2016 Thomas E. Dickey
@@ -171,11 +171,15 @@ ifelse([$3],,[    :]dnl
 ])dnl
 ])])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 2 updated: 2015/04/12 15:39:00
+dnl CF_CC_ENV_FLAGS version: 3 updated: 2016/05/21 18:10:17
 dnl ---------------
 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
 dnl into CC.  This will not help with broken scripts that wrap the compiler with
 dnl options, but eliminates a more common category of user confusion.
+dnl
+dnl Caveat: this also disallows blanks in the pathname for the compiler, but
+dnl the nuisance of having inconsistent settings for compiler and preprocessor
+dnl outweighs that limitation.
 AC_DEFUN([CF_CC_ENV_FLAGS],
 [
 # This should have been defined by AC_PROG_CC
@@ -183,13 +187,16 @@ AC_DEFUN([CF_CC_ENV_FLAGS],
 
 AC_MSG_CHECKING(\$CC variable)
 case "$CC" in
-(*[[\ \	]]-[[IUD]]*)
+(*[[\ \	]]-*)
 	AC_MSG_RESULT(broken)
 	AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
 	# humor him...
-	cf_flags=`echo "$CC" | sed -e 's/^[[^ 	]]*[[ 	]]//'`
+	cf_flags=`echo "$CC" | sed -e 's/^[[^ 	]]*[[ 	]][[ 	]]*//'`
 	CC=`echo "$CC" | sed -e 's/[[ 	]].*//'`
 	CF_ADD_CFLAGS($cf_flags)
+	CF_VERBOSE(resulting CC: '$CC')
+	CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
+	CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
 	;;
 (*)
 	AC_MSG_RESULT(ok)
@@ -1010,11 +1017,11 @@ AC_SUBST(GROFF_NOTE)
 AC_SUBST(NROFF_NOTE)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
+dnl CF_PROG_LINT version: 3 updated: 2016/05/22 15:25:54
 dnl ------------
 AC_DEFUN([CF_PROG_LINT],
 [
-AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
+AC_CHECK_PROGS(LINT, lint cppcheck splint)
 AC_SUBST(LINT_OPTS)
 ])dnl
 dnl ---------------------------------------------------------------------------

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.c	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.c	Wed Oct  5 17:26:32 2016	(r306711)
@@ -2,7 +2,7 @@
  * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @
  */
 
-/* @Id: btyaccpar.skel,v 1.1 2014/04/02 22:44:41 tom Exp @ */
+/* @Id: btyaccpar.skel,v 1.3 2016/06/06 23:35:55 Tom.Shields Exp @ */
 
 #include "defs.h"
 
@@ -18,7 +18,7 @@ const char *const banner[] =
 {
     "/* original parser id follows */",
     "/* yysccsid[] = \"@(#)yaccpar	1.9 (Berkeley) 02/21/93\" */",
-    "/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */",
+    "/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */",
     "",
     "#define YYBYACC 1",
     CONCAT1("#define YYMAJOR ", YYMAJOR),
@@ -66,8 +66,10 @@ const char *const tables[] =
     "#endif /* YYBTYACC */",
 #endif			/* defined(YYBTYACC) */
     "",
-    "#if YYDEBUG",
+    "#if YYDEBUG || defined(yytname)",
     "extern const char *const yyname[];",
+    "#endif",
+    "#if YYDEBUG",
     "extern const char *const yyrule[];",
     "#endif",
     0
@@ -148,9 +150,9 @@ const char *const hdr_defs[] =
     "",
     "typedef struct {",
     "    unsigned stacksize;",
-    "    short    *s_base;",
-    "    short    *s_mark;",
-    "    short    *s_last;",
+    "    YYINT    *s_base;",
+    "    YYINT    *s_mark;",
+    "    YYINT    *s_last;",
     "    YYSTYPE  *l_base;",
     "    YYSTYPE  *l_mark;",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
@@ -293,18 +295,18 @@ const char *const body_1[] =
 #endif			/* defined(YYBTYACC) */
     "",
     "#if YYDEBUG",
-    "#include <stdio.h>         /* needed for printf */",
+    "#include <stdio.h>	/* needed for printf */",
     "#endif",
     "",
-    "#include <stdlib.h>        /* needed for malloc, etc */",
-    "#include <string.h>        /* needed for memset */",
+    "#include <stdlib.h>	/* needed for malloc, etc */",
+    "#include <string.h>	/* needed for memset */",
     "",
     "/* allocate initial stack or double stack size, up to YYMAXDEPTH */",
     "static int yygrowstack(YYSTACKDATA *data)",
     "{",
     "    int i;",
     "    unsigned newsize;",
-    "    short *newss;",
+    "    YYINT *newss;",
     "    YYSTYPE *newvs;",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
     "    YYLTYPE *newps;",
@@ -318,7 +320,7 @@ const char *const body_1[] =
     "        newsize = YYMAXDEPTH;",
     "",
     "    i = (int) (data->s_mark - data->s_base);",
-    "    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));",
+    "    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));",
     "    if (newss == 0)",
     "        return YYENOMEM;",
     "",
@@ -383,7 +385,7 @@ const char *const body_1[] =
     "#endif",
     "        return p;",
     "    }",
-    "    p->yystack.s_base    = (short *) malloc(size * sizeof(short));",
+    "    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));",
     "    if (p->yystack.s_base == NULL) return NULL;",
     "    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));",
     "    if (p->yystack.l_base == NULL) return NULL;",
@@ -455,6 +457,8 @@ const char *const body_2[] =
     "    yyps->save = 0;",
     "#endif /* YYBTYACC */",
 #endif			/* defined(YYBTYACC) */
+    "    yym = 0;",
+    "    yyn = 0;",
     "    yynerrs = 0;",
     "    yyerrflag = 0;",
     "    yychar = YYEMPTY;",
@@ -532,11 +536,10 @@ const char *const body_2[] =
     "#endif /* YYBTYACC */",
 #endif			/* defined(YYBTYACC) */
     "        if (yychar < 0) yychar = YYEOF;",
-    "        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
     "#if YYDEBUG",
     "        if (yydebug)",
     "        {",
-    "            yys = yyname[YYTRANSLATE(yychar)];",
+    "            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];",
     "            fprintf(stderr, \"%s[%d]: state %d, reading token %d (%s)\",",
     "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
     "#ifdef YYSTYPE_TOSTRING",
@@ -598,7 +601,7 @@ const char *const body_2[] =
     "            save->state           = yystate;",
     "            save->errflag         = yyerrflag;",
     "            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);",
-    "            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
+    "            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));",
     "            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);",
     "            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
@@ -679,7 +682,7 @@ const char *const body_2[] =
     "            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)",
     "                goto yyoverflow;",
     "            yystate = yyctable[ctry];",
-    "            *++yystack.s_mark = (short) yystate;",
+    "            *++yystack.s_mark = (YYINT) yystate;",
     "            *++yystack.l_mark = yylval;",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
     "            *++yystack.p_mark = yylloc;",
@@ -727,9 +730,18 @@ const char *const body_2[] =
     "",
     "    yynewerrflag = 1;",
     "    goto yyerrhandler;",
-    "    goto yyerrlab;",
+    "    goto yyerrlab; /* redundant goto avoids 'unused label' warning */",
     "",
     "yyerrlab:",
+    "    /* explicit YYERROR from an action -- pop the rhs of the rule reduced",
+    "     * before looking for error recovery */",
+    "    yystack.s_mark -= yym;",
+    "    yystate = *yystack.s_mark;",
+    "    yystack.l_mark -= yym;",
+    "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
+    "    yystack.p_mark -= yym;",
+    "#endif",
+    "",
     "    yynewerrflag = 0;",
     "yyerrhandler:",
     "    while (yyps->save)",
@@ -754,7 +766,7 @@ const char *const body_2[] =
     "            yyerrctx->state          = yystate;",
     "            yyerrctx->errflag        = yyerrflag;",
     "            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);",
-    "            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
+    "            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));",
     "            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);",
     "            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
@@ -770,7 +782,7 @@ const char *const body_2[] =
     "        yylexp         = yylexemes + save->lexeme;",
     "        yychar         = YYEMPTY;",
     "        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);",
-    "        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
+    "        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));",
     "        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);",
     "        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
@@ -805,7 +817,7 @@ const char *const body_2[] =
     "            yylloc         = yylpp[-1];",
     "#endif",
     "            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);",
-    "            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
+    "            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));",
     "            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);",
     "            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
@@ -828,7 +840,7 @@ const char *const body_2[] =
     "#endif",
     "",
     "#if !YYBTYACC",
-    "    goto yyerrlab;",
+    "    goto yyerrlab; /* redundant goto avoids 'unused label' warning */",
     "yyerrlab:",
     "#endif",
     "    ++yynerrs;",
@@ -899,7 +911,7 @@ const char *const body_2[] =
     "#if YYDEBUG",
     "        if (yydebug)",
     "        {",
-    "            yys = yyname[YYTRANSLATE(yychar)];",
+    "            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];",
     "            fprintf(stderr, \"%s[%d]: state %d, error recovery discarding token %d (%s)\\n\",",
     "                            YYDEBUGSTR, yydepth, yystate, yychar, yys);",
     "        }",
@@ -1070,12 +1082,11 @@ const char *const trailer[] =
     "#endif /* YYBTYACC */",
 #endif			/* defined(YYBTYACC) */
     "            if (yychar < 0) yychar = YYEOF;",
-    "            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */",
     "#if YYDEBUG",
     "            if (yydebug)",
     "            {",
-    "                yys = yyname[YYTRANSLATE(yychar)];",
-    "                fprintf(stderr, \"%s[%d]: state %d, reading %d (%s)\\n\",",
+    "                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];",
+    "                fprintf(stderr, \"%s[%d]: state %d, reading token %d (%s)\\n\",",
     "                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);",
     "            }",
     "#endif",
@@ -1104,7 +1115,7 @@ const char *const trailer[] =
     "    }",
     "#endif",
     "    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;",
-    "    *++yystack.s_mark = (short) yystate;",
+    "    *++yystack.s_mark = (YYINT) yystate;",
     "    *++yystack.l_mark = yyval;",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",
     "    *++yystack.p_mark = yyloc;",
@@ -1140,7 +1151,7 @@ const char *const trailer[] =
     "    yylexp         = yylexemes + yypath->lexeme;",
     "    yychar         = YYEMPTY;",
     "    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);",
-    "    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));",
+    "    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));",
     "    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);",
     "    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));",
     "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)",

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.skel
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.skel	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/btyaccpar.skel	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1,4 +1,4 @@
-/* $Id: btyaccpar.skel,v 1.1 2014/04/02 22:44:41 tom Exp $ */
+/* $Id: btyaccpar.skel,v 1.3 2016/06/06 23:35:55 Tom.Shields Exp $ */
 
 #include "defs.h"
 
@@ -45,8 +45,10 @@ extern const YYINT yycheck[];
 extern const YYINT yyctable[];
 %%endif
 
-#if YYDEBUG
+#if YYDEBUG || defined(yytname)
 extern const char *const yyname[];
+#endif
+#if YYDEBUG
 extern const char *const yyrule[];
 #endif
 %% global_vars
@@ -113,9 +115,9 @@ do \
 
 typedef struct {
     unsigned stacksize;
-    short    *s_base;
-    short    *s_mark;
-    short    *s_last;
+    YYINT    *s_base;
+    YYINT    *s_mark;
+    YYINT    *s_last;
     YYSTYPE  *l_base;
     YYSTYPE  *l_mark;
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
@@ -238,7 +240,7 @@ static short  *yylexemes = 0;
 %%endif
 
 #if YYDEBUG
-#include <stdio.h>		/* needed for printf */
+#include <stdio.h>	/* needed for printf */
 #endif
 
 #include <stdlib.h>	/* needed for malloc, etc */
@@ -249,7 +251,7 @@ static int yygrowstack(YYSTACKDATA *data
 {
     int i;
     unsigned newsize;
-    short *newss;
+    YYINT *newss;
     YYSTYPE *newvs;
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
     YYLTYPE *newps;
@@ -263,7 +265,7 @@ static int yygrowstack(YYSTACKDATA *data
         newsize = YYMAXDEPTH;
 
     i = (int) (data->s_mark - data->s_base);
-    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
     if (newss == 0)
         return YYENOMEM;
 
@@ -327,7 +329,7 @@ yyNewState(unsigned size)
 #endif
         return p;
     }
-    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
+    p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
     if (p->yystack.s_base == NULL) return NULL;
     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
     if (p->yystack.l_base == NULL) return NULL;
@@ -388,6 +390,8 @@ YYPARSE_DECL()
     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
     yyps->save = 0;
 %%endif
+    yym = 0;
+    yyn = 0;
     yynerrs = 0;
     yyerrflag = 0;
     yychar = YYEMPTY;
@@ -427,8 +431,8 @@ yyloop:
             /* in trial mode; save scanner results for future parse attempts */
             if (yylvp == yylvlim)
             {   /* Enlarge lexical value queue */
-                int p = yylvp - yylvals;
-                int s = yylvlim - yylvals;
+                size_t p = (size_t) (yylvp - yylvals);
+                size_t s = (size_t) (yylvlim - yylvals);
 
                 s += YYLVQUEUEGROWTH;
                 if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
@@ -461,11 +465,10 @@ yyloop:
         } while (0);
 %%endif
         if (yychar < 0) yychar = YYEOF;
-        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
 #if YYDEBUG
         if (yydebug)
         {
-            yys = yyname[YYTRANSLATE(yychar)];
+            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
 #ifdef YYSTYPE_TOSTRING
@@ -524,12 +527,12 @@ yyloop:
             save->state           = yystate;
             save->errflag         = yyerrflag;
             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
-            memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
+            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
-            memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
+            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
-            memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
+            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
 #endif
             ctry                  = yytable[yyn];
             if (yyctable[ctry] == -1)
@@ -584,7 +587,7 @@ yyloop:
                 yylexp--;
                 yychar = YYEMPTY;
             }
-            save->lexeme = yylvp - yylvals;
+            save->lexeme = (int) (yylvp - yylvals);
             yyps->save   = save;
         }
         if (yytable[yyn] == ctry)
@@ -605,7 +608,7 @@ yyloop:
             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
                 goto yyoverflow;
             yystate = yyctable[ctry];
-            *++yystack.s_mark = (short) yystate;
+            *++yystack.s_mark = (YYINT) yystate;
             *++yystack.l_mark = yylval;
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
             *++yystack.p_mark = yylloc;
@@ -651,9 +654,18 @@ yyloop:
 
     yynewerrflag = 1;
     goto yyerrhandler;
-    goto yyerrlab;
+    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
 
 yyerrlab:
+    /* explicit YYERROR from an action -- pop the rhs of the rule reduced
+     * before looking for error recovery */
+    yystack.s_mark -= yym;
+    yystate = *yystack.s_mark;
+    yystack.l_mark -= yym;
+#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
+    yystack.p_mark -= yym;
+#endif
+
     yynewerrflag = 0;
 yyerrhandler:
     while (yyps->save)
@@ -678,14 +690,14 @@ yyerrhandler:
             yyerrctx->state          = yystate;
             yyerrctx->errflag        = yyerrflag;
             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
-            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
+            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
-            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
+            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
-            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
+            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
 #endif
-            yyerrctx->lexeme         = yylvp - yylvals;
+            yyerrctx->lexeme         = (int) (yylvp - yylvals);
         }
         yylvp          = yylvals   + save->lexeme;
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
@@ -694,12 +706,12 @@ yyerrhandler:
         yylexp         = yylexemes + save->lexeme;
         yychar         = YYEMPTY;
         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
-        memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
+        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
-        memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
+        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
-        memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
+        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
 #endif
         ctry           = ++save->ctry;
         yystate        = save->state;
@@ -729,12 +741,12 @@ yyerrhandler:
             yylloc         = yylpp[-1];
 #endif
             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
-            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
+            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
-            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
+            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
-            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
+            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
 #endif
             yystate        = yyerrctx->state;
             yyFreeState(yyerrctx);
@@ -751,7 +763,7 @@ yyerrhandler:
 #endif
 
 #if !YYBTYACC
-    goto yyerrlab;
+    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
 yyerrlab:
 #endif
     ++yynerrs;
@@ -820,7 +832,7 @@ yyinrecovery:
 #if YYDEBUG
         if (yydebug)
         {
-            yys = yyname[YYTRANSLATE(yychar)];
+            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
         }
@@ -938,8 +950,8 @@ yyreduce:
                 /* in trial mode; save scanner results for future parse attempts */
                 if (yylvp == yylvlim)
                 {   /* Enlarge lexical value queue */
-                    int p = yylvp - yylvals;
-                    int s = yylvlim - yylvals;
+                    size_t p = (size_t) (yylvp - yylvals);
+                    size_t s = (size_t) (yylvlim - yylvals);
 
                     s += YYLVQUEUEGROWTH;
                     if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
@@ -975,12 +987,11 @@ yyreduce:
             } while (0);
 %%endif
             if (yychar < 0) yychar = YYEOF;
-            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
 #if YYDEBUG
             if (yydebug)
             {
-                yys = yyname[YYTRANSLATE(yychar)];
-                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
+                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
+                fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
             }
 #endif
@@ -1007,7 +1018,7 @@ yyreduce:
     }
 #endif
     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
-    *++yystack.s_mark = (short) yystate;
+    *++yystack.s_mark = (YYINT) yystate;
     *++yystack.l_mark = yyval;
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
     *++yystack.p_mark = yyloc;
@@ -1042,12 +1053,12 @@ yyvalid:
     yylexp         = yylexemes + yypath->lexeme;
     yychar         = YYEMPTY;
     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
-    memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
+    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
-    memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
+    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
-    memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
+    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
 #endif
     yystate        = yypath->state;
     goto yyloop;

Modified: user/alc/PQ_LAUNDRY/contrib/byacc/configure
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/byacc/configure	Wed Oct  5 17:18:24 2016	(r306710)
+++ user/alc/PQ_LAUNDRY/contrib/byacc/configure	Wed Oct  5 17:26:32 2016	(r306711)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.in Revision: 1.21 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20141204.
+# Generated by Autoconf 2.52.20150926.
 #
 # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
 # Free Software Foundation, Inc.
@@ -767,7 +767,7 @@ This file contains any messages produced
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20141204.  Invocation command line was
+generated by GNU Autoconf 2.52.20150926.  Invocation command line was
 
   $ $0 $@
 
@@ -1949,13 +1949,13 @@ esac
 echo "$as_me:1949: checking \$CC variable" >&5
 echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
 case "$CC" in
-(*[\ \	]-[IUD]*)
+(*[\ \	]-*)
 	echo "$as_me:1953: result: broken" >&5
 echo "${ECHO_T}broken" >&6
 	{ echo "$as_me:1955: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
 	# humor him...
-	cf_flags=`echo "$CC" | sed -e 's/^[^ 	]*[ 	]//'`
+	cf_flags=`echo "$CC" | sed -e 's/^[^ 	]*[ 	][ 	]*//'`
 	CC=`echo "$CC" | sed -e 's/[ 	].*//'`
 
 cf_fix_cppflags=no
@@ -2036,14 +2036,26 @@ if test -n "$cf_new_extra_cppflags" ; th
 	EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
 fi
 
+	test -n "$verbose" && echo "	resulting CC: '$CC'" 1>&6
+
+echo "${as_me:-configure}:2041: testing resulting CC: '$CC' ..." 1>&5
+
+	test -n "$verbose" && echo "	resulting CFLAGS: '$CFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2045: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+
+	test -n "$verbose" && echo "	resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2049: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+
 	;;
 (*)
-	echo "$as_me:2041: result: ok" >&5
+	echo "$as_me:2053: result: ok" >&5
 echo "${ECHO_T}ok" >&6
 	;;
 esac
 
-echo "$as_me:2046: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:2058: checking whether ${MAKE-make} sets \${MAKE}" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -2063,11 +2075,11 @@ fi
 rm -f conftest.make
 fi
 if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:2066: result: yes" >&5
+  echo "$as_me:2078: result: yes" >&5
 echo "${ECHO_T}yes" >&6
   SET_MAKE=
 else
-  echo "$as_me:2070: result: no" >&5
+  echo "$as_me:2082: result: no" >&5
 echo "${ECHO_T}no" >&6
   SET_MAKE="MAKE=${MAKE-make}"
 fi
@@ -2084,7 +2096,7 @@ fi
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2087: checking for a BSD compatible install" >&5
+echo "$as_me:2099: checking for a BSD compatible install" >&5
 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
@@ -2133,7 +2145,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:2136: result: $INSTALL" >&5
+echo "$as_me:2148: result: $INSTALL" >&5
 echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2144,7 +2156,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-echo "$as_me:2147: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:2159: checking if filesystem supports mixed-case filenames" >&5
 echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
 if test "${cf_cv_mixedcase+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2171,7 +2183,7 @@ else
 fi
 
 fi
-echo "$as_me:2174: result: $cf_cv_mixedcase" >&5
+echo "$as_me:2186: result: $cf_cv_mixedcase" >&5
 echo "${ECHO_T}$cf_cv_mixedcase" >&6
 test "$cf_cv_mixedcase" = yes &&
 cat >>confdefs.h <<\EOF
@@ -2182,7 +2194,7 @@ for ac_prog in exctags ctags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2185: checking for $ac_word" >&5
+echo "$as_me:2197: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CTAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2197,7 +2209,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:2200: found $ac_dir/$ac_word" >&5
+echo "$as_me:2212: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2205,10 +2217,10 @@ fi
 fi
 CTAGS=$ac_cv_prog_CTAGS
 if test -n "$CTAGS"; then
-  echo "$as_me:2208: result: $CTAGS" >&5
+  echo "$as_me:2220: result: $CTAGS" >&5
 echo "${ECHO_T}$CTAGS" >&6
 else
-  echo "$as_me:2211: result: no" >&5
+  echo "$as_me:2223: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2219,7 +2231,7 @@ for ac_prog in exetags etags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2222: checking for $ac_word" >&5
+echo "$as_me:2234: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ETAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2234,7 +2246,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:2237: found $ac_dir/$ac_word" >&5
+echo "$as_me:2249: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2242,10 +2254,10 @@ fi
 fi
 ETAGS=$ac_cv_prog_ETAGS
 if test -n "$ETAGS"; then
-  echo "$as_me:2245: result: $ETAGS" >&5
+  echo "$as_me:2257: result: $ETAGS" >&5
 echo "${ECHO_T}$ETAGS" >&6
 else
-  echo "$as_me:2248: result: no" >&5
+  echo "$as_me:2260: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2254,7 +2266,7 @@ done
 
 # Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
 set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:2257: checking for $ac_word" >&5
+echo "$as_me:2269: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2269,7 +2281,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:2272: found $ac_dir/$ac_word" >&5
+echo "$as_me:2284: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2278,17 +2290,17 @@ fi
 fi
 MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
 if test -n "$MAKE_LOWER_TAGS"; then
-  echo "$as_me:2281: result: $MAKE_LOWER_TAGS" >&5
+  echo "$as_me:2293: result: $MAKE_LOWER_TAGS" >&5
 echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
 else
-  echo "$as_me:2284: result: no" >&5
+  echo "$as_me:2296: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
 if test "$cf_cv_mixedcase" = yes ; then
 	# Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
 set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:2291: checking for $ac_word" >&5
+echo "$as_me:2303: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2303,7 +2315,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:2306: found $ac_dir/$ac_word" >&5
+echo "$as_me:2318: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2312,10 +2324,10 @@ fi
 fi
 MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
 if test -n "$MAKE_UPPER_TAGS"; then
-  echo "$as_me:2315: result: $MAKE_UPPER_TAGS" >&5
+  echo "$as_me:2327: result: $MAKE_UPPER_TAGS" >&5
 echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
 else
-  echo "$as_me:2318: result: no" >&5
+  echo "$as_me:2330: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2339,7 +2351,7 @@ for ac_prog in mawk gawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2342: checking for $ac_word" >&5
+echo "$as_me:2354: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AWK+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2354,7 +2366,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-user@freebsd.org  Wed Oct  5 18:03:19 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9F139AF65F2
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Wed,  5 Oct 2016 18:03:19 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 5872E975;
 Wed,  5 Oct 2016 18:03:19 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u95I3IKL040061;
 Wed, 5 Oct 2016 18:03:18 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u95I3Hq1040052;
 Wed, 5 Oct 2016 18:03:17 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610051803.u95I3Hq1040052@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Wed, 5 Oct 2016 18:03:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306713 - in user/alc/PQ_LAUNDRY: lib/libc/stdlib
 lib/msun/ld80 lib/msun/src sys/cam sys/vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Oct 2016 18:03:19 -0000

Author: alc
Date: Wed Oct  5 18:03:17 2016
New Revision: 306713
URL: https://svnweb.freebsd.org/changeset/base/306713

Log:
  MFH r306708-306712

Modified:
  user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
  user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c
  user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c
  user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c
  user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)

Modified: user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -270,16 +270,17 @@ void
 srandomdev(void)
 {
 	int mib[2];
-	size_t len;
+	size_t expected, len;
 
 	if (rand_type == TYPE_0)
-		len = sizeof(state[0]);
+		expected = len = sizeof(state[0]);
 	else
-		len = rand_deg * sizeof(state[0]);
+		expected = len = rand_deg * sizeof(state[0]);
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_ARND;
-	sysctl(mib, 2, state, &len, NULL, 0);
+	if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected)
+		abort();
 
 	if (rand_type != TYPE_0) {
 		fptr = &state[rand_sep];

Modified: user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -249,7 +249,7 @@ sin_pil(long double x)
 long double
 lgammal_r(long double x, int *signgamp)
 {
-	long double nadj,p,p1,p2,p3,q,r,t,w,y,z;
+	long double nadj,p,p1,p2,q,r,t,w,y,z;
 	uint64_t lx;
 	int i;
 	uint16_t hx,ix;

Modified: user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -122,7 +122,7 @@ sin_pif(float x)
 float
 __ieee754_lgammaf_r(float x, int *signgamp)
 {
-	float nadj,p,p1,p2,p3,q,r,t,w,y,z;
+	float nadj,p,p1,p2,q,r,t,w,y,z;
 	int32_t hx;
 	int i,ix;
 

Modified: user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -176,8 +176,11 @@ camq_remove(struct camq *queue, int inde
 {
 	cam_pinfo *removed_entry;
 
-	if (index == 0 || index > queue->entries)
-		return (NULL);
+	if (index <= 0 || index > queue->entries)
+		panic("%s: Attempt to remove out-of-bounds index %d "
+		    "from queue %p of size %d", __func__, index, queue,
+		    queue->entries);
+
 	removed_entry = queue->queue_array[index];
 	if (queue->entries != index) {
 		queue->queue_array[index] = queue->queue_array[queue->entries];

Modified: user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h	Wed Oct  5 18:03:17 2016	(r306713)
@@ -197,6 +197,11 @@ cam_ccbq_insert_ccb(struct cam_ccbq *ccb
 	struct ccb_hdr *old_ccb;
 	struct camq *queue = &ccbq->queue;
 
+	KASSERT((new_ccb->ccb_h.func_code & XPT_FC_QUEUED) != 0 &&
+	    (new_ccb->ccb_h.func_code & XPT_FC_USER_CCB) == 0,
+	    ("%s: Cannot queue ccb %p func_code %#x", __func__, new_ccb,
+	     new_ccb->ccb_h.func_code));
+
 	/*
 	 * If queue is already full, try to resize.
 	 * If resize fail, push CCB with lowest priority out to the TAILQ.
@@ -218,6 +223,7 @@ cam_ccbq_remove_ccb(struct cam_ccbq *ccb
 {
 	struct ccb_hdr *cccb, *bccb;
 	struct camq *queue = &ccbq->queue;
+	cam_pinfo *removed_entry __unused;
 
 	/* If the CCB is on the TAILQ, remove it from there. */
 	if (ccb->ccb_h.pinfo.index == CAM_EXTRAQ_INDEX) {
@@ -228,7 +234,10 @@ cam_ccbq_remove_ccb(struct cam_ccbq *ccb
 		return;
 	}
 
-	camq_remove(queue, ccb->ccb_h.pinfo.index);
+	removed_entry = camq_remove(queue, ccb->ccb_h.pinfo.index);
+	KASSERT(removed_entry == &ccb->ccb_h.pinfo,
+	    ("%s: Removed wrong entry from queue (%p != %p)", __func__,
+	     removed_entry, &ccb->ccb_h.pinfo));
 
 	/*
 	 * If there are some CCBs on TAILQ, find the best one and move it

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -398,7 +398,6 @@ vm_page_domain_init(struct vm_domain *vm
 	vmd->vmd_free_count = 0;
 	vmd->vmd_segs = 0;
 	vmd->vmd_oom = FALSE;
-	vmd->vmd_pass = 0;
 	for (i = 0; i < PQ_COUNT; i++) {
 		pq = &vmd->vmd_pagequeues[i];
 		TAILQ_INIT(&pq->pq_pl);
@@ -3829,14 +3828,13 @@ DB_SHOW_COMMAND(pageq, vm_page_print_pag
 	    vm_cnt.v_free_count, vm_cnt.v_cache_count);
 	for (dom = 0; dom < vm_ndomains; dom++) {
 		db_printf(
-	"dom %d page_cnt %d free %d pq_act %d pq_inact %d pq_laund %d pass %d\n",
+	    "dom %d page_cnt %d free %d pq_act %d pq_inact %d pq_laund %d\n",
 		    dom,
 		    vm_dom[dom].vmd_page_count,
 		    vm_dom[dom].vmd_free_count,
 		    vm_dom[dom].vmd_pagequeues[PQ_ACTIVE].pq_cnt,
 		    vm_dom[dom].vmd_pagequeues[PQ_INACTIVE].pq_cnt,
-		    vm_dom[dom].vmd_pagequeues[PQ_LAUNDRY].pq_cnt,
-		    vm_dom[dom].vmd_pass);
+		    vm_dom[dom].vmd_pagequeues[PQ_LAUNDRY].pq_cnt);
 	}
 }
 

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Wed Oct  5 18:03:17 2016	(r306713)
@@ -227,7 +227,6 @@ struct vm_domain {
 	u_int vmd_free_count;
 	long vmd_segs;	/* bitmask of the segments */
 	boolean_t vmd_oom;
-	int vmd_pass;	/* local pagedaemon pass */
 	int vmd_oom_seq;
 	int vmd_last_active_scan;
 	struct vm_page vmd_laundry_marker;

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -1893,11 +1893,12 @@ static void
 vm_pageout_worker(void *arg)
 {
 	struct vm_domain *domain;
-	int domidx;
+	int domidx, pass;
 	bool target_met;
 
 	domidx = (uintptr_t)arg;
 	domain = &vm_dom[domidx];
+	pass = 0;
 	target_met = true;
 
 	/*
@@ -1959,9 +1960,9 @@ vm_pageout_worker(void *arg)
 			 * and try again later.
 			 */
 			mtx_unlock(&vm_page_queue_free_mtx);
-			if (domain->vmd_pass > 1)
+			if (pass > 1)
 				pause("psleep", hz / 2);
-			domain->vmd_pass++;
+			pass++;
 		} else {
 			/*
 			 * Yes.  Sleep until pages need to be reclaimed or
@@ -1971,12 +1972,12 @@ vm_pageout_worker(void *arg)
 			    &vm_page_queue_free_mtx, PDROP | PVM, "psleep",
 			    hz) == 0) {
 				PCPU_INC(cnt.v_pdwakeups);
-				domain->vmd_pass = 1;
+				pass = 1;
 			} else
-				domain->vmd_pass = 0;
+				pass = 0;
 		}
 
-		target_met = vm_pageout_scan(domain, domain->vmd_pass);
+		target_met = vm_pageout_scan(domain, pass);
 	}
 }
 

From owner-svn-src-user@freebsd.org  Wed Oct  5 22:34:10 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id F0879AF50F0
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Wed,  5 Oct 2016 22:34:10 +0000 (UTC)
 (envelope-from pgollucci@p6m7g8.com)
Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com
 [IPv6:2a00:1450:400c:c09::22d])
 (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 8666BF62
 for <svn-src-user@freebsd.org>; Wed,  5 Oct 2016 22:34:10 +0000 (UTC)
 (envelope-from pgollucci@p6m7g8.com)
Received: by mail-wm0-x22d.google.com with SMTP id f193so256156419wmg.0
 for <svn-src-user@freebsd.org>; Wed, 05 Oct 2016 15:34:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=p6m7g8-com.20150623.gappssmtp.com; s=20150623;
 h=mime-version:in-reply-to:references:from:date:message-id:subject:to
 :cc; bh=gNnInE67WzWD86WvOFqDhta9DUzwv6JgYotibNQtxrg=;
 b=xEaqSpNQnee8HInfePsxqKsF2tUMUUz8H1rXxFiWGGY2QTvWwlh5XB/HfiEAvsRlvp
 GH1NrRJHoEYpMv1mqhX9lAzpw0QDdm+ERwpuJf3JjtkW3gNuJSI8Y+o5Fo2+WnJQDUN5
 ymIJibdP6mOT9HvY1/2Z4wtL+wtSQKYcDafNF5OMO78dEEozw0+gLY4H9WA1qlt4KQH+
 hfU8oq7Osf9SXTcHr7ETdq6sUSY93uLji3Lr1gkgAxfdb7TszFnkCfR6r6JJEg+5QZFl
 La9Wm7Vd3/YyC6Kk9wba8xKDe2kVe6ry+qKf7Tt11RFmIoq7uMdnwSqmjZ1r/2UQeFte
 YcBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:in-reply-to:references:from:date
 :message-id:subject:to:cc;
 bh=gNnInE67WzWD86WvOFqDhta9DUzwv6JgYotibNQtxrg=;
 b=HxoDV2pS9NPbSyowwUfBViFl6GV0IsYx+EeLH2TR7XhA0uGuTTKFViRpiW1NGuMFnm
 bQxCgnyTbXp1sPNlOc36NdMLNrrRvgwZg3faNQgV6UPrQ/2B0kCuxSxXtNd/1lh4HXW3
 1XxL3+4XN67EuJN3jWND3IeALUaIDn570a40vo0LphAsD8Ilkh5CEOnQzWbTGPsuPOWs
 y4DrJkpHzL0TmCEFpry9PWem6B02LkJXuvWeZCFwfBEvr+JGhhvQeYqcoTOH2s+yUU6p
 ys9mG+PoMnNr8Cw4R/bOHksJSdvi4yeUy14Ohw1W0UkiJyimE52ogM5KX9bq9T1jNGAL
 X8vg==
X-Gm-Message-State: AA6/9RlUoBF8TTifD4Maub6s4/WgG+npvsLnaYOrI6BMGE87zuqliit2532lC2jkBh8HizYVoOXwlwGO9aIV3A==
X-Received: by 10.28.229.149 with SMTP id c143mr2989322wmh.95.1475706849122;
 Wed, 05 Oct 2016 15:34:09 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.80.183.197 with HTTP; Wed, 5 Oct 2016 15:33:28 -0700 (PDT)
X-Originating-IP: [108.31.198.207]
In-Reply-To: <201610051803.u95I3Hq1040052@repo.freebsd.org>
References: <201610051803.u95I3Hq1040052@repo.freebsd.org>
From: "Philip M. Gollucci" <pgollucci@p6m7g8.com>
Date: Wed, 5 Oct 2016 18:33:28 -0400
Message-ID: <CACM2dAa0XrUm4zBaPnSQGrHY8+2RLYU5PKC+tgDTPrP0_r52XQ@mail.gmail.com>
Subject: Re: svn commit: r306713 - in user/alc/PQ_LAUNDRY: lib/libc/stdlib
 lib/msun/ld80 lib/msun/src sys/cam sys/vm
To: Alan Cox <alc@freebsd.org>
Cc: src-committers@freebsd.org, svn-src-user@freebsd.org
Content-Type: text/plain; charset=UTF-8
X-Content-Filtered-By: Mailman/MimeDel 2.1.23
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Oct 2016 22:34:11 -0000

I know you(Alan) didn't write this, its from the MFH, but how would len !=
expected.

neither are initialized or passed in
both times its set its expected = len = foo


On Wed, Oct 5, 2016 at 2:03 PM, Alan Cox <alc@freebsd.org> wrote:

> Modified: user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
> ============================================================
> ==================
> --- user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
> 17:32:06 2016        (r306712)
> +++ user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
> 18:03:17 2016        (r306713)
> @@ -270,16 +270,17 @@ void
>  srandomdev(void)
>  {
>         int mib[2];
> -       size_t len;
> +       size_t expected, len;
>
>         if (rand_type == TYPE_0)
> -               len = sizeof(state[0]);
> +               expected = len = sizeof(state[0]);
>         else
> -               len = rand_deg * sizeof(state[0]);
> +               expected = len = rand_deg * sizeof(state[0]);
>
>         mib[0] = CTL_KERN;
>         mib[1] = KERN_ARND;
> -       sysctl(mib, 2, state, &len, NULL, 0);
> +       if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected)
> +               abort();
>
>         if (rand_type != TYPE_0) {
>                 fptr = &state[rand_sep];
>




-- 
---------------------------------------------------------------------------------
4096R/D21D2752
<http://pgp.mit.edu/pks/lookup?op=get&search=0xF699A450D21D2752> ECDF B597
B54B 7F92 753E  E0EA F699 A450 D21D 2752
Philip M. Gollucci (pgollucci@p6m7g8.com) c: 703.336.9354
Member,                           Apache Software Foundation
Committer,                        FreeBSD Foundation
Consultant,                       P6M7G8 Inc.
Director Cloud Technology,        Capital One

What doesn't kill us can only make us stronger;
Except it almost kills you.

From owner-svn-src-user@freebsd.org  Thu Oct  6 00:13:20 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D82A0AF448A
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 00:13:20 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au
 [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id 82ACA9B6;
 Thu,  6 Oct 2016 00:13:19 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from c122-106-163-102.carlnfd1.nsw.optusnet.com.au
 (c122-106-163-102.carlnfd1.nsw.optusnet.com.au [122.106.163.102])
 by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id 44B5FD600A7;
 Thu,  6 Oct 2016 11:13:11 +1100 (AEDT)
Date: Thu, 6 Oct 2016 11:13:10 +1100 (EST)
From: Bruce Evans <brde@optusnet.com.au>
X-X-Sender: bde@besplex.bde.org
To: "Philip M. Gollucci" <pgollucci@p6m7g8.com>
cc: Alan Cox <alc@freebsd.org>, src-committers@freebsd.org, 
 svn-src-user@freebsd.org
Subject: Re: svn commit: r306713 - in user/alc/PQ_LAUNDRY: lib/libc/stdlib
 lib/msun/ld80 lib/msun/src sys/cam sys/vm
In-Reply-To: <CACM2dAa0XrUm4zBaPnSQGrHY8+2RLYU5PKC+tgDTPrP0_r52XQ@mail.gmail.com>
Message-ID: <20161006101333.N1163@besplex.bde.org>
References: <201610051803.u95I3Hq1040052@repo.freebsd.org>
 <CACM2dAa0XrUm4zBaPnSQGrHY8+2RLYU5PKC+tgDTPrP0_r52XQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-Optus-CM-Score: 0
X-Optus-CM-Analysis: v=2.1 cv=CoZCCSMD c=1 sm=1 tr=0
 a=IXAyHK3mFcy+1kvmsno0Fw==:117 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10
 a=s5jvgZ67dGcA:10 a=kj9zAlcOel0A:10 a=6I5d2MoRAAAA:8
 a=KO4GtmpiOqKhjvcpFJEA:9 a=cV0wJtvhprYiQA4Q:21 a=BLgT7fOEgMPPPvzW:21
 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 00:13:20 -0000

On Wed, 5 Oct 2016, Philip M. Gollucci wrote:

> I know you(Alan) didn't write this, its from the MFH, but how would len !=
> expected.
>
> neither are initialized or passed in
> both times its set its expected = len = foo

Er, both are initialized.  len is passed as an input/output parameter to
sysctl().  sysctl() can return a short count.  This is now detected by
recording the expected value in 'expected' and mishandled.  Previously,
the error wasn't even detected.

> On Wed, Oct 5, 2016 at 2:03 PM, Alan Cox <alc@freebsd.org> wrote:
>
>> Modified: user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
>> ============================================================
>> ==================
>> --- user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
>> 17:32:06 2016        (r306712)
>> +++ user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
>> 18:03:17 2016        (r306713)
>> @@ -270,16 +270,17 @@ void
>>  srandomdev(void)
>>  {
>>         int mib[2];
>> -       size_t len;
>> +       size_t expected, len;
>>
>>         if (rand_type == TYPE_0)
>> -               len = sizeof(state[0]);
>> +               expected = len = sizeof(state[0]);
>>         else
>> -               len = rand_deg * sizeof(state[0]);
>> +               expected = len = rand_deg * sizeof(state[0]);
>>
>>         mib[0] = CTL_KERN;
>>         mib[1] = KERN_ARND;
>> -       sysctl(mib, 2, state, &len, NULL, 0);
>> +       if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected)
>> +               abort();
>>
>>         if (rand_type != TYPE_0) {
>>                 fptr = &state[rand_sep];

I don't like this set of changes.

Originally, srandomdev() read from /dev/random.  read() can also return a
short count.  This was detected and mishandled, but not as badly as now.
The non-error of a short count was treated as an error, and both were
handled by falling back to the weak method of using gettimeofday().

This was broken by switching to the sysctl and not even checking for
errors from the sysctl.  The sysctl can and does fail, mainly when a
new userland is used with an old kernel.

This commit restores some error checking.

The implementation uses the style bugs of using the numbered sysctl
KERN_ARND.  This sysctl shouldn't exist by number, and isn't documented
by number.  It is too new to need a number or benefit from the careful
documentation of old numbered sysctls.  It is only documented by name
(kern.arandom), only in a wrong place (random(4)), and a naive reader
would expect from reading this man page that /dev/random is still the
primary interface.  Its behaviour of returning a short count might be
expected from the device's behaviour, but is not really documented for
the sysctl.  It is only documented that the sysctl will not return
random bytes unless the random device is seeded.  The return value for
this case is undocumented (is it 0 or -1?   Source code seems to say
that it is 0).  Anyway, errors seems to be possible, so abort() is not
acceptable handling.

This was handled much better in arc4random() and is still handled better
there despite recent regressions:
- the sysctl is wrapped by a function that retries for short counts.
   However, the sysctl usage has even larger style bugs -- the sysctl is
   by number, and sysctl() is named __sysctl()
- error handling was not missing.  Perhaps the retry loop can spin forever
   with a short count of 0, but if the sysctl fails then there was a fallback
   first to reading /dev/random and then to the weak gettimeofday() method.

Now there is no fallback, and the difference is just the retry loop.

The first step in the removed fallback in arc4random() was not weaker
like the log message says.  It is to the primary method according to
the man page.  According to the man page, reading /dev/random blocks
until the RNG is seeded for the first time.  Blocking for the sysctl
is undocumented.  I think the sysctl returns a short count of 0, and
we treat this as an error and abort(), so applications running early
in the boot crash instead of having the traditional behaviour of hanging.

It is unclear if short counts of nonzero can actually occur.  I think
they could easily occur in older implementations where /dev/random
blocked for more cases than before the initial seeding.  I think they
should still be possible.  Even if there is no need to block, it is
useful to be able to kill a read() with a preposterously large count.
If interrupts are allowed at all, then after one the return value must
be either -1 or a short count.  That is another reason why abort() in
a library is bad error handling.  It turns most signals into SIGABRT.

Bruce

From owner-svn-src-user@freebsd.org  Thu Oct  6 00:27:56 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9D1EBAF48DF
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 00:27:56 +0000 (UTC)
 (envelope-from pgollucci@p6m7g8.com)
Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com
 [IPv6:2a00:1450:400c:c09::22d])
 (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 24DC2B4
 for <svn-src-user@freebsd.org>; Thu,  6 Oct 2016 00:27:56 +0000 (UTC)
 (envelope-from pgollucci@p6m7g8.com)
Received: by mail-wm0-x22d.google.com with SMTP id b201so14081579wmb.0
 for <svn-src-user@freebsd.org>; Wed, 05 Oct 2016 17:27:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=p6m7g8-com.20150623.gappssmtp.com; s=20150623;
 h=mime-version:in-reply-to:references:from:date:message-id:subject:to
 :cc; bh=wpObL4yyRuvDnJxo5UOHkiWeFlhHxY0gFSvNeGHmz+c=;
 b=NbfZ/dK0nsIohDAB3f5P681EawOVdAbouOfHMOBdtGiT1/YkzQJObXzqanJ3nEwsb1
 dfz0cl8QbCz0urjsQ3pRtzlMSRqvfm2Z7p2p7yXmymLzqZoz15KmgkMQcvt9+bWbigb6
 eBEEpvL44RUyKhwZy5itgZmGqySDT2cXKieFz9LPHBgQDDgEEEGH1asg8yGq6+RCBGoB
 LjLlIjfzXcKjl8IIAXHs5tWNuJv6fQXTp/TKmWKBz6LsJAMwei2MRXeKLtbPw8kz1B6N
 yT5nb5YqYNY9VNcbLYoDHHowFKIGUUUUgFC9GZxtrg0d4zqPnyhTk331zCf3MwWocstQ
 +0Dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:in-reply-to:references:from:date
 :message-id:subject:to:cc;
 bh=wpObL4yyRuvDnJxo5UOHkiWeFlhHxY0gFSvNeGHmz+c=;
 b=POrmBCk/kLbo2AC3X+EM5F/z0K5aY2f69IrmSKYb4QoJcCcL9UIkXvmgrKaN35tNBV
 EeNwKKC9oX1Ys8GWbEFmhPAXhH44woVl+OWCZ/OnWgtA7NaSIObYiSREH6Dql+qWkfAM
 rcrDudYc6ynr32Ti3y+QXPUNbvAAmMCe/9DYDFJvM79WFdoKu/Yocc++svaFVl/KlgXh
 x5Pfxy4IjBIT+63fULNd2m57wCHYNi1CR+/jH1W74TXtpOswUI2ytxXXlSyLPz/G8LOP
 hGe+M1Ix8mrfVr+gZU5mQhDHUo2cxG+/vJdT9MJWJ4vEr7R6JleqQIeZYoHPhv1hb9lw
 5o7A==
X-Gm-Message-State: AA6/9Rn1htekJsGTcvoxUbrDuYywzW/yRrZ/n/6BPjb5QfaTOB/Q4lHljRfhMcd6lJQuPQIIvGx69n1OVqi0Xg==
X-Received: by 10.28.133.70 with SMTP id h67mr11487918wmd.61.1475713674688;
 Wed, 05 Oct 2016 17:27:54 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.80.183.197 with HTTP; Wed, 5 Oct 2016 17:27:14 -0700 (PDT)
X-Originating-IP: [108.31.198.207]
In-Reply-To: <20161006101333.N1163@besplex.bde.org>
References: <201610051803.u95I3Hq1040052@repo.freebsd.org>
 <CACM2dAa0XrUm4zBaPnSQGrHY8+2RLYU5PKC+tgDTPrP0_r52XQ@mail.gmail.com>
 <20161006101333.N1163@besplex.bde.org>
From: "Philip M. Gollucci" <pgollucci@p6m7g8.com>
Date: Wed, 5 Oct 2016 20:27:14 -0400
Message-ID: <CACM2dAaU33=noBBc2TXRJR3BAHe0MjyF1gkh10k=dRbkF=-RHg@mail.gmail.com>
Subject: Re: svn commit: r306713 - in user/alc/PQ_LAUNDRY: lib/libc/stdlib
 lib/msun/ld80 lib/msun/src sys/cam sys/vm
To: Bruce Evans <brde@optusnet.com.au>
Cc: Alan Cox <alc@freebsd.org>, src-committers@freebsd.org,
 svn-src-user@freebsd.org
Content-Type: text/plain; charset=UTF-8
X-Content-Filtered-By: Mailman/MimeDel 2.1.23
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 00:27:56 -0000

Duh, I missed that sysctl writes to it.  My fault.  You're of course
correct.

On Wed, Oct 5, 2016 at 8:13 PM, Bruce Evans <brde@optusnet.com.au> wrote:

> On Wed, 5 Oct 2016, Philip M. Gollucci wrote:
>
> I know you(Alan) didn't write this, its from the MFH, but how would len !=
>> expected.
>>
>> neither are initialized or passed in
>> both times its set its expected = len = foo
>>
>
> Er, both are initialized.  len is passed as an input/output parameter to
> sysctl().  sysctl() can return a short count.  This is now detected by
> recording the expected value in 'expected' and mishandled.  Previously,
> the error wasn't even detected.
>
> On Wed, Oct 5, 2016 at 2:03 PM, Alan Cox <alc@freebsd.org> wrote:
>>
>> Modified: user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
>>> ============================================================
>>> ==================
>>> --- user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
>>> 17:32:06 2016        (r306712)
>>> +++ user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c        Wed Oct  5
>>> 18:03:17 2016        (r306713)
>>> @@ -270,16 +270,17 @@ void
>>>  srandomdev(void)
>>>  {
>>>         int mib[2];
>>> -       size_t len;
>>> +       size_t expected, len;
>>>
>>>         if (rand_type == TYPE_0)
>>> -               len = sizeof(state[0]);
>>> +               expected = len = sizeof(state[0]);
>>>         else
>>> -               len = rand_deg * sizeof(state[0]);
>>> +               expected = len = rand_deg * sizeof(state[0]);
>>>
>>>         mib[0] = CTL_KERN;
>>>         mib[1] = KERN_ARND;
>>> -       sysctl(mib, 2, state, &len, NULL, 0);
>>> +       if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len !=
>>> expected)
>>> +               abort();
>>>
>>>         if (rand_type != TYPE_0) {
>>>                 fptr = &state[rand_sep];
>>>
>>
> I don't like this set of changes.
>
> Originally, srandomdev() read from /dev/random.  read() can also return a
> short count.  This was detected and mishandled, but not as badly as now.
> The non-error of a short count was treated as an error, and both were
> handled by falling back to the weak method of using gettimeofday().
>
> This was broken by switching to the sysctl and not even checking for
> errors from the sysctl.  The sysctl can and does fail, mainly when a
> new userland is used with an old kernel.
>
> This commit restores some error checking.
>
> The implementation uses the style bugs of using the numbered sysctl
> KERN_ARND.  This sysctl shouldn't exist by number, and isn't documented
> by number.  It is too new to need a number or benefit from the careful
> documentation of old numbered sysctls.  It is only documented by name
> (kern.arandom), only in a wrong place (random(4)), and a naive reader
> would expect from reading this man page that /dev/random is still the
> primary interface.  Its behaviour of returning a short count might be
> expected from the device's behaviour, but is not really documented for
> the sysctl.  It is only documented that the sysctl will not return
> random bytes unless the random device is seeded.  The return value for
> this case is undocumented (is it 0 or -1?   Source code seems to say
> that it is 0).  Anyway, errors seems to be possible, so abort() is not
> acceptable handling.
>
> This was handled much better in arc4random() and is still handled better
> there despite recent regressions:
> - the sysctl is wrapped by a function that retries for short counts.
>   However, the sysctl usage has even larger style bugs -- the sysctl is
>   by number, and sysctl() is named __sysctl()
> - error handling was not missing.  Perhaps the retry loop can spin forever
>   with a short count of 0, but if the sysctl fails then there was a
> fallback
>   first to reading /dev/random and then to the weak gettimeofday() method.
>
> Now there is no fallback, and the difference is just the retry loop.
>
> The first step in the removed fallback in arc4random() was not weaker
> like the log message says.  It is to the primary method according to
> the man page.  According to the man page, reading /dev/random blocks
> until the RNG is seeded for the first time.  Blocking for the sysctl
> is undocumented.  I think the sysctl returns a short count of 0, and
> we treat this as an error and abort(), so applications running early
> in the boot crash instead of having the traditional behaviour of hanging.
>
> It is unclear if short counts of nonzero can actually occur.  I think
> they could easily occur in older implementations where /dev/random
> blocked for more cases than before the initial seeding.  I think they
> should still be possible.  Even if there is no need to block, it is
> useful to be able to kill a read() with a preposterously large count.
> If interrupts are allowed at all, then after one the return value must
> be either -1 or a short count.  That is another reason why abort() in
> a library is bad error handling.  It turns most signals into SIGABRT.
>
> Bruce
>



-- 
---------------------------------------------------------------------------------
4096R/D21D2752
<http://pgp.mit.edu/pks/lookup?op=get&search=0xF699A450D21D2752> ECDF B597
B54B 7F92 753E  E0EA F699 A450 D21D 2752
Philip M. Gollucci (pgollucci@p6m7g8.com) c: 703.336.9354
Member,                           Apache Software Foundation
Committer,                        FreeBSD Foundation
Consultant,                       P6M7G8 Inc.
Director Cloud Technology,        Capital One

What doesn't kill us can only make us stronger;
Except it almost kills you.

From owner-svn-src-user@freebsd.org  Thu Oct  6 03:14:10 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 04F14AF7340
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 03:14:10 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id BDF6D13BF;
 Thu,  6 Oct 2016 03:14:09 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u963E8jV055173;
 Thu, 6 Oct 2016 03:14:08 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u963E8vV055172;
 Thu, 6 Oct 2016 03:14:08 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610060314.u963E8vV055172@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Thu, 6 Oct 2016 03:14:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306749 - user/alc/PQ_LAUNDRY/sys/vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 03:14:10 -0000

Author: alc
Date: Thu Oct  6 03:14:08 2016
New Revision: 306749
URL: https://svnweb.freebsd.org/changeset/base/306749

Log:
  In contrast to HEAD, the PQ_LAUNDRY page daemon should pause() after a
  level == 1 pass.
  
  Reviewed by:	markj

Modified:
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Thu Oct  6 01:52:00 2016	(r306748)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Thu Oct  6 03:14:08 2016	(r306749)
@@ -1244,8 +1244,8 @@ dolaundry:
 /*
  *	vm_pageout_scan does the dirty work for the pageout daemon.
  *
- *	pass 0 - Update active LRU/deactivate pages
- *	pass 1 - Free inactive pages
+ *	pass == 0: Update active LRU/deactivate pages
+ *	pass >= 1: Free inactive pages
  *
  * Returns true if pass was zero or enough pages were freed by the inactive
  * queue scan to meet the target.
@@ -1954,13 +1954,13 @@ vm_pageout_worker(void *arg)
 			 * thread during the previous scan, which must have
 			 * been a level 0 scan, or vm_pageout_wanted was
 			 * already set and the scan failed to free enough
-			 * pages.  If we haven't yet performed a level >= 2
-			 * scan (unlimited dirty cleaning), then upgrade the
-			 * level and scan again now.  Otherwise, sleep a bit
-			 * and try again later.
+			 * pages.  If we haven't yet performed a level >= 1
+			 * (page reclamation) scan, then increase the level
+			 * and scan again now.  Otherwise, sleep a bit and
+			 * try again later.
 			 */
 			mtx_unlock(&vm_page_queue_free_mtx);
-			if (pass > 1)
+			if (pass >= 1)
 				pause("psleep", hz / 2);
 			pass++;
 		} else {

From owner-svn-src-user@freebsd.org  Thu Oct  6 15:30:27 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 40DB3BE9DA7
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 15:30:27 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 13496D21;
 Thu,  6 Oct 2016 15:30:27 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u96FUQil040798;
 Thu, 6 Oct 2016 15:30:26 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u96FUQE2040797;
 Thu, 6 Oct 2016 15:30:26 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610061530.u96FUQE2040797@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Thu, 6 Oct 2016 15:30:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306763 - user/alc/PQ_LAUNDRY/sys/vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 15:30:27 -0000

Author: alc
Date: Thu Oct  6 15:30:26 2016
New Revision: 306763
URL: https://svnweb.freebsd.org/changeset/base/306763

Log:
  Define the sysctl for the number of laundry thread wakeups.

Modified:
  user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Thu Oct  6 15:20:05 2016	(r306762)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Thu Oct  6 15:30:26 2016	(r306763)
@@ -287,6 +287,7 @@ VM_STATS_VM(v_vnodepgsin, "Vnode pages p
 VM_STATS_VM(v_vnodepgsout, "Vnode pages paged out");
 VM_STATS_VM(v_intrans, "In transit page faults");
 VM_STATS_VM(v_reactivated, "Pages reactivated by pagedaemon");
+VM_STATS_VM(v_ltwakeups, "Laundry thread wakeups");
 VM_STATS_VM(v_pdwakeups, "Pagedaemon wakeups");
 VM_STATS_VM(v_pdpages, "Pages analyzed by pagedaemon");
 VM_STATS_VM(v_tcached, "Total pages cached");

From owner-svn-src-user@freebsd.org  Thu Oct  6 18:43:10 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 76ED2BECF87
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 18:43:10 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 3DB7EE87;
 Thu,  6 Oct 2016 18:43:10 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u96Ih9UT018448;
 Thu, 6 Oct 2016 18:43:09 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u96Ih9IS018447;
 Thu, 6 Oct 2016 18:43:09 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610061843.u96Ih9IS018447@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Thu, 6 Oct 2016 18:43:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306776 - user/alc/PQ_LAUNDRY/usr.bin/vmstat
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 18:43:10 -0000

Author: markj
Date: Thu Oct  6 18:43:09 2016
New Revision: 306776
URL: https://svnweb.freebsd.org/changeset/base/306776

Log:
  Revert r306596: it was intended for a downstream branch.

Modified:
  user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c

Modified: user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Thu Oct  6 18:10:19 2016	(r306775)
+++ user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Thu Oct  6 18:43:09 2016	(r306776)
@@ -1082,6 +1082,8 @@ dosum(void)
 		sum.v_vforkpages);
 	xo_emit("{:pages-rfork/%9u} {N:pages affected by rfork}()\n",
 		sum.v_rforkpages);
+	xo_emit("{:pages-total-cached/%9u} {N:pages cached}\n",
+		sum.v_tcached);
 	xo_emit("{:pages-freed/%9u} {N:pages freed}\n",
 		sum.v_tfree);
 	xo_emit("{:pages-freed-by-daemon/%9u} {N:pages freed by daemon}\n",

From owner-svn-src-user@freebsd.org  Thu Oct  6 18:45:14 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 76BDEBECFAD
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Thu,  6 Oct 2016 18:45:14 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 45D03FC0;
 Thu,  6 Oct 2016 18:45:14 +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 u96IjDch018629;
 Thu, 6 Oct 2016 18:45:13 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u96IjAYC018600;
 Thu, 6 Oct 2016 18:45:10 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610061845.u96IjAYC018600@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Thu, 6 Oct 2016 18:45:10 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306777 - in user/alc/PQ_LAUNDRY: bin/chio bin/dd
 bin/echo bin/expr bin/pwd bin/stty bin/test gnu/usr.bin/groff lib/libc/sys
 lib/libcapsicum sbin/atm/atmconfig sbin/bsdlabel sbin/clri s...
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 06 Oct 2016 18:45:14 -0000

Author: markj
Date: Thu Oct  6 18:45:10 2016
New Revision: 306777
URL: https://svnweb.freebsd.org/changeset/base/306777

Log:
  MFH r306776

Added:
  user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/mdate.sh
     - copied unchanged from r306776, head/gnu/usr.bin/groff/mdate.sh
  user/alc/PQ_LAUNDRY/lib/libcapsicum/capsicum_helpers.3
     - copied unchanged from r306776, head/lib/libcapsicum/capsicum_helpers.3
  user/alc/PQ_LAUNDRY/share/man/man9/dnv.9
     - copied unchanged from r306776, head/share/man/man9/dnv.9
Modified:
  user/alc/PQ_LAUNDRY/bin/chio/chio.1
  user/alc/PQ_LAUNDRY/bin/dd/dd.1
  user/alc/PQ_LAUNDRY/bin/echo/echo.1
  user/alc/PQ_LAUNDRY/bin/expr/expr.1
  user/alc/PQ_LAUNDRY/bin/pwd/pwd.1
  user/alc/PQ_LAUNDRY/bin/stty/stty.1
  user/alc/PQ_LAUNDRY/bin/test/test.1
  user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/Makefile.inc
  user/alc/PQ_LAUNDRY/lib/libc/sys/kqueue.2
  user/alc/PQ_LAUNDRY/lib/libcapsicum/Makefile
  user/alc/PQ_LAUNDRY/sbin/atm/atmconfig/atmconfig.8
  user/alc/PQ_LAUNDRY/sbin/bsdlabel/bsdlabel.8
  user/alc/PQ_LAUNDRY/sbin/clri/clri.8
  user/alc/PQ_LAUNDRY/sbin/devd/devd.8
  user/alc/PQ_LAUNDRY/sbin/devfs/devfs.8
  user/alc/PQ_LAUNDRY/sbin/fdisk/fdisk.8
  user/alc/PQ_LAUNDRY/sbin/fdisk_pc98/fdisk.8
  user/alc/PQ_LAUNDRY/sbin/fsck/fsck.8
  user/alc/PQ_LAUNDRY/sbin/fsck_ffs/fsck_ffs.8
  user/alc/PQ_LAUNDRY/sbin/natd/natd.8
  user/alc/PQ_LAUNDRY/sbin/nos-tun/nos-tun.8
  user/alc/PQ_LAUNDRY/sbin/savecore/savecore.c
  user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5
  user/alc/PQ_LAUNDRY/share/man/man9/Makefile
  user/alc/PQ_LAUNDRY/share/man/man9/style.9
  user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/altera/socfpga/socfpga_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/amlogic/aml8726/aml8726_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/busdma_machdep-v6.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpufunc_asm_armv7.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/cpuinfo.c
  user/alc/PQ_LAUNDRY/sys/arm/arm/locore-v6.S
  user/alc/PQ_LAUNDRY/sys/arm/arm/mp_machdep.c
  user/alc/PQ_LAUNDRY/sys/arm/broadcom/bcm2835/bcm2836_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/freescale/imx/imx6_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/include/cpu-v6.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpufunc.h
  user/alc/PQ_LAUNDRY/sys/arm/include/cpuinfo.h
  user/alc/PQ_LAUNDRY/sys/arm/mv/armada38x/pmsu.c
  user/alc/PQ_LAUNDRY/sys/arm/nvidia/tegra124/tegra124_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/rockchip/rk30xx_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/samsung/exynos/exynos5_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpsw.c
  user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpswreg.h
  user/alc/PQ_LAUNDRY/sys/arm/ti/cpsw/if_cpswvar.h
  user/alc/PQ_LAUNDRY/sys/arm/ti/omap4/omap4_mp.c
  user/alc/PQ_LAUNDRY/sys/arm/xilinx/zy7_mp.c
  user/alc/PQ_LAUNDRY/sys/boot/efi/boot1/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/i386/gptzfsboot/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/i386/zfsboot/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/userboot/zfs/Makefile
  user/alc/PQ_LAUNDRY/sys/boot/zfs/Makefile
  user/alc/PQ_LAUNDRY/sys/cam/cam_compat.c
  user/alc/PQ_LAUNDRY/sys/cam/cam_compat.h
  user/alc/PQ_LAUNDRY/sys/dev/atkbdc/psm.c
  user/alc/PQ_LAUNDRY/sys/dev/netmap/netmap_kern.h
  user/alc/PQ_LAUNDRY/sys/geom/mirror/g_mirror.c
  user/alc/PQ_LAUNDRY/sys/geom/mirror/g_mirror.h
  user/alc/PQ_LAUNDRY/sys/geom/mirror/g_mirror_ctl.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_bio.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_subr.c
  user/alc/PQ_LAUNDRY/sys/net/altq/altq_subr.c
  user/alc/PQ_LAUNDRY/sys/net/if_var.h
  user/alc/PQ_LAUNDRY/sys/net/route.c
  user/alc/PQ_LAUNDRY/sys/net/route_var.h
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_cdg.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_cubic.c
  user/alc/PQ_LAUNDRY/sys/netinet/cc/cc_htcp.c
  user/alc/PQ_LAUNDRY/sys/netinet/khelp/h_ertt.c
  user/alc/PQ_LAUNDRY/sys/netinet/sctp_bsd_addr.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_debug.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_hostcache.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_hostcache.h
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_input.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_output.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_seq.h
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_stacks/fastpath.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_subr.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_usrreq.c
  user/alc/PQ_LAUNDRY/sys/netinet/tcp_var.h
  user/alc/PQ_LAUNDRY/sys/sys/vnode.h
  user/alc/PQ_LAUNDRY/tools/build/options/makeman
  user/alc/PQ_LAUNDRY/usr.bin/locate/locate/locate.c
  user/alc/PQ_LAUNDRY/usr.bin/locate/locate/util.c
  user/alc/PQ_LAUNDRY/usr.bin/login/login_audit.c
  user/alc/PQ_LAUNDRY/usr.bin/write/write.c
  user/alc/PQ_LAUNDRY/usr.sbin/trpt/trpt.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)

Modified: user/alc/PQ_LAUNDRY/bin/chio/chio.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/chio/chio.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/chio/chio.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 2, 2016
+.Dd October 5, 2016
 .Dt CHIO 1
 .Os
 .Sh NAME
@@ -287,6 +287,14 @@ Configure the changer to use picker 2 (t
 .Sh SEE ALSO
 .Xr mt 1 ,
 .Xr mount 8
+.Sh HISTORY
+A
+.Nm
+utility appeared in
+.Nx 1.3 .
+.Nm
+first appeared in
+.Fx 2.2 .
 .Sh AUTHORS
 .An -nosplit
 The

Modified: user/alc/PQ_LAUNDRY/bin/dd/dd.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/dd/dd.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/dd/dd.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"     @(#)dd.1	8.2 (Berkeley) 1/13/94
 .\" $FreeBSD$
 .\"
-.Dd August 25, 2016
+.Dd October 5, 2016
 .Dt DD 1
 .Os
 .Sh NAME
@@ -447,6 +447,11 @@ and
 values are extensions to the
 .Tn POSIX
 standard.
+.Sh HISTORY
+A
+.Nm
+command appeared in
+.At v5 .
 .Sh BUGS
 Protection mechanisms in the
 .Xr geom 4

Modified: user/alc/PQ_LAUNDRY/bin/echo/echo.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/echo/echo.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/echo/echo.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"	@(#)echo.1	8.1 (Berkeley) 7/22/93
 .\" $FreeBSD$
 .\"
-.Dd November 12, 2010
+.Dd October 5, 2016
 .Dt ECHO 1
 .Os
 .Sh NAME
@@ -103,3 +103,8 @@ The
 utility conforms to
 .St -p1003.1-2001
 as amended by Cor.\& 1-2002.
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.At v2 .

Modified: user/alc/PQ_LAUNDRY/bin/expr/expr.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/expr/expr.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/expr/expr.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -30,7 +30,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 25, 2012
+.Dd October 5, 2016
 .Dt EXPR 1
 .Os
 .Sh NAME
@@ -309,3 +309,19 @@ these arguments are treated just as thei
 The
 .Fl e
 flag is an extension.
+.Sh HISTORY
+An
+.Nm
+utility first appeared in the Programmer's Workbench (PWB/UNIX).
+A public domain version of
+.Nm
+written by
+.An Pace Willisson Aq Mt pace@blitz.com
+appeared in
+.Bx 386 0.1 .
+.Sh AUTHORS
+Initial implementation by
+.An Pace Willisson Aq Mt pace@blitz.com
+was largely rewritten by
+.An -nosplit
+.An J.T. Conklin Aq Mt jtc@FreeBSD.org .

Modified: user/alc/PQ_LAUNDRY/bin/pwd/pwd.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/pwd/pwd.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/pwd/pwd.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"     @(#)pwd.1	8.2 (Berkeley) 4/28/95
 .\" $FreeBSD$
 .\"
-.Dd April 12, 2003
+.Dd October 5, 2016
 .Dt PWD 1
 .Os
 .Sh NAME
@@ -85,6 +85,11 @@ The
 .Nm
 utility conforms to
 .St -p1003.1-2001 .
+.Sh HISTORY
+The
+.Nm 
+command appeared in
+.At v5 .
 .Sh BUGS
 In
 .Xr csh 1

Modified: user/alc/PQ_LAUNDRY/bin/stty/stty.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/stty/stty.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/stty/stty.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"     @(#)stty.1	8.4 (Berkeley) 4/18/94
 .\" $FreeBSD$
 .\"
-.Dd August 23, 2008
+.Dd October 5, 2016
 .Dt STTY 1
 .Os
 .Sh NAME
@@ -601,3 +601,8 @@ and
 .Fl f
 are
 extensions to the standard.
+.Sh HISTORY
+A
+.Nm
+command appeared in
+.At v2 .

Modified: user/alc/PQ_LAUNDRY/bin/test/test.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/test/test.1	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/bin/test/test.1	Thu Oct  6 18:45:10 2016	(r306777)
@@ -32,7 +32,7 @@
 .\"     @(#)test.1	8.1 (Berkeley) 5/31/93
 .\" $FreeBSD$
 .\"
-.Dd June 1, 2013
+.Dd October 5, 2016
 .Dt TEST 1
 .Os
 .Sh NAME
@@ -376,6 +376,11 @@ The primaries
 and
 .Fl O
 are extensions.
+.Sh HISTORY
+A
+.Nm
+utility appeared in
+.At v7 .
 .Sh BUGS
 Both sides are always evaluated in
 .Fl a

Modified: user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/Makefile.inc
==============================================================================
--- user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/Makefile.inc	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/Makefile.inc	Thu Oct  6 18:45:10 2016	(r306777)
@@ -119,7 +119,7 @@ revision=`sed -e 's/^0$$//' -e 's/^[1-9]
 	-e "s;@TMAC_MDIR@;$(tmacdir)/mm;g" \
 	-e "s;@BROKEN_SPOOLER_FLAGS@;$(BROKEN_SPOOLER_FLAGS);g" \
 	-e "s;@VERSION@;$(version)$(revision);g" \
-	-e "s;@MDATE@;`$(SHELL) ${GROFF_DIST}/mdate.sh $<`;g" \
+	-e "s;@MDATE@;$(MDATE);g" \
 	-e "s;@g@;$(g);g" \
 	-e "s;@G@;`echo $(g) | LC_ALL=C tr a-z A-Z`;g" \
 	$< >$@
@@ -141,4 +141,5 @@ TOPREL?=	..
 GROFF_DIST=	${.CURDIR}/${TOPREL}/../../../contrib/groff
 DIST_SUBDIR?=	${.CURDIR:T}
 DIST_DIR=	${GROFF_DIST}/${DIST_SUBDIR}
+MDATE!=		sh ${.CURDIR}/${TOPREL}/mdate.sh ${GROFF_DIST}/ChangeLog
 .PATH: ${DIST_DIR}

Copied: user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/mdate.sh (from r306776, head/gnu/usr.bin/groff/mdate.sh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/gnu/usr.bin/groff/mdate.sh	Thu Oct  6 18:45:10 2016	(r306777, copy of r306776, head/gnu/usr.bin/groff/mdate.sh)
@@ -0,0 +1,9 @@
+#!/bin/sh
+# $FreeBSD$
+
+set -e
+test -r "$1"
+export LC_ALL=C
+changelog_date=$(sed -E -n 's/^([0-9]{4}-[0-9]{2}-[0-9]{2}).*$/\1/p' "$1" |\
+    head -n 1)
+echo $(date -j -f %Y-%m-%d +"%e %B %Y" $changelog_date)

Modified: user/alc/PQ_LAUNDRY/lib/libc/sys/kqueue.2
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/sys/kqueue.2	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/lib/libc/sys/kqueue.2	Thu Oct  6 18:45:10 2016	(r306777)
@@ -375,7 +375,7 @@ A file descriptor referencing the monito
 The closed file descriptor did not have write access.
 .It Dv NOTE_CLOSE_WRITE
 A file descriptor referencing the monitored file, was closed.
-The closed file descriptor has write access.
+The closed file descriptor had write access.
 .Pp
 This note, as well as
 .Dv NOTE_CLOSE ,

Modified: user/alc/PQ_LAUNDRY/lib/libcapsicum/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libcapsicum/Makefile	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/lib/libcapsicum/Makefile	Thu Oct  6 18:45:10 2016	(r306777)
@@ -4,4 +4,14 @@ PACKAGE=lib${LIB}
 
 INCS=	capsicum_helpers.h
 
+MAN+=	capsicum_helpers.3
+
+MLINKS+=capsicum_helpers.3 caph_limit_stream.3
+MLINKS+=capsicum_helpers.3 caph_limit_stdin.3
+MLINKS+=capsicum_helpers.3 caph_limit_stderr.3
+MLINKS+=capsicum_helpers.3 caph_limit_stdout.3
+MLINKS+=capsicum_helpers.3 caph_limit_stdio.3
+MLINKS+=capsicum_helpers.3 caph_cache_tzdata.3
+MLINKS+=capsicum_helpers.3 caph_cache_catpages.3
+
 .include <bsd.lib.mk>

Copied: user/alc/PQ_LAUNDRY/lib/libcapsicum/capsicum_helpers.3 (from r306776, head/lib/libcapsicum/capsicum_helpers.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/lib/libcapsicum/capsicum_helpers.3	Thu Oct  6 18:45:10 2016	(r306777, copy of r306776, head/lib/libcapsicum/capsicum_helpers.3)
@@ -0,0 +1,110 @@
+.\" Copyright (c) 2016 Mariusz Zaborski <oshogbo@FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS 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 AUTHORS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 5, 2016
+.Dt CAPSICUM_HELPERS 3
+.Os
+.Sh NAME
+.Nm caph_limit_stream ,
+.Nm caph_limit_stdin ,
+.Nm caph_limit_stderr ,
+.Nm caph_limit_stdout ,
+.Nm caph_limit_stdio ,
+.Nm caph_cache_tzdata ,
+.Nm caph_cache_catpages
+.Nd "set of the functions , part of the libcapsicum"
+.Sh LIBRARY
+.Lb libcapsicum
+.Sh SYNOPSIS
+.In capsicum_helpers.h
+.Ft int
+.Fn caph_limit_stream "int fd, int flags"
+.Ft int
+.Fn caph_limit_stdin "void"
+.Ft int
+.Fn caph_limit_stderr "void"
+.Ft int
+.Fn caph_limit_stdout "void"
+.Ft int
+.Fn caph_limit_stdio "void"
+.Ft void
+.Fn caph_cache_tzdata "void"
+.Ft void
+.Fn caph_cache_catpages "void"
+.Sh DESCRIPTION
+The
+.Nm capsicum helpers
+are a set of a inline functions which simplify Capsicumizing programs.
+The goal is to reduce duplicated code patterns.
+The
+.Nm capsicum helpers
+are part of
+.Nm libcapsicum
+but there is no need to link to the library.
+.Pp
+.Fn caph_limit_stream
+restricts capabilities on
+.Fa fd
+to only those needed by POSIX stream objects (that is, FILEs).
+.Pp
+The following flags can be provided:
+.Pp
+.Bl -tag -width "CAPH_IGNORE_EBADF" -compact -offset indent
+.It Dv CAPH_IGNORE_EBADF
+Do not return an error if file descriptor is invalid.
+.It Dv CAPH_READ
+Set CAP_READ on limited descriptor.
+.It Dv CAPH_WRITE
+Set CAP_WRITE on limited descriptor.
+.El
+.Pp
+.Fn caph_limit_stdin ,
+.Fn caph_limit_stderr
+and
+.Fn caph_limit_stdout
+limit standard descriptors using the
+.Nm caph_limit_stream
+function.
+.Pp
+.Fn caph_limit_stdio
+limits stdin, stderr and stdout.
+.Pp
+.Fn caph_cache_tzdata
+precaches all timezone data needed to use
+.Li libc
+local time functions.
+.Pp
+.Fn caph_cache_catpages
+caches Native Language Support (NLS) data.
+NLS data is used for localized error printing by
+.Xr strerror 3
+and
+.Xr err 3 ,
+among others.
+.Ed
+.Sh SEE ALSO
+.Xr cap_enter 2 ,
+.Xr rights 4

Modified: user/alc/PQ_LAUNDRY/sbin/atm/atmconfig/atmconfig.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/atm/atmconfig/atmconfig.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/atm/atmconfig/atmconfig.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -1,7 +1,7 @@
 .\"
 .\" Copyright (c) 2001-2003
 .\"	Fraunhofer Institute for Open Communication Systems (FhG Fokus).
-.\" 	All rights reserved.
+.\"	All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 11, 2003
+.Dd October 5, 2016
 .Dt ATMCONFIG 8
 .Os
 .Sh NAME
@@ -314,5 +314,10 @@ List all NATM routes.
 .Sh SEE ALSO
 .Xr natm 4 ,
 .Xr natmip 4
+.Sh HISTORY
+An
+.Nm
+command appeared in
+.Fx 3.0 .
 .Sh AUTHORS
 .An Hartmut Brandt Aq Mt harti@FreeBSD.org

Modified: user/alc/PQ_LAUNDRY/sbin/bsdlabel/bsdlabel.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/bsdlabel/bsdlabel.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/bsdlabel/bsdlabel.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -31,7 +31,7 @@
 .\"	@(#)disklabel.8	8.2 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\"
-.Dd October 1, 2013
+.Dd October 5, 2016
 .Dt BSDLABEL 8
 .Os
 .Sh NAME
@@ -466,7 +466,7 @@ which could be used as a source file for
 
 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
-  a:   400M       16    4.2BSD     4096 16384    75 	# (Cyl.    0 - 812*)
+  a:   400M       16    4.2BSD     4096 16384    75    # (Cyl.    0 - 812*)
   b:     1G        *      swap
   c:      *        *    unused
   e: 204800        *    4.2BSD
@@ -500,3 +500,8 @@ are not generally compatible.
 .Xr boot0cfg 8 ,
 .Xr gpart 8 ,
 .Xr newfs 8
+.Sh HISTORY
+The
+.Nm disklabel
+utility appeared in
+.Bx 4.3 Tahoe .

Modified: user/alc/PQ_LAUNDRY/sbin/clri/clri.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/clri/clri.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/clri/clri.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -28,7 +28,7 @@
 .\"	@(#)clri.8	8.2 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\"
-.Dd April 19, 1994
+.Dd October 5, 2016
 .Dt CLRI 8
 .Os
 .Sh NAME
@@ -70,6 +70,11 @@ will be able to clean up the resulting m
 .Sh SEE ALSO
 .Xr fsck 8 ,
 .Xr fsdb 8
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.At v6 .
 .Sh BUGS
 If the file is open, the work of
 .Nm

Modified: user/alc/PQ_LAUNDRY/sbin/devd/devd.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/devd/devd.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/devd/devd.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 14, 2014
+.Dd October 5, 2016
 .Dt DEVD 8
 .Os
 .Sh NAME
@@ -62,7 +62,8 @@ The default connection limit is 10.
 Do not process all pending events before becoming a daemon.
 Instead, call daemon right away.
 .It Fl q
-Quiet mode.  Only log messages at priority LOG_WARNING or above.
+Quiet mode.
+Only log messages at priority LOG_WARNING or above.
 .El
 .Sh IMPLEMENTATION NOTES
 The
@@ -153,5 +154,10 @@ A deprecated socket retained for use wit
 .Sh SEE ALSO
 .Xr devctl 4 ,
 .Xr devd.conf 5
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 5.0 .
 .Sh AUTHORS
 .An M. Warner Losh

Modified: user/alc/PQ_LAUNDRY/sbin/devfs/devfs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/devfs/devfs.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/devfs/devfs.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 12, 2013
+.Dd October 5, 2016
 .Dt DEVFS 8
 .Os
 .Sh NAME
@@ -249,7 +249,8 @@ configuration file.
 .It Pa /etc/devfs.rules
 Local
 .Nm
-configuration file.  Rulesets in here override those in
+configuration file.
+Rulesets in here override those in
 .Pa /etc/defaults/devfs.rules
 with the same ruleset number, otherwise the two files are effectively merged.
 .It Pa /etc/devfs.conf
@@ -374,5 +375,10 @@ this feature can be used to copy ruleset
 .Xr chown 8 ,
 .Xr jail 8 ,
 .Xr mknod 8
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 5.0 .
 .Sh AUTHORS
 .An Dima Dorfman

Modified: user/alc/PQ_LAUNDRY/sbin/fdisk/fdisk.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fdisk/fdisk.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/fdisk/fdisk.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -1,6 +1,6 @@
 .\" $FreeBSD$
 .\"
-.Dd October 1, 2013
+.Dd October 5, 2016
 .Dt FDISK 8
 .Os
 .Sh NAME
@@ -177,19 +177,19 @@ An example follows:
 	Information from DOS bootblock is:
 	The data for partition 1 is:
 	sysid 165,(FreeBSD/NetBSD/386BSD)
-    	    start 495, size 380160 (185 Meg), flag 0
+           start 495, size 380160 (185 Meg), flag 0
 		beg: cyl 1/ sector 1/ head 0;
 		end: cyl 768/ sector 33/ head 14
 	The data for partition 2 is:
 	sysid 164,(unknown)
-    	    start 378180, size 2475 (1 Meg), flag 0
+           start 378180, size 2475 (1 Meg), flag 0
 		beg: cyl 764/ sector 1/ head 0;
 		end: cyl 768/ sector 33/ head 14
 	The data for partition 3 is:
 	<UNUSED>
 	The data for partition 4 is:
 	sysid 99,(ISC UNIX, other System V/386, GNU HURD or Mach)
-    	    start 380656, size 224234 (109 Meg), flag 80
+           start 380656, size 224234 (109 Meg), flag 80
 		beg: cyl 769/ sector 2/ head 0;
 		end: cyl 197/ sector 33/ head 14
 .Ed
@@ -485,6 +485,21 @@ The default boot code.
 .Xr bsdlabel 8 ,
 .Xr gpart 8 ,
 .Xr newfs 8
+.Sh HISTORY
+A version of
+.Nm
+first appeared in the Mach Operating System.
+It was subsequently ported to
+.Bx 386 .
+.Sh AUTHORS
+.An -nosplit
+.Nm
+for Mach Operating System was written by
+.An Robert Baron Aq Mt rvb@cs.cmu.edu .
+It was ported to
+.Bx 386
+by
+.An Julian Elischer Aq Mt julian@tfs.com .
 .Sh BUGS
 The default boot code will not necessarily handle all slice types
 correctly, in particular those introduced since

Modified: user/alc/PQ_LAUNDRY/sbin/fdisk_pc98/fdisk.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fdisk_pc98/fdisk.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/fdisk_pc98/fdisk.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -1,6 +1,6 @@
 .\" $FreeBSD$
 .\"
-.Dd April 30, 2007
+.Dd October 5, 2016
 .Dt FDISK 8
 .Os
 .Sh NAME
@@ -448,6 +448,21 @@ Example: to make slice 1 the active slic
 .Xr bsdlabel 8 ,
 .Xr gpart 8 ,
 .Xr newfs 8
+.Sh HISTORY
+A version of
+.Nm
+first appeared in the Mach Operating System.
+It was subsequently ported to
+.Bx 386 .
+.Sh AUTHORS
+.An -nosplit
+.Nm
+for Mach Operating System was written by
+.An Robert Baron Aq Mt rvb@cs.cmu.edu .
+It was ported to
+.Bx 386
+by
+.An Julian Elischer Aq Mt julian@tfs.com .
 .Sh BUGS
 The default boot code will not necessarily handle all slice types
 correctly, in particular those introduced since

Modified: user/alc/PQ_LAUNDRY/sbin/fsck/fsck.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fsck/fsck.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/fsck/fsck.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 23, 2014
+.Dd October 5, 2016
 .Dt FSCK 8
 .Os
 .Sh NAME
@@ -229,3 +229,15 @@ file system table
 .Xr fsck_ffs 8 ,
 .Xr fsck_msdosfs 8 ,
 .Xr mount 8
+.Sh HISTORY
+A
+.Nm
+utility appeared in
+.Bx 4.0 .
+It was reimplemented as a filesystem independent wrapper in
+.Nx 1.3
+and first appeared in
+.Fx 5.0 .
+The original filesystem specific utility became
+.Xr fsck_ffs 8
+at this point.

Modified: user/alc/PQ_LAUNDRY/sbin/fsck_ffs/fsck_ffs.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/fsck_ffs/fsck_ffs.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/fsck_ffs/fsck_ffs.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -29,7 +29,7 @@
 .\"	@(#)fsck.8	8.4 (Berkeley) 5/9/95
 .\" $FreeBSD$
 .\"
-.Dd July 30, 2013
+.Dd October 5, 2016
 .Dt FSCK_FFS 8
 .Os
 .Sh NAME
@@ -268,9 +268,9 @@ do not open the file system for writing.
 Preen file systems (see above).
 .It Fl R
 Instruct fsck_ffs to restart itself if it encounters certain errors that
-warrant another run.  It will limit itself to a maximum of 10 restarts
-in a given run in order to avoid an endless loop with extremely corrupted
-filesystems.
+warrant another run.
+It will limit itself to a maximum of 10 restarts in a given run in order
+to avoid an endless loop with extremely corrupted filesystems.
 .It Fl r
 Free up excess unused inodes.
 Decreasing the number of preallocated inodes reduces the
@@ -393,3 +393,14 @@ are fully enumerated and explained in Ap
 .Xr fsdb 8 ,
 .Xr newfs 8 ,
 .Xr reboot 8
+.Sh HISTORY
+A
+.Nm fsck
+utility appeared in
+.Bx 4.0 .
+It became
+.Nm
+in
+.Fx 5.0
+with the introduction of the filesystem independent wrapper as
+.Nm fsck .

Modified: user/alc/PQ_LAUNDRY/sbin/natd/natd.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/natd/natd.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/natd/natd.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -1,5 +1,5 @@
 .\" $FreeBSD$
-.Dd June 23, 2008
+.Dd October 5, 2016
 .Dt NATD 8
 .Os
 .Sh NAME
@@ -426,7 +426,7 @@ Options can be divided to several sectio
 Each section applies to own
 .Nm
 instance.
-This ability allows to configure one
+This ability allows the configuration of one
 .Nm
 process for several NAT instances.
 The first instance that always exists is a "default" instance.
@@ -808,6 +808,11 @@ are forwarded to the appropriate router 
 .Xr init 8 ,
 .Xr ipfw 8 ,
 .Xr ppp 8
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Fx 3.0 .
 .Sh AUTHORS
 This program is the result of the efforts of many people at different
 times:

Modified: user/alc/PQ_LAUNDRY/sbin/nos-tun/nos-tun.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/nos-tun/nos-tun.8	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/nos-tun/nos-tun.8	Thu Oct  6 18:45:10 2016	(r306777)
@@ -8,7 +8,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 11, 1998
+.Dd October 5, 2016
 .Dt NOS-TUN 8
 .Os
 .Sh NAME
@@ -80,6 +80,11 @@ tunnel mode nos
 tunnel destination 192.168.59.34
 tunnel source 192.168.56.45
 .Ed
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Fx 3.0 .
 .Sh AUTHORS
 .An -nosplit
 .An Nickolay N. Dudorov Aq Mt nnd@itfs.nsk.su

Modified: user/alc/PQ_LAUNDRY/sbin/savecore/savecore.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/savecore/savecore.c	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/sbin/savecore/savecore.c	Thu Oct  6 18:45:10 2016	(r306777)
@@ -436,7 +436,8 @@ DoFile(const char *savedir, const char *
 {
 	xo_handle_t *xostdout, *xoinfo;
 	static char infoname[PATH_MAX], corename[PATH_MAX], linkname[PATH_MAX];
-	static char *buf = NULL, *temp = NULL;
+	static char *buf = NULL;
+	char *temp = NULL;
 	struct kerneldumpheader kdhf, kdhl;
 	off_t mediasize, dumpsize, firsthd, lasthd;
 	FILE *info, *fp;
@@ -498,12 +499,10 @@ DoFile(const char *savedir, const char *
 	}
 
 	lasthd = mediasize - sectorsize;
+	temp = malloc(sectorsize);
 	if (temp == NULL) {
-		temp = malloc(sectorsize);
-		if (temp == NULL) {
-			syslog(LOG_ERR, "%m");
-			goto closefd;
-		}
+		syslog(LOG_ERR, "%m");
+		goto closefd;
 	}
 	if (lseek(fd, lasthd, SEEK_SET) != lasthd ||
 	    read(fd, temp, sectorsize) != (ssize_t)sectorsize) {
@@ -749,6 +748,7 @@ nuke:
 	}
 	xo_close_container_h(xostdout, "crashdump");
 	xo_finish_h(xostdout);
+	free(temp);
 	close(fd);
 	return;
 
@@ -756,6 +756,7 @@ closeall:
 	fclose(fp);
 
 closefd:
+	free(temp);
 	close(fd);
 }
 

Modified: user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5
==============================================================================
--- user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/share/man/man5/src.conf.5	Thu Oct  6 18:45:10 2016	(r306777)
@@ -1,7 +1,7 @@
 .\" DO NOT EDIT-- this file is automatically generated.
-.\" from FreeBSD: head/tools/build/options/makeman 292283 2015-12-15 18:42:30Z bdrewery
+.\" from FreeBSD: head/tools/build/options/makeman 306729 2016-10-05 20:12:00Z emaste
 .\" $FreeBSD$
-.Dd September 21, 2016
+.Dd October 5, 2016
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -493,6 +493,15 @@ When set, it also enforces the following
 .\" from FreeBSD: head/tools/build/options/WITHOUT_DEBUG_FILES 290059 2015-10-27 20:49:56Z emaste
 Set to avoid building or installing standalone debug files for each
 executable binary and shared library.
+.It Va WITHOUT_DIALOG
+.\" from FreeBSD: head/tools/build/options/WITHOUT_DIALOG 306375 2016-09-27 18:08:38Z emaste
+Set to not build dialog(1), dialog(1,3), and dpv(1,3).
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BSDINSTALL
+.El
 .It Va WITHOUT_DICT
 .\" from FreeBSD: head/tools/build/options/WITHOUT_DICT 156932 2006-03-21 07:50:50Z ru
 Set to not build the Webster dictionary files.
@@ -617,12 +626,6 @@ and related programs.
 .It Va WITH_EISA
 .\" from FreeBSD: head/tools/build/options/WITH_EISA 264654 2014-04-18 16:53:06Z imp
 Set to build EISA kernel modules.
-.It Va WITHOUT_ELFCOPY_AS_OBJCOPY
-.\" from FreeBSD: head/tools/build/options/WITHOUT_ELFCOPY_AS_OBJCOPY 296193 2016-02-29 16:39:38Z emaste
-Set to build and install
-.Xr objcopy 1
-from GNU Binutils, instead of the one from ELF Tool Chain.
-This option is provided as a transition aid and will be removed in due time.
 .It Va WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
 .\" from FreeBSD: head/tools/build/options/WITHOUT_ELFTOOLCHAIN_BOOTSTRAP 295491 2016-02-11 00:14:00Z emaste
 Set to not build ELF Tool Chain tools
@@ -1376,6 +1379,9 @@ Set to not build kernel modules that inc
 .It Va WITHOUT_SSP
 .\" from FreeBSD: head/tools/build/options/WITHOUT_SSP 180012 2008-06-25 21:33:28Z ru
 Set to not build world with propolice stack smashing protection.
+.Pp
+It is a default setting on
+mips/mipsel, mips/mips, mips/mips64el, mips/mips64 and mips/mipsn32.
 .It Va WITH_STAGING
 .\" from FreeBSD: head/tools/build/options/WITH_STAGING 290816 2015-11-14 03:24:48Z sjg
 Enable staging of files to a stage tree.

Modified: user/alc/PQ_LAUNDRY/share/man/man9/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/share/man/man9/Makefile	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/share/man/man9/Makefile	Thu Oct  6 18:45:10 2016	(r306777)
@@ -114,6 +114,7 @@ MAN=	accept_filter.9 \
 	devstat.9 \
 	devtoname.9 \
 	disk.9 \
+	dnv.9 \
 	domain.9 \
 	drbr.9 \
 	driver.9 \
@@ -761,6 +762,19 @@ MLINKS+=disk.9 disk_alloc.9 \
 	disk.9 disk_destroy.9 \
 	disk.9 disk_gone.9 \
 	disk.9 disk_resize.9
+MLINKS+=dnv.9 dnvlist.9 \
+	dnv.9 dnvlist_get_binary.9 \
+	dnv.9 dnvlist_get_bool.9 \
+	dnv.9 dnvlist_get_descriptor.9 \
+	dnv.9 dnvlist_get_number.9 \
+	dnv.9 dnvlist_get_nvlist.9 \
+	dnv.9 dnvlist_get_string.9 \
+	dnv.9 dnvlist_take_binary.9 \
+	dnv.9 dnvlist_take_bool.9 \
+	dnv.9 dnvlist_take_descriptor.9 \
+	dnv.9 dnvlist_take_number.9 \
+	dnv.9 dnvlist_take_nvlist.9 \
+	dnv.9 dnvlist_take_string.9
 MLINKS+=domain.9 DOMAIN_SET.9 \
 	domain.9 domain_add.9 \
 	domain.9 pfctlinput.9 \
@@ -1960,7 +1974,8 @@ MLINKS+=VOP_RDWR.9 VOP_READ.9 \
 	VOP_RDWR.9 VOP_WRITE.9
 MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9
 MLINKS+=vnet.9 vimage.9
-MLINKS+=vref.9 VREF.9
+MLINKS+=vref.9 VREF.9 \
+	vref.9 vrefl.9
 MLINKS+=vrele.9 vput.9 \
 	vrele.9 vunref.9
 MLINKS+=vslock.9 vsunlock.9

Copied: user/alc/PQ_LAUNDRY/share/man/man9/dnv.9 (from r306776, head/share/man/man9/dnv.9)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/share/man/man9/dnv.9	Thu Oct  6 18:45:10 2016	(r306777, copy of r306776, head/share/man/man9/dnv.9)
@@ -0,0 +1,116 @@
+.\"
+.\" Copyright (c) 2016 Adam Starak <starak.adam@gmail.com>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 26, 2016
+.Dt DNV 9
+.Os
+.Sh NAME
+.Nm dnvlist_get,
+.Nm dnvlist_take,
+.Nd "API for getting name/value pairs. Nonexistent pairs do not raise an error."
+.Sh LIBRARY
+.Lb libnv
+.Sh SYNOPSIS
+.In sys/dnv.h
+.Ft bool
+.Fn dnvlist_get_bool "const nvlist_t *nvl" "const char *name" "bool defval"
+.Ft uint64_t
+.Fn dnvlist_get_number "const nvlist_t *nvl" "const char *name" "uint64_t defval"
+.Ft char *
+.Fn dnvlist_get_string "const nvlist_t *nvl" "const char *name" "const char *defval"
+.Ft nvlist_t *
+.Fn dnvlist_get_nvlist "const nvlist_t *nvl" "const char *name" "nvlist_t *defval"
+.Ft int
+.Fn dnvlist_get_descriptor "const nvlist_t *nvl" "const char *name" "int defval"
+.Ft void *
+.Fn dnvlist_get_binary "const nvlist_t *nvl" "const char *name" "size_t *sizep" "void *defval" "size_t defsize"
+.Ft bool
+.Fn dnvlist_take_bool "const nvlist_t *nvl" "const char *name" "bool defval"
+.Ft uint64_t
+.Fn dnvlist_take_number "const nvlist_t *nvl" "const char *name" "uint64_t defval"
+.Ft char *
+.Fn dnvlist_take_string "const nvlist_t *nvl" "const char *name" "const char *defval"
+.Ft nvlist_t *
+.Fn dnvlist_take_nvlist "const nvlist_t *nvl" "const char *name" "nvlist_t *defval"
+.Ft int
+.Fn dnvlist_take_descriptor "const nvlist_t *nvl" "const char *name" "int defval"
+.Ft void *
+.Fn dnvlist_take_binary "const nvlist_t *nvl" "const char *name" "size_t *sizep" "void *defval" "size_t defsize"
+.Sh DESCRIPTION
+The
+.Nm libnv
+library permits easy management of name/value pairs and can send and receive
+them over sockets.
+For more information, also see
+.Xr nv 9 .
+.Pp
+The
+.Nm dnvlist_get
+family of functions returns the value associated with the specified name.
+If an element of the specified name does not exist, the function returns the
+value provided in
+.Fa defval .
+Returned strings, nvlists, descriptors, binaries, or arrays must not be modified
+by the user.
+They still belong to the nvlist.
+If the nvlist is in an error state, attempts to use any of these functions will
+cause the program to abort.
+.Pp
+The
+.Nm dnvlist_take
+family of functions returns the value associated with the specified name and
+removes the element from the nvlist.
+If an element of the supplied name does not exist, the value provided in
+.Nm defval
+is returned.
+When the value is a string, binary, or array value, the caller is
+responsible for freeing returned memory with
+.Fn free 3 .
+When the value is an nvlist, the caller is responsible for destroying the
+returned nvlist with
+.Fn nvlist_destroy .
+When the value is a descriptor, the caller is responsible for closing the
+returned descriptor with
+.Fn close 2 .
+.Sh SEE ALSO
+.Xr close 2 ,
+.Xr free 3 ,
+.Xr nv 9
+.Sh HISTORY
+The
+.Nm dnv
+API appeared in
+.Fx 11.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm dnv
+API was implemented by
+.An Pawel Jakub Dawidek Aq Mt pawel@dawidek.net
+under sponsorship from the FreeBSD Foundation.
+This manual page was written by
+.An Adam Starak Aq Mt starak.adam@gmail.com

Modified: user/alc/PQ_LAUNDRY/share/man/man9/style.9
==============================================================================
--- user/alc/PQ_LAUNDRY/share/man/man9/style.9	Thu Oct  6 18:43:09 2016	(r306776)
+++ user/alc/PQ_LAUNDRY/share/man/man9/style.9	Thu Oct  6 18:45:10 2016	(r306777)
@@ -26,7 +26,7 @@
 .\"	From: @(#)style	1.14 (Berkeley) 4/28/95
 .\" $FreeBSD$
 .\"
-.Dd December 5, 2015
+.Dd October 5, 2016
 .Dt STYLE 9
 .Os
 .Sh NAME
@@ -114,20 +114,28 @@ static char sccsid[] = "@(#)style	1.14 (
 __FBSDID("$FreeBSD$");
 .Ed
 .Pp
-Leave another blank line before the header files.
+Leave one blank line before the header files.
 .Pp
-Kernel include files (i.e.\&
-.Pa sys/*.h )
-come first sorted alphabetically where possible.
-Include
-.In sys/types.h
-OR
-.In sys/param.h ,
-but not both and include it first.
+Kernel include files
+.Pa ( sys/*.h )
+come first.
+If
+.In sys/cdefs.h
+is needed for
+.Fn __FBSDID ,
+include it first.
+If either
 .In sys/types.h
+or
+.In sys/param.h
+is needed, include it before other include files.
+.Po
+.In sys/param.h
 includes
-.In sys/cdefs.h ,
-and it is okay to depend on that.
+.In sys/types.h ;
+do not include both.
+.Pc
+The remaining kernel headers should be sorted alphabetically.
 .Bd -literal
 #include <sys/types.h>	/* Non-local includes in angle brackets. */
 #include <sys/endian.h>
@@ -144,9 +152,9 @@ For a network program, put the network i
 #include <protocols/rwhod.h>
 .Ed
 .Pp
-Do not use files in
+Do not include files from

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-user@freebsd.org  Fri Oct  7 14:54:18 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5C8C5BEC1FC
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 14:54:18 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 1FAD81C2;
 Fri,  7 Oct 2016 14:54:18 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u97EsHj2074689;
 Fri, 7 Oct 2016 14:54:17 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u97EsHuT074686;
 Fri, 7 Oct 2016 14:54:17 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610071454.u97EsHuT074686@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Fri, 7 Oct 2016 14:54:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306810 - in user/alc/PQ_LAUNDRY/sys: sys vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 14:54:18 -0000

Author: alc
Date: Fri Oct  7 14:54:16 2016
New Revision: 306810
URL: https://svnweb.freebsd.org/changeset/base/306810

Log:
  Count page reclamation shortfalls that lead to all-out laundering rather
  than laundry thread wakeups.
  
  Reviewed by:	markj

Modified:
  user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Fri Oct  7 14:46:34 2016	(r306809)
+++ user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Fri Oct  7 14:54:16 2016	(r306810)
@@ -77,8 +77,8 @@ struct vmmeter {
 	u_int v_intrans;	/* (p) intransit blocking page faults */
 	u_int v_reactivated;	/* (p) pages reactivated by the pagedaemon */
 	u_int v_pdwakeups;	/* (p) times daemon has awaken from sleep */
-	u_int v_ltwakeups;	/* (p) times laundry thread has been woken */
 	u_int v_pdpages;	/* (p) pages analyzed by daemon */
+	u_int v_pdshortfalls;	/* (p) page reclamation shortfalls */
 
 	u_int v_tcached;	/* (p) total pages cached */
 	u_int v_dfree;		/* (p) pages freed by daemon */

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Fri Oct  7 14:46:34 2016	(r306809)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Fri Oct  7 14:54:16 2016	(r306810)
@@ -287,9 +287,9 @@ VM_STATS_VM(v_vnodepgsin, "Vnode pages p
 VM_STATS_VM(v_vnodepgsout, "Vnode pages paged out");
 VM_STATS_VM(v_intrans, "In transit page faults");
 VM_STATS_VM(v_reactivated, "Pages reactivated by pagedaemon");
-VM_STATS_VM(v_ltwakeups, "Laundry thread wakeups");
 VM_STATS_VM(v_pdwakeups, "Pagedaemon wakeups");
 VM_STATS_VM(v_pdpages, "Pages analyzed by pagedaemon");
+VM_STATS_VM(v_pdshortfalls, "Page reclamation shortfalls");
 VM_STATS_VM(v_tcached, "Total pages cached");
 VM_STATS_VM(v_dfree, "Pages freed by pagedaemon");
 VM_STATS_VM(v_pfree, "Pages freed by exiting processes");

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Fri Oct  7 14:46:34 2016	(r306809)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Fri Oct  7 14:54:16 2016	(r306810)
@@ -1485,13 +1485,13 @@ drop_page:
 	    starting_page_shortage > 0) {
 		laundryq = &vm_dom[0].vmd_pagequeues[PQ_LAUNDRY];
 		vm_pagequeue_lock(laundryq);
-		if (page_shortage > 0)
+		if (page_shortage > 0) {
 			vm_laundry_request = VM_LAUNDRY_SHORTFALL;
-		else if (vm_laundry_request != VM_LAUNDRY_SHORTFALL)
+			PCPU_INC(cnt.v_pdshortfalls);
+		} else if (vm_laundry_request != VM_LAUNDRY_SHORTFALL)
 			vm_laundry_request = VM_LAUNDRY_BACKGROUND;
 		wakeup(&vm_laundry_request);
 		vm_pagequeue_unlock(laundryq);
-		PCPU_INC(cnt.v_ltwakeups);
 	}
 
 #if !defined(NO_SWAPPING)

From owner-svn-src-user@freebsd.org  Fri Oct  7 22:17:44 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id EC22AC050D4
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 22:17:44 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id AF55C680;
 Fri,  7 Oct 2016 22:17:44 +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 u97MHhiS042584;
 Fri, 7 Oct 2016 22:17:43 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u97MHh08042582;
 Fri, 7 Oct 2016 22:17:43 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610072217.u97MHh08042582@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Fri, 7 Oct 2016 22:17:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306831 - in user/alc/PQ_LAUNDRY/usr.bin: systat vmstat
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 22:17:45 -0000

Author: markj
Date: Fri Oct  7 22:17:43 2016
New Revision: 306831
URL: https://svnweb.freebsd.org/changeset/base/306831

Log:
  Teach vmstat and systat about v_pdshortfalls.

Modified:
  user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c
  user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c

Modified: user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:25 2016	(r306830)
+++ user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:43 2016	(r306831)
@@ -95,6 +95,7 @@ static struct Info {
 	u_int v_reactivated;	/* number of pages reactivated by pagedaemon */
 	u_int v_pdwakeups;	/* number of times daemon has awaken from sleep */
 	u_int v_pdpages;	/* number of pages analyzed by daemon */
+	u_int v_pdshortfalls;	/* number of page reclaimation shortfalls */
 
 	u_int v_dfree;		/* pages freed by daemon */
 	u_int v_pfree;		/* pages freed by exiting processes */
@@ -339,14 +340,15 @@ labelkre(void)
 	mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react");
 	mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak");
 	mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs");
-	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn");
-	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire");
-	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act");
-	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact");
-	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "laund");
-	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free");
-	if (LINES - 1 > VMSTATROW + 17)
-		mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf");
+	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "pdshort");
+	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "intrn");
+	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "wire");
+	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "act");
+	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "inact");
+	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "laund");
+	mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "free");
+	if (LINES - 1 > VMSTATROW + 18)
+		mvprintw(VMSTATROW + 18, VMSTATCOL + 9, "buf");
 
 	mvprintw(GENSTATROW, GENSTATCOL, " Csw  Trp  Sys  Int  Sof  Flt");
 
@@ -515,14 +517,15 @@ showkre(void)
 	PUTRATE(v_reactivated, VMSTATROW + 8, VMSTATCOL, 8);
 	PUTRATE(v_pdwakeups, VMSTATROW + 9, VMSTATCOL, 8);
 	PUTRATE(v_pdpages, VMSTATROW + 10, VMSTATCOL, 8);
-	PUTRATE(v_intrans, VMSTATROW + 11, VMSTATCOL, 8);
-	putint(pgtokb(s.v_wire_count), VMSTATROW + 12, VMSTATCOL, 8);
-	putint(pgtokb(s.v_active_count), VMSTATROW + 13, VMSTATCOL, 8);
-	putint(pgtokb(s.v_inactive_count), VMSTATROW + 14, VMSTATCOL, 8);
-	putint(pgtokb(s.v_laundry_count), VMSTATROW + 15, VMSTATCOL, 8);
-	putint(pgtokb(s.v_free_count), VMSTATROW + 16, VMSTATCOL, 8);
-	if (LINES - 1 > VMSTATROW + 17)
-		putint(s.bufspace / 1024, VMSTATROW + 17, VMSTATCOL, 8);
+	PUTRATE(v_pdshortfalls, VMSTATROW + 11, VMSTATCOL, 8);
+	PUTRATE(v_intrans, VMSTATROW + 12, VMSTATCOL, 8);
+	putint(pgtokb(s.v_wire_count), VMSTATROW + 13, VMSTATCOL, 8);
+	putint(pgtokb(s.v_active_count), VMSTATROW + 14, VMSTATCOL, 8);
+	putint(pgtokb(s.v_inactive_count), VMSTATROW + 15, VMSTATCOL, 8);
+	putint(pgtokb(s.v_laundry_count), VMSTATROW + 16, VMSTATCOL, 8);
+	putint(pgtokb(s.v_free_count), VMSTATROW + 17, VMSTATCOL, 8);
+	if (LINES - 1 > VMSTATROW + 18)
+		putint(s.bufspace / 1024, VMSTATROW + 18, VMSTATCOL, 8);
 	PUTRATE(v_vnodein, PAGEROW + 2, PAGECOL + 6, 5);
 	PUTRATE(v_vnodeout, PAGEROW + 2, PAGECOL + 12, 5);
 	PUTRATE(v_swapin, PAGEROW + 2, PAGECOL + 19, 5);
@@ -786,6 +789,7 @@ getinfo(struct Info *ls)
 	GETSYSCTL("vm.stats.vm.v_reactivated", ls->v_reactivated);
 	GETSYSCTL("vm.stats.vm.v_pdwakeups", ls->v_pdwakeups);
 	GETSYSCTL("vm.stats.vm.v_pdpages", ls->v_pdpages);
+	GETSYSCTL("vm.stats.vm.v_pdshortfalls", ls->v_pdshortfalls);
 	GETSYSCTL("vm.stats.vm.v_dfree", ls->v_dfree);
 	GETSYSCTL("vm.stats.vm.v_pfree", ls->v_pfree);
 	GETSYSCTL("vm.stats.vm.v_tfree", ls->v_tfree);

Modified: user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Fri Oct  7 22:17:25 2016	(r306830)
+++ user/alc/PQ_LAUNDRY/usr.bin/vmstat/vmstat.c	Fri Oct  7 22:17:43 2016	(r306831)
@@ -567,6 +567,7 @@ fill_vmmeter(struct vmmeter *vmmp)
 		GET_VM_STATS(vm, v_reactivated);
 		GET_VM_STATS(vm, v_pdwakeups);
 		GET_VM_STATS(vm, v_pdpages);
+		GET_VM_STATS(vm, v_pdshortfalls);
 		GET_VM_STATS(vm, v_dfree);
 		GET_VM_STATS(vm, v_pfree);
 		GET_VM_STATS(vm, v_tfree);
@@ -1058,6 +1059,8 @@ dosum(void)
 		sum.v_pdwakeups);
 	xo_emit("{:page-daemon-pages/%9u} {N:pages examined by the page daemon}\n",
 		sum.v_pdpages);
+	xo_emit("{:page-reclaimation-shortfalls/%9u} {N:clean page reclaimation shortfalls}\n",
+		sum.v_pdshortfalls);
 	xo_emit("{:reactivated/%9u} {N:pages reactivated by the page daemon}\n",
 		sum.v_reactivated);
 	xo_emit("{:copy-on-write-faults/%9u} {N:copy-on-write faults}\n",

From owner-svn-src-user@freebsd.org  Fri Oct  7 22:25:10 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E2AEAC052D7
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 22:25:10 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id B0C66C03;
 Fri,  7 Oct 2016 22:25:10 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u97MPART046395;
 Fri, 7 Oct 2016 22:25:10 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u97MP7Zj046371;
 Fri, 7 Oct 2016 22:25:07 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610072225.u97MP7Zj046371@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Fri, 7 Oct 2016 22:25:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306832 - in user/alc/PQ_LAUNDRY:
 contrib/netbsd-tests/lib/libc/locale contrib/netbsd-tests/lib/libc/string
 etc/mtree include sbin/init sys/boot/common
 sys/cddl/contrib/opensolaris/uts/...
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 22:25:11 -0000

Author: markj
Date: Fri Oct  7 22:25:07 2016
New Revision: 306832
URL: https://svnweb.freebsd.org/changeset/base/306832

Log:
  MFH r306831

Added:
  user/alc/PQ_LAUNDRY/sys/mips/conf/AR5312_BASE.hints
     - copied unchanged from r306831, head/sys/mips/conf/AR5312_BASE.hints
  user/alc/PQ_LAUNDRY/sys/mips/conf/AR5315_BASE.hints
     - copied unchanged from r306831, head/sys/mips/conf/AR5315_BASE.hints
  user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5312
     - copied unchanged from r306831, head/sys/mips/conf/std.AR5312
  user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5315
     - copied unchanged from r306831, head/sys/mips/conf/std.AR5315
  user/alc/PQ_LAUNDRY/sys/sys/disk/
     - copied from r306831, head/sys/sys/disk/
Replaced:
  user/alc/PQ_LAUNDRY/sys/sys/apm.h
     - copied unchanged from r306831, head/sys/sys/apm.h
  user/alc/PQ_LAUNDRY/sys/sys/disklabel.h
     - copied unchanged from r306831, head/sys/sys/disklabel.h
  user/alc/PQ_LAUNDRY/sys/sys/diskmbr.h
     - copied unchanged from r306831, head/sys/sys/diskmbr.h
  user/alc/PQ_LAUNDRY/sys/sys/diskpc98.h
     - copied unchanged from r306831, head/sys/sys/diskpc98.h
  user/alc/PQ_LAUNDRY/sys/sys/gpt.h
     - copied unchanged from r306831, head/sys/sys/gpt.h
  user/alc/PQ_LAUNDRY/sys/sys/vtoc.h
     - copied unchanged from r306831, head/sys/sys/vtoc.h
Modified:
  user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
  user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/string/t_memmem.c
  user/alc/PQ_LAUNDRY/etc/mtree/BSD.include.dist
  user/alc/PQ_LAUNDRY/include/Makefile
  user/alc/PQ_LAUNDRY/sbin/init/init.c
  user/alc/PQ_LAUNDRY/sys/boot/common/self_reloc.c
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_ioctl.h
  user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c
  user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.c
  user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.h
  user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_os.c
  user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_ver.h
  user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_mount.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_mountroot.c
  user/alc/PQ_LAUNDRY/sys/netinet/sctp_output.c
  user/alc/PQ_LAUNDRY/sys/netinet6/in6.c
  user/alc/PQ_LAUNDRY/sys/netinet6/in6_ifattach.c
  user/alc/PQ_LAUNDRY/sys/netinet6/nd6.c
  user/alc/PQ_LAUNDRY/sys/netinet6/nd6.h
  user/alc/PQ_LAUNDRY/sys/netinet6/nd6_rtr.c
  user/alc/PQ_LAUNDRY/sys/sys/vnode.h
  user/alc/PQ_LAUNDRY/tools/tools/cxgbetool/cxgbetool.8
  user/alc/PQ_LAUNDRY/tools/tools/cxgbetool/cxgbetool.c
  user/alc/PQ_LAUNDRY/usr.bin/cmp/cmp.c
  user/alc/PQ_LAUNDRY/usr.bin/col/col.c
  user/alc/PQ_LAUNDRY/usr.bin/dtc/checking.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/checking.hh
  user/alc/PQ_LAUNDRY/usr.bin/dtc/dtb.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/dtb.hh
  user/alc/PQ_LAUNDRY/usr.bin/dtc/dtc.1
  user/alc/PQ_LAUNDRY/usr.bin/dtc/dtc.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/fdt.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/fdt.hh
  user/alc/PQ_LAUNDRY/usr.bin/dtc/input_buffer.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/input_buffer.hh
  user/alc/PQ_LAUNDRY/usr.bin/dtc/string.cc
  user/alc/PQ_LAUNDRY/usr.bin/dtc/util.hh
  user/alc/PQ_LAUNDRY/usr.bin/elfdump/elfdump.c
  user/alc/PQ_LAUNDRY/usr.bin/kdump/kdump.c
  user/alc/PQ_LAUNDRY/usr.bin/localedef/ctype.c
  user/alc/PQ_LAUNDRY/usr.bin/localedef/parser.y   (contents, props changed)
  user/alc/PQ_LAUNDRY/usr.bin/tee/tee.c
  user/alc/PQ_LAUNDRY/usr.bin/tr/tr.c
  user/alc/PQ_LAUNDRY/usr.sbin/arp/arp.4
  user/alc/PQ_LAUNDRY/usr.sbin/makefs/cd9660.c
  user/alc/PQ_LAUNDRY/usr.sbin/pmcstat/pmcstat.c
  user/alc/PQ_LAUNDRY/usr.sbin/portsnap/portsnap/portsnap.sh
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/contrib/netbsd-tests/   (props changed)
  user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/   (props changed)

Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/locale/t_mbstowcs.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -88,7 +88,7 @@ static struct test {
 		0xFFFF, 0x5D, 0x5B, 0x10000, 0x10FFFF, 0x5D, 0x0A
 	},
 #ifdef __FreeBSD__
-	{	 1, -1, -1,  1,  1, -1, 1,  1,  1, 1, -1,  1,  1, -1, -1,
+	{	 1, -1, -1,  1,  1, -1, -1,  1,  1, 1, -1,  1,  1, -1, -1,
 #else
 	{	 1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,  1,  1, -1, -1,
 #endif

Modified: user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/string/t_memmem.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/string/t_memmem.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/contrib/netbsd-tests/lib/libc/string/t_memmem.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -51,6 +51,8 @@ char p6[] = "9";
 int lp6 = 1;
 char p7[] = "654";
 int lp7 = 3;
+char p8[] = "89abc";
+int lp8 = 5;
 
 char b0[] = "";
 int lb0 = 0;
@@ -94,6 +96,7 @@ ATF_TC_BODY(memmem_basic, tc)
 
 	expect(memmem(b2, lb2, p4, lp4) == NULL);
 	expect(memmem(b2, lb2, p7, lp7) == NULL);
+	expect(memmem(b2, lb2, p8, lp8) == NULL);
 }
 
 ATF_TP_ADD_TCS(tp)

Modified: user/alc/PQ_LAUNDRY/etc/mtree/BSD.include.dist
==============================================================================
--- user/alc/PQ_LAUNDRY/etc/mtree/BSD.include.dist	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/etc/mtree/BSD.include.dist	Fri Oct  7 22:25:07 2016	(r306832)
@@ -336,6 +336,8 @@
     ssp
     ..
     sys
+        disk
+        ..
     ..
     teken
     ..

Modified: user/alc/PQ_LAUNDRY/include/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/include/Makefile	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/include/Makefile	Fri Oct  7 22:25:07 2016	(r306832)
@@ -59,6 +59,7 @@ LSUBDIRS=	cam/ata cam/nvme cam/scsi \
 	security/audit \
 	security/mac_biba security/mac_bsdextended security/mac_lomac \
 	security/mac_mls security/mac_partition \
+	sys/disk \
 	ufs/ffs ufs/ufs
 
 LSUBSUBDIRS=	dev/mpt/mpilib

Modified: user/alc/PQ_LAUNDRY/sbin/init/init.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/init/init.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sbin/init/init.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -870,6 +870,7 @@ single_user(void)
 	sigset_t mask;
 	const char *shell;
 	char *argv[2];
+	struct timeval tv, tn;
 #ifdef SECURE
 	struct ttyent *typ;
 	struct passwd *pp;
@@ -884,8 +885,13 @@ single_user(void)
 	if (Reboot) {
 		/* Instead of going single user, let's reboot the machine */
 		sync();
-		reboot(howto);
-		_exit(0);
+		if (reboot(howto) == -1) {
+			emergency("reboot(%#x) failed, %s", howto,
+			    strerror(errno));
+			_exit(1); /* panic and reboot */
+		}
+		warning("reboot(%#x) returned", howto);
+		_exit(0); /* panic as well */
 	}
 
 	shell = get_shell();
@@ -1002,7 +1008,14 @@ single_user(void)
 			 *  reboot(8) killed shell?
 			 */
 			warning("single user shell terminated.");
-			sleep(STALL_TIMEOUT);
+			gettimeofday(&tv, NULL);
+			tn = tv;
+			tv.tv_sec += STALL_TIMEOUT;
+			while (tv.tv_sec > tn.tv_sec || (tv.tv_sec ==
+			    tn.tv_sec && tv.tv_usec > tn.tv_usec)) {
+				sleep(1);
+				gettimeofday(&tn, NULL);
+			}
 			_exit(0);
 		} else {
 			warning("single user shell terminated, restarting");

Modified: user/alc/PQ_LAUNDRY/sys/boot/common/self_reloc.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/boot/common/self_reloc.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/boot/common/self_reloc.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -108,12 +108,18 @@ self_reloc(Elf_Addr baseaddr, ElfW_Dyn *
 			break;
 
 		case RELOC_TYPE_RELATIVE:
-			/* Address relative to the base address. */
 			newaddr = (Elf_Addr *)(rel->r_offset + baseaddr);
-			*newaddr += baseaddr;
-			/* Add the addend when the ABI uses them */ 
 #ifdef ELF_RELA
-			*newaddr += rel->r_addend;
+			/*
+			 * For R_AARCH64_RELATIVE we need to calculate the
+			 * delta between the address we are run from and the
+			 * address we are linked at. As the latter is 0 we
+			 * just use the address we are run from for this.
+			 */
+			*newaddr = baseaddr + rel->r_addend;
+#else
+			/* Address relative to the base address. */
+			*newaddr += baseaddr;
 #endif
 			break;
 		default:

Modified: user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h	Fri Oct  7 22:25:07 2016	(r306832)
@@ -355,6 +355,8 @@ extern zil_get_data_t zfs_get_data;
 extern zil_replay_func_t *zfs_replay_vector[TX_MAX_TYPE];
 extern int zfsfstype;
 
+extern int zfs_znode_parent_and_name(znode_t *zp, znode_t **dzpp, char *buf);
+
 #endif /* _KERNEL */
 
 extern int zfs_obj_to_path(objset_t *osp, uint64_t obj, char *buf, int len);

Modified: user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -1843,7 +1843,7 @@ zfsvfs_teardown(zfsvfs_t *zfsvfs, boolea
 		 */
 		(void) dnlc_purge_vfsp(zfsvfs->z_parent->z_vfs, 0);
 #ifdef FREEBSD_NAMECACHE
-		cache_purgevfs(zfsvfs->z_parent->z_vfs);
+		cache_purgevfs(zfsvfs->z_parent->z_vfs, true);
 #endif
 	}
 

Modified: user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -5934,8 +5934,19 @@ zfs_vptocnp(struct vop_vptocnp_args *ap)
 	}
 
 	if (zp->z_id != parent || zfsvfs->z_parent == zfsvfs) {
+		char name[MAXNAMLEN + 1];
+		znode_t *dzp;
+		size_t len;
+
+		error = zfs_znode_parent_and_name(zp, &dzp, name);
+		if (error == 0) {
+			len = strlen(name);
+			*ap->a_buflen -= len;
+			bcopy(name, ap->a_buf + *ap->a_buflen, len);
+			*ap->a_vpp = ZTOV(dzp);
+		}
 		ZFS_EXIT(zfsvfs);
-		return (vop_stdvptocnp(ap));
+		return (error);
 	}
 	ZFS_EXIT(zfsvfs);
 

Modified: user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -1936,7 +1936,6 @@ zfs_create_fs(objset_t *os, cred_t *cr, 
 		mutex_destroy(&zfsvfs->z_hold_mtx[i]);
 	kmem_free(zfsvfs, sizeof (zfsvfs_t));
 }
-
 #endif /* _KERNEL */
 
 static int
@@ -2192,3 +2191,35 @@ zfs_obj_to_stats(objset_t *osp, uint64_t
 	zfs_release_sa_handle(hdl, db, FTAG);
 	return (error);
 }
+
+#ifdef _KERNEL
+int
+zfs_znode_parent_and_name(znode_t *zp, znode_t **dzpp, char *buf)
+{
+	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
+	uint64_t parent;
+	int is_xattrdir;
+	int err;
+
+	/* Extended attributes should not be visible as regular files. */
+	if ((zp->z_pflags & ZFS_XATTR) != 0)
+		return (SET_ERROR(EINVAL));
+
+	err = zfs_obj_to_pobj(zfsvfs->z_os, zp->z_sa_hdl, zfsvfs->z_attr_table,
+	    &parent, &is_xattrdir);
+	if (err != 0)
+		return (err);
+	ASSERT0(is_xattrdir);
+
+	/* No name as this is a root object. */
+	if (parent == zp->z_id)
+		return (SET_ERROR(EINVAL));
+
+	err = zap_value_search(zfsvfs->z_os, parent, zp->z_id,
+	    ZFS_DIRENT_OBJ(-1ULL), buf);
+	if (err != 0)
+		return (err);
+	err = zfs_zget(zfsvfs, parent, dzpp);
+	return (err);
+}
+#endif /* _KERNEL */

Modified: user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_ioctl.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_ioctl.h	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_ioctl.h	Fri Oct  7 22:25:07 2016	(r306832)
@@ -56,6 +56,7 @@ enum {
 	T4_SET_SCHED_QUEUE,             /* set queue class */
 	T4_GET_TRACER,			/* get information about a tracer */
 	T4_SET_TRACER,			/* program a tracer */
+	T4_LOAD_CFG,			/* copy a config file to card's flash */
 };
 
 struct t4_reg {
@@ -344,4 +345,5 @@ struct t4_tracer {
     struct t4_sched_queue)
 #define CHELSIO_T4_GET_TRACER	_IOWR('f', T4_GET_TRACER, struct t4_tracer)
 #define CHELSIO_T4_SET_TRACER	_IOW('f', T4_SET_TRACER, struct t4_tracer)
+#define CHELSIO_T4_LOAD_CFG	_IOW('f', T4_LOAD_CFG, struct t4_data)
 #endif

Modified: user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/cxgbe/t4_main.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -549,6 +549,7 @@ static int set_tcb_rpl(struct sge_iq *, 
     struct mbuf *);
 static int get_sge_context(struct adapter *, struct t4_sge_context *);
 static int load_fw(struct adapter *, struct t4_data *);
+static int load_cfg(struct adapter *, struct t4_data *);
 static int read_card_mem(struct adapter *, int, struct t4_mem_range *);
 static int read_i2c(struct adapter *, struct t4_i2c_data *);
 #ifdef TCP_OFFLOAD
@@ -7099,7 +7100,7 @@ sysctl_pm_stats(SYSCTL_HANDLER_ARGS)
 	};
 	static const char *rx_stats[MAX_PM_NSTATS] = {
 		"Read:", "Write bypass:", "Write mem:", "Flush:",
-		" Rx FIFO wait", NULL, "Rx latency"
+		"Rx FIFO wait", NULL, "Rx latency"
 	};
 
 	rc = sysctl_wire_old_buffer(req, 0);
@@ -8620,6 +8621,38 @@ done:
 	return (rc);
 }
 
+static int
+load_cfg(struct adapter *sc, struct t4_data *cfg)
+{
+	int rc;
+	uint8_t *cfg_data = NULL;
+
+	rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4ldcf");
+	if (rc)
+		return (rc);
+
+	if (cfg->len == 0) {
+		/* clear */
+		rc = -t4_load_cfg(sc, NULL, 0);
+		goto done;
+	}
+
+	cfg_data = malloc(cfg->len, M_CXGBE, M_WAITOK);
+	if (cfg_data == NULL) {
+		rc = ENOMEM;
+		goto done;
+	}
+
+	rc = copyin(cfg->data, cfg_data, cfg->len);
+	if (rc == 0)
+		rc = -t4_load_cfg(sc, cfg_data, cfg->len);
+
+	free(cfg_data, M_CXGBE);
+done:
+	end_synchronized_op(sc, 0);
+	return (rc);
+}
+
 #define MAX_READ_BUF_SIZE (128 * 1024)
 static int
 read_card_mem(struct adapter *sc, int win, struct t4_mem_range *mr)
@@ -9177,6 +9210,9 @@ t4_ioctl(struct cdev *dev, unsigned long
 	case CHELSIO_T4_SET_TRACER:
 		rc = t4_set_tracer(sc, (struct t4_tracer *)data);
 		break;
+	case CHELSIO_T4_LOAD_CFG:
+		rc = load_cfg(sc, (struct t4_data *)data);
+		break;
 	default:
 		rc = ENOTTY;
 	}

Modified: user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -1128,12 +1128,21 @@ qla_config_intr_coalesce(qla_host_t *ha,
  *	Can be unicast, multicast or broadcast.
  */
 static int
-qla_config_mac_addr(qla_host_t *ha, uint8_t *mac_addr, uint32_t add_mac)
+qla_config_mac_addr(qla_host_t *ha, uint8_t *mac_addr, uint32_t add_mac,
+	uint32_t num_mac)
 {
 	q80_config_mac_addr_t		*cmac;
 	q80_config_mac_addr_rsp_t	*cmac_rsp;
 	uint32_t			err;
 	device_t			dev = ha->pci_dev;
+	int				i;
+	uint8_t				*mac_cpy = mac_addr;
+
+	if (num_mac > Q8_MAX_MAC_ADDRS) {
+		device_printf(dev, "%s: %s num_mac [0x%x] > Q8_MAX_MAC_ADDRS\n",
+			__func__, (add_mac ? "Add" : "Del"), num_mac);
+		return (-1);
+	}
 
 	cmac = (q80_config_mac_addr_t *)ha->hw.mbox;
 	bzero(cmac, (sizeof (q80_config_mac_addr_t)));
@@ -1149,9 +1158,13 @@ qla_config_mac_addr(qla_host_t *ha, uint
 		
 	cmac->cmd |= Q8_MBX_CMAC_CMD_CAM_INGRESS;
 
-	cmac->nmac_entries = 1;
+	cmac->nmac_entries = num_mac;
 	cmac->cntxt_id = ha->hw.rcv_cntxt_id;
-	bcopy(mac_addr, cmac->mac_addr[0].addr, 6); 
+
+	for (i = 0; i < num_mac; i++) {
+		bcopy(mac_addr, cmac->mac_addr[i].addr, Q8_ETHER_ADDR_LEN); 
+		mac_addr = mac_addr + ETHER_ADDR_LEN;
+	}
 
 	if (qla_mbx_cmd(ha, (uint32_t *)cmac,
 		(sizeof (q80_config_mac_addr_t) >> 2),
@@ -1165,11 +1178,14 @@ qla_config_mac_addr(qla_host_t *ha, uint
 	err = Q8_MBX_RSP_STATUS(cmac_rsp->regcnt_status);
 
 	if (err) {
-		device_printf(dev, "%s: %s "
-			"%02x:%02x:%02x:%02x:%02x:%02x failed1 [0x%08x]\n",
-			__func__, (add_mac ? "Add" : "Del"),
-			mac_addr[0], mac_addr[1], mac_addr[2],
-			mac_addr[3], mac_addr[4], mac_addr[5], err);
+		device_printf(dev, "%s: %s failed1 [0x%08x]\n", __func__,
+			(add_mac ? "Add" : "Del"), err);
+		for (i = 0; i < num_mac; i++) {
+			device_printf(dev, "%s: %02x:%02x:%02x:%02x:%02x:%02x\n",
+				__func__, mac_cpy[0], mac_cpy[1], mac_cpy[2],
+				mac_cpy[3], mac_cpy[4], mac_cpy[5]);
+			mac_cpy += ETHER_ADDR_LEN;
+		}
 		return (-1);
 	}
 	
@@ -2254,6 +2270,7 @@ ql_del_hw_if(qla_host_t *ha)
 	(void)qla_stop_nic_func(ha);
 
 	qla_del_rcv_cntxt(ha);
+
 	qla_del_xmt_cntxt(ha);
 
 	if (ha->hw.flags.init_intr_cnxt) {
@@ -2270,6 +2287,7 @@ ql_del_hw_if(qla_host_t *ha)
 
 		ha->hw.flags.init_intr_cnxt = 0;
 	}
+
 	return;
 }
 
@@ -2368,7 +2386,7 @@ ql_init_hw_if(qla_host_t *ha)
 	}
 	ha->hw.max_tx_segs = 0;
 
-	if (qla_config_mac_addr(ha, ha->hw.mac_addr, 1))
+	if (qla_config_mac_addr(ha, ha->hw.mac_addr, 1, 1))
 		return(-1);
 
 	ha->hw.flags.unicast_mac = 1;
@@ -2376,7 +2394,7 @@ ql_init_hw_if(qla_host_t *ha)
 	bcast_mac[0] = 0xFF; bcast_mac[1] = 0xFF; bcast_mac[2] = 0xFF;
 	bcast_mac[3] = 0xFF; bcast_mac[4] = 0xFF; bcast_mac[5] = 0xFF;
 
-	if (qla_config_mac_addr(ha, bcast_mac, 1))
+	if (qla_config_mac_addr(ha, bcast_mac, 1, 1))
 		return (-1);
 
 	ha->hw.flags.bcast_mac = 1;
@@ -2733,14 +2751,14 @@ qla_del_rcv_cntxt(qla_host_t *ha)
 		bcast_mac[0] = 0xFF; bcast_mac[1] = 0xFF; bcast_mac[2] = 0xFF;
 		bcast_mac[3] = 0xFF; bcast_mac[4] = 0xFF; bcast_mac[5] = 0xFF;
 
-		if (qla_config_mac_addr(ha, bcast_mac, 0))
+		if (qla_config_mac_addr(ha, bcast_mac, 0, 1))
 			return;
 		ha->hw.flags.bcast_mac = 0;
 
 	}
 
 	if (ha->hw.flags.unicast_mac) {
-		if (qla_config_mac_addr(ha, ha->hw.mac_addr, 0))
+		if (qla_config_mac_addr(ha, ha->hw.mac_addr, 0, 1))
 			return;
 		ha->hw.flags.unicast_mac = 0;
 	}
@@ -2926,12 +2944,20 @@ qla_init_xmt_cntxt(qla_host_t *ha)
 }
 
 static int
-qla_hw_add_all_mcast(qla_host_t *ha)
+qla_hw_all_mcast(qla_host_t *ha, uint32_t add_mcast)
 {
 	int i, nmcast;
+	uint32_t count = 0;
+	uint8_t *mcast;
 
 	nmcast = ha->hw.nmcast;
 
+	QL_DPRINT2(ha, (ha->pci_dev,
+		"%s:[0x%x] enter nmcast = %d \n", __func__, add_mcast, nmcast));
+
+	mcast = ha->hw.mac_addr_arr;
+	memset(mcast, 0, (Q8_MAX_MAC_ADDRS * ETHER_ADDR_LEN));
+
 	for (i = 0 ; ((i < Q8_MAX_NUM_MULTICAST_ADDRS) && nmcast); i++) {
 		if ((ha->hw.mcast[i].addr[0] != 0) || 
 			(ha->hw.mcast[i].addr[1] != 0) ||
@@ -2940,52 +2966,80 @@ qla_hw_add_all_mcast(qla_host_t *ha)
 			(ha->hw.mcast[i].addr[4] != 0) ||
 			(ha->hw.mcast[i].addr[5] != 0)) {
 
-			if (qla_config_mac_addr(ha, ha->hw.mcast[i].addr, 1)) {
-                		device_printf(ha->pci_dev, "%s: failed\n",
-					__func__);
-				return (-1);
+			bcopy(ha->hw.mcast[i].addr, mcast, ETHER_ADDR_LEN);
+			mcast = mcast + ETHER_ADDR_LEN;
+			count++;
+			
+			if (count == Q8_MAX_MAC_ADDRS) {
+				if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr,
+					add_mcast, count)) {
+                			device_printf(ha->pci_dev,
+						"%s: failed\n", __func__);
+					return (-1);
+				}
+
+				count = 0;
+				mcast = ha->hw.mac_addr_arr;
+				memset(mcast, 0,
+					(Q8_MAX_MAC_ADDRS * ETHER_ADDR_LEN));
 			}
 
 			nmcast--;
 		}
 	}
+
+	if (count) {
+		if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, add_mcast,
+			count)) {
+                	device_printf(ha->pci_dev, "%s: failed\n", __func__);
+			return (-1);
+		}
+	}
+	QL_DPRINT2(ha, (ha->pci_dev,
+		"%s:[0x%x] exit nmcast = %d \n", __func__, add_mcast, nmcast));
+
 	return 0;
 }
 
 static int
-qla_hw_del_all_mcast(qla_host_t *ha)
+qla_hw_add_all_mcast(qla_host_t *ha)
 {
-	int i, nmcast;
+	int ret;
 
-	nmcast = ha->hw.nmcast;
+	ret = qla_hw_all_mcast(ha, 1);
 
-	for (i = 0 ; ((i < Q8_MAX_NUM_MULTICAST_ADDRS) && nmcast); i++) {
-		if ((ha->hw.mcast[i].addr[0] != 0) || 
-			(ha->hw.mcast[i].addr[1] != 0) ||
-			(ha->hw.mcast[i].addr[2] != 0) ||
-			(ha->hw.mcast[i].addr[3] != 0) ||
-			(ha->hw.mcast[i].addr[4] != 0) ||
-			(ha->hw.mcast[i].addr[5] != 0)) {
+	return (ret);
+}
 
-			if (qla_config_mac_addr(ha, ha->hw.mcast[i].addr, 0))
-				return (-1);
+static int
+qla_hw_del_all_mcast(qla_host_t *ha)
+{
+	int ret;
 
-			nmcast--;
-		}
-	}
-	return 0;
+	ret = qla_hw_all_mcast(ha, 0);
+
+	bzero(ha->hw.mcast, (sizeof (qla_mcast_t) * Q8_MAX_NUM_MULTICAST_ADDRS));
+	ha->hw.nmcast = 0;
+
+	return (ret);
 }
 
 static int
-qla_hw_add_mcast(qla_host_t *ha, uint8_t *mta)
+qla_hw_mac_addr_present(qla_host_t *ha, uint8_t *mta)
 {
 	int i;
 
 	for (i = 0; i < Q8_MAX_NUM_MULTICAST_ADDRS; i++) {
-
 		if (QL_MAC_CMP(ha->hw.mcast[i].addr, mta) == 0)
-			return 0; /* its been already added */
+			return (0); /* its been already added */
 	}
+	return (-1);
+}
+
+static int
+qla_hw_add_mcast(qla_host_t *ha, uint8_t *mta, uint32_t nmcast)
+{
+	int i;
 
 	for (i = 0; i < Q8_MAX_NUM_MULTICAST_ADDRS; i++) {
 
@@ -2996,29 +3050,28 @@ qla_hw_add_mcast(qla_host_t *ha, uint8_t
 			(ha->hw.mcast[i].addr[4] == 0) &&
 			(ha->hw.mcast[i].addr[5] == 0)) {
 
-			if (qla_config_mac_addr(ha, mta, 1))
-				return (-1);
-
 			bcopy(mta, ha->hw.mcast[i].addr, Q8_MAC_ADDR_LEN);
 			ha->hw.nmcast++;	
 
-			return 0;
+			mta = mta + ETHER_ADDR_LEN;
+			nmcast--;
+
+			if (nmcast == 0)
+				break;
 		}
+
 	}
 	return 0;
 }
 
 static int
-qla_hw_del_mcast(qla_host_t *ha, uint8_t *mta)
+qla_hw_del_mcast(qla_host_t *ha, uint8_t *mta, uint32_t nmcast)
 {
 	int i;
 
 	for (i = 0; i < Q8_MAX_NUM_MULTICAST_ADDRS; i++) {
 		if (QL_MAC_CMP(ha->hw.mcast[i].addr, mta) == 0) {
 
-			if (qla_config_mac_addr(ha, mta, 0))
-				return (-1);
-
 			ha->hw.mcast[i].addr[0] = 0;
 			ha->hw.mcast[i].addr[1] = 0;
 			ha->hw.mcast[i].addr[2] = 0;
@@ -3028,7 +3081,11 @@ qla_hw_del_mcast(qla_host_t *ha, uint8_t
 
 			ha->hw.nmcast--;	
 
-			return 0;
+			mta = mta + ETHER_ADDR_LEN;
+			nmcast--;
+
+			if (nmcast == 0)
+				break;
 		}
 	}
 	return 0;
@@ -3036,30 +3093,75 @@ qla_hw_del_mcast(qla_host_t *ha, uint8_t
 
 /*
  * Name: ql_hw_set_multi
- * Function: Sets the Multicast Addresses provided the host O.S into the
+ * Function: Sets the Multicast Addresses provided by the host O.S into the
  *	hardware (for the given interface)
  */
 int
-ql_hw_set_multi(qla_host_t *ha, uint8_t *mcast, uint32_t mcnt,
+ql_hw_set_multi(qla_host_t *ha, uint8_t *mcast_addr, uint32_t mcnt,
 	uint32_t add_mac)
 {
+	uint8_t *mta = mcast_addr;
 	int i;
-	uint8_t *mta = mcast;
 	int ret = 0;
+	uint32_t count = 0;
+	uint8_t *mcast;
+
+	mcast = ha->hw.mac_addr_arr;
+	memset(mcast, 0, (Q8_MAX_MAC_ADDRS * ETHER_ADDR_LEN));
 
 	for (i = 0; i < mcnt; i++) {
-		if (add_mac) {
-			ret = qla_hw_add_mcast(ha, mta);
-			if (ret)
-				break;
-		} else {
-			ret = qla_hw_del_mcast(ha, mta);
-			if (ret)
-				break;
+		if (mta[0] || mta[1] || mta[2] || mta[3] || mta[4] || mta[5]) {
+			if (add_mac) {
+				if (qla_hw_mac_addr_present(ha, mta) != 0) {
+					bcopy(mta, mcast, ETHER_ADDR_LEN);
+					mcast = mcast + ETHER_ADDR_LEN;
+					count++;
+				}
+			} else {
+				if (qla_hw_mac_addr_present(ha, mta) == 0) {
+					bcopy(mta, mcast, ETHER_ADDR_LEN);
+					mcast = mcast + ETHER_ADDR_LEN;
+					count++;
+				}
+			}
+		}
+		if (count == Q8_MAX_MAC_ADDRS) {
+			if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr,
+				add_mac, count)) {
+                		device_printf(ha->pci_dev, "%s: failed\n",
+					__func__);
+				return (-1);
+			}
+
+			if (add_mac) {
+				qla_hw_add_mcast(ha, ha->hw.mac_addr_arr,
+					count);
+			} else {
+				qla_hw_del_mcast(ha, ha->hw.mac_addr_arr,
+					count);
+			}
+
+			count = 0;
+			mcast = ha->hw.mac_addr_arr;
+			memset(mcast, 0, (Q8_MAX_MAC_ADDRS * ETHER_ADDR_LEN));
 		}
 			
 		mta += Q8_MAC_ADDR_LEN;
 	}
+
+	if (count) {
+		if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, add_mac,
+			count)) {
+                	device_printf(ha->pci_dev, "%s: failed\n", __func__);
+			return (-1);
+		}
+		if (add_mac) {
+			qla_hw_add_mcast(ha, ha->hw.mac_addr_arr, count);
+		} else {
+			qla_hw_del_mcast(ha, ha->hw.mac_addr_arr, count);
+		}
+	}
+
 	return (ret);
 }
 

Modified: user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.h	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_hw.h	Fri Oct  7 22:25:07 2016	(r306832)
@@ -210,7 +210,7 @@
 
 #define Q8_NUM_MBOX	512
 
-#define Q8_MAX_NUM_MULTICAST_ADDRS	1023
+#define Q8_MAX_NUM_MULTICAST_ADDRS	1022
 #define Q8_MAC_ADDR_LEN			6
 
 /*
@@ -511,8 +511,9 @@ typedef struct _q80_config_intr_coalesc_
 /*
  * Configure MAC Address
  */
+#define Q8_ETHER_ADDR_LEN		6
 typedef struct _q80_mac_addr {
-	uint8_t		addr[6];
+	uint8_t		addr[Q8_ETHER_ADDR_LEN];
 	uint16_t	vlan_tci;
 } __packed q80_mac_addr_t;
 
@@ -1548,7 +1549,7 @@ typedef struct _qla_hw_tx_cntxt {
 
 typedef struct _qla_mcast {
 	uint16_t	rsrvd;
-	uint8_t		addr[6];
+	uint8_t		addr[ETHER_ADDR_LEN];
 } __packed qla_mcast_t; 
 
 typedef struct _qla_rdesc {
@@ -1660,6 +1661,7 @@ typedef struct _qla_hw {
 	/* multicast address list */
 	uint32_t	nmcast;
 	qla_mcast_t	mcast[Q8_MAX_NUM_MULTICAST_ADDRS];
+	uint8_t		mac_addr_arr[(Q8_MAX_MAC_ADDRS * ETHER_ADDR_LEN)];
 
 	/* reset sequence */
 #define Q8_MAX_RESET_SEQ_IDX	16

Modified: user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_os.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_os.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_os.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -243,6 +243,8 @@ qla_watchdog(void *arg)
 			ha->flags.qla_watchdog_pause = 1;
 			ha->qla_initiate_recovery = 0;
 			ha->err_inject = 0;
+			device_printf(ha->pci_dev,
+				"%s: taskqueue_enqueue(err_task) \n", __func__);
 			taskqueue_enqueue(ha->err_tq, &ha->err_task);
 		} else if (ha->flags.qla_interface_up) {
 
@@ -452,7 +454,7 @@ qla_pci_attach(device_t dev)
 
 
 	TASK_INIT(&ha->tx_task, 0, qla_tx_done, ha);
-	ha->tx_tq = taskqueue_create_fast("qla_txq", M_NOWAIT,
+	ha->tx_tq = taskqueue_create("qla_txq", M_NOWAIT,
 			taskqueue_thread_enqueue, &ha->tx_tq);
 	taskqueue_start_threads(&ha->tx_tq, 1, PI_NET, "%s txq",
 		device_get_nameunit(ha->pci_dev));
@@ -470,13 +472,13 @@ qla_pci_attach(device_t dev)
 		qla_watchdog, ha);
 
 	TASK_INIT(&ha->err_task, 0, qla_error_recovery, ha);
-	ha->err_tq = taskqueue_create_fast("qla_errq", M_NOWAIT,
+	ha->err_tq = taskqueue_create("qla_errq", M_NOWAIT,
 			taskqueue_thread_enqueue, &ha->err_tq);
 	taskqueue_start_threads(&ha->err_tq, 1, PI_NET, "%s errq",
 		device_get_nameunit(ha->pci_dev));
 
         TASK_INIT(&ha->async_event_task, 0, qla_async_event, ha);
-        ha->async_event_tq = taskqueue_create_fast("qla_asyncq", M_NOWAIT,
+        ha->async_event_tq = taskqueue_create("qla_asyncq", M_NOWAIT,
                         taskqueue_thread_enqueue, &ha->async_event_tq);
         taskqueue_start_threads(&ha->async_event_tq, 1, PI_NET, "%s asyncq",
                 device_get_nameunit(ha->pci_dev));

Modified: user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_ver.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_ver.h	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/dev/qlxgbe/ql_ver.h	Fri Oct  7 22:25:07 2016	(r306832)
@@ -36,6 +36,6 @@
 
 #define QLA_VERSION_MAJOR 	3
 #define QLA_VERSION_MINOR	10
-#define QLA_VERSION_BUILD       30
+#define QLA_VERSION_BUILD       31
 
 #endif /* #ifndef _QL_VER_H_ */

Modified: user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/kern/vfs_cache.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -1756,7 +1756,7 @@ cache_purge_negative(struct vnode *vp)
  * Flush all entries referencing a particular filesystem.
  */
 void
-cache_purgevfs(struct mount *mp)
+cache_purgevfs(struct mount *mp, bool force)
 {
 	TAILQ_HEAD(, namecache) ncps;
 	struct mtx *vlp1, *vlp2;
@@ -1768,7 +1768,7 @@ cache_purgevfs(struct mount *mp)
 
 	/* Scan hash tables for applicable entries */
 	SDT_PROBE1(vfs, namecache, purgevfs, done, mp);
-	if (mp->mnt_nvnodelistsize <= ncpurgeminvnodes)
+	if (!force && mp->mnt_nvnodelistsize <= ncpurgeminvnodes)
 		return;
 	TAILQ_INIT(&ncps);
 	n_nchash = nchash + 1;

Modified: user/alc/PQ_LAUNDRY/sys/kern/vfs_mount.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/kern/vfs_mount.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/kern/vfs_mount.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -1352,7 +1352,7 @@ dounmount(struct mount *mp, int flags, s
 	mp->mnt_flag &= ~MNT_ASYNC;
 	mp->mnt_kern_flag &= ~MNTK_ASYNC;
 	MNT_IUNLOCK(mp);
-	cache_purgevfs(mp);	/* remove cache entries for this file sys */
+	cache_purgevfs(mp, false); /* remove cache entries for this file sys */
 	vfs_deallocate_syncvnode(mp);
 	/*
 	 * For forced unmounts, move process cdir/rdir refs on the fs root

Modified: user/alc/PQ_LAUNDRY/sys/kern/vfs_mountroot.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/kern/vfs_mountroot.c	Fri Oct  7 22:17:43 2016	(r306831)
+++ user/alc/PQ_LAUNDRY/sys/kern/vfs_mountroot.c	Fri Oct  7 22:25:07 2016	(r306832)
@@ -298,9 +298,9 @@ vfs_mountroot_shuffle(struct thread *td,
 	TAILQ_INSERT_TAIL(&mountlist, mpdevfs, mnt_list);
 	mtx_unlock(&mountlist_mtx);
 
-	cache_purgevfs(mporoot);
+	cache_purgevfs(mporoot, true);
 	if (mporoot != mpdevfs)
-		cache_purgevfs(mpdevfs);
+		cache_purgevfs(mpdevfs, true);
 
 	VFS_ROOT(mporoot, LK_EXCLUSIVE, &vporoot);
 
@@ -315,7 +315,7 @@ vfs_mountroot_shuffle(struct thread *td,
 	/* Set up the new rootvnode, and purge the cache */
 	mpnroot->mnt_vnodecovered = NULL;
 	set_rootvnode();
-	cache_purgevfs(rootvnode->v_mount);
+	cache_purgevfs(rootvnode->v_mount, true);
 
 	if (mporoot != mpdevfs) {
 		/* Remount old root under /.mount or /mnt */

Copied: user/alc/PQ_LAUNDRY/sys/mips/conf/AR5312_BASE.hints (from r306831, head/sys/mips/conf/AR5312_BASE.hints)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/sys/mips/conf/AR5312_BASE.hints	Fri Oct  7 22:25:07 2016	(r306832, copy of r306831, head/sys/mips/conf/AR5312_BASE.hints)
@@ -0,0 +1,29 @@
+# $FreeBSD$
+hint.apb.0.at="nexus0"
+hint.apb.0.irq=4
+
+# uart0
+hint.uart.0.at="apb0"
+# see atheros/uart_cpu_ar71xx.c why +3
+hint.uart.0.maddr=0x1C000003
+hint.uart.0.msize=0x20
+#hint.uart.0.irq=4
+#hint.uart.0.flags="0x30"
+
+# Watchdog
+hint.ar5315_wdog.0.at="apb0"
+hint.ar5315_wdog.0.irq=6
+
+# Ethernet
+hint.are.0.at="nexus0" 
+hint.are.0.maddr=0x18100000
+hint.are.0.msize=0x00100000  
+hint.are.0.irq=1
+
+hint.are.1.at="nexus0"     
+hint.are.1.maddr=0x18200000
+hint.are.1.msize=0x00100000
+hint.are.1.irq=2
+
+# GEOM redboot FIS directory offset
+#hint.redboot.0.fisoffset="0x007e0000"

Copied: user/alc/PQ_LAUNDRY/sys/mips/conf/AR5315_BASE.hints (from r306831, head/sys/mips/conf/AR5315_BASE.hints)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/sys/mips/conf/AR5315_BASE.hints	Fri Oct  7 22:25:07 2016	(r306832, copy of r306831, head/sys/mips/conf/AR5315_BASE.hints)
@@ -0,0 +1,34 @@
+# $FreeBSD$
+hint.apb.0.at="nexus0"
+hint.apb.0.irq=0
+
+# uart0
+hint.uart.0.at="apb0"
+hint.uart.0.maddr=0x11100003
+hint.uart.0.msize=0x20
+#hint.uart.0.irq=0
+#hint.uart.0.flags="0x30"
+
+# Watchdog
+hint.ar5315_wdog.0.at="apb0"
+hint.ar5315_wdog.0.irq=7
+
+# SPI
+hint.spi.0.at="nexus0"
+hint.spi.0.maddr=0x11300000
+hint.spi.0.msize=0x0000000c
+#hint.spi.0.irq=2
+
+# Ethernet
+hint.are.0.at="nexus0"
+hint.are.0.maddr=0x10500000
+hint.are.0.msize=0x500000
+hint.are.0.irq=2
+
+# Flash
+hint.mx25l.0.at="spibus0"       
+hint.mx25l.0.cs=0
+
+# GEOM redboot FIS directory offset
+#hint.redboot.0.fisoffset="0x007e0000"
+

Copied: user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5312 (from r306831, head/sys/mips/conf/std.AR5312)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5312	Fri Oct  7 22:25:07 2016	(r306832, copy of r306831, head/sys/mips/conf/std.AR5312)
@@ -0,0 +1,80 @@
+#
+# AR5312 -- Kernel configuration file for FreeBSD/MIPS for Atheros 5312 systems
+#
+# This includes all the common drivers for the AR5312 boards
+#
+# $FreeBSD$
+#
+
+machine		mips mips
+#ident		AR5312_BASE
+cpu		CPU_MIPS4KC
+makeoptions	KERNLOADADDR=0x80050000
+options 	HZ=1000
+
+makeoptions	MODULES_OVERRIDE=""
+
+files		"../atheros/ar531x/files.ar5315"
+
+options 	INTRNG
+options 	AR531X_1ST_GENERATION
+
+# For now, hints are per-board.
+
+hints		"AR5312_BASE.hints"
+
+makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols
+
+# For small memory footprints
+options VM_KMEM_SIZE_SCALE=1
+
+options 	DDB
+options 	KDB
+
+options 	SCHED_4BSD		#4BSD scheduler
+options 	INET			#InterNETworking
+options 	INET6			# IPv6
+
+# options 	NFSCL		#Network Filesystem Client
+
+options 	PSEUDOFS		#Pseudo-filesystem framework
+options 	_KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
+
+# options 	NFS_LEGACYRPC
+# Debugging for use in -current
+options 	INVARIANTS
+options 	INVARIANT_SUPPORT
+options 	WITNESS
+options 	WITNESS_SKIPSPIN
+options 	DEBUG_REDZONE
+options 	DEBUG_MEMGUARD
+
+options         FFS                     #Berkeley Fast Filesystem
+# options         SOFTUPDATES             #Enable FFS soft updates support
+# options         UFS_ACL                 #Support for access control lists
+# options         UFS_DIRHASH             #Improve performance on big directories
+# options 	MSDOSFS			# Read MSDOS filesystems; useful for USB/CF
+
+device		mii
+device		are
+
+device		cfi
+options		CFI_HARDWAREBYTESWAP
+device		geom_redboot
+
+device		ar5315_wdog
+
+device		uart
+device		uart_ar5315
+
+device		loop
+device		ether
+device		md
+device		bpf
+device		random
+
+options 	ARGE_DEBUG	# Enable if_arge debugging for now
+
+# Enable GPIO
+device		gpio
+device		gpioled

Copied: user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5315 (from r306831, head/sys/mips/conf/std.AR5315)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/sys/mips/conf/std.AR5315	Fri Oct  7 22:25:07 2016	(r306832, copy of r306831, head/sys/mips/conf/std.AR5315)
@@ -0,0 +1,80 @@
+#
+# AR5315 -- Kernel configuration file for FreeBSD/MIPS for Atheros 5315 systems
+#
+# This includes all the common drivers for the AR5315 boards
+#
+# $FreeBSD$
+#
+
+machine		mips mips
+#ident		AR5315_BASE
+cpu		CPU_MIPS4KC
+makeoptions	KERNLOADADDR=0x80050000
+options 	HZ=1000
+
+makeoptions	MODULES_OVERRIDE=""
+
+files		"../atheros/ar531x/files.ar5315"
+
+options 	INTRNG
+
+# For now, hints are per-board.
+
+hints		"AR5315_BASE.hints"
+
+makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols
+
+# For small memory footprints
+options VM_KMEM_SIZE_SCALE=1
+
+options 	DDB
+options 	KDB
+
+options 	SCHED_4BSD		#4BSD scheduler
+options 	INET			#InterNETworking
+options 	INET6			# IPv6
+
+# options 	NFSCL		#Network Filesystem Client
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-user@freebsd.org  Fri Oct  7 23:36:10 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45F6CC05401
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 23:36:10 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au
 [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id E7A2C22B;
 Fri,  7 Oct 2016 23:36:09 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from c122-106-149-109.carlnfd1.nsw.optusnet.com.au
 (c122-106-149-109.carlnfd1.nsw.optusnet.com.au [122.106.149.109])
 by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id A20CFD63817;
 Sat,  8 Oct 2016 10:36:00 +1100 (AEDT)
Date: Sat, 8 Oct 2016 10:35:59 +1100 (EST)
From: Bruce Evans <brde@optusnet.com.au>
X-X-Sender: bde@besplex.bde.org
To: Mark Johnston <markj@freebsd.org>
cc: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: Re: svn commit: r306831 - in user/alc/PQ_LAUNDRY/usr.bin: systat
 vmstat
In-Reply-To: <201610072217.u97MHh08042582@repo.freebsd.org>
Message-ID: <20161008093219.O2989@besplex.bde.org>
References: <201610072217.u97MHh08042582@repo.freebsd.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-Optus-CM-Score: 0
X-Optus-CM-Analysis: v=2.1 cv=VIkg5I7X c=1 sm=1 tr=0
 a=R/f3m204ZbWUO/0rwPSMPw==:117 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10
 a=s5jvgZ67dGcA:10 a=kj9zAlcOel0A:10 a=l4ehqzH4_d9zZRUFdhcA:9
 a=CjuIK1q_8ugA:10 a=chvjmp5bT-K0Np4W8Gpx:22
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 23:36:10 -0000

On Fri, 7 Oct 2016, Mark Johnston wrote:

> Log:
>  Teach vmstat and systat about v_pdshortfalls.

systat has a negative amount of space available for expansion.

> Modified: user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c
> ==============================================================================
> --- user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:25 2016	(r306830)
> +++ user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:43 2016	(r306831)
> @@ -339,14 +340,15 @@ labelkre(void)
> 	mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react");
> 	mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak");
> 	mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs");
> -	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn");
> -	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire");
> -	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act");
> -	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact");
> -	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "laund");
> -	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free");
> -	if (LINES - 1 > VMSTATROW + 17)
> -		mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf");
> +	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "pdshort");
> +	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "intrn");
> +	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "wire");
> +	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "act");
> +	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "inact");
> +	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "laund");
> +	mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "free");
> +	if (LINES - 1 > VMSTATROW + 18)
> +		mvprintw(VMSTATROW + 18, VMSTATCOL + 9, "buf");
>
> 	mvprintw(GENSTATROW, GENSTATCOL, " Csw  Trp  Sys  Int  Sof  Flt");

Already the display of 'buf' was broken by expansion: on freefall now:

    30 users    Load  0.21  0.18  0.13                  Oct  7 22:32
    Mem usage:  82%Phy 10%Kmem
Mem: KB    REAL            VIRTUAL                      VN PAGER   SWAP PAGER
         Tot   Share      Tot    Share    Free           in   out     in   out
Act  784512   23764  7319516    42640 4515744  count
All  893752  129672  7995532   624636          pages
Proc:                                                            Interrupts
   r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt   569 total
             422      3216   49  362  232   33    5      1 cow         uart0 4
                                                         2 zfod     29 cpu0:timer
  0.3%Sys   0.0%Intr  0.0%User  0.0%Nice 99.7%Idle         ozfod     4 igb0:que 0
|    |    |    |    |    |    |    |    |    |           %ozfod     1 igb0:que 1
                                                           daefr    12 igb0:que 2
                                          1 dtbuf       93 prcfr     1 igb0:que 3
Namei     Name-cache   Dir-cache    485980 desvn      117 totfr    10 igb0:que 4
    Calls    hits   %    hits   %    485400 numvn          react     1 igb0:que 5
       17      17 100                179227 frevn          pdwak     1 igb0:que 6
                                                       147 pdpgs     4 igb0:que 7
Disks   da0   da1   da2   da3   da4   da5   da6           intrn       igb0:link
KB/t  20.12 19.75 19.75 20.00 19.62 20.00  0.00   5096864 wire    196 ciss0 274
tps      31    31    31    31    31    31     0    330628 act      27 cpu1:timer
MB/s   0.61  0.60  0.60  0.60  0.59  0.60  0.00  14524764 inact     6 cpu18:time
%busy    15    13    16    16    18    15     0           cache     7 cpu8:timer
                                                   4515744 free      3 cpu10:time
                                                                     2 cpu16:time

'buf' is not important, but 'free' is.

The last line is not available for the main display, but is used for the
cpu16:time<content lost to verbose naming>.  This line is used for input,
so and everything displayed on it is cleared for input and then messed up
in an uglier way by redisplaying only parts (for the cpu16: field, the
count is re-displayed on screen refresh but the description is not
re-displayed without a switch to another screen and back).

The interrupts column and the input line are generally broken.  With
24 CPUs and also some other per-cpu interrupt counts, it takes about
a 200-row terminal to display all the interrupts and then 1 more row
to stop the input line running into the interrupts.  The rest of the
display is tuned for 25 rows and looks strange when it is 7/8 unused.
Per-CPU interrupts are also miscounted in totals...

Bruce

From owner-svn-src-user@freebsd.org  Fri Oct  7 23:46:38 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8B61DC05822
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 23:46:38 +0000 (UTC)
 (envelope-from markjdb@gmail.com)
Received: from mail-pa0-x243.google.com (mail-pa0-x243.google.com
 [IPv6:2607:f8b0:400e:c03::243])
 (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 6444F9CD;
 Fri,  7 Oct 2016 23:46:38 +0000 (UTC)
 (envelope-from markjdb@gmail.com)
Received: by mail-pa0-x243.google.com with SMTP id cd13so3353307pac.3;
 Fri, 07 Oct 2016 16:46:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=sender:date:from:to:cc:subject:message-id:references:mime-version
 :content-disposition:in-reply-to:user-agent;
 bh=IQgcJ0c6F6HN3avtAzylQggqtRssGust73X5Gasg6Vo=;
 b=NckIlF3T3ZyLGuxhi8bGTRNULQ4S/+i8YtGsy6S2v1tSriGKBjREGoFe/nVGI9VjVL
 Dv28Mm8RBOEgtMHb74SJRJ4Bcv81+KNUBbWt/IjyxIyNmMGKGSPI6MUTtIa6tR3GiZhV
 ystXPXb+q33LqkkKKPc/EqbXHOWZeNNnua+sF3PaZjw+e/zGQC4v4s7hjgUUDKADW4+M
 u/MdUt43vgyxXjdQFhQGqLsvFlwPr6cIqZmHQrZ5YQoC4MPKrpFvdgbXgBMDmh8n2nPK
 pWTHGIKYbH+JT8gwht39Nk1W9X2tUz8lM5pWBLMwNHcC2KWmrlNdr7WHHZEGy5kHf/NP
 bV0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:sender:date:from:to:cc:subject:message-id
 :references:mime-version:content-disposition:in-reply-to:user-agent;
 bh=IQgcJ0c6F6HN3avtAzylQggqtRssGust73X5Gasg6Vo=;
 b=j/tAizEo/Yu8Jo0kxXKhCufe63tqPfQn3Y8SR5od8QjCXqyKuDz8so+9SslhDmEEG0
 kLgTuN/mq1b5yp9w06p0FDB5ycVlyB7FztR+nYDOrSEgMOY9hetuS9hIF9NEO5bBnP06
 mZmFzRpcZ9JDZ82/pgH6e7uuBzAXUmNy0NDs9gwHfkv8OT92VkpS4CIDtj3S/Hh8H1In
 FE4V7dp6Rnwcu0Vaotb2s+GI52IsCIJiXJ7ALKp3n+3ecbeQWhpb3fcl/jzofAQi2N52
 kvoQ99mCQT/mJ9BbOW/i4xk6Qcavt+AeCLw9NPn4l/pgetfhx2hHSSGWGoFsF41sb6sw
 l1gw==
X-Gm-Message-State: AA6/9RlO9mBpfTeajHnNC9uS7r9hw/GA7uj1opvnBYjwbjJ/c2Kmapx1XdFuY44fxAJz8A==
X-Received: by 10.66.16.74 with SMTP id e10mr1056243pad.148.1475883997872;
 Fri, 07 Oct 2016 16:46:37 -0700 (PDT)
Received: from wkstn-mjohnston.west.isilon.com
 (c-76-104-201-218.hsd1.wa.comcast.net. [76.104.201.218])
 by smtp.gmail.com with ESMTPSA id s29sm16585999pfi.55.2016.10.07.16.46.35
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 07 Oct 2016 16:46:37 -0700 (PDT)
Sender: Mark Johnston <markjdb@gmail.com>
Date: Fri, 7 Oct 2016 16:52:36 -0700
From: Mark Johnston <markj@freebsd.org>
To: Bruce Evans <brde@optusnet.com.au>
Cc: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: Re: svn commit: r306831 - in user/alc/PQ_LAUNDRY/usr.bin: systat
 vmstat
Message-ID: <20161007235236.GC65501@wkstn-mjohnston.west.isilon.com>
References: <201610072217.u97MHh08042582@repo.freebsd.org>
 <20161008093219.O2989@besplex.bde.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20161008093219.O2989@besplex.bde.org>
User-Agent: Mutt/1.6.1 (2016-04-27)
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 23:46:38 -0000

On Sat, Oct 08, 2016 at 10:35:59AM +1100, Bruce Evans wrote:
> On Fri, 7 Oct 2016, Mark Johnston wrote:
> 
> > Log:
> >  Teach vmstat and systat about v_pdshortfalls.
> 
> systat has a negative amount of space available for expansion.

Hm, I see. I'll revert the systat modifications then. It isn't
particularly handy to have the rate of shortfall wakeups given what's
already available in the vmstat display.

> 
> > Modified: user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c
> > ==============================================================================
> > --- user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:25 2016	(r306830)
> > +++ user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:17:43 2016	(r306831)
> > @@ -339,14 +340,15 @@ labelkre(void)
> > 	mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react");
> > 	mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak");
> > 	mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs");
> > -	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn");
> > -	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire");
> > -	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act");
> > -	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact");
> > -	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "laund");
> > -	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free");
> > -	if (LINES - 1 > VMSTATROW + 17)
> > -		mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf");
> > +	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "pdshort");
> > +	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "intrn");
> > +	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "wire");
> > +	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "act");
> > +	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "inact");
> > +	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "laund");
> > +	mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "free");
> > +	if (LINES - 1 > VMSTATROW + 18)
> > +		mvprintw(VMSTATROW + 18, VMSTATCOL + 9, "buf");
> >
> > 	mvprintw(GENSTATROW, GENSTATCOL, " Csw  Trp  Sys  Int  Sof  Flt");
> 
> Already the display of 'buf' was broken by expansion: on freefall now:
> 
>     30 users    Load  0.21  0.18  0.13                  Oct  7 22:32
>     Mem usage:  82%Phy 10%Kmem
> Mem: KB    REAL            VIRTUAL                      VN PAGER   SWAP PAGER
>          Tot   Share      Tot    Share    Free           in   out     in   out
> Act  784512   23764  7319516    42640 4515744  count
> All  893752  129672  7995532   624636          pages
> Proc:                                                            Interrupts
>    r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt   569 total
>              422      3216   49  362  232   33    5      1 cow         uart0 4
>                                                          2 zfod     29 cpu0:timer
>   0.3%Sys   0.0%Intr  0.0%User  0.0%Nice 99.7%Idle         ozfod     4 igb0:que 0
> |    |    |    |    |    |    |    |    |    |           %ozfod     1 igb0:que 1
>                                                            daefr    12 igb0:que 2
>                                           1 dtbuf       93 prcfr     1 igb0:que 3
> Namei     Name-cache   Dir-cache    485980 desvn      117 totfr    10 igb0:que 4
>     Calls    hits   %    hits   %    485400 numvn          react     1 igb0:que 5
>        17      17 100                179227 frevn          pdwak     1 igb0:que 6
>                                                        147 pdpgs     4 igb0:que 7
> Disks   da0   da1   da2   da3   da4   da5   da6           intrn       igb0:link
> KB/t  20.12 19.75 19.75 20.00 19.62 20.00  0.00   5096864 wire    196 ciss0 274
> tps      31    31    31    31    31    31     0    330628 act      27 cpu1:timer
> MB/s   0.61  0.60  0.60  0.60  0.59  0.60  0.00  14524764 inact     6 cpu18:time
> %busy    15    13    16    16    18    15     0           cache     7 cpu8:timer
>                                                    4515744 free      3 cpu10:time
>                                                                      2 cpu16:time
> 
> 'buf' is not important, but 'free' is.
> 
> The last line is not available for the main display, but is used for the
> cpu16:time<content lost to verbose naming>.  This line is used for input,
> so and everything displayed on it is cleared for input and then messed up
> in an uglier way by redisplaying only parts (for the cpu16: field, the
> count is re-displayed on screen refresh but the description is not
> re-displayed without a switch to another screen and back).
> 
> The interrupts column and the input line are generally broken.  With
> 24 CPUs and also some other per-cpu interrupt counts, it takes about
> a 200-row terminal to display all the interrupts and then 1 more row
> to stop the input line running into the interrupts.  The rest of the
> display is tuned for 25 rows and looks strange when it is 7/8 unused.
> Per-CPU interrupts are also miscounted in totals...
> 
> Bruce

From owner-svn-src-user@freebsd.org  Fri Oct  7 23:52:31 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id A2322C05917
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Fri,  7 Oct 2016 23:52:31 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 70267D67;
 Fri,  7 Oct 2016 23:52:31 +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 u97NqUJ8079566;
 Fri, 7 Oct 2016 23:52:30 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u97NqUNK079565;
 Fri, 7 Oct 2016 23:52:30 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201610072352.u97NqUNK079565@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Fri, 7 Oct 2016 23:52:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306833 - user/alc/PQ_LAUNDRY/usr.bin/systat
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Oct 2016 23:52:31 -0000

Author: markj
Date: Fri Oct  7 23:52:30 2016
New Revision: 306833
URL: https://svnweb.freebsd.org/changeset/base/306833

Log:
  Revert the systat modifications from r306831.
  
  The information provided by the rate of page reclaimation shortfalls
  doesn't really justify the extra space required to display it. The
  occurrence of shortfall can be deduced from information that's already
  available in the vmstat display.
  
  Reported by:	bde

Modified:
  user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c

Modified: user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c
==============================================================================
--- user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 22:25:07 2016	(r306832)
+++ user/alc/PQ_LAUNDRY/usr.bin/systat/vmstat.c	Fri Oct  7 23:52:30 2016	(r306833)
@@ -95,7 +95,6 @@ static struct Info {
 	u_int v_reactivated;	/* number of pages reactivated by pagedaemon */
 	u_int v_pdwakeups;	/* number of times daemon has awaken from sleep */
 	u_int v_pdpages;	/* number of pages analyzed by daemon */
-	u_int v_pdshortfalls;	/* number of page reclaimation shortfalls */
 
 	u_int v_dfree;		/* pages freed by daemon */
 	u_int v_pfree;		/* pages freed by exiting processes */
@@ -340,15 +339,14 @@ labelkre(void)
 	mvprintw(VMSTATROW + 8, VMSTATCOL + 9, "react");
 	mvprintw(VMSTATROW + 9, VMSTATCOL + 9, "pdwak");
 	mvprintw(VMSTATROW + 10, VMSTATCOL + 9, "pdpgs");
-	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "pdshort");
-	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "intrn");
-	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "wire");
-	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "act");
-	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "inact");
-	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "laund");
-	mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "free");
-	if (LINES - 1 > VMSTATROW + 18)
-		mvprintw(VMSTATROW + 18, VMSTATCOL + 9, "buf");
+	mvprintw(VMSTATROW + 11, VMSTATCOL + 9, "intrn");
+	mvprintw(VMSTATROW + 12, VMSTATCOL + 9, "wire");
+	mvprintw(VMSTATROW + 13, VMSTATCOL + 9, "act");
+	mvprintw(VMSTATROW + 14, VMSTATCOL + 9, "inact");
+	mvprintw(VMSTATROW + 15, VMSTATCOL + 9, "laund");
+	mvprintw(VMSTATROW + 16, VMSTATCOL + 9, "free");
+	if (LINES - 1 > VMSTATROW + 17)
+		mvprintw(VMSTATROW + 17, VMSTATCOL + 9, "buf");
 
 	mvprintw(GENSTATROW, GENSTATCOL, " Csw  Trp  Sys  Int  Sof  Flt");
 
@@ -517,15 +515,14 @@ showkre(void)
 	PUTRATE(v_reactivated, VMSTATROW + 8, VMSTATCOL, 8);
 	PUTRATE(v_pdwakeups, VMSTATROW + 9, VMSTATCOL, 8);
 	PUTRATE(v_pdpages, VMSTATROW + 10, VMSTATCOL, 8);
-	PUTRATE(v_pdshortfalls, VMSTATROW + 11, VMSTATCOL, 8);
-	PUTRATE(v_intrans, VMSTATROW + 12, VMSTATCOL, 8);
-	putint(pgtokb(s.v_wire_count), VMSTATROW + 13, VMSTATCOL, 8);
-	putint(pgtokb(s.v_active_count), VMSTATROW + 14, VMSTATCOL, 8);
-	putint(pgtokb(s.v_inactive_count), VMSTATROW + 15, VMSTATCOL, 8);
-	putint(pgtokb(s.v_laundry_count), VMSTATROW + 16, VMSTATCOL, 8);
-	putint(pgtokb(s.v_free_count), VMSTATROW + 17, VMSTATCOL, 8);
-	if (LINES - 1 > VMSTATROW + 18)
-		putint(s.bufspace / 1024, VMSTATROW + 18, VMSTATCOL, 8);
+	PUTRATE(v_intrans, VMSTATROW + 11, VMSTATCOL, 8);
+	putint(pgtokb(s.v_wire_count), VMSTATROW + 12, VMSTATCOL, 8);
+	putint(pgtokb(s.v_active_count), VMSTATROW + 13, VMSTATCOL, 8);
+	putint(pgtokb(s.v_inactive_count), VMSTATROW + 14, VMSTATCOL, 8);
+	putint(pgtokb(s.v_laundry_count), VMSTATROW + 15, VMSTATCOL, 8);
+	putint(pgtokb(s.v_free_count), VMSTATROW + 16, VMSTATCOL, 8);
+	if (LINES - 1 > VMSTATROW + 17)
+		putint(s.bufspace / 1024, VMSTATROW + 17, VMSTATCOL, 8);
 	PUTRATE(v_vnodein, PAGEROW + 2, PAGECOL + 6, 5);
 	PUTRATE(v_vnodeout, PAGEROW + 2, PAGECOL + 12, 5);
 	PUTRATE(v_swapin, PAGEROW + 2, PAGECOL + 19, 5);
@@ -789,7 +786,6 @@ getinfo(struct Info *ls)
 	GETSYSCTL("vm.stats.vm.v_reactivated", ls->v_reactivated);
 	GETSYSCTL("vm.stats.vm.v_pdwakeups", ls->v_pdwakeups);
 	GETSYSCTL("vm.stats.vm.v_pdpages", ls->v_pdpages);
-	GETSYSCTL("vm.stats.vm.v_pdshortfalls", ls->v_pdshortfalls);
 	GETSYSCTL("vm.stats.vm.v_dfree", ls->v_dfree);
 	GETSYSCTL("vm.stats.vm.v_pfree", ls->v_pfree);
 	GETSYSCTL("vm.stats.vm.v_tfree", ls->v_tfree);

From owner-svn-src-user@freebsd.org  Sat Oct  8 00:07:22 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 30782C05D6B
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sat,  8 Oct 2016 00:07:22 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id EA566617;
 Sat,  8 Oct 2016 00:07:21 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u9807LVV083503;
 Sat, 8 Oct 2016 00:07:21 GMT (envelope-from alc@FreeBSD.org)
Received: (from alc@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id u9807Lrd083502;
 Sat, 8 Oct 2016 00:07:21 GMT (envelope-from alc@FreeBSD.org)
Message-Id: <201610080007.u9807Lrd083502@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: alc set sender to alc@FreeBSD.org
 using -f
From: Alan Cox <alc@FreeBSD.org>
Date: Sat, 8 Oct 2016 00:07:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r306835 - user/alc/PQ_LAUNDRY/sys/vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Oct 2016 00:07:22 -0000

Author: alc
Date: Sat Oct  8 00:07:20 2016
New Revision: 306835
URL: https://svnweb.freebsd.org/changeset/base/306835

Log:
  Revert one line of r306595.  The variable "shortfall" is reset each time
  that the laundry thread wakes up, so it can't be used to tell if a shortfall
  laundering is in progress.
  
  Reviewed by:	markj

Modified:
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Sat Oct  8 00:01:07 2016	(r306834)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Sat Oct  8 00:07:20 2016	(r306835)
@@ -1217,7 +1217,7 @@ dolaundry:
 			 * a cluster minus one. 
 			 */
 			target -= min(vm_pageout_launder(domain, launder,
-			    shortfall > 0), target);
+			    prev_shortfall > 0), target);
 
 		/*
 		 * Sleep for a little bit if we're in the middle of a laundering

From owner-svn-src-user@freebsd.org  Sat Oct  8 00:32:21 2016
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3576CAF730B
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sat,  8 Oct 2016 00:32:21 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from mail108.syd.optusnet.com.au (mail108.syd.optusnet.com.au
 [211.29.132.59]) by mx1.freebsd.org (Postfix) with ESMTP id EC8193C5;
 Sat,  8 Oct 2016 00:32:20 +0000 (UTC)
 (envelope-from brde@optusnet.com.au)
Received: from c122-106-149-109.carlnfd1.nsw.optusnet.com.au
 (c122-106-149-109.carlnfd1.nsw.optusnet.com.au [122.106.149.109])
 by mail108.syd.optusnet.com.au (Postfix) with ESMTPS id 02D801A2A7D;
 Sat,  8 Oct 2016 11:12:45 +1100 (AEDT)
Date: Sat, 8 Oct 2016 11:12:40 +1100 (EST)
From: Bruce Evans <brde@optusnet.com.au>
X-X-Sender: bde@besplex.bde.org
To: Mark Johnston <markj@freebsd.org>
cc: Bruce Evans <brde@optusnet.com.au>, src-committers@freebsd.org, 
 svn-src-user@freebsd.org
Subject: Re: svn commit: r306831 - in user/alc/PQ_LAUNDRY/usr.bin: systat
 vmstat
In-Reply-To: <20161007235236.GC65501@wkstn-mjohnston.west.isilon.com>
Message-ID: <20161008105722.U3341@besplex.bde.org>
References: <201610072217.u97MHh08042582@repo.freebsd.org>
 <20161008093219.O2989@besplex.bde.org>
 <20161007235236.GC65501@wkstn-mjohnston.west.isilon.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-Optus-CM-Score: 0
X-Optus-CM-Analysis: v=2.1 cv=EfU1O6SC c=1 sm=1 tr=0
 a=R/f3m204ZbWUO/0rwPSMPw==:117 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10
 a=s5jvgZ67dGcA:10 a=kj9zAlcOel0A:10 a=_9EzZIGtKA1D0DcN19MA:9
 a=CjuIK1q_8ugA:10 a=chvjmp5bT-K0Np4W8Gpx:22
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 08 Oct 2016 00:32:21 -0000

On Fri, 7 Oct 2016, Mark Johnston wrote:

> On Sat, Oct 08, 2016 at 10:35:59AM +1100, Bruce Evans wrote:
>> On Fri, 7 Oct 2016, Mark Johnston wrote:
>>
>>> Log:
>>>  Teach vmstat and systat about v_pdshortfalls.
>>
>> systat has a negative amount of space available for expansion.
>
> Hm, I see. I'll revert the systat modifications then. It isn't
> particularly handy to have the rate of shortfall wakeups given what's
> already available in the vmstat display.

Thanks.

If you have important new fields to display, then it is a problem to
find space for them.  Probably needs another screen.  The -v screen
is already very dense but only partly well-organized.  I would move
the swap stats off it first, since I haven't used swap for almost 20
years.  I also find the top lines with memory statistics almost useless.

The least useful vm fields seem to be ozfod, %ozfod, intrn and cache,
and the most useless field is still 'buf'.

Bruce