From owner-svn-src-projects@FreeBSD.ORG  Mon Dec  5 15:16:48 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 19A27106566B;
	Mon,  5 Dec 2011 15:16:48 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id F3F1D8FC0C;
	Mon,  5 Dec 2011 15:16:47 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB5FGlvN042472;
	Mon, 5 Dec 2011 15:16:47 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB5FGl6f042470;
	Mon, 5 Dec 2011 15:16:47 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201112051516.pB5FGl6f042470@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Mon, 5 Dec 2011 15:16:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228279 - projects/head_mfi/sys/dev/mfi
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Dec 2011 15:16:48 -0000

Author: mav
Date: Mon Dec  5 15:16:47 2011
New Revision: 228279
URL: http://svn.freebsd.org/changeset/base/228279

Log:
  Remove superfluous !TAILQ_EMPTY() checks before TAILQ_FOREACH().

Modified:
  projects/head_mfi/sys/dev/mfi/mfi.c

Modified: projects/head_mfi/sys/dev/mfi/mfi.c
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi.c	Mon Dec  5 15:11:35 2011	(r228278)
+++ projects/head_mfi/sys/dev/mfi/mfi.c	Mon Dec  5 15:16:47 2011	(r228279)
@@ -1335,32 +1335,28 @@ mfi_syspdprobe(struct mfi_softc *sc)
 			  hdr->cmd_status);
 	    goto out;
 	}
+	/* Get each PD and add it to the system */
 	for (i=0;i<pdlist->count;i++) {
 	    if(pdlist->addr[i].device_id == pdlist->addr[i].encl_device_id)
 		goto skip_sys_pd_add;
-	    /* Get each PD and add it to the system */
-	    if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) {
-	        TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) {
+	    TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) {
 		if (syspd->pd_id == pdlist->addr[i].device_id)
 		    goto skip_sys_pd_add;
-	        }
 	    }
 	    mfi_add_sys_pd(sc,pdlist->addr[i].device_id);
 	    skip_sys_pd_add:;
 	
 	}
 	/* Delete SYSPD's whose state has been changed */
-	if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) {
-	    TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) {
-			for (i=0;i<pdlist->count;i++) {
-				if (syspd->pd_id == pdlist->addr[i].device_id)
-				    goto skip_sys_pd_delete;
-			}
-			mtx_lock(&Giant);
-			device_delete_child(sc->mfi_dev,syspd->pd_dev);
-			mtx_unlock(&Giant);
-skip_sys_pd_delete:;
+	TAILQ_FOREACH(syspd, &sc->mfi_syspd_tqh,pd_link) {
+		for (i=0;i<pdlist->count;i++) {
+			if (syspd->pd_id == pdlist->addr[i].device_id)
+			    goto skip_sys_pd_delete;
 		}
+		mtx_lock(&Giant);
+		device_delete_child(sc->mfi_dev,syspd->pd_dev);
+		mtx_unlock(&Giant);
+skip_sys_pd_delete:;
 	}
 out:
 	if (pdlist)
@@ -1484,27 +1480,24 @@ mfi_decode_evt(struct mfi_softc *sc, str
 	case MR_EVT_ARGS_LD_STATE:
 		/* During load time driver reads all the events starting from the one that
 		 * has been logged after shutdown. Avoid these old events.
-		 */        
-		if (!TAILQ_EMPTY(&sc->mfi_ld_tqh)) {
-			if (detail->args.ld_state.new_state == MFI_LD_STATE_OFFLINE ) {
-				/* Remove the LD */
-				struct mfi_disk *ld = NULL;
-				TAILQ_FOREACH(ld, &sc->mfi_ld_tqh, ld_link) {
-					if (ld->ld_id == detail->args.ld_state.ld.target_id)
-						break;
-				}
-				/*
-				Fix: for kernel panics when SSCD is removed
-				KASSERT(ld != NULL, ("volume dissappeared"));
-				*/
-				if(ld != NULL)
-				{
-					mtx_lock(&Giant);
-					device_delete_child(sc->mfi_dev, ld->ld_dev);
-					mtx_unlock(&Giant);
-				}
+		 */
+		if (detail->args.ld_state.new_state == MFI_LD_STATE_OFFLINE ) {
+			/* Remove the LD */
+			struct mfi_disk *ld;
+			TAILQ_FOREACH(ld, &sc->mfi_ld_tqh, ld_link) {
+				if (ld->ld_id == detail->args.ld_state.ld.target_id)
+					break;
 			}
-		} 
+			/*
+			Fix: for kernel panics when SSCD is removed
+			KASSERT(ld != NULL, ("volume dissappeared"));
+			*/
+			if(ld != NULL) {
+				mtx_lock(&Giant);
+				device_delete_child(sc->mfi_dev, ld->ld_dev);
+				mtx_unlock(&Giant);
+			}
+		}
 		break;
 	case MR_EVT_ARGS_PD:
 #define MR_EVT_PD_REMOVED  0x0070
@@ -1512,16 +1505,14 @@ mfi_decode_evt(struct mfi_softc *sc, str
 		if (detail->code == MR_EVT_PD_REMOVED) {
 		    if (probe_sys_pd) {
 		    	/* If the removed device is a SYSPD then delete it */
-			if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) {
-			    TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
+			TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
 				if (syspd->pd_id == detail->args.pd.device_id) {
 					mtx_lock(&Giant);
 					device_delete_child(sc->mfi_dev,syspd->pd_dev);
 					mtx_unlock(&Giant);
 					break;
 				}
-			   }
-			} 
+			}
 		    }
 		}
 		if (detail->code == MR_EVT_PD_INSERTED) {
@@ -2544,11 +2535,9 @@ mfi_check_command_pre(struct mfi_softc *
 		mbox = (uint16_t *) cm->cm_frame->dcmd.mbox;
 		syspd_id = mbox[0];
 		if (mbox[2] == MFI_PD_STATE_UNCONFIGURED_GOOD) {
-			if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) {
-			    TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
+			TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
 				if(syspd->pd_id == syspd_id)
 					break;
-			   }
 			}
 		}
 		else
@@ -2611,11 +2600,9 @@ mfi_check_command_post(struct mfi_softc 
 		mbox = (uint16_t *) cm->cm_frame->dcmd.mbox;
 		syspd_id = mbox[0];
 		if (mbox[2] == MFI_PD_STATE_UNCONFIGURED_GOOD) {
-			if (!TAILQ_EMPTY(&sc->mfi_syspd_tqh)) {
-			    TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
+			TAILQ_FOREACH(syspd,&sc->mfi_syspd_tqh,pd_link) {
 				if(syspd->pd_id == syspd_id)
 					break;
-			   }
 			}
 		}
 		else

From owner-svn-src-projects@FreeBSD.ORG  Mon Dec  5 17:44:14 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0A865106564A;
	Mon,  5 Dec 2011 17:44:14 +0000 (UTC) (envelope-from lev@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id EA7C18FC15;
	Mon,  5 Dec 2011 17:44:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB5HiDHh050964;
	Mon, 5 Dec 2011 17:44:13 GMT (envelope-from lev@svn.freebsd.org)
Received: (from lev@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB5HiD7r050955;
	Mon, 5 Dec 2011 17:44:13 GMT (envelope-from lev@svn.freebsd.org)
Message-Id: <201112051744.pB5HiD7r050955@svn.freebsd.org>
From: "Lev A. Serebryakov" <lev@FreeBSD.org>
Date: Mon, 5 Dec 2011 17:44:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228285 - in projects/geom-events: . bin/sh bin/test
	cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs
	cddl/contrib/opensolaris/cmd/zpool
	cddl/contrib/opensolaris/cmd/zs...
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Dec 2011 17:44:14 -0000

Author: lev (ports committer)
Date: Mon Dec  5 17:44:12 2011
New Revision: 228285
URL: http://svn.freebsd.org/changeset/base/228285

Log:
  Merge from head

Added:
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c
     - copied unchanged from r228284, head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c
  projects/geom-events/contrib/gperf/configure.ac
     - copied unchanged from r228284, head/contrib/gperf/configure.ac
  projects/geom-events/contrib/gperf/doc/configure.ac
     - copied unchanged from r228284, head/contrib/gperf/doc/configure.ac
  projects/geom-events/contrib/gperf/lib/configure.ac
     - copied unchanged from r228284, head/contrib/gperf/lib/configure.ac
  projects/geom-events/contrib/gperf/lib/getline.cc
     - copied unchanged from r228284, head/contrib/gperf/lib/getline.cc
  projects/geom-events/contrib/gperf/lib/getline.h
     - copied unchanged from r228284, head/contrib/gperf/lib/getline.h
  projects/geom-events/contrib/gperf/src/config.h_vms
     - copied unchanged from r228284, head/contrib/gperf/src/config.h_vms
  projects/geom-events/contrib/gperf/src/configure.ac
     - copied unchanged from r228284, head/contrib/gperf/src/configure.ac
  projects/geom-events/contrib/gperf/src/input.cc
     - copied unchanged from r228284, head/contrib/gperf/src/input.cc
  projects/geom-events/contrib/gperf/src/input.h
     - copied unchanged from r228284, head/contrib/gperf/src/input.h
  projects/geom-events/contrib/gperf/src/keyword-list.cc
     - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.cc
  projects/geom-events/contrib/gperf/src/keyword-list.h
     - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.h
  projects/geom-events/contrib/gperf/src/keyword-list.icc
     - copied unchanged from r228284, head/contrib/gperf/src/keyword-list.icc
  projects/geom-events/contrib/gperf/src/keyword.cc
     - copied unchanged from r228284, head/contrib/gperf/src/keyword.cc
  projects/geom-events/contrib/gperf/src/keyword.h
     - copied unchanged from r228284, head/contrib/gperf/src/keyword.h
  projects/geom-events/contrib/gperf/src/keyword.icc
     - copied unchanged from r228284, head/contrib/gperf/src/keyword.icc
  projects/geom-events/contrib/gperf/src/output.cc
     - copied unchanged from r228284, head/contrib/gperf/src/output.cc
  projects/geom-events/contrib/gperf/src/output.h
     - copied unchanged from r228284, head/contrib/gperf/src/output.h
  projects/geom-events/contrib/gperf/src/positions.cc
     - copied unchanged from r228284, head/contrib/gperf/src/positions.cc
  projects/geom-events/contrib/gperf/src/positions.h
     - copied unchanged from r228284, head/contrib/gperf/src/positions.h
  projects/geom-events/contrib/gperf/src/positions.icc
     - copied unchanged from r228284, head/contrib/gperf/src/positions.icc
  projects/geom-events/contrib/gperf/src/search.cc
     - copied unchanged from r228284, head/contrib/gperf/src/search.cc
  projects/geom-events/contrib/gperf/src/search.h
     - copied unchanged from r228284, head/contrib/gperf/src/search.h
  projects/geom-events/contrib/libc++/
     - copied from r228284, head/contrib/libc++/
     - copied from r228284, head/contrib/libcxxrt/
  projects/geom-events/lib/libc++/
     - copied from r228284, head/lib/libc++/
  projects/geom-events/lib/libcxxrt/
     - copied from r228284, head/lib/libcxxrt/
  projects/geom-events/sbin/camcontrol/fwdownload.c
     - copied unchanged from r228284, head/sbin/camcontrol/fwdownload.c
  projects/geom-events/share/man/man4/capsicum.4
     - copied unchanged from r228284, head/share/man/man4/capsicum.4
  projects/geom-events/share/man/man4/ffclock.4
     - copied unchanged from r228284, head/share/man/man4/ffclock.4
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2s.c
     - copied unchanged from r228284, head/sys/contrib/dev/acpica/compiler/aslrestype2s.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcl2.c
     - copied unchanged from r228284, head/sys/contrib/dev/acpica/disassembler/dmresrcl2.c
  projects/geom-events/sys/contrib/dev/acpica/include/actbl3.h
     - copied unchanged from r228284, head/sys/contrib/dev/acpica/include/actbl3.h
  projects/geom-events/sys/contrib/dev/acpica/os_specific/
     - copied from r228284, head/sys/contrib/dev/acpica/os_specific/
  projects/geom-events/sys/contrib/dev/acpica/resources/rsserial.c
     - copied unchanged from r228284, head/sys/contrib/dev/acpica/resources/rsserial.c
  projects/geom-events/sys/contrib/dev/acpica/utilities/utxfmutex.c
     - copied unchanged from r228284, head/sys/contrib/dev/acpica/utilities/utxfmutex.c
  projects/geom-events/sys/sparc64/sparc64/cam_machdep.c
     - copied unchanged from r228284, head/sys/sparc64/sparc64/cam_machdep.c
  projects/geom-events/tools/build/options/WITH_CTF
     - copied unchanged from r228284, head/tools/build/options/WITH_CTF
  projects/geom-events/tools/build/options/WITH_LIBCPLUSPLUS
     - copied unchanged from r228284, head/tools/build/options/WITH_LIBCPLUSPLUS
  projects/geom-events/tools/regression/bin/sh/builtins/case11.0
     - copied unchanged from r228284, head/tools/regression/bin/sh/builtins/case11.0
  projects/geom-events/tools/regression/bin/sh/builtins/case12.0
     - copied unchanged from r228284, head/tools/regression/bin/sh/builtins/case12.0
  projects/geom-events/tools/regression/pipe/pipe-ino.c
     - copied unchanged from r228284, head/tools/regression/pipe/pipe-ino.c
  projects/geom-events/tools/regression/sbin/dhclient/
     - copied from r228284, head/tools/regression/sbin/dhclient/
  projects/geom-events/tools/regression/usr.bin/make/execution/
     - copied from r228284, head/tools/regression/usr.bin/make/execution/
  projects/geom-events/tools/tinder.sh
     - copied unchanged from r228284, head/tools/tinder.sh
  projects/geom-events/usr.bin/m4/lib/
     - copied from r228284, head/usr.bin/m4/lib/
  projects/geom-events/usr.bin/m4/parser.y
     - copied unchanged from r228284, head/usr.bin/m4/parser.y
  projects/geom-events/usr.bin/m4/tokenizer.l
     - copied unchanged from r228284, head/usr.bin/m4/tokenizer.l
  projects/geom-events/usr.bin/procstat/procstat_rlimit.c
     - copied unchanged from r228284, head/usr.bin/procstat/procstat_rlimit.c
Directory Properties:
  projects/geom-events/contrib/libcxxrt/   (props changed)
Replaced:
  projects/geom-events/contrib/gperf/doc/gperf.texi
     - copied unchanged from r228284, head/contrib/gperf/doc/gperf.texi
  projects/geom-events/contrib/gperf/doc/gpl.texinfo
     - copied unchanged from r228284, head/contrib/gperf/doc/gpl.texinfo
Deleted:
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_graph.c
  projects/geom-events/contrib/gperf/acconfig.h
  projects/geom-events/contrib/gperf/configure.in
  projects/geom-events/contrib/gperf/doc/configure.in
  projects/geom-events/contrib/gperf/doc/texinfo.tex
  projects/geom-events/contrib/gperf/lib/configure.in
  projects/geom-events/contrib/gperf/src/configure.in
  projects/geom-events/contrib/gperf/src/gen-perf.cc
  projects/geom-events/contrib/gperf/src/gen-perf.h
  projects/geom-events/contrib/gperf/src/iterator.cc
  projects/geom-events/contrib/gperf/src/iterator.h
  projects/geom-events/contrib/gperf/src/key-list.cc
  projects/geom-events/contrib/gperf/src/key-list.h
  projects/geom-events/contrib/gperf/src/list-node.cc
  projects/geom-events/contrib/gperf/src/list-node.h
  projects/geom-events/contrib/gperf/src/new.cc
  projects/geom-events/contrib/gperf/src/read-line.cc
  projects/geom-events/contrib/gperf/src/read-line.h
  projects/geom-events/contrib/gperf/src/read-line.icc
  projects/geom-events/contrib/gperf/src/trace.cc
  projects/geom-events/contrib/gperf/src/trace.h
  projects/geom-events/contrib/gperf/src/vectors.cc
  projects/geom-events/contrib/gperf/src/vectors.h
  projects/geom-events/contrib/gperf/tests/
  projects/geom-events/gnu/lib/libodialog/
  projects/geom-events/share/man/man4/amd.4
  projects/geom-events/sys/contrib/dev/acpica/osunixxf.c
  projects/geom-events/sys/contrib/dev/acpica/tools/
  projects/geom-events/sys/dev/amd/
  projects/geom-events/sys/modules/amd/
  projects/geom-events/usr.sbin/sade/config.c
  projects/geom-events/usr.sbin/sade/dispatch.c
Modified:
  projects/geom-events/Makefile.inc1
  projects/geom-events/ObsoleteFiles.inc
  projects/geom-events/UPDATING
  projects/geom-events/bin/sh/eval.c
  projects/geom-events/bin/test/test.c
  projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8
  projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8
  projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
  projects/geom-events/cddl/contrib/opensolaris/cmd/zpool/zpool.8
  projects/geom-events/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
  projects/geom-events/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1
  projects/geom-events/cddl/contrib/opensolaris/cmd/ztest/ztest.c
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
  projects/geom-events/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
  projects/geom-events/cddl/lib/drti/Makefile
  projects/geom-events/cddl/lib/libzfs/Makefile
  projects/geom-events/contrib/gperf/AUTHORS
  projects/geom-events/contrib/gperf/COPYING
  projects/geom-events/contrib/gperf/ChangeLog
  projects/geom-events/contrib/gperf/FREEBSD-Xlist
  projects/geom-events/contrib/gperf/INSTALL
  projects/geom-events/contrib/gperf/Makefile.devel
  projects/geom-events/contrib/gperf/Makefile.in
  projects/geom-events/contrib/gperf/NEWS
  projects/geom-events/contrib/gperf/README
  projects/geom-events/contrib/gperf/aclocal.m4
  projects/geom-events/contrib/gperf/configure
  projects/geom-events/contrib/gperf/doc/Makefile.in
  projects/geom-events/contrib/gperf/doc/configure
  projects/geom-events/contrib/gperf/doc/gperf.1
  projects/geom-events/contrib/gperf/doc/help2man
  projects/geom-events/contrib/gperf/lib/Makefile.in
  projects/geom-events/contrib/gperf/lib/configure
  projects/geom-events/contrib/gperf/lib/hash.cc
  projects/geom-events/contrib/gperf/lib/hash.h
  projects/geom-events/contrib/gperf/src/Makefile.in
  projects/geom-events/contrib/gperf/src/bool-array.cc
  projects/geom-events/contrib/gperf/src/bool-array.h
  projects/geom-events/contrib/gperf/src/bool-array.icc
  projects/geom-events/contrib/gperf/src/config.h.in
  projects/geom-events/contrib/gperf/src/configure
  projects/geom-events/contrib/gperf/src/hash-table.cc
  projects/geom-events/contrib/gperf/src/hash-table.h
  projects/geom-events/contrib/gperf/src/main.cc
  projects/geom-events/contrib/gperf/src/options.cc
  projects/geom-events/contrib/gperf/src/options.h
  projects/geom-events/contrib/gperf/src/options.icc
  projects/geom-events/contrib/gperf/src/version.cc
  projects/geom-events/contrib/gperf/src/version.h
  projects/geom-events/etc/devd/apple.conf
  projects/geom-events/etc/mtree/BSD.include.dist
  projects/geom-events/etc/rc.d/kld
  projects/geom-events/gnu/lib/Makefile
  projects/geom-events/gnu/usr.bin/dialog/Makefile
  projects/geom-events/gnu/usr.bin/gperf/Makefile
  projects/geom-events/gnu/usr.bin/gperf/config.h
  projects/geom-events/kerberos5/Makefile.inc
  projects/geom-events/kerberos5/lib/libhdb/Makefile
  projects/geom-events/kerberos5/usr.bin/kadmin/Makefile
  projects/geom-events/kerberos5/usr.sbin/ktutil/Makefile
  projects/geom-events/lib/Makefile
  projects/geom-events/lib/libc/gen/_pthread_stubs.c
  projects/geom-events/lib/libc/gen/syslog.c
  projects/geom-events/lib/libc/locale/duplocale.3
  projects/geom-events/lib/libc/locale/freelocale.3
  projects/geom-events/lib/libc/locale/localeconv.3
  projects/geom-events/lib/libc/locale/newlocale.3
  projects/geom-events/lib/libc/locale/querylocale.3
  projects/geom-events/lib/libc/locale/uselocale.3
  projects/geom-events/lib/libc/locale/wctype.c
  projects/geom-events/lib/libc/locale/xlocale.3
  projects/geom-events/lib/libc/string/strcasecmp.c
  projects/geom-events/lib/libc/string/strcmp.c
  projects/geom-events/lib/libc/string/strcoll.c
  projects/geom-events/lib/libc/string/strncmp.c
  projects/geom-events/lib/libc/sys/cap_enter.2
  projects/geom-events/lib/libc/sys/cap_new.2
  projects/geom-events/lib/libedit/edit/readline/Makefile
  projects/geom-events/lib/libedit/edit/readline/readline.h
  projects/geom-events/lib/libpam/modules/Makefile.inc
  projects/geom-events/lib/libpam/modules/pam_unix/Makefile
  projects/geom-events/lib/libusb/libusb10.c
  projects/geom-events/release/doc/en_US.ISO8859-1/hardware/article.sgml
  projects/geom-events/rescue/rescue/Makefile
  projects/geom-events/sbin/camcontrol/Makefile
  projects/geom-events/sbin/camcontrol/camcontrol.8
  projects/geom-events/sbin/camcontrol/camcontrol.c
  projects/geom-events/sbin/camcontrol/camcontrol.h
  projects/geom-events/sbin/camcontrol/util.c
  projects/geom-events/sbin/dhclient/clparse.c
  projects/geom-events/sbin/dhclient/dhclient-script
  projects/geom-events/sbin/dhclient/dhclient.c
  projects/geom-events/sbin/dhclient/dhcp-options.5
  projects/geom-events/sbin/dhclient/dhcp.h
  projects/geom-events/sbin/dhclient/options.c
  projects/geom-events/sbin/dhclient/tables.c
  projects/geom-events/sbin/sysctl/sysctl.c
  projects/geom-events/share/man/man4/Makefile
  projects/geom-events/share/man/man4/ahci.4
  projects/geom-events/share/man/man4/bge.4
  projects/geom-events/share/man/man4/netmap.4
  projects/geom-events/share/man/man5/src.conf.5
  projects/geom-events/share/misc/committers-src.dot
  projects/geom-events/share/mk/bsd.lib.mk
  projects/geom-events/share/mk/bsd.libnames.mk
  projects/geom-events/share/mk/bsd.own.mk
  projects/geom-events/share/mk/bsd.prog.mk
  projects/geom-events/share/mk/sys.mk
  projects/geom-events/sys/amd64/conf/NOTES
  projects/geom-events/sys/arm/mv/common.c
  projects/geom-events/sys/arm/mv/mv_machdep.c
  projects/geom-events/sys/boot/i386/zfsboot/zfsboot.c
  projects/geom-events/sys/boot/zfs/zfsimpl.c
  projects/geom-events/sys/cam/cam_xpt.c
  projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
  projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.h
  projects/geom-events/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
  projects/geom-events/sys/cddl/contrib/opensolaris/uts/common/sys/sysevent/eventdefs.h
  projects/geom-events/sys/compat/linprocfs/linprocfs.c
  projects/geom-events/sys/conf/NOTES
  projects/geom-events/sys/conf/files
  projects/geom-events/sys/conf/files.amd64
  projects/geom-events/sys/conf/files.sparc64
  projects/geom-events/sys/conf/kern.mk
  projects/geom-events/sys/conf/kern.post.mk
  projects/geom-events/sys/conf/kern.pre.mk
  projects/geom-events/sys/conf/kmod.mk
  projects/geom-events/sys/conf/makeLINT.mk
  projects/geom-events/sys/conf/newvers.sh
  projects/geom-events/sys/conf/options
  projects/geom-events/sys/contrib/dev/acpica/acpica_prep.sh
  projects/geom-events/sys/contrib/dev/acpica/changes.txt
  projects/geom-events/sys/contrib/dev/acpica/common/adisasm.c
  projects/geom-events/sys/contrib/dev/acpica/common/adwalk.c
  projects/geom-events/sys/contrib/dev/acpica/common/dmrestag.c
  projects/geom-events/sys/contrib/dev/acpica/common/dmtable.c
  projects/geom-events/sys/contrib/dev/acpica/common/dmtbdump.c
  projects/geom-events/sys/contrib/dev/acpica/common/dmtbinfo.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslanalyze.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslcodegen.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompile.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.l
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslcompiler.y
  projects/geom-events/sys/contrib/dev/acpica/compiler/asldefine.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslerror.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslfiles.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslglobal.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/asllisting.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslload.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/asllookup.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslmain.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslmap.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslmessages.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslopcodes.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/asloperands.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslpredef.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslresource.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype1.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype1i.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2d.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2e.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2q.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslrestype2w.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslstubs.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/asltransform.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/asltree.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/asltypes.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslutils.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/aslwalks.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/dtcompile.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/dtcompiler.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/dtfield.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/dtsubtable.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/dttable.c
  projects/geom-events/sys/contrib/dev/acpica/compiler/dttemplate.h
  projects/geom-events/sys/contrib/dev/acpica/compiler/dtutils.c
  projects/geom-events/sys/contrib/dev/acpica/debugger/dbcmds.c
  projects/geom-events/sys/contrib/dev/acpica/debugger/dbdisply.c
  projects/geom-events/sys/contrib/dev/acpica/debugger/dbfileio.c
  projects/geom-events/sys/contrib/dev/acpica/debugger/dbinput.c
  projects/geom-events/sys/contrib/dev/acpica/debugger/dbutils.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmbuffer.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmopcode.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrc.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcl.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmresrcs.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmutils.c
  projects/geom-events/sys/contrib/dev/acpica/disassembler/dmwalk.c
  projects/geom-events/sys/contrib/dev/acpica/dispatcher/dsargs.c
  projects/geom-events/sys/contrib/dev/acpica/dispatcher/dsfield.c
  projects/geom-events/sys/contrib/dev/acpica/events/evevent.c
  projects/geom-events/sys/contrib/dev/acpica/events/evglock.c
  projects/geom-events/sys/contrib/dev/acpica/events/evregion.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exconfig.c
  projects/geom-events/sys/contrib/dev/acpica/executer/excreate.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exdump.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exfield.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exfldio.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exprep.c
  projects/geom-events/sys/contrib/dev/acpica/executer/exutils.c
  projects/geom-events/sys/contrib/dev/acpica/hardware/hwvalid.c
  projects/geom-events/sys/contrib/dev/acpica/include/acapps.h
  projects/geom-events/sys/contrib/dev/acpica/include/acconfig.h
  projects/geom-events/sys/contrib/dev/acpica/include/acdebug.h
  projects/geom-events/sys/contrib/dev/acpica/include/acdisasm.h
  projects/geom-events/sys/contrib/dev/acpica/include/acevents.h
  projects/geom-events/sys/contrib/dev/acpica/include/acglobal.h
  projects/geom-events/sys/contrib/dev/acpica/include/acinterp.h
  projects/geom-events/sys/contrib/dev/acpica/include/aclocal.h
  projects/geom-events/sys/contrib/dev/acpica/include/acnames.h
  projects/geom-events/sys/contrib/dev/acpica/include/acobject.h
  projects/geom-events/sys/contrib/dev/acpica/include/acopcode.h
  projects/geom-events/sys/contrib/dev/acpica/include/acpixf.h
  projects/geom-events/sys/contrib/dev/acpica/include/acpredef.h
  projects/geom-events/sys/contrib/dev/acpica/include/acresrc.h
  projects/geom-events/sys/contrib/dev/acpica/include/acrestyp.h
  projects/geom-events/sys/contrib/dev/acpica/include/actbl.h
  projects/geom-events/sys/contrib/dev/acpica/include/actbl1.h
  projects/geom-events/sys/contrib/dev/acpica/include/actypes.h
  projects/geom-events/sys/contrib/dev/acpica/include/acutils.h
  projects/geom-events/sys/contrib/dev/acpica/include/amlcode.h
  projects/geom-events/sys/contrib/dev/acpica/include/amlresrc.h
  projects/geom-events/sys/contrib/dev/acpica/include/platform/acenv.h
  projects/geom-events/sys/contrib/dev/acpica/namespace/nspredef.c
  projects/geom-events/sys/contrib/dev/acpica/namespace/nsrepair.c
  projects/geom-events/sys/contrib/dev/acpica/namespace/nsrepair2.c
  projects/geom-events/sys/contrib/dev/acpica/parser/psargs.c
  projects/geom-events/sys/contrib/dev/acpica/parser/psopcode.c
  projects/geom-events/sys/contrib/dev/acpica/parser/pstree.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rscalc.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rscreate.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsdump.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsinfo.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsirq.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rslist.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsmisc.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsutils.c
  projects/geom-events/sys/contrib/dev/acpica/resources/rsxface.c
  projects/geom-events/sys/contrib/dev/acpica/tables/tbfadt.c
  projects/geom-events/sys/contrib/dev/acpica/tables/tbutils.c
  projects/geom-events/sys/contrib/dev/acpica/utilities/utdecode.c
  projects/geom-events/sys/contrib/dev/acpica/utilities/utmutex.c
  projects/geom-events/sys/contrib/dev/acpica/utilities/utresrc.c
  projects/geom-events/sys/contrib/ipfilter/netinet/ip_compat.h
  projects/geom-events/sys/contrib/ipfilter/netinet/ip_proxy.c
  projects/geom-events/sys/contrib/pf/net/pf.c
  projects/geom-events/sys/dev/acpica/acpi_battery.c
  projects/geom-events/sys/dev/ahci/ahci.c
  projects/geom-events/sys/dev/arcmsr/arcmsr.c
  projects/geom-events/sys/dev/ata/chipsets/ata-ati.c
  projects/geom-events/sys/dev/ata/chipsets/ata-nvidia.c
  projects/geom-events/sys/dev/dc/dcphy.c
  projects/geom-events/sys/dev/dc/pnphy.c
  projects/geom-events/sys/dev/e1000/if_em.c
  projects/geom-events/sys/dev/e1000/if_igb.c
  projects/geom-events/sys/dev/e1000/if_lem.c
  projects/geom-events/sys/dev/fdt/fdt_common.c
  projects/geom-events/sys/dev/fdt/fdt_powerpc.c
  projects/geom-events/sys/dev/fdt/fdtbus.c
  projects/geom-events/sys/dev/gpio/gpioiic.c
  projects/geom-events/sys/dev/hptiop/hptiop.c
  projects/geom-events/sys/dev/hptmv/entry.c
  projects/geom-events/sys/dev/hptrr/hptrr_osm_bsd.c
  projects/geom-events/sys/dev/hwpmc/hwpmc_core.c
  projects/geom-events/sys/dev/iicbus/iicbus.c
  projects/geom-events/sys/dev/iicbus/iicbus.h
  projects/geom-events/sys/dev/iicbus/iiconf.c
  projects/geom-events/sys/dev/ixgbe/ixgbe.c
  projects/geom-events/sys/dev/mii/acphy.c
  projects/geom-events/sys/dev/mii/amphy.c
  projects/geom-events/sys/dev/mii/atphy.c
  projects/geom-events/sys/dev/mii/axphy.c
  projects/geom-events/sys/dev/mii/bmtphy.c
  projects/geom-events/sys/dev/mii/brgphy.c
  projects/geom-events/sys/dev/mii/ciphy.c
  projects/geom-events/sys/dev/mii/e1000phy.c
  projects/geom-events/sys/dev/mii/gentbi.c
  projects/geom-events/sys/dev/mii/icsphy.c
  projects/geom-events/sys/dev/mii/ip1000phy.c
  projects/geom-events/sys/dev/mii/jmphy.c
  projects/geom-events/sys/dev/mii/lxtphy.c
  projects/geom-events/sys/dev/mii/miidevs
  projects/geom-events/sys/dev/mii/mlphy.c
  projects/geom-events/sys/dev/mii/nsgphy.c
  projects/geom-events/sys/dev/mii/nsphy.c
  projects/geom-events/sys/dev/mii/nsphyter.c
  projects/geom-events/sys/dev/mii/pnaphy.c
  projects/geom-events/sys/dev/mii/qsphy.c
  projects/geom-events/sys/dev/mii/rgephy.c
  projects/geom-events/sys/dev/mii/rlphy.c
  projects/geom-events/sys/dev/mii/rlswitch.c
  projects/geom-events/sys/dev/mii/smcphy.c
  projects/geom-events/sys/dev/mii/tdkphy.c
  projects/geom-events/sys/dev/mii/tlphy.c
  projects/geom-events/sys/dev/mii/truephy.c
  projects/geom-events/sys/dev/mii/ukphy.c
  projects/geom-events/sys/dev/mii/xmphy.c
  projects/geom-events/sys/dev/netmap/if_em_netmap.h
  projects/geom-events/sys/dev/netmap/if_igb_netmap.h
  projects/geom-events/sys/dev/netmap/if_lem_netmap.h
  projects/geom-events/sys/dev/netmap/if_re_netmap.h
  projects/geom-events/sys/dev/netmap/ixgbe_netmap.h
  projects/geom-events/sys/dev/netmap/netmap.c
  projects/geom-events/sys/dev/netmap/netmap_kern.h
  projects/geom-events/sys/dev/ofw/ofw_fdt.c
  projects/geom-events/sys/dev/ofw/openfirm.c
  projects/geom-events/sys/dev/pci/pcireg.h
  projects/geom-events/sys/dev/re/if_re.c
  projects/geom-events/sys/dev/sfxge/common/efsys.h
  projects/geom-events/sys/dev/sfxge/common/efx.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_bootcfg.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_ev.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_filter.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_impl.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_intr.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_mac.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_mcdi.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_mcdi.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_mon.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_nic.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_nvram.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_phy.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_port.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_regs.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_regs_ef10.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_regs_mcdi.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_regs_pci.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_rx.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_sram.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_tx.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_types.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_vpd.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/efx_wol.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_flash.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_impl.h   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_mac.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_mon.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_nic.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_nvram.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_phy.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_sram.c   (contents, props changed)
  projects/geom-events/sys/dev/sfxge/common/siena_vpd.c   (contents, props changed)
  projects/geom-events/sys/dev/uart/uart_bus_fdt.c
  projects/geom-events/sys/dev/usb/net/ruephy.c
  projects/geom-events/sys/dev/usb/quirk/usb_quirk.c
  projects/geom-events/sys/dev/usb/usb_msctest.c
  projects/geom-events/sys/dev/usb/usb_transfer.h
  projects/geom-events/sys/dev/usb/usbdevs
  projects/geom-events/sys/dev/usb/wlan/if_urtw.c
  projects/geom-events/sys/dev/vr/if_vr.c
  projects/geom-events/sys/dev/vr/if_vrreg.h
  projects/geom-events/sys/dev/xl/xlphy.c
  projects/geom-events/sys/fs/fifofs/fifo_vnops.c
  projects/geom-events/sys/fs/nfs/nfsclstate.h
  projects/geom-events/sys/fs/nfsclient/nfs_clbio.c
  projects/geom-events/sys/fs/nfsclient/nfs_clstate.c
  projects/geom-events/sys/fs/nfsserver/nfs_nfsdport.c
  projects/geom-events/sys/fs/nfsserver/nfs_nfsdsubs.c
  projects/geom-events/sys/fs/ntfs/ntfs_subr.c
  projects/geom-events/sys/fs/ntfs/ntfs_subr.h
  projects/geom-events/sys/fs/ntfs/ntfs_vnops.c
  projects/geom-events/sys/fs/nwfs/nwfs_io.c
  projects/geom-events/sys/fs/smbfs/smbfs_io.c
  projects/geom-events/sys/geom/geom_vfs.c
  projects/geom-events/sys/geom/part/g_part_apm.c
  projects/geom-events/sys/i386/conf/PAE
  projects/geom-events/sys/kern/kern_cpuset.c
  projects/geom-events/sys/kern/kern_ffclock.c
  projects/geom-events/sys/kern/kern_proc.c
  projects/geom-events/sys/kern/kern_resource.c
  projects/geom-events/sys/kern/kern_switch.c
  projects/geom-events/sys/kern/kern_synch.c
  projects/geom-events/sys/kern/kern_tc.c
  projects/geom-events/sys/kern/kern_thr.c
  projects/geom-events/sys/kern/kern_umtx.c
  projects/geom-events/sys/kern/subr_blist.c
  projects/geom-events/sys/kern/subr_bus.c
  projects/geom-events/sys/kern/sys_pipe.c
  projects/geom-events/sys/kern/uipc_shm.c
  projects/geom-events/sys/kern/vfs_bio.c
  projects/geom-events/sys/kern/vfs_syscalls.c
  projects/geom-events/sys/mips/atheros/ar71xx_chip.c
  projects/geom-events/sys/mips/atheros/ar71xx_cpudef.h
  projects/geom-events/sys/mips/atheros/ar71xx_machdep.c
  projects/geom-events/sys/mips/atheros/ar724x_chip.c
  projects/geom-events/sys/mips/atheros/ar91xx_chip.c
  projects/geom-events/sys/mips/atheros/if_arge.c
  projects/geom-events/sys/mips/cavium/octeon_machdep.c
  projects/geom-events/sys/mips/conf/AR91XX_BASE
  projects/geom-events/sys/mips/conf/AR91XX_BASE.hints
  projects/geom-events/sys/mips/conf/OCTEON1
  projects/geom-events/sys/mips/conf/PB92
  projects/geom-events/sys/mips/conf/TP-WN1043ND
  projects/geom-events/sys/mips/conf/TP-WN1043ND.hints
  projects/geom-events/sys/mips/conf/XLPN32
  projects/geom-events/sys/mips/mips/db_trace.c
  projects/geom-events/sys/mips/nlm/hal/cpucontrol.h
  projects/geom-events/sys/mips/nlm/xlp_machdep.c
  projects/geom-events/sys/modules/Makefile
  projects/geom-events/sys/modules/acpi/acpi/Makefile
  projects/geom-events/sys/modules/cam/Makefile
  projects/geom-events/sys/net/bpf.c
  projects/geom-events/sys/net/bpf.h
  projects/geom-events/sys/net/if_clone.c
  projects/geom-events/sys/net/if_clone.h
  projects/geom-events/sys/net/if_vlan.c
  projects/geom-events/sys/net/netmap.h
  projects/geom-events/sys/netinet/in.c
  projects/geom-events/sys/netinet/sctp_header.h
  projects/geom-events/sys/netinet/sctp_output.c
  projects/geom-events/sys/netinet/sctp_pcb.c
  projects/geom-events/sys/netinet/sctp_uio.h
  projects/geom-events/sys/netinet/tcp_reass.c
  projects/geom-events/sys/netipsec/xform_ah.c
  projects/geom-events/sys/netipsec/xform_esp.c
  projects/geom-events/sys/nfsclient/nfs_bio.c
  projects/geom-events/sys/nfsserver/nfs_serv.c
  projects/geom-events/sys/pc98/include/md_var.h
  projects/geom-events/sys/pc98/pc98/pc98_machdep.h
  projects/geom-events/sys/pci/if_rlreg.h
  projects/geom-events/sys/powerpc/booke/platform_bare.c
  projects/geom-events/sys/powerpc/powermac/platform_powermac.c
  projects/geom-events/sys/powerpc/powermac/pmu.c
  projects/geom-events/sys/powerpc/powermac/pmuvar.h
  projects/geom-events/sys/sparc64/conf/GENERIC
  projects/geom-events/sys/sparc64/include/atomic.h
  projects/geom-events/sys/sparc64/include/md_var.h
  projects/geom-events/sys/sparc64/pci/schizo.c
  projects/geom-events/sys/sparc64/sparc64/ata_machdep.c
  projects/geom-events/sys/sparc64/sparc64/ofw_machdep.c
  projects/geom-events/sys/sparc64/sparc64/vm_machdep.c
  projects/geom-events/sys/sys/resource.h
  projects/geom-events/sys/sys/sysctl.h
  projects/geom-events/sys/sys/timeffc.h
  projects/geom-events/sys/sys/umtx.h
  projects/geom-events/sys/vm/vm_page.c
  projects/geom-events/sys/vm/vm_page.h
  projects/geom-events/sys/vm/vnode_pager.c
  projects/geom-events/sys/x86/acpica/acpi_apm.c
  projects/geom-events/sys/xen/evtchn/evtchn_dev.c
  projects/geom-events/tools/regression/bin/test/regress.sh
  projects/geom-events/tools/regression/pipe/pipe-fstatbug.c
  projects/geom-events/tools/regression/pipe/pipe-reverse.c
  projects/geom-events/tools/regression/pipe/pipe-wraparound.c
  projects/geom-events/tools/regression/sbin/Makefile
  projects/geom-events/tools/tools/netmap/pkt-gen.c
  projects/geom-events/usr.bin/grep/Makefile
  projects/geom-events/usr.bin/grep/util.c
  projects/geom-events/usr.bin/m4/Makefile
  projects/geom-events/usr.bin/m4/eval.c
  projects/geom-events/usr.bin/m4/expr.c
  projects/geom-events/usr.bin/m4/extern.h
  projects/geom-events/usr.bin/m4/gnum4.c
  projects/geom-events/usr.bin/m4/look.c
  projects/geom-events/usr.bin/m4/m4.1
  projects/geom-events/usr.bin/m4/main.c
  projects/geom-events/usr.bin/m4/mdef.h
  projects/geom-events/usr.bin/m4/misc.c
  projects/geom-events/usr.bin/m4/pathnames.h
  projects/geom-events/usr.bin/m4/stdd.h
  projects/geom-events/usr.bin/m4/trace.c
  projects/geom-events/usr.bin/make/Makefile
  projects/geom-events/usr.bin/make/job.c
  projects/geom-events/usr.bin/procstat/Makefile
  projects/geom-events/usr.bin/procstat/procstat.1
  projects/geom-events/usr.bin/procstat/procstat.c
  projects/geom-events/usr.bin/procstat/procstat.h
  projects/geom-events/usr.bin/procstat/procstat_auxv.c
  projects/geom-events/usr.bin/truss/setup.c
  projects/geom-events/usr.sbin/acpi/Makefile.inc
  projects/geom-events/usr.sbin/acpi/acpidb/Makefile
  projects/geom-events/usr.sbin/acpi/acpidb/acpidb.c
  projects/geom-events/usr.sbin/acpi/iasl/Makefile
  projects/geom-events/usr.sbin/bsdinstall/distextract/distextract.c
  projects/geom-events/usr.sbin/bsdinstall/distfetch/distfetch.c
  projects/geom-events/usr.sbin/bsdinstall/partedit/gpart_ops.c
  projects/geom-events/usr.sbin/bsdinstall/scripts/auto
  projects/geom-events/usr.sbin/bsdinstall/scripts/services
  projects/geom-events/usr.sbin/config/mkmakefile.c
  projects/geom-events/usr.sbin/cron/crontab/crontab.5
  projects/geom-events/usr.sbin/mergemaster/mergemaster.sh
  projects/geom-events/usr.sbin/mfiutil/mfi_config.c
  projects/geom-events/usr.sbin/mfiutil/mfi_evt.c
  projects/geom-events/usr.sbin/sade/Makefile
  projects/geom-events/usr.sbin/sade/devices.c
  projects/geom-events/usr.sbin/sade/disks.c
  projects/geom-events/usr.sbin/sade/dmenu.c
  projects/geom-events/usr.sbin/sade/install.c
  projects/geom-events/usr.sbin/sade/label.c
  projects/geom-events/usr.sbin/sade/main.c
  projects/geom-events/usr.sbin/sade/menus.c
  projects/geom-events/usr.sbin/sade/misc.c
  projects/geom-events/usr.sbin/sade/msg.c
  projects/geom-events/usr.sbin/sade/sade.h
  projects/geom-events/usr.sbin/sade/system.c
  projects/geom-events/usr.sbin/tzsetup/Makefile
  projects/geom-events/usr.sbin/tzsetup/tzsetup.c
Directory Properties:
  projects/geom-events/   (props changed)
  projects/geom-events/cddl/contrib/opensolaris/   (props changed)
  projects/geom-events/gnu/lib/   (props changed)
  projects/geom-events/lib/libc/   (props changed)
  projects/geom-events/sbin/   (props changed)
  projects/geom-events/sys/   (props changed)
  projects/geom-events/sys/boot/   (props changed)
  projects/geom-events/sys/cddl/contrib/opensolaris/   (props changed)
  projects/geom-events/sys/conf/   (props changed)
  projects/geom-events/sys/contrib/dev/acpica/   (props changed)
  projects/geom-events/sys/contrib/pf/   (props changed)
  projects/geom-events/tools/build/options/WITHOUT_GPIO   (props changed)
  projects/geom-events/tools/build/options/WITH_OFED   (props changed)
  projects/geom-events/usr.bin/procstat/   (props changed)

Modified: projects/geom-events/Makefile.inc1
==============================================================================
--- projects/geom-events/Makefile.inc1	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/Makefile.inc1	Mon Dec  5 17:44:12 2011	(r228285)
@@ -59,8 +59,6 @@ SUBDIR+=games
 .endif
 .if ${MK_CDDL} != "no"
 SUBDIR+=cddl
-.else
-NO_CTF=1
 .endif
 SUBDIR+=gnu include
 .if ${MK_KERBEROS} != "no"
@@ -239,7 +237,7 @@ BMAKE=		MAKEOBJDIRPREFIX=${WORLDTMP} \
 		BOOTSTRAPPING=${OSRELDATE} \
 		SSP_CFLAGS= \
 		-DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
-		-DNO_PIC -DWITHOUT_PROFILE -DNO_SHARED \
+		-DNO_PIC -DNO_PROFILE -DNO_SHARED \
 		-DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF
 
 # build-tools stage
@@ -438,7 +436,7 @@ _libraries:
 	@echo "--------------------------------------------------------------"
 	${_+_}cd ${.CURDIR}; \
 	    ${WMAKE} -DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \
-	    -DWITHOUT_MAN -DWITHOUT_PROFILE libraries
+	    -DWITHOUT_MAN -DNO_PROFILE libraries
 _depend:
 	@echo
 	@echo "--------------------------------------------------------------"
@@ -1218,6 +1216,9 @@ _startup_libs+=	lib/csu/${MACHINE_CPUARC
 _startup_libs+=	gnu/lib/libgcc
 _startup_libs+=	lib/libcompiler_rt
 _startup_libs+=	lib/libc
+.if ${MK_LIBCPLUSPLUS} != "no"
+_startup_libs+=	lib/libcxxrt
+.endif
 
 gnu/lib/libgcc__L: lib/libc__L
 
@@ -1230,7 +1231,7 @@ _prebuild_libs=	${_kerberos5_lib_libasn1
 		${_lib_libgssapi} ${_lib_libipx} \
 		lib/libkiconv lib/libkvm lib/liblzma lib/libmd \
 		lib/ncurses/ncurses lib/ncurses/ncursesw \
-		lib/libopie ${_lib_libthr} \
+		lib/libopie lib/libpam ${_lib_libthr} \
 		lib/libradius lib/libsbuf lib/libtacplus \
 		${_cddl_lib_libumem} \
 		lib/libutil ${_lib_libypclnt} lib/libz lib/msun \
@@ -1318,12 +1319,12 @@ ${_lib}__PL: .PHONY
 		cd ${.CURDIR}/${_lib}; \
 		${MAKE} DIRPRFX=${_lib}/ obj; \
 		${MAKE} DIRPRFX=${_lib}/ depend; \
-		${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \
-		${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install
+		${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \
+		${MAKE} -DNO_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install
 .endif
 .endfor
 
-.for _lib in ${_startup_libs} ${_prebuild_libs} ${_generic_libs}
+.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs}
 ${_lib}__L: .PHONY
 .if exists(${.CURDIR}/${_lib})
 	${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
@@ -1335,6 +1336,17 @@ ${_lib}__L: .PHONY
 .endif
 .endfor
 
+# libpam is special: we need to build static PAM modules before
+# static PAM library, and dynamic PAM library before dynamic PAM
+# modules.
+lib/libpam__L: .PHONY
+	${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \
+		cd ${.CURDIR}/lib/libpam; \
+		${MAKE} DIRPRFX=lib/libpam/ obj; \
+		${MAKE} DIRPRFX=lib/libpam/ depend; \
+		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \
+		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install
+
 _prereq_libs: ${_prereq_libs:S/$/__PL/}
 _startup_libs: ${_startup_libs:S/$/__L/}
 _prebuild_libs: ${_prebuild_libs:S/$/__L/}
@@ -1541,7 +1553,7 @@ XDEV_CPUTYPE?=${TARGET_CPUTYPE}
 .endif
 
 NOFUN=-DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \
-	-DWITHOUT_MAN -DWITHOUT_NLS -DWITHOUT_PROFILE \
+	-DWITHOUT_MAN -DWITHOUT_NLS -DNO_PROFILE \
 	-DWITHOUT_KERBEROS -DWITHOUT_RESCUE -DNO_WARNS \
 	TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
 	CPUTYPE=${XDEV_CPUTYPE}
@@ -1625,4 +1637,7 @@ _xi-links:
 			ln -sf ../../${XDTP}/usr/bin/$$i \
 			    ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
 		done
+.else
+xdev xdev-buil xdev-install:
+	@echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target"
 .endif

Modified: projects/geom-events/ObsoleteFiles.inc
==============================================================================
--- projects/geom-events/ObsoleteFiles.inc	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/ObsoleteFiles.inc	Mon Dec  5 17:44:12 2011	(r228285)
@@ -38,6 +38,19 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20111125: amd(4) removed
+OLD_FILES+=usr/share/man/man4/amd.4.gz
+# 20111125: libodialog removed
+OLD_FILES+=usr/lib/libodialog.a
+OLD_FILES+=usr/lib/libodialog.so
+OLD_LIBS+=usr/lib/libodialog.so.7
+OLD_FILES+=usr/lib/libodialog_p.a
+.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
+OLD_FILES+=usr/lib32/libodialog.a
+OLD_FILES+=usr/lib32/libodialog.so
+OLD_LIBS+=usr/lib32/libodialog.so.7
+OLD_FILES+=usr/lib32/libodialog_p.a
+.endif
 # 20110930: sysinstall removed
 OLD_FILES+=usr/sbin/sysinstall
 OLD_FILES+=usr/share/man/man8/sysinstall.8.gz

Modified: projects/geom-events/UPDATING
==============================================================================
--- projects/geom-events/UPDATING	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/UPDATING	Mon Dec  5 17:44:12 2011	(r228285)
@@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	machines to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20111122:
+	The acpi_wmi(4) status device /dev/wmistat has been renamed to
+	/dev/wmistat0.
+
 20111108:
 	The option VFS_ALLOW_NONMPSAFE option has been added in order to
 	explicitely support non-MPSAFE filesystems.

Modified: projects/geom-events/bin/sh/eval.c
==============================================================================
--- projects/geom-events/bin/sh/eval.c	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/bin/sh/eval.c	Mon Dec  5 17:44:12 2011	(r228285)
@@ -89,7 +89,7 @@ int oexitstatus;		/* saved exit status *
 
 static void evalloop(union node *, int);
 static void evalfor(union node *, int);
-static void evalcase(union node *, int);
+static union node *evalcase(union node *, int);
 static void evalsubshell(union node *, int);
 static void evalredir(union node *, int);
 static void expredir(union node *);
@@ -256,7 +256,7 @@ evaltree(union node *n, int flags)
 			evalfor(n, flags & ~EV_EXIT);
 			break;
 		case NCASE:
-			evalcase(n, flags);
+			next = evalcase(n, flags);
 			break;
 		case NDEFUN:
 			defun(n->narg.text, n->narg.next);
@@ -343,8 +343,6 @@ evalfor(union node *n, int flags)
 	for (argp = n->nfor.args ; argp ; argp = argp->narg.next) {
 		oexitstatus = exitstatus;
 		expandarg(argp, &arglist, EXP_FULL | EXP_TILDE);
-		if (evalskip)
-			goto out;
 	}
 	*arglist.lastp = NULL;
 
@@ -364,13 +362,12 @@ evalfor(union node *n, int flags)
 		}
 	}
 	loopnest--;
-out:
 	popstackmark(&smark);
 }
 
 
 
-static void
+static union node *
 evalcase(union node *n, int flags)
 {
 	union node *cp;
@@ -383,26 +380,24 @@ evalcase(union node *n, int flags)
 	oexitstatus = exitstatus;
 	exitstatus = 0;
 	expandarg(n->ncase.expr, &arglist, EXP_TILDE);
-	for (cp = n->ncase.cases ; cp && evalskip == 0 ; cp = cp->nclist.next) {
+	for (cp = n->ncase.cases ; cp ; cp = cp->nclist.next) {
 		for (patp = cp->nclist.pattern ; patp ; patp = patp->narg.next) {
 			if (casematch(patp, arglist.list->text)) {
+				popstackmark(&smark);
 				while (cp->nclist.next &&
 				    cp->type == NCLISTFALLTHRU) {
-					if (evalskip != 0)
-						break;
 					evaltree(cp->nclist.body,
 					    flags & ~EV_EXIT);
+					if (evalskip != 0)
+						return (NULL);
 					cp = cp->nclist.next;
 				}
-				if (evalskip == 0) {
-					evaltree(cp->nclist.body, flags);
-				}
-				goto out;
+				return (cp->nclist.body);
 			}
 		}
 	}
-out:
 	popstackmark(&smark);
+	return (NULL);
 }
 
 

Modified: projects/geom-events/bin/test/test.c
==============================================================================
--- projects/geom-events/bin/test/test.c	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/bin/test/test.c	Mon Dec  5 17:44:12 2011	(r228285)
@@ -119,7 +119,7 @@ enum token_types {
 };
 
 static struct t_op {
-	const char *op_text;
+	char op_text[4];
 	short op_num, op_type;
 } const ops [] = {
 	{"-r",	FILRD,	UNOP},
@@ -162,7 +162,7 @@ static struct t_op {
 	{"-o",	BOR,	BBINOP},
 	{"(",	LPAREN,	PAREN},
 	{")",	RPAREN,	PAREN},
-	{0,	0,	0}
+	{"",	0,	0}
 };
 
 static struct t_op const *t_wp_op;
@@ -427,7 +427,7 @@ t_lex(char *s)
 		t_wp_op = NULL;
 		return EOI;
 	}
-	while (op->op_text) {
+	while (*op->op_text) {
 		if (strcmp(s, op->op_text) == 0) {
 			if (((op->op_type == UNOP || op->op_type == BUNOP)
 						&& isunopoperand()) ||
@@ -456,7 +456,7 @@ isunopoperand(void)
 	if (nargc == 2)
 		return parenlevel == 1 && strcmp(s, ")") == 0;
 	t = *(t_wp + 2);
-	while (op->op_text) {
+	while (*op->op_text) {
 		if (strcmp(s, op->op_text) == 0)
 			return op->op_type == BINOP &&
 			    (parenlevel == 0 || t[0] != ')' || t[1] != '\0');
@@ -478,7 +478,7 @@ islparenoperand(void)
 		return parenlevel == 1 && strcmp(s, ")") == 0;
 	if (nargc != 3)
 		return 0;
-	while (op->op_text) {
+	while (*op->op_text) {
 		if (strcmp(s, op->op_text) == 0)
 			return op->op_type == BINOP;
 		op++;

Modified: projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8
==============================================================================
--- projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/cddl/contrib/opensolaris/cmd/zdb/zdb.8	Mon Dec  5 17:44:12 2011	(r228285)
@@ -1,65 +1,79 @@
 '\" te
+.\" Copyright (c) 2011, Martin Matuska <mm@FreeBSD.org>.
+.\" All Rights Reserved.
+.\"
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
+.\"
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+.\" or http://www.opensolaris.org/os/licensing.
+.\" See the License for the specific language governing permissions
+.\" and limitations under the License.
+.\"
+.\" When distributing Covered Code, include this CDDL HEADER in each
+.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+.\" If applicable, add the following below this CDDL HEADER, with the
+.\" fields enclosed by brackets "[]" replaced with your own identifying
+.\" information: Portions Copyright [yyyy] [name of copyright owner]
+.\"
 .\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.\" Portions Copyright 2011 Martin Matuska <mm@FreeBSD.org>
-.TH ZDB 8 "Oct 31, 2005"
-.SH NAME
-zdb \- ZFS debugger
-.SH SYNOPSIS
-.LP
-.nf
-\fBzdb\fR \fIpool\fR
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-The \fBzdb\fR command is used by support engineers to diagnose failures and
-gather statistics. Since the \fBZFS\fR file system is always consistent on disk
-and is self-repairing, \fBzdb\fR should only be run under the direction by a
-support engineer.
-.sp
-.LP
-If no arguments are specified, \fBzdb\fR, performs basic consistency checks on
-the pool and associated datasets, and report any problems detected.
-.sp
-.LP
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 26, 2011
+.Dt ZDB 8
+.Os
+.Sh NAME
+.Nm zdb
+.Nd ZFS debugger
+.Sh SYNOPSIS
+.Nm
+.Ar pool
+.Sh DESCRIPTION
+The
+.Nm
+command is used by support engineers to diagnose failures and
+gather statistics. Since the
+.Tn ZFS
+file system is always consistent on disk and is self-repairing,
+.Nm
+should only be run under the direction by a support engineer.
+.Pp
+If no arguments are specified,
+.Nm
+performs basic consistency checks on the pool and associated datasets, and
+report any problems detected.
+.Nm
 Any options supported by this command are internal to Sun and subject to change
 at any time.
-.SH EXIT STATUS
-.sp
-.LP
+.Sh EXIT STATUS
 The following exit values are returned:
-.sp
-.ne 2
-.na
-\fB\fB0\fR\fR
-.ad
-.RS 5n
+.Bl -tag -offset 2n -width 2n
+.It 0
 The pool is consistent.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB1\fR\fR
-.ad
-.RS 5n
+.It 1
 An error was detected.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB2\fR\fR
-.ad
-.RS 5n
+.It 2
 Invalid command line options were specified.
-.RE
-
-.SH SEE ALSO
-.sp
-.LP
-zfs(8), zpool(8)
+.El
+.Sh SEE ALSO
+.Xr zfs 8 ,
+.Xr zpool 8
+.Sh AUTHORS
+This manual page is a
+.Xr mdoc 7
+reimplementation of the
+.Tn OpenSolaris
+manual page
+.Em zdb(1M) ,
+modified and customized for
+.Fx
+and licensed under the
+.Tn Common Development and Distribution License
+.Pq Tn CDDL .
+.Pp
+The
+.Xr mdoc 7
+implementation of this manual page was initially written by
+.An Martin Matuska Aq mm@FreeBSD.org .

Modified: projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8
==============================================================================
--- projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Mon Dec  5 16:38:52 2011	(r228284)
+++ projects/geom-events/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Mon Dec  5 17:44:12 2011	(r228285)
@@ -1,561 +1,543 @@
 '\" te
-.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
-.\"  See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with
-.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
-.\"  See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with
-.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
+.\" Copyright (c) 2011, Martin Matuska <mm@FreeBSD.org>.
+.\" All Rights Reserved.
+.\"
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
+.\"
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+.\" or http://www.opensolaris.org/os/licensing.
+.\" See the License for the specific language governing permissions
+.\" and limitations under the License.
+.\"
+.\" When distributing Covered Code, include this CDDL HEADER in each
+.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+.\" If applicable, add the following below this CDDL HEADER, with the
+.\" fields enclosed by brackets "[]" replaced with your own identifying
+.\" information: Portions Copyright [yyyy] [name of copyright owner]
+.\"
+.\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved.
 .\" Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
-.\" Copyright 2011 by Delphix.  All rights reserved.
-.\" Portions Copyright 2011 Pawel Jakub Dawidek <pjd@FreeBSD.org>
-.\" Portions Copyright 2011 Martin Matuska <mm@FreeBSD.org>
-.TH ZFS 8 "September 24, 2009" FreeBSD
-.SH NAME
-zfs \- configures ZFS file systems
-.SH SYNOPSIS
-.LP
-.nf
-\fBzfs\fR [\fB-?\fR]
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBcreate\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBcreate\fR [\fB-ps\fR] [\fB-b\fR \fIblocksize\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fB-V\fR \fIsize\fR \fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBdestroy\fR [\fB-rRf\fR] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBdestroy\fR [\fB-rRd\fR] \fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBsnapshot\fR [\fB-r\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR]...
-      \fIfilesystem@snapname\fR|\fIvolume@snapname\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrollback\fR [\fB-rRf\fR] \fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBclone\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIsnapshot\fR \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBpromote\fR \fIclone-filesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrename\fR \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR
-     \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrename\fR [\fB-p\fR] \fIfilesystem\fR|\fIvolume\fR \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrename\fR \fB-r\fR \fIsnapshot\fR \fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrename\fR \fB-u\fR [\fB-p\fR] \fIfilesystem\fR \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBlist\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-H\fR][\fB-o\fR \fIproperty\fR[,...]] [\fB-t\fR \fItype\fR[,...]]
-     [\fB-s\fR \fIproperty\fR] ... [\fB-S\fR \fIproperty\fR] ... [\fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR] ...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBset\fR \fIproperty\fR=\fIvalue\fR \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBget\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-Hp\fR][\fB-o\fR \fIfield\fR[,...]] [\fB-s\fR \fIsource\fR[,...]]
-     "\fIall\fR" | \fIproperty\fR[,...] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBinherit\fR [\fB-r\fR] \fIproperty\fR \fIfilesystem\fR|\fIvolume|snapshot\fR ...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBupgrade\fR [\fB-v\fR]
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBupgrade\fR [\fB-r\fR] [\fB-V\fR \fIversion\fR] \fB-a\fR | \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBuserspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ...
-     [\fB-t\fR \fItype\fR [,...]] \fIfilesystem\fR|\fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBgroupspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ...
-     [\fB-t\fR \fItype\fR [,...]] \fIfilesystem\fR|\fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBmount\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBmount\fR [\fB-vO\fR] [\fB-o \fIoptions\fR\fR] \fB-a\fR | \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunmount\fR [\fB-f\fR] \fB-a\fR | \fIfilesystem\fR|\fImountpoint\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBshare\fR \fB-a\fR | \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunshare\fR \fB-a\fR \fIfilesystem\fR|\fImountpoint\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBsend\fR [\fB-vR\fR] [\fB-\fR[\fBiI\fR] \fIsnapshot\fR] \fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] \fB-d\fR \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBallow\fR \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBallow\fR [\fB-ldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] \fIperm\fR|\fI@setname\fR[,...]
-     \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBallow\fR [\fB-ld\fR] \fB-e\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBallow\fR \fB-c\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBallow\fR \fB-s\fR @\fIsetname\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunallow\fR [\fB-rldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] [\fIperm\fR|@\fIsetname\fR[,... ]]
-     \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunallow\fR [\fB-rld\fR] \fB-e\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-c\fR [\fIperm\fR|@\fIsetname\fR[ ... ]] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-s\fR @\fIsetname\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBhold\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBholds\fR [\fB-r\fR] \fIsnapshot\fR...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBrelease\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR...
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBjail\fR \fIjailid\fR \fIfilesystem\fR
-.fi
-
-.LP
-.nf
-\fBzfs\fR \fBunjail\fR \fIjailid\fR \fIfilesystem\fR
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-The \fBzfs\fR command configures \fBZFS\fR datasets within a \fBZFS\fR storage
-pool, as described in \fBzpool\fR(8). A dataset is identified by a unique path
-within the \fBZFS\fR namespace. For example:
-.sp
-.in +2
-.nf
-pool/{filesystem,volume,snapshot}
-.fi
-.in -2
-.sp
-
-.sp
-.LP
-where the maximum length of a dataset name is \fBMAXNAMELEN\fR (256 bytes).
-.sp
-.LP
+.\" Copyright (c) 2011 by Delphix. All rights reserved.
+.\" Copyright (c) 2011, Pawel Jakub Dawidek <pjd@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 26, 2011
+.Dt ZFS 8
+.Os
+.Sh NAME
+.Nm zfs
+.Nd configures ZFS file systems
+.Sh SYNOPSIS
+.Nm
+.Op Fl \&?
+.Nm
+.Cm create
+.Op Fl p
+.Op Fl o Ar property Ns = Ns Ar value
+.Ar ... filesystem
+.Nm
+.Cm create
+.Op Fl ps
+.Op Fl b Ar blocksize
+.Op Fl o Ar property Ns = Ns Ar value
+.Ar ...
+.Fl V
+.Ar size volume
+.Nm
+.Cm destroy
+.Op Fl fnpRrv
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm destroy
+.Op Fl dnpRrv
+.Sm off
+.Ar snapshot
+.Ns Op % Ns Ar snapname
+.Ns Op , Ns Ar ...
+.Sm on
+.Nm
+.Cm snapshot
+.Op Fl r
+.Op Fl o Ar property Ns = Ns Ar value
+.Ar ... filesystem@snapname Ns | Ns Ar volume@snapname
+.Nm
+.Cm rollback
+.Op Fl rRf
+.Ar snapshot
+.Nm
+.Cm clone
+.Op Fl p
+.Op Fl o Ar property Ns = Ns Ar value
+.Ar ... snapshot filesystem Ns | Ns Ar volume
+.Nm
+.Cm promote
+.Ar clone-filesystem
+.Nm
+.Cm rename
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm rename
+.Fl p
+.Ar filesystem Ns | Ns Ar volume
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm rename
+.Fl r
+.Ar snapshot snapshot
+.Nm
+.Cm rename
+.Fl u
+.Op Fl p
+.Ar filesystem filesystem
+.Nm
+.Cm list
+.Op Fl r Ns | Ns Fl d Ar depth
+.Op Fl H
+.Op Fl o Ar property Ns Op , Ns Ar ...
+.Op Fl t Ar type Ns Op , Ns Ar ...
+.Op Fl s Ar property
+.Ar ...
+.Op Fl S Ar property
+.Ar ...
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm set
+.Ar property Ns = Ns Ar value
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm get
+.Op Fl r Ns | Ns Fl d Ar depth
+.Op Fl Hp
+.Op Fl o Ar all | field Ns Op , Ns Ar ...
+.Op Fl s Ar source Ns Op , Ns Ar ...
+.Ar all | property Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm inherit
+.Op Fl rS
+.Ar property
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm upgrade
+.Op Fl v
+.Nm
+.Cm upgrade
+.Op Fl r
+.Op Fl V Ar version
+.Fl a | Ar filesystem
+.Nm
+.Cm userspace
+.Op Fl niHp
+.Op Fl o Ar field Ns Op , Ns Ar ...
+.Op Fl sS Ar field
+.Ar ...
+.Op Fl t Ar type Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar snapshot
+.Nm
+.Cm groupspace
+.Op Fl niHp
+.Op Fl o Ar field Ns Op , Ns Ar ...
+.Op Fl sS Ar field
+.Ar ...
+.Op Fl t Ar type Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar snapshot
+.Nm
+.Cm mount
+.Nm
+.Cm mount
+.Op Fl vO
+.Op Fl o Ar property Ns Op , Ns Ar ...
+.Fl a | Ar filesystem
+.Nm
+.Cm unmount
+.Op Fl f
+.Fl a | Ar filesystem Ns | Ns Ar mountpoint
+.Nm
+.Cm share
+.Fl a | Ar filesystem
+.Nm
+.Cm unshare
+.Fl a | Ar filesystem Ns | Ns Ar mountpoint
+.Nm
+.Cm send
+.Op Fl DnPpRrv
+.Op Fl i Ar snapshot | Fl I Ar snapshot
+.Ar snapshot
+.Nm
+.Cm receive
+.Op Fl vnFu
+.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
+.Nm
+.Cm receive
+.Op Fl vnFu
+.Op Fl d | e
+.Ar filesystem
+.Nm
+.Cm allow
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm allow
+.Op Fl ldug
+.Cm everyone Ns | Ns Ar user Ns | Ns Ar group Ns Op , Ns Ar ...
+.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm allow
+.Op Fl ld
+.Fl e
+.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm allow
+.Fl c
+.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm allow
+.Fl s
+.Ar @setname
+.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm unallow
+.Op Fl rldug
+.Cm everyone Ns | Ns Ar user Ns | Ns Ar group Ns Op , Ns Ar ...
+.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm unallow
+.Op Fl rld
+.Fl e
+.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm unallow
+.Op Fl r
+.Fl c
+.Op Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm unallow
+.Op Fl r
+.Fl s
+.Ar @setname
+.Ar perm Ns | Ns Ar @setname Ns Op , Ns Ar ...
+.Ar filesystem Ns | Ns Ar volume
+.Nm
+.Cm hold
+.Op Fl r
+.Ar tag snapshot ...
+.Nm
+.Cm holds
+.Op Fl r
+.Ar snapshot ...
+.Nm
+.Cm release
+.Op Fl r
+.Ar tag snapshot ...
+.Nm
+.Cm diff
+.Op Fl FHt
+.Ar snapshot
+.Op Ar snapshot Ns | Ns Ar filesystem
+.Nm
+.Cm jail
+.Ar jailid filesystem
+.Nm
+.Cm unjail
+.Ar jailid filesystem
+.Sh DESCRIPTION
+The
+.Nm
+command configures
+.Tn ZFS
+datasets within a
+.Tn ZFS
+storage pool, as described in
+.Xr zpool 8 .
+A dataset is identified by a unique path within the
+.Tn ZFS
+namespace. For example:
+.Bd -ragged -offset 4n
+.No pool/ Ns Brq filesystem,volume,snapshot
+.Ed
+.Pp
+where the maximum length of a dataset name is
+.Dv MAXNAMELEN
+(256 bytes).
+.Pp
 A dataset can be one of the following:
-.sp
-.ne 2
-.na
-\fB\fIfile system\fR\fR
-.ad
-.sp .6
-.RS 4n
-A \fBZFS\fR dataset of type \fBfilesystem\fR can be mounted within the standard
-system namespace and behaves like other file systems. While \fBZFS\fR file
-systems are designed to be \fBPOSIX\fR compliant, known issues exist that
-prevent compliance in some cases. Applications that depend on standards
-conformance might fail due to nonstandard behavior when checking file system
-free space.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fIvolume\fR\fR
-.ad
-.sp .6
-.RS 4n
+.Bl -hang -width 12n
+.It Sy file system
+A
+.Tn ZFS
+dataset of type
+.Em filesystem
+can be mounted within the standard system namespace and behaves like other file
+systems. While
+.Tn ZFS
+file systems are designed to be
+.Tn POSIX
+compliant, known issues exist that prevent compliance in some cases.
+Applications that depend on standards conformance might fail due to nonstandard
+behavior when checking file system free space.
+.It Sy volume
 A logical volume exported as a raw or block device. This type of dataset should
 only be used under special circumstances. File systems are typically used in
 most environments.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fIsnapshot\fR\fR
-.ad
-.sp .6
-.RS 4n
+.It Sy snapshot
 A read-only version of a file system or volume at a given point in time. It is
-specified as \fIfilesystem@name\fR or \fIvolume@name\fR.
-.RE
-
-.SS "ZFS File System Hierarchy"
-.sp
-.LP
-A \fBZFS\fR storage pool is a logical collection of devices that provide space
-for datasets. A storage pool is also the root of the \fBZFS\fR file system
-hierarchy.
-.sp
-.LP
+specified as
+.Em filesystem@name
+or
+.Em volume@name .
+.El
+.Ss ZFS File System Hierarchy
+A
+.Tn ZFS
+storage pool is a logical collection of devices that provide space for

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

From owner-svn-src-projects@FreeBSD.ORG  Tue Dec  6 03:32:37 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CF7D6106566B;
	Tue,  6 Dec 2011 03:32:37 +0000 (UTC)
	(envelope-from brooks@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A68D28FC13;
	Tue,  6 Dec 2011 03:32:37 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB63Wbqs070691;
	Tue, 6 Dec 2011 03:32:37 GMT (envelope-from brooks@svn.freebsd.org)
Received: (from brooks@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB63WbPd070689;
	Tue, 6 Dec 2011 03:32:37 GMT (envelope-from brooks@svn.freebsd.org)
Message-Id: <201112060332.pB63WbPd070689@svn.freebsd.org>
From: Brooks Davis <brooks@FreeBSD.org>
Date: Tue, 6 Dec 2011 03:32:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228299 - projects/varsym/usr.bin
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Dec 2011 03:32:37 -0000

Author: brooks
Date: Tue Dec  6 03:32:37 2011
New Revision: 228299
URL: http://svn.freebsd.org/changeset/base/228299

Log:
  Actually hook the varsym command up to the build.

Modified:
  projects/varsym/usr.bin/Makefile

Modified: projects/varsym/usr.bin/Makefile
==============================================================================
--- projects/varsym/usr.bin/Makefile	Tue Dec  6 00:58:42 2011	(r228298)
+++ projects/varsym/usr.bin/Makefile	Tue Dec  6 03:32:37 2011	(r228299)
@@ -171,6 +171,7 @@ SUBDIR=	alias \
 	unvis \
 	uudecode \
 	uuencode \
+	varsym \
 	vi \
 	vis \
 	vmstat \

From owner-svn-src-projects@FreeBSD.ORG  Tue Dec  6 03:35:24 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0E228106566C;
	Tue,  6 Dec 2011 03:35:24 +0000 (UTC)
	(envelope-from brooks@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id F2D228FC08;
	Tue,  6 Dec 2011 03:35:23 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB63ZNfo070828;
	Tue, 6 Dec 2011 03:35:23 GMT (envelope-from brooks@svn.freebsd.org)
Received: (from brooks@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB63ZNhk070824;
	Tue, 6 Dec 2011 03:35:23 GMT (envelope-from brooks@svn.freebsd.org)
Message-Id: <201112060335.pB63ZNhk070824@svn.freebsd.org>
From: Brooks Davis <brooks@FreeBSD.org>
Date: Tue, 6 Dec 2011 03:35:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228300 - projects/varsym/sys/kern
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Dec 2011 03:35:24 -0000

Author: brooks
Date: Tue Dec  6 03:35:23 2011
New Revision: 228300
URL: http://svn.freebsd.org/changeset/base/228300

Log:
  Knobs work better if you ever define the associated values: include
  opt_varsym.h.

Modified:
  projects/varsym/sys/kern/kern_exec.c
  projects/varsym/sys/kern/kern_fork.c
  projects/varsym/sys/kern/vfs_lookup.c

Modified: projects/varsym/sys/kern/kern_exec.c
==============================================================================
--- projects/varsym/sys/kern/kern_exec.c	Tue Dec  6 03:32:37 2011	(r228299)
+++ projects/varsym/sys/kern/kern_exec.c	Tue Dec  6 03:35:23 2011	(r228300)
@@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_hwpmc_hooks.h"
 #include "opt_kdtrace.h"
 #include "opt_ktrace.h"
+#include "opt_varsym.h"
 #include "opt_vm.h"
 
 #include <sys/param.h>

Modified: projects/varsym/sys/kern/kern_fork.c
==============================================================================
--- projects/varsym/sys/kern/kern_fork.c	Tue Dec  6 03:32:37 2011	(r228299)
+++ projects/varsym/sys/kern/kern_fork.c	Tue Dec  6 03:35:23 2011	(r228300)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_ktrace.h"
 #include "opt_kstack_pages.h"
 #include "opt_procdesc.h"
+#include "opt_varsym.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>

Modified: projects/varsym/sys/kern/vfs_lookup.c
==============================================================================
--- projects/varsym/sys/kern/vfs_lookup.c	Tue Dec  6 03:32:37 2011	(r228299)
+++ projects/varsym/sys/kern/vfs_lookup.c	Tue Dec  6 03:35:23 2011	(r228300)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_capsicum.h"
 #include "opt_kdtrace.h"
 #include "opt_ktrace.h"
+#include "opt_varsym.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>

From owner-svn-src-projects@FreeBSD.ORG  Tue Dec  6 17:30:16 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1FFDC106566C;
	Tue,  6 Dec 2011 17:30:16 +0000 (UTC)
	(envelope-from brooks@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 0D7428FC15;
	Tue,  6 Dec 2011 17:30:16 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6HUGXd001277;
	Tue, 6 Dec 2011 17:30:16 GMT (envelope-from brooks@svn.freebsd.org)
Received: (from brooks@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6HUFNd001258;
	Tue, 6 Dec 2011 17:30:15 GMT (envelope-from brooks@svn.freebsd.org)
Message-Id: <201112061730.pB6HUFNd001258@svn.freebsd.org>
From: Brooks Davis <brooks@FreeBSD.org>
Date: Tue, 6 Dec 2011 17:30:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228309 - in projects/varsym: contrib/openbsm/etc
	sys/bsm sys/compat/freebsd32 sys/kern sys/security/audit sys/sys
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Dec 2011 17:30:16 -0000

Author: brooks
Date: Tue Dec  6 17:30:15 2011
New Revision: 228309
URL: http://svn.freebsd.org/changeset/base/228309

Log:
  Add audit support for varsym_*() syscalls.

Modified:
  projects/varsym/contrib/openbsm/etc/audit_event
  projects/varsym/sys/bsm/audit_kevents.h
  projects/varsym/sys/compat/freebsd32/freebsd32_proto.h
  projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h
  projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c
  projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c
  projects/varsym/sys/compat/freebsd32/syscalls.master
  projects/varsym/sys/kern/init_sysent.c
  projects/varsym/sys/kern/kern_varsym.c
  projects/varsym/sys/kern/syscalls.c
  projects/varsym/sys/kern/syscalls.master
  projects/varsym/sys/security/audit/audit.h
  projects/varsym/sys/security/audit/audit_arg.c
  projects/varsym/sys/security/audit/audit_bsm.c
  projects/varsym/sys/security/audit/audit_private.h
  projects/varsym/sys/sys/syscall.h
  projects/varsym/sys/sys/syscall.mk
  projects/varsym/sys/sys/sysproto.h

Modified: projects/varsym/contrib/openbsm/etc/audit_event
==============================================================================
--- projects/varsym/contrib/openbsm/etc/audit_event	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/contrib/openbsm/etc/audit_event	Tue Dec  6 17:30:15 2011	(r228309)
@@ -558,6 +558,9 @@
 43194:AUE_FSCTL:fsctl():fm
 43195:AUE_FFSCTL:ffsctl():fm
 43196:AUE_LPATHCONF:lpathconf(2):fa
+43201:AUE_VARSYM_SET:varsym_set(2):ad,fc
+43202:AUE_VARSYM_GET:varsym_get(2):ad,fa
+43203:AUE_VARSYM_LIST:varsym_list(2):ad,fa
 #
 # Solaris userspace events.
 #

Modified: projects/varsym/sys/bsm/audit_kevents.h
==============================================================================
--- projects/varsym/sys/bsm/audit_kevents.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/bsm/audit_kevents.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -602,6 +602,9 @@
 #define	AUE_PDKILL		43198	/* FreeBSD. */
 #define	AUE_PDGETPID		43199	/* FreeBSD. */
 #define	AUE_PDWAIT		43200	/* FreeBSD. */
+#define	AUE_VARSYM_SET		43201	/* FreeBSD. */
+#define	AUE_VARSYM_GET		43202	/* FreeBSD. */
+#define	AUE_VARSYM_LIST		43203	/* FreeBSD. */
 
 /*
  * Darwin BSM uses a number of AUE_O_* definitions, which are aliased to the

Modified: projects/varsym/sys/compat/freebsd32/freebsd32_proto.h
==============================================================================
--- projects/varsym/sys/compat/freebsd32/freebsd32_proto.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/compat/freebsd32/freebsd32_proto.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb 
+ * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_
@@ -1090,9 +1090,9 @@ int	freebsd7_freebsd32_shmctl(struct thr
 #define	FREEBSD32_SYS_AUE_freebsd32_shmctl	AUE_SHMCTL
 #define	FREEBSD32_SYS_AUE_freebsd32_pselect	AUE_SELECT
 #define	FREEBSD32_SYS_AUE_freebsd32_posix_fallocate	AUE_NULL
-#define	FREEBSD32_SYS_AUE_freebsd32_varsym_set	AUE_NULL
-#define	FREEBSD32_SYS_AUE_freebsd32_varsym_get	AUE_NULL
-#define	FREEBSD32_SYS_AUE_freebsd32_varsym_list	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_varsym_set	AUE_VARSYM_SET
+#define	FREEBSD32_SYS_AUE_freebsd32_varsym_get	AUE_VARSYM_GET
+#define	FREEBSD32_SYS_AUE_freebsd32_varsym_list	AUE_VARSYM_LIST
 
 #undef PAD_
 #undef PADL_

Modified: projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h
==============================================================================
--- projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/compat/freebsd32/freebsd32_syscall.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb 
+ * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #define	FREEBSD32_SYS_syscall	0

Modified: projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c
==============================================================================
--- projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/compat/freebsd32/freebsd32_syscalls.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb 
+ * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 const char *freebsd32_syscallnames[] = {

Modified: projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c
==============================================================================
--- projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/compat/freebsd32/freebsd32_sysent.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 226364 2011-10-14 11:46:46Z jhb 
+ * created from FreeBSD: projects/varsym/sys/compat/freebsd32/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #include "opt_compat.h"
@@ -592,7 +592,7 @@ struct sysent freebsd32_sysent[] = {
 	{ AS(rctl_remove_rule_args), (sy_call_t *)sys_rctl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 529 = rctl_remove_rule */
 	{ AS(freebsd32_posix_fallocate_args), (sy_call_t *)freebsd32_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 530 = freebsd32_posix_fallocate */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 531 = posix_fadvise */
-	{ AS(freebsd32_varsym_set_args), (sy_call_t *)freebsd32_varsym_set, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 532 = freebsd32_varsym_set */
-	{ AS(freebsd32_varsym_get_args), (sy_call_t *)freebsd32_varsym_get, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = freebsd32_varsym_get */
-	{ AS(freebsd32_varsym_list_args), (sy_call_t *)freebsd32_varsym_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = freebsd32_varsym_list */
+	{ AS(freebsd32_varsym_set_args), (sy_call_t *)freebsd32_varsym_set, AUE_VARSYM_SET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 532 = freebsd32_varsym_set */
+	{ AS(freebsd32_varsym_get_args), (sy_call_t *)freebsd32_varsym_get, AUE_VARSYM_GET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = freebsd32_varsym_get */
+	{ AS(freebsd32_varsym_list_args), (sy_call_t *)freebsd32_varsym_list, AUE_VARSYM_LIST, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = freebsd32_varsym_list */
 };

Modified: projects/varsym/sys/compat/freebsd32/syscalls.master
==============================================================================
--- projects/varsym/sys/compat/freebsd32/syscalls.master	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/compat/freebsd32/syscalls.master	Tue Dec  6 17:30:15 2011	(r228309)
@@ -992,13 +992,13 @@
 				    uint32_t offset1, uint32_t offset2,\
 				    uint32_t len1, uint32_t len2); }
 531	AUE_NULL	UNIMPL	posix_fadvise
-532	AUE_NULL	STD	{ int freebsd32_varsym_set(int scope, \
+532	AUE_VARSYM_SET	STD	{ int freebsd32_varsym_set(int scope, \
 				    uint32_t whichlo, uint32_t whichhi, \
 				    const char *name, const char *data); }
-533	AUE_NULL	STD	{ int freebsd32_varsym_get(int scope, \
+533	AUE_VARSYM_GET	STD	{ int freebsd32_varsym_get(int scope, \
 				    uint32_t whichlo, uint32_t whichhi, \
 				    const char *name, \
 				    char *buf, uint32_t *size); }
-534	AUE_NULL	STD	{ int freebsd32_varsym_list(int scope, \
+534	AUE_VARSYM_LIST	STD	{ int freebsd32_varsym_list(int scope, \
 				    uint32_t whichlo, uint32_t whichhi, \
 				    char *buf, uint32_t *size); }

Modified: projects/varsym/sys/kern/init_sysent.c
==============================================================================
--- projects/varsym/sys/kern/init_sysent.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/kern/init_sysent.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan 
+ * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #include "opt_compat.h"
@@ -566,7 +566,7 @@ struct sysent sysent[] = {
 	{ AS(rctl_remove_rule_args), (sy_call_t *)sys_rctl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 529 = rctl_remove_rule */
 	{ AS(posix_fallocate_args), (sy_call_t *)sys_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 530 = posix_fallocate */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 531 = posix_fadvise */
-	{ AS(varsym_set_args), (sy_call_t *)sys_varsym_set, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 532 = varsym_set */
-	{ AS(varsym_get_args), (sy_call_t *)sys_varsym_get, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = varsym_get */
-	{ AS(varsym_list_args), (sy_call_t *)sys_varsym_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = varsym_list */
+	{ AS(varsym_set_args), (sy_call_t *)sys_varsym_set, AUE_VARSYM_SET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 532 = varsym_set */
+	{ AS(varsym_get_args), (sy_call_t *)sys_varsym_get, AUE_VARSYM_GET, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = varsym_get */
+	{ AS(varsym_list_args), (sy_call_t *)sys_varsym_list, AUE_VARSYM_LIST, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = varsym_list */
 };

Modified: projects/varsym/sys/kern/kern_varsym.c
==============================================================================
--- projects/varsym/sys/kern/kern_varsym.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/kern/kern_varsym.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -59,6 +59,8 @@
 #include <sys/varsym.h>
 #include <sys/sysproto.h>
 
+#include <security/audit/audit.h>
+
 #ifdef VARSYM
 
 SYSCTL_NODE(_vfs, OID_AUTO, varsym, CTLFLAG_RD, NULL,
@@ -227,11 +229,14 @@ sys_varsym_set(struct thread *td, struct
 	if (!varsym_enable)
 		return(ENOSYS);
 
+	AUDIT_ARG_VARSYM(uap->scope, uap->which);
+
 	if (uap->name == NULL)
 		return (varsym_clear(td, uap->scope, uap->which));
 
 	if ((error = copyinstr(uap->name, name, sizeof(name), NULL)) != 0)
 		return(error);
+	AUDIT_ARG_TEXT(name);
 
 	if (uap->data) {
 		buf = malloc(MAXVARSYM_DATA, M_VARSYM, M_WAITOK);
@@ -239,6 +244,7 @@ sys_varsym_set(struct thread *td, struct
 		if (error != 0)
 			goto done;
 	}
+	AUDIT_ARG_TEXT2(buf);
 
 	switch(uap->scope) {
 	case VARSYM_PROC:
@@ -358,6 +364,8 @@ sys_varsym_get(struct thread *td, struct
 	int error;
 	size_t bufsize;
 
+	AUDIT_ARG_VARSYM(uap->scope, uap->which);
+
 	if ((error = copyin(uap->size, &bufsize, sizeof(bufsize))) != 0)
 		return(error);
 
@@ -384,6 +392,8 @@ kern_varsym_get(struct thread *td, int s
 
 	if ((error = copyinstr(uname, name, sizeof(name), NULL)) != 0)
 		return(error);
+	AUDIT_ARG_TEXT(name);
+
 	switch (scope) {
 	case VARSYM_PROC:
 	case VARSYM_PROC_PRIV:
@@ -402,6 +412,7 @@ kern_varsym_get(struct thread *td, int s
 	sym = varsymfind(scope, name, strlen(name));
 	if (sym == NULL)
 		return(ENOENT);
+	AUDIT_ARG_TEXT2(sym->vs_data);
 
 	dlen = strlen(sym->vs_data);
 	if (dlen < *bufsize)
@@ -427,6 +438,8 @@ sys_varsym_list(struct thread *td, struc
 	int error;
 	size_t bufsize;
 
+	AUDIT_ARG_VARSYM(uap->scope, uap->which);
+
 	if ((error = copyin(uap->size, &bufsize, sizeof(bufsize))) != 0)
 		return(error);
 

Modified: projects/varsym/sys/kern/syscalls.c
==============================================================================
--- projects/varsym/sys/kern/syscalls.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/kern/syscalls.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan 
+ * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 const char *syscallnames[] = {

Modified: projects/varsym/sys/kern/syscalls.master
==============================================================================
--- projects/varsym/sys/kern/syscalls.master	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/kern/syscalls.master	Tue Dec  6 17:30:15 2011	(r228309)
@@ -948,13 +948,13 @@
 530	AUE_NULL	STD	{ int posix_fallocate(int fd, \
 				    off_t offset, off_t len); }
 531	AUE_NULL	UNIMPL	posix_fadvise
-532	AUE_NULL	STD	{ int varsym_set(int scope, id_t which, \
+532	AUE_VARSYM_SET	STD	{ int varsym_set(int scope, id_t which, \
 				    const char *name, \
 				    const char *data); }
-533	AUE_NULL	STD	{ int varsym_get(int scope, id_t which,\
+533	AUE_VARSYM_GET	STD	{ int varsym_get(int scope, id_t which,\
 				    const char *name, \
 				    char *buf, size_t *size); }
-534	AUE_NULL	STD	{ int varsym_list(int scope, id_t which,\
+534	AUE_VARSYM_LIST	STD	{ int varsym_list(int scope, id_t which,\
                                    char *buf, size_t *size); }
 ; Please copy any additions and changes to the following compatability tables:
 ; sys/compat/freebsd32/syscalls.master

Modified: projects/varsym/sys/security/audit/audit.h
==============================================================================
--- projects/varsym/sys/security/audit/audit.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/security/audit/audit.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -104,6 +104,7 @@ void	 audit_arg_upath2(struct thread *td
 void	 audit_arg_vnode1(struct vnode *vp);
 void	 audit_arg_vnode2(struct vnode *vp);
 void	 audit_arg_text(char *text);
+void	 audit_arg_text2(char *text);
 void	 audit_arg_cmd(int cmd);
 void	 audit_arg_svipc_cmd(int cmd);
 void	 audit_arg_svipc_perm(struct ipc_perm *perm);
@@ -115,6 +116,7 @@ void	 audit_arg_file(struct proc *p, str
 void	 audit_arg_argv(char *argv, int argc, int length);
 void	 audit_arg_envv(char *envv, int envc, int length);
 void	 audit_arg_rights(cap_rights_t rights);
+void	 audit_arg_varsym(int scope, id_t which);
 void	 audit_sysclose(struct thread *td, int fd);
 void	 audit_cred_copy(struct ucred *src, struct ucred *dest);
 void	 audit_cred_destroy(struct ucred *cred);
@@ -271,6 +273,11 @@ void	 audit_thread_free(struct thread *t
 		audit_arg_text((text));					\
 } while (0)
 
+#define	AUDIT_ARG_TEXT2(text) do {					\
+	if (AUDITING_TD(curthread))					\
+		audit_arg_text2((text));				\
+} while (0)
+
 #define	AUDIT_ARG_UID(uid) do {						\
 	if (AUDITING_TD(curthread))					\
 		audit_arg_uid((uid));					\
@@ -301,6 +308,11 @@ void	 audit_thread_free(struct thread *t
 		audit_arg_vnode2((vp));					\
 } while (0)
 
+#define	AUDIT_ARG_VARSYM(scope, which) do {				\
+	if (AUDITING_TD(curthread))					\
+		audit_arg_varsym((scope), (which));			\
+} while (0)
+
 #define	AUDIT_SYSCALL_ENTER(code, td)	do {				\
 	if (audit_enabled) {						\
 		audit_syscall_enter(code, td);				\

Modified: projects/varsym/sys/security/audit/audit_arg.c
==============================================================================
--- projects/varsym/sys/security/audit/audit_arg.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/security/audit/audit_arg.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -546,6 +546,28 @@ audit_arg_text(char *text)
 }
 
 void
+audit_arg_text2(char *text)
+{
+	struct kaudit_record *ar;
+
+	KASSERT(text != NULL, ("audit_arg_text2: text == NULL"));
+
+	ar = currecord();
+	if (ar == NULL)
+		return;
+
+	/* Invalidate the text string */
+	ar->k_ar.ar_valid_arg &= (ARG_ALL ^ ARG_TEXT2);
+
+	if (ar->k_ar.ar_arg_text2 == NULL)
+		ar->k_ar.ar_arg_text2 = malloc(MAXPATHLEN, M_AUDITTEXT,
+		    M_WAITOK);
+
+	strncpy(ar->k_ar.ar_arg_text2, text, MAXPATHLEN);
+	ARG_SET_VALID(ar, ARG_TEXT2);
+}
+
+void
 audit_arg_cmd(int cmd)
 {
 	struct kaudit_record *ar;
@@ -878,6 +900,20 @@ audit_arg_rights(cap_rights_t rights)
 	ARG_SET_VALID(ar, ARG_RIGHTS);
 }
 
+void
+audit_arg_varsym(int scope, id_t which)
+{
+	struct kaudit_record *ar;
+
+	ar = currecord();
+	if (ar == NULL)
+		return;
+
+	ar->k_ar.ar_arg_scope = scope;
+	ar->k_ar.ar_arg_id = which;
+	ARG_SET_VALID(ar, ARG_VARSYM);
+}
+
 /*
  * The close() system call uses it's own audit call to capture the path/vnode
  * information because those pieces are not easily obtained within the system

Modified: projects/varsym/sys/security/audit/audit_bsm.c
==============================================================================
--- projects/varsym/sys/security/audit/audit_bsm.c	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/security/audit/audit_bsm.c	Tue Dec  6 17:30:15 2011	(r228309)
@@ -1611,6 +1611,25 @@ kaudit_to_bsm(struct kaudit_record *kar,
 	case AUE_CAP_GETMODE:
 		break;
 
+	case AUE_VARSYM_SET:
+	case AUE_VARSYM_GET:
+	case AUE_VARSYM_LIST:
+		if (ARG_IS_VALID(kar, ARG_VARSYM)) {
+			tok = au_to_arg32(1, "scope", ar->ar_arg_scope);
+			kau_write(rec, tok);
+			tok = au_to_arg64(1, "which", ar->ar_arg_id);
+			kau_write(rec, tok);
+		}
+		if (ARG_IS_VALID(kar, ARG_TEXT)) {
+			tok = au_to_text(ar->ar_arg_text);
+			kau_write(rec, tok);
+		}
+		if (ARG_IS_VALID(kar, ARG_TEXT2)) {
+			tok = au_to_text(ar->ar_arg_text2);
+			kau_write(rec, tok);
+		}
+		break;
+
 	case AUE_NULL:
 	default:
 		printf("BSM conversion requested for unknown event %d\n",

Modified: projects/varsym/sys/security/audit/audit_private.h
==============================================================================
--- projects/varsym/sys/security/audit/audit_private.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/security/audit/audit_private.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -230,6 +230,9 @@ struct audit_record {
 	int			ar_arg_exitretval;
 	struct sockaddr_storage ar_arg_sockaddr;
 	cap_rights_t		ar_arg_rights;
+	int			ar_arg_scope;
+	id_t			ar_arg_id;
+	char			*ar_arg_text2;
 };
 
 /*
@@ -290,6 +293,8 @@ struct audit_record {
 #define	ARG_ATFD1		0x0004000000000000ULL
 #define	ARG_ATFD2		0x0008000000000000ULL
 #define	ARG_RIGHTS		0x0010000000000000ULL
+#define	ARG_TEXT2		0x0020000000000000ULL
+#define	ARG_VARSYM		0x0040000000000000ULL
 #define	ARG_NONE		0x0000000000000000ULL
 #define	ARG_ALL			0xFFFFFFFFFFFFFFFFULL
 

Modified: projects/varsym/sys/sys/syscall.h
==============================================================================
--- projects/varsym/sys/sys/syscall.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/sys/syscall.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan 
+ * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #define	SYS_syscall	0

Modified: projects/varsym/sys/sys/syscall.mk
==============================================================================
--- projects/varsym/sys/sys/syscall.mk	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/sys/syscall.mk	Tue Dec  6 17:30:15 2011	(r228309)
@@ -1,7 +1,7 @@
 # FreeBSD system call names.
 # DO NOT EDIT-- this file is automatically generated.
 # $FreeBSD$
-# created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan 
+# created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
 MIASM =  \
 	syscall.o \
 	exit.o \

Modified: projects/varsym/sys/sys/sysproto.h
==============================================================================
--- projects/varsym/sys/sys/sysproto.h	Tue Dec  6 12:03:01 2011	(r228308)
+++ projects/varsym/sys/sys/sysproto.h	Tue Dec  6 17:30:15 2011	(r228309)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/kern/syscalls.master 224987 2011-08-18 22:51:30Z jonathan 
+ * created from FreeBSD: projects/varsym/sys/kern/syscalls.master 226973 2011-10-31 23:27:24Z brooks 
  */
 
 #ifndef _SYS_SYSPROTO_H_
@@ -2821,9 +2821,9 @@ int	freebsd7_shmctl(struct thread *, str
 #define	SYS_AUE_rctl_add_rule	AUE_NULL
 #define	SYS_AUE_rctl_remove_rule	AUE_NULL
 #define	SYS_AUE_posix_fallocate	AUE_NULL
-#define	SYS_AUE_varsym_set	AUE_NULL
-#define	SYS_AUE_varsym_get	AUE_NULL
-#define	SYS_AUE_varsym_list	AUE_NULL
+#define	SYS_AUE_varsym_set	AUE_VARSYM_SET
+#define	SYS_AUE_varsym_get	AUE_VARSYM_GET
+#define	SYS_AUE_varsym_list	AUE_VARSYM_LIST
 
 #undef PAD_
 #undef PADL_

From owner-svn-src-projects@FreeBSD.ORG  Tue Dec  6 17:55:00 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 374DB1065675;
	Tue,  6 Dec 2011 17:55:00 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 271218FC19;
	Tue,  6 Dec 2011 17:55:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6Ht0Qb002072;
	Tue, 6 Dec 2011 17:55:00 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6Ht0Im002069;
	Tue, 6 Dec 2011 17:55:00 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201112061755.pB6Ht0Im002069@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 6 Dec 2011 17:55:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228310 - projects/head_mfi/sys/dev/mfi
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Dec 2011 17:55:00 -0000

Author: mav
Date: Tue Dec  6 17:54:59 2011
New Revision: 228310
URL: http://svn.freebsd.org/changeset/base/228310

Log:
  Move mfi_decode_evt() call from interrupt thread to the taskqueue. Call from
  the interrupt thread leads to panic on attempt to sleep on SX lock.

Modified:
  projects/head_mfi/sys/dev/mfi/mfi.c
  projects/head_mfi/sys/dev/mfi/mfivar.h

Modified: projects/head_mfi/sys/dev/mfi/mfi.c
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi.c	Tue Dec  6 17:30:15 2011	(r228309)
+++ projects/head_mfi/sys/dev/mfi/mfi.c	Tue Dec  6 17:54:59 2011	(r228310)
@@ -73,6 +73,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/uio.h>
 #include <sys/proc.h>
 #include <sys/signalvar.h>
+#include <sys/taskqueue.h>
 
 #include <machine/bus.h>
 #include <machine/resource.h>
@@ -96,6 +97,7 @@ static void	mfi_startup(void *arg);
 static void	mfi_intr(void *arg);
 static void	mfi_ldprobe(struct mfi_softc *sc);
 static void	mfi_syspdprobe(struct mfi_softc *sc);
+static void	mfi_handle_evt(void *context, int pending);
 static int	mfi_aen_register(struct mfi_softc *sc, int seq, int locale);
 static void	mfi_aen_complete(struct mfi_command *);
 static int	mfi_add_ld(struct mfi_softc *sc, int);
@@ -368,6 +370,8 @@ mfi_attach(struct mfi_softc *sc)
 	sx_init(&sc->mfi_config_lock, "MFI config");
 	TAILQ_INIT(&sc->mfi_ld_tqh);
 	TAILQ_INIT(&sc->mfi_syspd_tqh);
+	TAILQ_INIT(&sc->mfi_evt_queue);
+	TASK_INIT(&sc->mfi_evt_task, 0, mfi_handle_evt, sc);
 	TAILQ_INIT(&sc->mfi_aen_pids);
 	TAILQ_INIT(&sc->mfi_cam_ccbq);
 
@@ -1462,6 +1466,10 @@ static void
 mfi_decode_evt(struct mfi_softc *sc, struct mfi_evt_detail *detail,uint8_t probe_sys_pd)
 {
 	struct mfi_system_pd *syspd = NULL;
+
+	device_printf(sc->mfi_dev, "%d (%s/0x%04x/%s) - %s\n", detail->seq,
+	    format_timestamp(detail->time), detail->evt_class.members.locale,
+	    format_class(detail->evt_class.members.evt_class), detail->description);
 	switch (detail->arg_type) {
 	case MR_EVT_ARGS_NONE:
 #define MR_EVT_CTRL_HOST_BUS_SCAN_REQUESTED 0x0152
@@ -1527,10 +1535,41 @@ mfi_decode_evt(struct mfi_softc *sc, str
 		}
 		break;
 	}
+}
 
-	device_printf(sc->mfi_dev, "%d (%s/0x%04x/%s) - %s\n", detail->seq,
-	    format_timestamp(detail->time), detail->evt_class.members.locale,
-	    format_class(detail->evt_class.members.evt_class), detail->description);
+static void
+mfi_queue_evt(struct mfi_softc *sc, struct mfi_evt_detail *detail,
+    uint8_t probe_sys_pd)
+{
+	struct mfi_evt_queue_elm *elm;
+
+	mtx_assert(&sc->mfi_io_lock, MA_OWNED);
+	elm = malloc(sizeof(*elm), M_MFIBUF, M_NOWAIT|M_ZERO);
+	if (elm == NULL)
+		return;
+	elm->probe_sys_pd = probe_sys_pd;
+	memcpy(&elm->detail, detail, sizeof(*detail));
+	TAILQ_INSERT_TAIL(&sc->mfi_evt_queue, elm, link);
+	taskqueue_enqueue(taskqueue_swi, &sc->mfi_evt_task);
+}
+
+static void
+mfi_handle_evt(void *context, int pending)
+{
+	TAILQ_HEAD(,mfi_evt_queue_elm) queue;
+	struct mfi_softc *sc;
+	struct mfi_evt_queue_elm *elm;
+
+	sc = context;
+	TAILQ_INIT(&queue);
+	mtx_lock(&sc->mfi_io_lock);
+	TAILQ_CONCAT(&queue, &sc->mfi_evt_queue, link);
+	mtx_unlock(&sc->mfi_io_lock);
+	while ((elm = TAILQ_FIRST(&queue)) != NULL) {
+		TAILQ_REMOVE(&queue, elm, link);
+		mfi_decode_evt(sc, &elm->detail, elm->probe_sys_pd);
+		free(elm, M_MFIBUF);
+	}
 }
 
 static int
@@ -1616,13 +1655,7 @@ mfi_aen_complete(struct mfi_command *cm)
 			selwakeup(&sc->mfi_select);
 		}
 		detail = cm->cm_data;
-		/*
-		 * XXX If this function is too expensive or is recursive, then
-		 * events should be put onto a queue and processed later.
-		 */
-		mtx_unlock(&sc->mfi_io_lock);
-		mfi_decode_evt(sc, detail,1);
-		mtx_lock(&sc->mfi_io_lock);
+		mfi_queue_evt(sc, detail, 1);
 		seq = detail->seq + 1;
 		TAILQ_FOREACH_SAFE(mfi_aen_entry, &sc->mfi_aen_pids, aen_link, tmp) {
 			TAILQ_REMOVE(&sc->mfi_aen_pids, mfi_aen_entry,
@@ -1738,7 +1771,9 @@ mfi_parse_entries(struct mfi_softc *sc, 
 				else if (el->event[i].seq < start_seq)
 					break;
 			}
-			mfi_decode_evt(sc, &el->event[i], 0);
+			mtx_lock(&sc->mfi_io_lock);
+			mfi_queue_evt(sc, &el->event[i], 0);
+			mtx_unlock(&sc->mfi_io_lock);
 		}
 		seq = el->event[el->count - 1].seq + 1;
 	}

Modified: projects/head_mfi/sys/dev/mfi/mfivar.h
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfivar.h	Tue Dec  6 17:30:15 2011	(r228309)
+++ projects/head_mfi/sys/dev/mfi/mfivar.h	Tue Dec  6 17:54:59 2011	(r228310)
@@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sx.h>
 
 #include <sys/types.h>
+#include <sys/taskqueue.h>
 #include <machine/atomic.h>
 
 /*
@@ -136,6 +137,13 @@ struct mfi_system_pd {
 	struct disk	*pd_disk;
 	int		pd_flags;
 };
+
+struct mfi_evt_queue_elm {
+	TAILQ_ENTRY(mfi_evt_queue_elm)	link;
+	uint8_t				probe_sys_pd;
+	struct mfi_evt_detail		detail;
+};
+
 struct mfi_aen {
 	TAILQ_ENTRY(mfi_aen) aen_link;
 	struct proc			*p;
@@ -208,6 +216,8 @@ struct mfi_softc {
 	bus_addr_t			mfi_tb_ioc_init_busaddr;
 	union mfi_frame			*mfi_tb_init;
 
+	TAILQ_HEAD(,mfi_evt_queue_elm)	mfi_evt_queue;
+	struct task			mfi_evt_task;
 	TAILQ_HEAD(,mfi_aen)		mfi_aen_pids;
 	struct mfi_command		*mfi_aen_cm;
 	struct mfi_command		*mfi_skinny_cm;

From owner-svn-src-projects@FreeBSD.ORG  Wed Dec  7 12:48:11 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D9791106564A;
	Wed,  7 Dec 2011 12:48:11 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C9C6C8FC08;
	Wed,  7 Dec 2011 12:48:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB7CmBeD039983;
	Wed, 7 Dec 2011 12:48:11 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB7CmB82039981;
	Wed, 7 Dec 2011 12:48:11 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201112071248.pB7CmB82039981@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Wed, 7 Dec 2011 12:48:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228320 - projects/head_mfi/sys/dev/mfi
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Dec 2011 12:48:11 -0000

Author: mav
Date: Wed Dec  7 12:48:11 2011
New Revision: 228320
URL: http://svn.freebsd.org/changeset/base/228320

Log:
  Implement MFI_DEBUG for 64bit S/G lists.

Modified:
  projects/head_mfi/sys/dev/mfi/mfi_debug.c

Modified: projects/head_mfi/sys/dev/mfi/mfi_debug.c
==============================================================================
--- projects/head_mfi/sys/dev/mfi/mfi_debug.c	Wed Dec  7 12:25:28 2011	(r228319)
+++ projects/head_mfi/sys/dev/mfi/mfi_debug.c	Wed Dec  7 12:48:11 2011	(r228320)
@@ -63,7 +63,8 @@ mfi_print_frame_flags(device_t dev, uint
 	    "\2SGL64"
 	    "\3SENSE64"
 	    "\4WRITE"
-	    "\5READ");
+	    "\5READ"
+	    "\6IEEESGL");
 }
 
 static void
@@ -73,7 +74,15 @@ mfi_print_sgl(struct mfi_frame_header *h
 
 	printf("SG List:\n");
 	for (i = 0; i < count; i++) {
-		if (hdr->flags & MFI_FRAME_SGL64) {
+		if (hdr->flags & MFI_FRAME_IEEE_SGL) {
+			printf("0x%lx:%06d ", (u_long)sgl->sg_skinny[i].addr,
+			    sgl->sg_skinny[i].len);
+			columns += 26;
+			if (columns > 77) {
+				printf("\n");
+				columns = 0;
+			}
+		} else if (hdr->flags & MFI_FRAME_SGL64) {
 			printf("0x%lx:%06d ", (u_long)sgl->sg64[i].addr,
 			    sgl->sg64[i].len);
 			columns += 26;
@@ -240,7 +249,12 @@ mfi_validate_sg(struct mfi_softc *sc, st
 	hdr = &cm->cm_frame->header;
 	count = 0;
 	for (i = 0; i < hdr->sg_count; i++) {
-		count += cm->cm_sg->sg32[i].len;
+		if (hdr->flags & MFI_FRAME_IEEE_SGL)
+			count += cm->cm_sg->sg_skinny[i].len;
+		else if (hdr->flags & MFI_FRAME_SGL64)
+			count += cm->cm_sg->sg64[i].len;
+		else
+			count += cm->cm_sg->sg32[i].len;
 	}
 	/*
 	count++;

From owner-svn-src-projects@FreeBSD.ORG  Thu Dec  8 05:24:26 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9C860106564A;
	Thu,  8 Dec 2011 05:24:26 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 82B5B8FC08;
	Thu,  8 Dec 2011 05:24:26 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB85OQcm071968;
	Thu, 8 Dec 2011 05:24:26 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB85OQ0Z071966;
	Thu, 8 Dec 2011 05:24:26 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112080524.pB85OQ0Z071966@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Thu, 8 Dec 2011 05:24:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228345 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Dec 2011 05:24:26 -0000

Author: linimon (doc,ports committer)
Date: Thu Dec  8 05:24:26 2011
New Revision: 228345
URL: http://svn.freebsd.org/changeset/base/228345

Log:
  When I laid out the svn dirs on pointyhat-west, I put in one more level
  of directories.  Update the expiry list to take this into account.
  
  While here, add debugging and verbosity.

Modified:
  projects/portbuild/scripts/zexpire

Modified: projects/portbuild/scripts/zexpire
==============================================================================
--- projects/portbuild/scripts/zexpire	Thu Dec  8 03:20:48 2011	(r228344)
+++ projects/portbuild/scripts/zexpire	Thu Dec  8 05:24:26 2011	(r228345)
@@ -8,23 +8,30 @@ sys.path.insert(0, '/var/portbuild/lib/p
 
 import zfs
 
+ENABLED	=	True
+VERBOSE=	True
+
 # List of filesystems to expire
 expirelist=(("a", 14), 
-            ("a/nfs", 14),
-            ("a/local", 14),
             ("a/portbuild", 14),
             ("a/portbuild/amd64", 14),
+            ("a/portbuild/arm", 14),
             ("a/portbuild/i386", 14),
             ("a/portbuild/ia64", 14),
             ("a/portbuild/powerpc", 14),
             ("a/portbuild/sparc64", 14),
+            ("a/portbuild/sun4v", 14),
             ("a/snap", 7),
-            ("a/snap/ports", 2),
+            ("a/snap/ports-head", 2),
+            ("a/snap/ports-head/ports", 2),
             ("a/snap/src-7", 2),
+            ("a/snap/src-7/src", 2),
             ("a/snap/src-8", 2),
+            ("a/snap/src-8/src", 2),
             ("a/snap/src-9", 2),
-            ("a/snap/world-amd64-HEAD", 7),
-            ("a/snap/world-i386-HEAD", 7))
+            ("a/snap/src-9/src", 2),
+            ("a/snap/src-10", 2),
+            ("a/snap/src-10/src", 2))
 
 now = datetime.datetime.now()
 print "zexpire: starting at " + now.ctime()
@@ -32,10 +39,15 @@ print "zexpire: starting at " + now.ctim
 for (fs, maxage) in expirelist:
     print
 
+    if VERBOSE:
+        print "fs: " + str(fs)
     try:
+        # XXX MCL 20111205 produces nothing!
         snapdata = zfs.getallsnaps(fs)
+        if VERBOSE:
+            print "snapdata: " + str(snapdata)
     except zfs.NoSuchFS:
-        print "no such fs %s, skipping" % fs
+        print "zexpire: no such fs %s, skipping" % fs
         continue
 
     snaps = (i[0] for i in snapdata)
@@ -50,12 +62,15 @@ for (fs, maxage) in expirelist:
                 print "zexpire: don't know what to do with snap `" + snap + "'"
                 continue
 
+        if VERBOSE:
+            print "zexpire: examining snapshot %s@%s" % (fs, snap)
         if (now - snapdate) > datetime.timedelta(days=maxage):
-            print "Snapshot %s@%s too old, attempting zfs destroy" % (fs, snap)
-            (err, out) = commands.getstatusoutput("zfs destroy %s@%s" % (fs,snap))
+            print "zexpire: snapshot %s@%s too old, attempting zfs destroy" % (fs, snap)
+            if ENABLED:
+                (err, out) = commands.getstatusoutput("zfs destroy %s@%s" % (fs,snap))
 
-            if err:
-                print "Error deleting snapshot", out
+                if err:
+                    print "zexpire: error deleting snapshot", out
 
 then = datetime.datetime.now()
 print

From owner-svn-src-projects@FreeBSD.ORG  Thu Dec  8 05:37:59 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4653C1065670;
	Thu,  8 Dec 2011 05:37:59 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 36C4E8FC0A;
	Thu,  8 Dec 2011 05:37:59 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB85bx1g072403;
	Thu, 8 Dec 2011 05:37:59 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB85bxMC072401;
	Thu, 8 Dec 2011 05:37:59 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112080537.pB85bxMC072401@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Thu, 8 Dec 2011 05:37:59 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228346 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Dec 2011 05:37:59 -0000

Author: linimon (doc,ports committer)
Date: Thu Dec  8 05:37:58 2011
New Revision: 228346
URL: http://svn.freebsd.org/changeset/base/228346

Log:
  Remove debug line.

Modified:
  projects/portbuild/scripts/zexpire

Modified: projects/portbuild/scripts/zexpire
==============================================================================
--- projects/portbuild/scripts/zexpire	Thu Dec  8 05:24:26 2011	(r228345)
+++ projects/portbuild/scripts/zexpire	Thu Dec  8 05:37:58 2011	(r228346)
@@ -42,7 +42,6 @@ for (fs, maxage) in expirelist:
     if VERBOSE:
         print "fs: " + str(fs)
     try:
-        # XXX MCL 20111205 produces nothing!
         snapdata = zfs.getallsnaps(fs)
         if VERBOSE:
             print "snapdata: " + str(snapdata)

From owner-svn-src-projects@FreeBSD.ORG  Thu Dec  8 15:28:36 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C6B15106566B;
	Thu,  8 Dec 2011 15:28:36 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B6C5A8FC15;
	Thu,  8 Dec 2011 15:28:36 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB8FSajq092352;
	Thu, 8 Dec 2011 15:28:36 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB8FSaMX092350;
	Thu, 8 Dec 2011 15:28:36 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112081528.pB8FSaMX092350@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Thu, 8 Dec 2011 15:28:36 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228352 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Dec 2011 15:28:36 -0000

Author: linimon (doc,ports committer)
Date: Thu Dec  8 15:28:36 2011
New Revision: 228352
URL: http://svn.freebsd.org/changeset/base/228352

Log:
  Robustness.

Modified:
  projects/portbuild/scripts/prunefailure

Modified: projects/portbuild/scripts/prunefailure
==============================================================================
--- projects/portbuild/scripts/prunefailure	Thu Dec  8 13:54:06 2011	(r228351)
+++ projects/portbuild/scripts/prunefailure	Thu Dec  8 15:28:36 2011	(r228352)
@@ -47,8 +47,13 @@ cd $home
 pkgdir=${builddir}/packages/All
 index=${PORTSDIR}/${INDEXFILE}
 
+if [ ! -f $index ]; then
+    echo "INDEX file $index does not exist, terminating!"
+    exit 1
+fi
+
 if [ "`wc -l $index | awk '{print $1}'`" -lt 9000 ]; then
-    echo "INDEX is corrupted, terminating!"
+    echo "INDEX file $index is corrupted, terminating!"
     exit 1
 fi
 

From owner-svn-src-projects@FreeBSD.ORG  Fri Dec  9 04:51:40 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8523E106566B;
	Fri,  9 Dec 2011 04:51:40 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 757D58FC0C;
	Fri,  9 Dec 2011 04:51:40 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB94peoh017307;
	Fri, 9 Dec 2011 04:51:40 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB94peKM017305;
	Fri, 9 Dec 2011 04:51:40 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112090451.pB94peKM017305@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Fri, 9 Dec 2011 04:51:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228357 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Dec 2011 04:51:40 -0000

Author: linimon (doc,ports committer)
Date: Fri Dec  9 04:51:40 2011
New Revision: 228357
URL: http://svn.freebsd.org/changeset/base/228357

Log:
  Fix [B] indication on index.html.  Has probably been broken for years.

Modified:
  projects/portbuild/scripts/processlogs

Modified: projects/portbuild/scripts/processlogs
==============================================================================
--- projects/portbuild/scripts/processlogs	Fri Dec  9 02:30:56 2011	(r228356)
+++ projects/portbuild/scripts/processlogs	Fri Dec  9 04:51:40 2011	(r228357)
@@ -182,7 +182,7 @@ sort .logs/.all | while read line; do
     echo "<td>$mailto</td>" >> $of
     echo "<td>" >> $of
 
-    test "$9" = "yes" && echo "<font color=\"red\">[B]</font>" >> $of
+    test "$9" = "broken" && echo "<font color=\"red\">[B]</font>" >> $of
     reason="$7"
     echo "<a href=\"http://${MASTER_URL}/#$8\">$reason</a>" >> $of
     echo "</td>" >> $of

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 00:04:08 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A9B1C106564A;
	Sat, 10 Dec 2011 00:04:08 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 80C278FC12;
	Sat, 10 Dec 2011 00:04:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA048i8055544;
	Sat, 10 Dec 2011 00:04:08 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA048Mw055543;
	Sat, 10 Dec 2011 00:04:08 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112100004.pBA048Mw055543@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 00:04:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228382 - projects/nfsv4.1-client
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 00:04:08 -0000

Author: rmacklem
Date: Sat Dec 10 00:04:08 2011
New Revision: 228382
URL: http://svn.freebsd.org/changeset/base/228382

Log:
  Set up a projects branch for NFSv4.1 client enhancements to NFS.

Added:
  projects/nfsv4.1-client/
     - copied from r228381, head/sys/
Directory Properties:
  projects/nfsv4.1-client/sys/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 02:06:11 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9F8BA1065673;
	Sat, 10 Dec 2011 02:06:11 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 8E0098FC08;
	Sat, 10 Dec 2011 02:06:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA26BDf059424;
	Sat, 10 Dec 2011 02:06:11 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA26Bhh059411;
	Sat, 10 Dec 2011 02:06:11 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112100206.pBA26Bhh059411@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 02:06:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228385 - in projects/nfsv4.1-client/sys/fs: nfs
	nfsclient
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 02:06:11 -0000

Author: rmacklem
Date: Sat Dec 10 02:06:11 2011
New Revision: 228385
URL: http://svn.freebsd.org/changeset/base/228385

Log:
  Add the NFS client changes for a basic NFSv4.1 client. This
  includes support for sessions for both fore and back channels,
  creation of a ClientID the NFSv4.1 way and code that avoids
  using NFSv4.0 operations defined as "mandatory to not implement"
  for NFSv4.1. It includes handling of NFSv4.1 callbacks via
  a callback session. It does not include the new NFSv4.1 optional
  features like pNFS, but does allow the client to work with an
  NFSv4.1 server and creates the base on which pNFS can be implemented.
  The new operations are not counted in the nfsstats structure,
  since it needs to remain the same size, so that the nfsstats
  command will still work. It adds a new mount option called
  "minvers" which can be used to specify an NFSv4.1 mount.
  For example: "mount -t nfs -o nfsv4,minvers=1 <server>:/ /<path>
  Changes to sys/rpc are required before this will build/work.

Modified:
  projects/nfsv4.1-client/sys/fs/nfs/nfs.h
  projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c
  projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c
  projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h
  projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h
  projects/nfsv4.1-client/sys/fs/nfs/nfsport.h
  projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clvfsops.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfsmount.h

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfs.h	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfs.h	Sat Dec 10 02:06:11 2011	(r228385)
@@ -50,6 +50,7 @@
 #define	NFS_MAXREXMIT	100		/* Stop counting after this many */
 #define	NFSV4_CALLBACKTIMEO (2 * NFS_HZ) /* Timeout in ticks */
 #define	NFSV4_CALLBACKRETRY 5		/* Number of retries before failure */
+#define	NFSV4_CBSLOTS	8		/* Number of slots for session */
 #define	NFSV4_CBRETRYCNT 4		/* # of CBRecall retries upon err */
 #define	NFSV4_UPCALLTIMEO (15 * NFS_HZ)	/* Timeout in ticks for upcalls */
 					/* to gssd or nfsuserd */
@@ -529,6 +530,7 @@ struct nfsrv_descript {
 	nfsquad_t		nd_clientid;	/* Implied clientid */
 	int			nd_gssnamelen;	/* principal name length */
 	char			*nd_gssname;	/* principal name */
+	uint32_t		*nd_slotseq;	/* ptr to slot seq# in req */
 };
 
 #define	nd_princlen	nd_gssnamelen
@@ -559,6 +561,8 @@ struct nfsrv_descript {
 #define	ND_EXGSSINTEGRITY	0x00200000
 #define	ND_EXGSSPRIVACY		0x00400000
 #define	ND_INCRSEQID		0x00800000
+#define	ND_NFSV41		0x01000000
+#define	ND_HASSEQUENCE		0x02000000
 
 /*
  * ND_GSS should be the "or" of all GSS type authentications.
@@ -571,6 +575,7 @@ struct nfsv4_opflag {
 	int	savereply;
 	int	modifyfs;
 	int	lktype;
+	int	needsseq;
 };
 
 /*
@@ -644,6 +649,15 @@ struct nfsv4lock {
 #define	NFSACCCHK_VPNOTLOCKED		0
 #define	NFSACCCHK_VPISLOCKED		1
 
+/*
+ * Slot for the NFSv4.1 Sequence Op.
+ */
+struct nfsslot {
+	int		nfssl_inprog;
+	uint32_t	nfssl_seq;
+	struct mbuf	*nfssl_reply;
+};
+
 #endif	/* _KERNEL */
 
 #endif	/* _NFS_NFS_H */

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfs_commonkrpc.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -77,23 +77,26 @@ dtrace_nfsclient_nfs23_done_probe_func_t
 /*
  * Registered probes by RPC type.
  */
-uint32_t	nfscl_nfs2_start_probes[NFS_NPROCS + 1];
-uint32_t	nfscl_nfs2_done_probes[NFS_NPROCS + 1];
+uint32_t	nfscl_nfs2_start_probes[NFSV41_NPROCS + 1];
+uint32_t	nfscl_nfs2_done_probes[NFSV41_NPROCS + 1];
 
-uint32_t	nfscl_nfs3_start_probes[NFS_NPROCS + 1];
-uint32_t	nfscl_nfs3_done_probes[NFS_NPROCS + 1];
+uint32_t	nfscl_nfs3_start_probes[NFSV41_NPROCS + 1];
+uint32_t	nfscl_nfs3_done_probes[NFSV41_NPROCS + 1];
 
-uint32_t	nfscl_nfs4_start_probes[NFS_NPROCS + 1];
-uint32_t	nfscl_nfs4_done_probes[NFS_NPROCS + 1];
+uint32_t	nfscl_nfs4_start_probes[NFSV41_NPROCS + 1];
+uint32_t	nfscl_nfs4_done_probes[NFSV41_NPROCS + 1];
 #endif
 
 NFSSTATESPINLOCK;
 NFSREQSPINLOCK;
+NFSDLOCKMUTEX;
 extern struct nfsstats newnfsstats;
 extern struct nfsreqhead nfsd_reqq;
 extern int nfscl_ticks;
 extern void (*ncl_call_invalcaches)(struct vnode *);
+extern int nfs_numnfscbd;
 
+SVCPOOL		*nfscbd_pool;
 static int	nfsrv_gsscallbackson = 0;
 static int	nfs_bufpackets = 4;
 static int	nfs_reconnects;
@@ -168,6 +171,7 @@ newnfs_connect(struct nfsmount *nmp, str
 	struct socket *so;
 	int one = 1, retries, error = 0;
 	struct thread *td = curthread;
+	SVCXPRT *xprt;
 
 	/*
 	 * We need to establish the socket using the credentials of
@@ -268,6 +272,24 @@ newnfs_connect(struct nfsmount *nmp, str
 			retries = nmp->nm_retry;
 		else
 			retries = INT_MAX;
+		if (NFSHASNFSV4N(nmp)) {
+			/*
+			 * Make sure the nfscbd_pool doesn't get destroyed
+			 * while doing this.
+			 */
+			NFSD_LOCK();
+			if (nfs_numnfscbd > 0) {
+				nfs_numnfscbd++;
+				NFSD_UNLOCK();
+				xprt = svc_vc_create_backchannel(nfscbd_pool);
+				CLNT_CONTROL(client, CLSET_BACKCHANNEL, xprt);
+				NFSD_LOCK();
+				nfs_numnfscbd--;
+				if (nfs_numnfscbd == 0)
+					wakeup(&nfs_numnfscbd);
+			}
+			NFSD_UNLOCK();
+		}
 	} else {
 		/*
 		 * Three cases:
@@ -440,9 +462,9 @@ newnfs_request(struct nfsrv_descript *nd
     struct thread *td, struct ucred *cred, u_int32_t prog, u_int32_t vers,
     u_char *retsum, int toplevel, u_int64_t *xidp)
 {
-	u_int32_t *tl;
+	u_int32_t retseq, retval, *tl;
 	time_t waituntil;
-	int i, j, set_uid = 0, set_sigset = 0;
+	int i = 0, j = 0, opcnt, set_uid = 0, set_sigset = 0, slot, freeslot;
 	int trycnt, error = 0, usegssname = 0, secflavour = AUTH_SYS;
 	u_int16_t procnum;
 	u_int trylater_delay = 1;
@@ -627,7 +649,9 @@ newnfs_request(struct nfsrv_descript *nd
 #endif
 	}
 	trycnt = 0;
+	freeslot = -1;		/* Set to slot that needs to be free'd */
 tryagain:
+	slot = -1;		/* Slot that needs a sequence# increment. */
 	if (nmp == NULL) {
 		timo.tv_usec = 0;
 		if (clp == NULL)
@@ -714,6 +738,81 @@ tryagain:
 		 */
 		NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED);
 		nd->nd_repstat = fxdr_unsigned(u_int32_t, *tl);
+if (nd->nd_repstat >= 10000) printf("proc=%d reps=%d\n",nd->nd_procnum,nd->nd_repstat);
+
+		/*
+		 * Get rid of the tag, return count and SEQUENCE result for
+		 * NFSv4.
+		 */
+		if ((nd->nd_flag & ND_NFSV4) != 0) {
+			NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED);
+			i = fxdr_unsigned(int, *tl);
+			error = nfsm_advance(nd, NFSM_RNDUP(i), -1);
+			if (error)
+				goto nfsmout;
+			NFSM_DISSECT(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
+			opcnt = fxdr_unsigned(int, *tl++);
+			i = fxdr_unsigned(int, *tl++);
+			j = fxdr_unsigned(int, *tl);
+if (j >= 10000) printf("fop=%d fst=%d\n",i,j);
+			/*
+			 * If the first op is Sequence, free up the slot.
+			 */
+if (nmp != NULL && i == NFSV4OP_SEQUENCE && j != 0) printf("failed seq=%d\n", j);
+			if (nmp != NULL && i == NFSV4OP_SEQUENCE && j == 0) {
+				NFSM_DISSECT(tl, uint32_t *, NFSX_V4SESSIONID +
+				    5 * NFSX_UNSIGNED);
+				NFSLOCKMNT(nmp);
+				tl += NFSX_V4SESSIONID / NFSX_UNSIGNED;
+				retseq = fxdr_unsigned(uint32_t, *tl++);
+				slot = fxdr_unsigned(int, *tl++);
+				freeslot = slot;
+				if (retseq != nmp->nm_slotseq[slot])
+					printf("retseq diff 0x%x\n", retseq);
+				retval = fxdr_unsigned(uint32_t, *++tl);
+#ifdef notyet
+				if ((retval + 1) < nmp->nm_foreslots)
+					nmp->nm_foreslots = (retval + 1);
+				else if ((retval + 1) > nmp->nm_foreslots)
+					nmp->nm_foreslots = (retval < 64) ?
+					    (retval + 1) : 64;
+#else
+				/*
+				 * There seems to be some confusion with
+				 * respect to whether this value is the
+				 * largest slot number to be used, numbered
+				 * 0<->N-1 or the size of the slot table.
+				 * In other words, is it N or N-1?
+				 * For now, play it safe and assume the
+				 * worst cases of the above, such that
+				 * nm_foreslots might be one less than the
+				 * server specified. This is safe, whereas
+				 * setting nm_foreslots one greater than
+				 * the server intended could cause grief.
+				 */
+				if (retval < nmp->nm_foreslots)
+{
+printf("foreslots shrinking %d\n", retval);
+					nmp->nm_foreslots = retval;
+}
+				else if (retval > nmp->nm_foreslots)
+{
+printf("foreslots growing %d\n", retval);
+					nmp->nm_foreslots = (retval < 64) ?
+					    retval : 64;
+}
+#endif	/* notyet */
+				NFSUNLOCKMNT(nmp);
+
+				/* Grab the op and status for the next one. */
+				if (opcnt > 1) {
+					NFSM_DISSECT(tl, uint32_t *,
+					    2 * NFSX_UNSIGNED);
+					i = fxdr_unsigned(int, *tl++);
+					j = fxdr_unsigned(int, *tl);
+				}
+			}
+		}
 		if (nd->nd_repstat != 0) {
 			if (((nd->nd_repstat == NFSERR_DELAY ||
 			      nd->nd_repstat == NFSERR_GRACE) &&
@@ -738,6 +837,13 @@ tryagain:
 				while (NFSD_MONOSEC < waituntil)
 					(void) nfs_catnap(PZERO, 0, "nfstry");
 				trylater_delay *= 2;
+				if (slot != -1) {
+					NFSLOCKMNT(nmp);
+					nmp->nm_slotseq[slot]++;
+					*nd->nd_slotseq = txdr_unsigned(
+					    nmp->nm_slotseq[slot]);
+					NFSUNLOCKMNT(nmp);
+				}
 				m_freem(nd->nd_mrep);
 				nd->nd_mrep = NULL;
 				goto tryagain;
@@ -754,34 +860,19 @@ tryagain:
 					(*ncl_call_invalcaches)(vp);
 			}
 		}
-
-		/*
-		 * Get rid of the tag, return count, and PUTFH result for V4.
-		 */
-		if (nd->nd_flag & ND_NFSV4) {
-			NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED);
-			i = fxdr_unsigned(int, *tl);
-			error = nfsm_advance(nd, NFSM_RNDUP(i), -1);
-			if (error)
-				goto nfsmout;
-			NFSM_DISSECT(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
-			i = fxdr_unsigned(int, *++tl);
-
-			/*
-			 * If the first op's status is non-zero, mark that
-			 * there is no more data to process.
-			 */
-			if (*++tl)
-				nd->nd_flag |= ND_NOMOREDATA;
-
+		if ((nd->nd_flag & ND_NFSV4) != 0) {
+			/* Free the slot, as required. */
+			if (freeslot != -1)
+				nfscl_freeslot(nmp, freeslot);
 			/*
-			 * If the first op is Putfh, throw its results away
-			 * and toss the op# and status for the first op.
+			 * If this op is Putfh, throw its results away.
 			 */
-			if (nmp != NULL && i == NFSV4OP_PUTFH && *tl == 0) {
+if (j >= 10000) printf("nop=%d nst=%d\n",i,j);
+			if (nmp != NULL && i == NFSV4OP_PUTFH && j == 0) {
 				NFSM_DISSECT(tl,u_int32_t *,2 * NFSX_UNSIGNED);
 				i = fxdr_unsigned(int, *tl++);
 				j = fxdr_unsigned(int, *tl);
+if (j >= 10000) printf("n2op=%d n2st=%d\n",i,j);
 				/*
 				 * All Compounds that do an Op that must
 				 * be in sequence consist of NFSV4OP_PUTFH
@@ -804,13 +895,13 @@ tryagain:
 				      j != NFSERR_RESOURCE &&
 				      j != NFSERR_NOFILEHANDLE)))		 
 					nd->nd_flag |= ND_INCRSEQID;
-				/*
-				 * If the first op's status is non-zero, mark
-				 * that there is no more data to process.
-				 */
-				if (j)
-					nd->nd_flag |= ND_NOMOREDATA;
 			}
+			/*
+			 * If this op's status is non-zero, mark
+			 * that there is no more data to process.
+			 */
+			if (j)
+				nd->nd_flag |= ND_NOMOREDATA;
 
 			/*
 			 * If R_DONTRECOVER is set, replace the stale error

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfs_commonsubs.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -83,47 +83,66 @@ NFSSOCKMUTEX;
  * non-idempotent Ops.
  * Define it here, since it is used by both the client and server.
  */
-struct nfsv4_opflag nfsv4_opflag[NFSV4OP_NOPS] = {
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* undef */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* undef */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* undef */
-	{ 0, 1, 0, 0, LK_SHARED },		/* Access */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* Close */
-	{ 0, 2, 0, 1, LK_EXCLUSIVE },		/* Commit */
-	{ 1, 2, 1, 1, LK_EXCLUSIVE },		/* Create */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* Delegpurge */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* Delegreturn */
-	{ 0, 1, 0, 0, LK_SHARED },		/* Getattr */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* GetFH */
-	{ 2, 1, 1, 1, LK_EXCLUSIVE },		/* Link */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* Lock */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* LockT */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* LockU */
-	{ 1, 1, 0, 0, LK_EXCLUSIVE },		/* Lookup */
-	{ 1, 1, 0, 0, LK_EXCLUSIVE },		/* Lookupp */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* NVerify */
-	{ 1, 1, 0, 1, LK_EXCLUSIVE },		/* Open */
-	{ 1, 1, 0, 0, LK_EXCLUSIVE },		/* OpenAttr */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* OpenConfirm */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* OpenDowngrade */
-	{ 1, 0, 0, 0, LK_EXCLUSIVE },		/* PutFH */
-	{ 1, 0, 0, 0, LK_EXCLUSIVE },		/* PutPubFH */
-	{ 1, 0, 0, 0, LK_EXCLUSIVE },		/* PutRootFH */
-	{ 0, 1, 0, 0, LK_SHARED },		/* Read */
-	{ 0, 1, 0, 0, LK_SHARED },		/* Readdir */
-	{ 0, 1, 0, 0, LK_SHARED },		/* ReadLink */
-	{ 0, 2, 1, 1, LK_EXCLUSIVE },		/* Remove */
-	{ 2, 1, 1, 1, LK_EXCLUSIVE },		/* Rename */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* Renew */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* RestoreFH */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* SaveFH */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* SecInfo */
-	{ 0, 2, 1, 1, LK_EXCLUSIVE },		/* Setattr */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* SetClientID */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* SetClientIDConfirm */
-	{ 0, 1, 0, 0, LK_EXCLUSIVE },		/* Verify */
-	{ 0, 2, 1, 1, LK_EXCLUSIVE },		/* Write */
-	{ 0, 0, 0, 0, LK_EXCLUSIVE },		/* ReleaseLockOwner */
+struct nfsv4_opflag nfsv4_opflag[NFSV41_NOPS] = {
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* undef */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* undef */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* undef */
+	{ 0, 1, 0, 0, LK_SHARED, 1 },			/* Access */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Close */
+	{ 0, 2, 0, 1, LK_EXCLUSIVE, 1 },		/* Commit */
+	{ 1, 2, 1, 1, LK_EXCLUSIVE, 1 },		/* Create */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Delegpurge */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Delegreturn */
+	{ 0, 1, 0, 0, LK_SHARED, 1 },			/* Getattr */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* GetFH */
+	{ 2, 1, 1, 1, LK_EXCLUSIVE, 1 },		/* Link */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Lock */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* LockT */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* LockU */
+	{ 1, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Lookup */
+	{ 1, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Lookupp */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* NVerify */
+	{ 1, 1, 0, 1, LK_EXCLUSIVE, 1 },		/* Open */
+	{ 1, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* OpenAttr */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* OpenConfirm */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* OpenDowngrade */
+	{ 1, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* PutFH */
+	{ 1, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* PutPubFH */
+	{ 1, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* PutRootFH */
+	{ 0, 1, 0, 0, LK_SHARED, 1 },			/* Read */
+	{ 0, 1, 0, 0, LK_SHARED, 1 },			/* Readdir */
+	{ 0, 1, 0, 0, LK_SHARED, 1 },			/* ReadLink */
+	{ 0, 2, 1, 1, LK_EXCLUSIVE, 1 },		/* Remove */
+	{ 2, 1, 1, 1, LK_EXCLUSIVE, 1 },		/* Rename */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Renew */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* RestoreFH */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* SaveFH */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* SecInfo */
+	{ 0, 2, 1, 1, LK_EXCLUSIVE, 1 },		/* Setattr */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* SetClientID */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* SetClientIDConfirm */
+	{ 0, 1, 0, 0, LK_EXCLUSIVE, 1 },		/* Verify */
+	{ 0, 2, 1, 1, LK_EXCLUSIVE, 1 },		/* Write */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* ReleaseLockOwner */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Backchannel Ctrl */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Bind Conn to Sess */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 0 },		/* Exchange ID */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 0 },		/* Create Session */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 0 },		/* Destroy Session */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Free StateID */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Get Dir Deleg */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Get Device Info */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Get Device List */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Layout Commit */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Layout Get */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Layout Return */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Secinfo No name */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Sequence */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Set SSV */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Test StateID */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Want Delegation */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 0 },		/* Destroy ClientID */
+	{ 0, 0, 0, 0, LK_EXCLUSIVE, 1 },		/* Reclaim Complete */
 };
 #endif	/* !APPLEKEXT */
 
@@ -145,9 +164,9 @@ static struct nfsuserlruhead nfsuserlruh
  * marked 0 in this array, the code will still work, just not quite as
  * efficiently.)
  */
-static int nfs_bigreply[NFS_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0,
+int nfs_bigreply[NFSV41_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0 };
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
 /* local functions */
 static int nfsrv_skipace(struct nfsrv_descript *nd, int *acesizep);
@@ -1855,7 +1874,7 @@ nfsv4_getref(struct nfsv4lock *lp, int *
 		if (isleptp)
 			*isleptp = 1;
 		(void) nfsmsleep(&lp->nfslock_lock, mutex,
-		    PZERO - 1, "nfsv4lck", NULL);
+		    PZERO - 1, "nfsv4gr", NULL);
 	}
 	if (mp != NULL && (mp->mnt_kern_flag & MNTK_UNMOUNTF) != 0)
 		return;
@@ -3478,3 +3497,47 @@ newnfs_sndunlock(int *flagp)
 	NFSUNLOCKSOCK();
 }
 
+/*
+ * Handle an NFSv4.1 Sequence request for the session.
+ */
+int
+nfsv4_seqsession(uint32_t seqid, uint32_t slotid, uint32_t highslot,
+    struct nfsslot *slots, struct mbuf **reply, uint16_t maxslot)
+{
+	int error;
+
+	error = 0;
+	*reply = NULL;
+	if (slotid > maxslot)
+		return (NFSERR_BADSLOT);
+	if (seqid == slots[slotid].nfssl_seq) {
+		/* A retry. */
+		if (slots[slotid].nfssl_inprog != 0)
+			error = NFSERR_DELAY;
+		else if (slots[slotid].nfssl_reply != NULL) {
+			*reply = slots[slotid].nfssl_reply;
+			slots[slotid].nfssl_reply = NULL;
+			slots[slotid].nfssl_inprog = 1;
+		} else
+			error = NFSERR_SEQMISORDERED;
+	} else if ((slots[slotid].nfssl_seq + 1) == seqid) {
+		m_freem(slots[slotid].nfssl_reply);
+		slots[slotid].nfssl_reply = NULL;
+		slots[slotid].nfssl_inprog = 1;
+		slots[slotid].nfssl_seq++;
+	} else
+		error = NFSERR_SEQMISORDERED;
+	return (error);
+}
+
+/*
+ * Cache this reply for the slot.
+ */
+void
+nfsv4_seqsess_cacherep(uint32_t slotid, struct nfsslot *slots, struct mbuf *rep)
+{
+
+	slots[slotid].nfssl_reply = rep;
+	slots[slotid].nfssl_inprog = 0;
+}
+

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfs_var.h	Sat Dec 10 02:06:11 2011	(r228385)
@@ -257,6 +257,9 @@ int nfsrv_mtostr(struct nfsrv_descript *
 int nfsrv_checkutf8(u_int8_t *, int);
 int newnfs_sndlock(int *);
 void newnfs_sndunlock(int *);
+int nfsv4_seqsession(uint32_t, uint32_t, uint32_t, struct nfsslot *,
+    struct mbuf **, uint16_t);
+void nfsv4_seqsess_cacherep(uint32_t, struct nfsslot *, struct mbuf *);
 
 /* nfs_clcomsubs.c */
 void nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int);
@@ -362,7 +365,7 @@ int nfsrpc_setclient(struct nfsmount *, 
 int nfsrpc_getattr(vnode_t, struct ucred *, NFSPROC_T *,
     struct nfsvattr *, void *);
 int nfsrpc_getattrnovp(struct nfsmount *, u_int8_t *, int, int,
-    struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *);
+    struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *, uint32_t *);
 int nfsrpc_setattr(vnode_t, struct vattr *, NFSACL_T *, struct ucred *,
     NFSPROC_T *, struct nfsvattr *, int *, void *);
 int nfsrpc_lookup(vnode_t, char *, int, struct ucred *, NFSPROC_T *,
@@ -426,6 +429,14 @@ int nfsrpc_delegreturn(struct nfscldeleg
     struct nfsmount *, NFSPROC_T *, int);
 int nfsrpc_getacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *, void *);
 int nfsrpc_setacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *, void *);
+int nfsrpc_exchangeid(struct nfsmount *, struct nfsclclient *,
+    struct ucred *, NFSPROC_T *);
+int nfsrpc_createsession(struct nfsmount *, struct nfsclclient *,
+    struct ucred *, NFSPROC_T *);
+int nfsrpc_destroysession(struct nfsmount *, struct nfsclclient *,
+    struct ucred *, NFSPROC_T *);
+int nfsrpc_destroyclient(struct nfsmount *, struct nfsclclient *,
+    struct ucred *, NFSPROC_T *);
 
 /* nfs_clstate.c */
 int nfscl_open(vnode_t, u_int8_t *, int, u_int32_t, int,
@@ -435,7 +446,7 @@ int nfscl_getstateid(vnode_t, u_int8_t *
     NFSPROC_T *, nfsv4stateid_t *, void **);
 void nfscl_ownerrelease(struct nfsclowner *, int, int, int);
 void nfscl_openrelease(struct nfsclopen *, int, int);
-int nfscl_getcl(vnode_t, struct ucred *, NFSPROC_T *,
+int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, int,
     struct nfsclclient **);
 struct nfsclclient *nfscl_findcl(struct nfsmount *);
 void nfscl_clientrelease(struct nfsclclient *);
@@ -487,6 +498,8 @@ void nfscl_deleggetmodtime(vnode_t, stru
 int nfscl_tryclose(struct nfsclopen *, struct ucred *,
     struct nfsmount *, NFSPROC_T *);
 void nfscl_cleanup(NFSPROC_T *);
+void nfscl_setsequence(struct nfsrv_descript *, struct nfsmount *, int);
+void nfscl_freeslot(struct nfsmount *, int);
 
 /* nfs_clport.c */
 int nfscl_nget(mount_t, vnode_t, struct nfsfh *,

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h	Sat Dec 10 02:06:11 2011	(r228385)
@@ -50,6 +50,8 @@ struct nfsclclient {
 	struct nfscldeleghead	nfsc_deleg;
 	struct nfscldeleghash	nfsc_deleghash[NFSCLDELEGHASHSIZE];
 	struct nfsv4lock nfsc_lock;
+	struct	nfsslot nfsc_cbslots[NFSV4_CBSLOTS]; /* NFSv4.1 cb slot table */
+	uint8_t	nfsc_sessionid[NFSX_V4SESSIONID]; /* NFSv4.1 session id */
 	struct proc	*nfsc_renewthread;
 	struct nfsmount	*nfsc_nmp;
 	nfsquad_t	nfsc_clientid;
@@ -58,6 +60,7 @@ struct nfsclclient {
 	u_int32_t	nfsc_renew;
 	u_int32_t	nfsc_cbident;
 	u_int16_t	nfsc_flags;
+	u_int16_t	nfsc_backslots;	/* Number of back channel slots. */
 	u_int16_t	nfsc_idlen;
 	u_int8_t	nfsc_id[1];	/* Malloc'd to correct length */
 };

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsport.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfsport.h	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfsport.h	Sat Dec 10 02:06:11 2011	(r228385)
@@ -229,6 +229,34 @@
  */
 #define	NFSV4OP_NOPS		40
 
+/*
+ * Additional Ops for NFSv4.1.
+ */
+#define	NFSV4OP_BACKCHANNELCTL	40
+#define	NFSV4OP_BINDCONNTOSESS	41
+#define	NFSV4OP_EXCHANGEID	42
+#define	NFSV4OP_CREATESESSION	43
+#define	NFSV4OP_DESTROYSESSION	44
+#define	NFSV4OP_FREESTATEID	45
+#define	NFSV4OP_GETDIRDELEG	46
+#define	NFSV4OP_GETDEVINFO	47
+#define	NFSV4OP_GETDEVLIST	48
+#define	NFSV4OP_LAYOUTCOMMIT	49
+#define	NFSV4OP_LAYOUTGET	50
+#define	NFSV4OP_LAYOUTRETURN	51
+#define	NFSV4OP_SECINFONONAME	52
+#define	NFSV4OP_SEQUENCE	53
+#define	NFSV4OP_SETSSV		54
+#define	NFSV4OP_TESTSTATEID	55
+#define	NFSV4OP_WANTDELEG	56
+#define	NFSV4OP_DESTROYCLIENTID	57
+#define	NFSV4OP_RECLAIMCOMPL	58
+
+/*
+ * Must be one more than last op#.
+ */
+#define	NFSV41_NOPS		59
+
 /* Quirky case if the illegal op code */
 #define	NFSV4OP_OPILLEGAL	10044
 
@@ -262,6 +290,20 @@
 #define	NFSV4OP_CBNOPS		5
 
 /*
+ * Additional Callback Ops for NFSv4.1 only. Not yet in nfsstats.
+ */
+#define	NFSV4OP_CBLAYOUTRECALL	5
+#define	NFSV4OP_CBNOTIFY	6
+#define	NFSV4OP_CBPUSHDELEG	7
+#define	NFSV4OP_CBRECALLANY	8
+#define	NFSV4OP_CBRECALLOBJAVAIL 9
+#define	NFSV4OP_CBRECALLSLOT	10
+#define	NFSV4OP_CBSEQUENCE	11
+#define	NFSV4OP_CBWANTCANCELLED	12
+#define	NFSV4OP_CBNOTIFYLOCK	13
+#define	NFSV4OP_CBNOTIFYDEVID	14
+
+/*
  * The lower numbers -> 21 are used by NFSv2 and v3. These define higher
  * numbers used by NFSv4.
  * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is
@@ -294,6 +336,19 @@
  * Must be defined as one higher than the last Proc# above.
  */
 #define	NFSV4_NPROCS		41
+
+/* Additional procedures for NFSv4.1. */
+#define	NFSPROC_EXCHANGEID	41
+#define	NFSPROC_CREATESESSION	42
+#define	NFSPROC_DESTROYSESSION	43
+#define	NFSPROC_DESTROYCLIENT	44
+#define	NFSPROC_FREESTATEID	45
+
+/*
+ * Must be defined as one higher than the last NFSv4.1 Proc# above.
+ */
+#define	NFSV41_NPROCS		46
+
 #endif	/* NFS_V3NPROCS */
 
 /*
@@ -766,6 +821,7 @@ void newnfs_realign(struct mbuf **);
 
 #define	NFSHASNFSV3(n)		((n)->nm_flag & NFSMNT_NFSV3)
 #define	NFSHASNFSV4(n)		((n)->nm_flag & NFSMNT_NFSV4)
+#define	NFSHASNFSV4N(n)		((n)->nm_minorvers > 0)
 #define	NFSHASNFSV3OR4(n)	((n)->nm_flag & (NFSMNT_NFSV3 | NFSMNT_NFSV4))
 #define	NFSHASGOTFSINFO(n)	((n)->nm_state & NFSSTA_GOTFSINFO)
 #define	NFSHASHASSETFSID(n)	((n)->nm_state & NFSSTA_HASSETFSID)

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfsproto.h	Sat Dec 10 02:06:11 2011	(r228385)
@@ -62,7 +62,9 @@
 #define	NFS_MINPACKET	20
 #define	NFS_FABLKSIZE	512	/* Size in bytes of a block wrt fa_blocks */
 #define	NFSV4_MINORVERSION	0	/* V4 Minor version */
+#define	NFSV41_MINORVERSION	1	/* V4 Minor version */
 #define	NFSV4_CBVERS		1	/* V4 CB Version */
+#define	NFSV41_CBVERS		4	/* V4.1 CB Version */
 #define	NFSV4_SMALLSTR	50		/* Strings small enough for stack */
 
 /* Stat numbers for rpc returns (version 2, 3 and 4) */
@@ -145,6 +147,12 @@
 #define	NFSERR_ADMINREVOKED	10047
 #define	NFSERR_CBPATHDOWN	10048
 
+/* NFSv4.1 specific errors. */
+#define	NFSERR_BADSLOT		10053
+#define	NFSERR_SEQMISORDERED	10063
+#define	NFSERR_SEQUENCEPOS	10064
+#define	NFSERR_OPNOTINSESS	10071
+
 #define	NFSERR_STALEWRITEVERF	30001	/* Fake return for nfs_commit() */
 #define	NFSERR_DONTREPLY	30003	/* Don't process request */
 #define	NFSERR_RETVOID		30004	/* Return void, not error */
@@ -189,6 +197,7 @@
 #define	NFSX_V4SPECDATA		(2 * NFSX_UNSIGNED)
 #define	NFSX_V4TIME		(NFSX_HYPER + NFSX_UNSIGNED)
 #define	NFSX_V4SETTIME		(NFSX_UNSIGNED + NFSX_V4TIME)
+#define	NFSX_V4SESSIONID	16
 
 /* sizes common to multiple NFS versions */
 #define	NFSX_FHMAX		(NFSX_V4FHMAX)
@@ -258,6 +267,19 @@
  * Must be defined as one higher than the last Proc# above.
  */
 #define	NFSV4_NPROCS		41
+
+/* Additional procedures for NFSv4.1. */
+#define	NFSPROC_EXCHANGEID	41
+#define	NFSPROC_CREATESESSION	42
+#define	NFSPROC_DESTROYSESSION	43
+#define	NFSPROC_DESTROYCLIENT	44
+#define	NFSPROC_FREESTATEID	45
+
+/*
+ * Must be defined as one higher than the last NFSv4.1 Proc# above.
+ */
+#define	NFSV41_NPROCS		46
+
 #endif	/* NFS_V3NPROCS */
 
 /*
@@ -269,10 +291,10 @@
 
 /*
  * NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure
- * or Operation#. Since the NFS V4 Op #s go higher, use NFSV4OP_NOPS, which
+ * or Operation#. Since the NFS V4 Op #s go higher, use NFSV41_NOPS, which
  * is one greater than the highest Op#.
  */
-#define	NFSPROC_NOOP		NFSV4OP_NOPS
+#define	NFSPROC_NOOP		NFSV41_NOPS
 
 /* Actual Version 2 procedure numbers */
 #define	NFSV2PROC_NULL		0
@@ -468,6 +490,42 @@
 #define	NFSV3FSINFO_HOMOGENEOUS		0x08
 #define	NFSV3FSINFO_CANSETTIME		0x10
 
+/* Flags for Exchange ID */
+#define	NFSV4EXCH_SUPPMOVEDREFER	0x00000001
+#define	NFSV4EXCH_SUPPMOVEDMIGR	0x00000002
+#define	NFSV4EXCH_BINDPRINCSTATEID	0x00000100
+#define	NFSV4EXCH_USENONPNFS		0x00010000
+#define	NFSV4EXCH_USEPNFSMDS		0x00020000
+#define	NFSV4EXCH_USEPNFSDS		0x00040000
+#define	NFSV4EXCH_MASKPNFS		0x00070000
+#define	NFSV4EXCH_UPDCONFIRMEDRECA	0x40000000
+#define	NFSV4EXCH_CONFIRMEDR		0x80000000
+
+/* State Protects */
+#define	NFSV4EXCH_SP4NONE		0
+#define	NFSV4EXCH_SP4MACHCRED		1
+#define	NFSV4EXCH_SP4SSV		2
+
+/* Flags for Create Session */
+#define	NFSV4CRSESS_PERSIST		0x00000001
+#define	NFSV4CRSESS_CONNBACKCHAN	0x00000002
+#define	NFSV4CRSESS_CONNRDMA		0x00000004
+
+/* Flags for Sequence */
+#define	NFSV4SEQ_CBPATHDOWN		0x00000001
+#define	NFSV4SEQ_CBGSSCONTEXPIRING	0x00000002
+#define	NFSV4SEQ_CBGSSCONTEXPIRED	0x00000004
+#define	NFSV4SEQ_EXPIREDALLSTATEREVOKED	0x00000008
+#define	NFSV4SEQ_EXPIREDSOMESTATEREVOKED 0x00000010
+#define	NFSV4SEQ_ADMINSTATEREVOKED	0x00000020
+#define	NFSV4SEQ_RECALLABLESTATEREVOKED	0x00000040
+#define	NFSV4SEQ_LEASEMOVED		0x00000080
+#define	NFSV4SEQ_RESTARTRECLAIMNEEDED	0x00000100
+#define	NFSV4SEQ_CBPATHDOWNSESSION	0x00000200
+#define	NFSV4SEQ_BACKCHANNELFAULT	0x00000400
+#define	NFSV4SEQ_DEVIDCHANGED		0x00000800
+#define	NFSV4SEQ_DEVIDDELETED		0x00001000
+
 /* Conversion macros */
 #define	vtonfsv2_mode(t,m) 						\
 		txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : 	\

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clcomsubs.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -43,10 +43,11 @@ __FBSDID("$FreeBSD$");
 #include <fs/nfs/nfsport.h>
 
 extern struct nfsstats newnfsstats;
-extern struct nfsv4_opflag nfsv4_opflag[NFSV4OP_NOPS];
+extern struct nfsv4_opflag nfsv4_opflag[NFSV41_NOPS];
 extern int ncl_mbuf_mlen;
 extern enum vtype newnv2tov_type[8];
 extern enum vtype nv34tov_type[8];
+extern int	nfs_bigreply[NFSV41_NPROCS];
 NFSCLSTATEMUTEX;
 #endif	/* !APPLEKEXT */
 
@@ -56,7 +57,7 @@ static struct {
 	int	opcnt;
 	const u_char *tag;
 	int	taglen;
-} nfsv4_opmap[NFS_NPROCS] = {
+} nfsv4_opmap[NFSV41_NPROCS] = {
 	{ 0, 1, "Null", 4 },
 	{ NFSV4OP_GETATTR, 1, "Getattr", 7, },
 	{ NFSV4OP_SETATTR, 2, "Setattr", 7, },
@@ -98,15 +99,20 @@ static struct {
 	{ NFSV4OP_DELEGRETURN, 9, "DelegRename2", 12, },
 	{ NFSV4OP_GETATTR, 1, "Getacl", 6, },
 	{ NFSV4OP_SETATTR, 1, "Setacl", 6, },
+	{ NFSV4OP_EXCHANGEID, 1, "ExchangeID", 10, },
+	{ NFSV4OP_CREATESESSION, 1, "CreateSession", 13, },
+	{ NFSV4OP_DESTROYSESSION, 1, "DestroySession", 14, },
+	{ NFSV4OP_DESTROYCLIENTID, 1, "DestroyClient", 13, },
+	{ NFSV4OP_FREESTATEID, 1, "FreeStateID", 11, },
 };
 
 
 /*
  * NFS RPCS that have large request message size.
  */
-static int nfs_bigrequest[NFS_NPROCS] = {
+static int nfs_bigrequest[NFSV41_NPROCS] = {
 	0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
 /*
@@ -125,9 +131,12 @@ nfscl_reqstart(struct nfsrv_descript *nd
 	/*
 	 * First, fill in some of the fields of nd.
 	 */
-	if (NFSHASNFSV4(nmp))
+	nd->nd_slotseq = NULL;
+	if (NFSHASNFSV4(nmp)) {
 		nd->nd_flag = ND_NFSV4;
-	else if (NFSHASNFSV3(nmp))
+		if (NFSHASNFSV4N(nmp))
+			nd->nd_flag |= ND_NFSV41;
+	} else if (NFSHASNFSV3(nmp))
 		nd->nd_flag = ND_NFSV3;
 	else
 		nd->nd_flag = ND_NFSV2;
@@ -151,17 +160,36 @@ nfscl_reqstart(struct nfsrv_descript *nd
 	if (nd->nd_flag & ND_NFSV4) {
 		opcnt = nfsv4_opmap[procnum].opcnt +
 		    nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh;
+		if ((nd->nd_flag & ND_NFSV41) != 0) {
+			opcnt += nfsv4_opflag[nfsv4_opmap[procnum].op].needsseq;
+			if (procnum == NFSPROC_RENEW)
+				/*
+				 * For the special case of Renew, just do a
+				 * Sequence Op.
+				 */
+				opcnt = 1;
+		}
 		/*
 		 * What should the tag really be?
 		 */
 		(void) nfsm_strtom(nd, nfsv4_opmap[procnum].tag,
 			nfsv4_opmap[procnum].taglen);
-		NFSM_BUILD(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
-		*tl++ = txdr_unsigned(NFSV4_MINORVERSION);
+		NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
+		if ((nd->nd_flag & ND_NFSV41) != 0)
+			*tl++ = txdr_unsigned(NFSV41_MINORVERSION);
+		else
+			*tl++ = txdr_unsigned(NFSV4_MINORVERSION);
 		if (opcntpp != NULL)
 			*opcntpp = tl;
-		*tl++ = txdr_unsigned(opcnt);
+		*tl = txdr_unsigned(opcnt);
+		if ((nd->nd_flag & ND_NFSV41) != 0 &&
+		    nfsv4_opflag[nfsv4_opmap[procnum].op].needsseq > 0) {
+			NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED);
+			*tl = txdr_unsigned(NFSV4OP_SEQUENCE);
+			nfscl_setsequence(nd, nmp, nfs_bigreply[procnum]);
+		}
 		if (nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh > 0) {
+			NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED);
 			*tl = txdr_unsigned(NFSV4OP_PUTFH);
 			(void) nfsm_fhtom(nd, nfhp, fhlen, 0);
 			if (nfsv4_opflag[nfsv4_opmap[procnum].op].needscfh==2){
@@ -171,13 +199,17 @@ nfscl_reqstart(struct nfsrv_descript *nd
 				(void) nfsrv_putattrbit(nd, &attrbits);
 				nd->nd_flag |= ND_V4WCCATTR;
 			}
+		}
+		if (procnum != NFSPROC_RENEW ||
+		    (nd->nd_flag & ND_NFSV41) == 0) {
 			NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED);
+			*tl = txdr_unsigned(nfsv4_opmap[procnum].op);
 		}
-		*tl = txdr_unsigned(nfsv4_opmap[procnum].op);
 	} else {
 		(void) nfsm_fhtom(nd, nfhp, fhlen, 0);
 	}
-	NFSINCRGLOBAL(newnfsstats.rpccnt[procnum]);
+	if (procnum < NFSV4_NPROCS)
+		NFSINCRGLOBAL(newnfsstats.rpccnt[procnum]);
 }
 
 #ifndef APPLE

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkdtrace.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -92,7 +92,7 @@ struct dtnfsclient_rpc {
  * This table is indexed by NFSv3 procedure number, but also used for NFSv2
  * procedure names and NFSv4 operations.
  */
-static struct dtnfsclient_rpc	dtnfsclient_rpcs[NFS_NPROCS + 1] = {
+static struct dtnfsclient_rpc	dtnfsclient_rpcs[NFSV41_NPROCS + 1] = {
 	{ "null", "null", "null" },
 	{ "getattr", "getattr", "getattr" },
 	{ "setattr", "setattr", "setattr" },
@@ -196,17 +196,17 @@ extern uint32_t	nfscl_attrcache_load_don
  * stored in one of these two NFS client-allocated arrays; 0 indicates that
  * the event is not being traced so probes should not be called.
  *
- * For simplicity, we allocate both v2, v3 and v4 arrays as NFS_NPROCS + 1, and
- * the v2, v3 arrays are simply sparse.
+ * For simplicity, we allocate both v2, v3 and v4 arrays as NFSV41_NPROCS + 1,
+ * and the v2, v3 arrays are simply sparse.
  */
-extern uint32_t			nfscl_nfs2_start_probes[NFS_NPROCS + 1];
-extern uint32_t			nfscl_nfs2_done_probes[NFS_NPROCS + 1];
+extern uint32_t			nfscl_nfs2_start_probes[NFSV41_NPROCS + 1];
+extern uint32_t			nfscl_nfs2_done_probes[NFSV41_NPROCS + 1];
 
-extern uint32_t			nfscl_nfs3_start_probes[NFS_NPROCS + 1];
-extern uint32_t			nfscl_nfs3_done_probes[NFS_NPROCS + 1];
+extern uint32_t			nfscl_nfs3_start_probes[NFSV41_NPROCS + 1];
+extern uint32_t			nfscl_nfs3_done_probes[NFSV41_NPROCS + 1];
 
-extern uint32_t			nfscl_nfs4_start_probes[NFS_NPROCS + 1];
-extern uint32_t			nfscl_nfs4_done_probes[NFS_NPROCS + 1];
+extern uint32_t			nfscl_nfs4_start_probes[NFSV41_NPROCS + 1];
+extern uint32_t			nfscl_nfs4_done_probes[NFSV41_NPROCS + 1];
 
 /*
  * Look up a DTrace probe ID to see if it's associated with a "done" event --
@@ -217,7 +217,7 @@ dtnfs234_isdoneprobe(dtrace_id_t id)
 {
 	int i;
 
-	for (i = 0; i < NFS_NPROCS + 1; i++) {
+	for (i = 0; i < NFSV41_NPROCS + 1; i++) {
 		if (dtnfsclient_rpcs[i].nr_v4_id_done == id ||
 		    dtnfsclient_rpcs[i].nr_v3_id_done == id ||
 		    dtnfsclient_rpcs[i].nr_v2_id_done == id)
@@ -401,7 +401,7 @@ dtnfsclient_provide(void *arg, dtrace_pr
 	 * Register NFSv2 RPC procedures; note sparseness check for each slot
 	 * in the NFSv3, NFSv4 procnum-indexed array.
 	 */
-	for (i = 0; i < NFS_NPROCS + 1; i++) {
+	for (i = 0; i < NFSV41_NPROCS + 1; i++) {
 		if (dtnfsclient_rpcs[i].nr_v2_name != NULL &&
 		    dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs2_str,
 		    dtnfsclient_rpcs[i].nr_v2_name, dtnfsclient_start_str) ==
@@ -430,7 +430,7 @@ dtnfsclient_provide(void *arg, dtrace_pr
 	 * Register NFSv3 RPC procedures; note sparseness check for each slot
 	 * in the NFSv4 procnum-indexed array.
 	 */
-	for (i = 0; i < NFS_NPROCS + 1; i++) {
+	for (i = 0; i < NFSV41_NPROCS + 1; i++) {
 		if (dtnfsclient_rpcs[i].nr_v3_name != NULL &&
 		    dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs3_str,
 		    dtnfsclient_rpcs[i].nr_v3_name, dtnfsclient_start_str) ==
@@ -458,7 +458,7 @@ dtnfsclient_provide(void *arg, dtrace_pr
 	/*
 	 * Register NFSv4 RPC procedures.
 	 */
-	for (i = 0; i < NFS_NPROCS + 1; i++) {
+	for (i = 0; i < NFSV41_NPROCS + 1; i++) {
 		if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs4_str,
 		    dtnfsclient_rpcs[i].nr_v4_name, dtnfsclient_start_str) ==
 		    0) {

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clkrpc.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$");
 
 NFSDLOCKMUTEX;
 
-SVCPOOL		*nfscbd_pool;
+extern SVCPOOL	*nfscbd_pool;
 
 static int nfs_cbproc(struct nfsrv_descript *, u_int32_t);
 
@@ -91,6 +91,7 @@ nfscb_program(struct svc_req *rqst, SVCX
 	nd.nd_mreq = NULL;
 	nd.nd_cred = NULL;
 
+printf("cbproc=%d\n",nd.nd_procnum);
 	if (nd.nd_procnum != NFSPROC_NULL) {
 		if (!svc_getcred(rqst, &nd.nd_cred, &credflavor)) {
 			svcerr_weakauth(rqst);
@@ -136,6 +137,8 @@ nfscb_program(struct svc_req *rqst, SVCX
 			m_freem(nd.nd_mreq);
 	} else if (!svc_sendreply_mbuf(rqst, nd.nd_mreq)) {
 		svcerr_systemerr(rqst);
+} else {
+printf("cbrep sent\n");
 	}
 	svc_freereq(rqst);
 }
@@ -272,13 +275,15 @@ nfsrvd_cbinit(int terminating)
 	NFSD_LOCK_ASSERT();
 
 	if (terminating) {
+		/* Wait for any xprt registrations to complete. */
+		while (nfs_numnfscbd > 0)
+			msleep(&nfs_numnfscbd, NFSDLOCKMUTEXPTR, PZERO, 
+			    "nfscbdt", 0);
 		NFSD_UNLOCK();
 		svcpool_destroy(nfscbd_pool);
 		nfscbd_pool = NULL;
-		NFSD_LOCK();
-	}
-
-	NFSD_UNLOCK();
+	} else
+		NFSD_UNLOCK();
 
 	nfscbd_pool = svcpool_create("nfscbd", NULL);
 	nfscbd_pool->sp_rcache = NULL;

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c	Sat Dec 10 01:44:24 2011	(r228384)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c	Sat Dec 10 02:06:11 2011	(r228385)
@@ -720,10 +720,13 @@ nfsrpc_openconfirm(vnode_t vp, u_int8_t 
 {
 	u_int32_t *tl;
 	struct nfsrv_descript nfsd, *nd = &nfsd;
+	struct nfsmount *nmp;
 	int error;
 
-	nfscl_reqstart(nd, NFSPROC_OPENCONFIRM, VFSTONFS(vnode_mount(vp)),

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

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 07:29:06 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 74C2E1065672;
	Sat, 10 Dec 2011 07:29:06 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 64D938FC13;
	Sat, 10 Dec 2011 07:29:06 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA7T6W0071847;
	Sat, 10 Dec 2011 07:29:06 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA7T6tS071845;
	Sat, 10 Dec 2011 07:29:06 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112100729.pBA7T6tS071845@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Sat, 10 Dec 2011 07:29:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228388 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 07:29:06 -0000

Author: linimon (doc,ports committer)
Date: Sat Dec 10 07:29:06 2011
New Revision: 228388
URL: http://svn.freebsd.org/changeset/base/228388

Log:
  Better debugging.

Modified:
  projects/portbuild/scripts/prunefailure

Modified: projects/portbuild/scripts/prunefailure
==============================================================================
--- projects/portbuild/scripts/prunefailure	Sat Dec 10 07:08:52 2011	(r228387)
+++ projects/portbuild/scripts/prunefailure	Sat Dec 10 07:29:06 2011	(r228388)
@@ -72,7 +72,7 @@ while read dir name ver olddate date cou
 
     entry=$(grep "|/usr/ports/$dir|" $index)
     if [ -z "$entry" ]; then
-	echo $dir not in index
+	echo $dir not in $index
 	rm -f ${pbd}/${arch}/${branch}/latest/${dir}
 	continue
     fi

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 07:48:50 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 6DDAA1065670;
	Sat, 10 Dec 2011 07:48:50 +0000 (UTC)
	(envelope-from andrew@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 5C9428FC14;
	Sat, 10 Dec 2011 07:48:50 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA7mod5072548;
	Sat, 10 Dec 2011 07:48:50 GMT (envelope-from andrew@svn.freebsd.org)
Received: (from andrew@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA7moiw072544;
	Sat, 10 Dec 2011 07:48:50 GMT (envelope-from andrew@svn.freebsd.org)
Message-Id: <201112100748.pBA7moiw072544@svn.freebsd.org>
From: Andrew Turner <andrew@FreeBSD.org>
Date: Sat, 10 Dec 2011 07:48:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228389 - in projects/arm_eabi: contrib/gcc/config/arm
	gnu/lib/libgcc gnu/usr.bin/cc/cc_tools
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 07:48:50 -0000

Author: andrew
Date: Sat Dec 10 07:48:50 2011
New Revision: 228389
URL: http://svn.freebsd.org/changeset/base/228389

Log:
  Get GCC producing what appears to be ARM EABI binaries.
  
  Currently we are required to explicitly link against libgcc_s to get the
  __aeabi_* symbols. ld should be performing this, however its --as-needed
  argument appears to not be working.

Modified:
  projects/arm_eabi/contrib/gcc/config/arm/freebsd.h
  projects/arm_eabi/gnu/lib/libgcc/Makefile
  projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile

Modified: projects/arm_eabi/contrib/gcc/config/arm/freebsd.h
==============================================================================
--- projects/arm_eabi/contrib/gcc/config/arm/freebsd.h	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/contrib/gcc/config/arm/freebsd.h	Sat Dec 10 07:48:50 2011	(r228389)
@@ -30,7 +30,7 @@
 
 #undef SUBTARGET_EXTRA_ASM_SPEC
 #define SUBTARGET_EXTRA_ASM_SPEC	\
-  "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
 
 /* Default to full FPA if -mhard-float is specified. */
 #undef SUBTARGET_ASM_FLOAT_SPEC
@@ -56,20 +56,28 @@
 /************************[  Target stuff  ]***********************************/
 
 #undef  TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)");
+#define TARGET_VERSION fprintf (stderr, " (FreeBSD/ARM ELF)");
 
 #ifndef TARGET_ENDIAN_DEFAULT
 #define TARGET_ENDIAN_DEFAULT 0
 #endif
 
-/* Default it to use ATPCS with soft-VFP.  */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT			\
-  (MASK_APCS_FRAME			\
-   | TARGET_ENDIAN_DEFAULT)
+/* We default to a soft-float ABI so that binaries can run on all
+   target hardware.  */
+#undef TARGET_DEFAULT_FLOAT_ABI
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
 
 #undef ARM_DEFAULT_ABI
-#define ARM_DEFAULT_ABI ARM_ABI_ATPCS
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
+
+#undef  TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() 		\
+  do						\
+    {						\
+      FBSD_TARGET_OS_CPP_BUILTINS();		\
+      TARGET_BPABI_CPP_BUILTINS();		\
+    }						\
+  while (false)
 
 /* Define the actual types of some ANSI-mandated types.
    Needs to agree with <machine/ansi.h>.  GCC defaults come from c-decl.c,
@@ -87,7 +95,7 @@
 #undef WCHAR_TYPE
 
 #undef  SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT	TARGET_CPU_strongarm
+#define SUBTARGET_CPU_DEFAULT	TARGET_CPU_arm9
 
 /* FreeBSD does its profiling differently to the Acorn compiler. We
    don't need a word following the mcount call; and to skip it
@@ -121,5 +129,3 @@ do									\
   }									\
 while (0)
 
-#undef FPUTYPE_DEFAULT
-#define FPUTYPE_DEFAULT FPUTYPE_VFP

Modified: projects/arm_eabi/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/arm_eabi/gnu/lib/libgcc/Makefile	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/gnu/lib/libgcc/Makefile	Sat Dec 10 07:48:50 2011	(r228389)
@@ -54,7 +54,9 @@ LIB2FUNCS+= _fixuns${mode}si
 # Likewise double-word routines.
 .for mode in sf df xf tf
 LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
+.if ${TARGET_CPUARCH} != "arm"
 LIB2FUNCS+= _floatdi${mode} _floatundi${mode}
+.endif
 .endfor
 
 LIB2ADD = $(LIB2FUNCS_EXTRA)
@@ -108,15 +110,18 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udi
 CFLAGS+=	-Dinhibit_libc -fno-inline
 LIB1ASMSRC =	lib1funcs.asm
 LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
-LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+LIB1ASMFUNCS+=	_udivsi3 _divsi3 _umodsi3 _modsi3\
+	_call_via_rX _interwork_call_via_rX \
+	_lshrdi3 _ashrdi3 _ashldi3 \
+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+	_fixsfsi _fixunssfsi _floatdidf _floatdisf \
+	 _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod
+LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c
+LIB2FUNCS_EXTRA = bpabi.c
 
-# Not now
-#LIB1ASMFUNCS =  _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-#LIB1ASMFUNCS+=	_call_via_rX _interwork_call_via_rX \
-#	_lshrdi3 _ashrdi3 _ashldi3 \
-#	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-#	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-#	_fixsfsi _fixunssfsi _floatdidf _floatdisf
+# Make bpabi.So depend on bpabi.c and not bpabi.S
+bpabi.So: bpabi.c
 .endif
 
 .if ${TARGET_CPUARCH} == mips
@@ -322,6 +327,9 @@ CLEANFILES += cs-*.h option*
 SHLIB_MKMAP      = ${GCCDIR}/mkmap-symver.awk
 SHLIB_MKMAP_OPTS =
 SHLIB_MAPFILES   = ${GCCDIR}/libgcc-std.ver
+.if ${TARGET_CPUARCH} == "arm"
+SHLIB_MAPFILES  += ${GCCDIR}/config/arm/libgcc-bpabi.ver
+.endif
 VERSION_MAP      = libgcc.map
 
 libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}

Modified: projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile	Sat Dec 10 07:48:50 2011	(r228389)
@@ -51,6 +51,7 @@ TARGET_INC+=	${GCC_CPU}/elf.h
 .endif
 .if ${TARGET_CPUARCH} == "arm"
 TARGET_INC+=	${GCC_CPU}/aout.h
+TARGET_INC+=	${GCC_CPU}/bpabi.h
 .endif
 .if ${TARGET_ARCH} == "powerpc64"
 TARGET_INC+=	${GCC_CPU}/biarch64.h
@@ -358,7 +359,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
 
 GENSRCS+=	gthr-default.h
 
+.if ${TARGET_CPUARCH} == "arm"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
 unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
 	ln -sf ${.ALLSRC} ${.TARGET}
 
 GENSRCS+=	unwind.h

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 09:34:40 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 550E6106564A;
	Sat, 10 Dec 2011 09:34:40 +0000 (UTC)
	(envelope-from linimon@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 448E38FC12;
	Sat, 10 Dec 2011 09:34:40 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBA9Ye7O079752;
	Sat, 10 Dec 2011 09:34:40 GMT (envelope-from linimon@svn.freebsd.org)
Received: (from linimon@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBA9YekT079749;
	Sat, 10 Dec 2011 09:34:40 GMT (envelope-from linimon@svn.freebsd.org)
Message-Id: <201112100934.pBA9YekT079749@svn.freebsd.org>
From: Mark Linimon <linimon@FreeBSD.org>
Date: Sat, 10 Dec 2011 09:34:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228390 - projects/portbuild/scripts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 09:34:40 -0000

Author: linimon (doc,ports committer)
Date: Sat Dec 10 09:34:39 2011
New Revision: 228390
URL: http://svn.freebsd.org/changeset/base/228390

Log:
  Fix -trybroken case.

Modified:
  projects/portbuild/scripts/dopackages

Modified: projects/portbuild/scripts/dopackages
==============================================================================
--- projects/portbuild/scripts/dopackages	Sat Dec 10 07:48:50 2011	(r228389)
+++ projects/portbuild/scripts/dopackages	Sat Dec 10 09:34:39 2011	(r228390)
@@ -556,7 +556,7 @@ if [ "$skipstart" = 0 ]; then
 	if [ -f ${pbab}/newfailure ]; then
 	    cp ${pbab}/newfailure ${builddir}/bak/
 	fi
-	lockf -k ${pbab}/failure.lock ${pbc}/scripts/prunefailure ${arch} ${branch} ${builddir}
+	lockf -k ${pbab}/failure.lock ${pbc}/scripts/prunefailure ${arch} ${branch} ${buildid}
     fi
 
     # XXX These can happen after build start

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 23:18:35 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 65588106566B;
	Sat, 10 Dec 2011 23:18:35 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4B3188FC14;
	Sat, 10 Dec 2011 23:18:35 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANIZrE026126;
	Sat, 10 Dec 2011 23:18:35 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANIZta026125;
	Sat, 10 Dec 2011 23:18:35 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112102318.pBANIZta026125@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 23:18:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228400 - projects/nfsv4.1-client/sys/rpc
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 23:18:35 -0000

Author: rmacklem
Date: Sat Dec 10 23:18:34 2011
New Revision: 228400
URL: http://svn.freebsd.org/changeset/base/228400

Log:
  Move a couple of the kernel rpc structures into a private
  include file from the C files, so that they can be included
  in multiple files.

Added:
  projects/nfsv4.1-client/sys/rpc/_krpc.h   (contents, props changed)

Added: projects/nfsv4.1-client/sys/rpc/_krpc.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/nfsv4.1-client/sys/rpc/_krpc.h	Sat Dec 10 23:18:34 2011	(r228400)
@@ -0,0 +1,111 @@
+/*-
+ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
+ * unrestricted use provided that this legend is included on all tape
+ * media and as a part of the software program in whole or part.  Users
+ * may copy or modify Sun RPC without charge, but are not authorized
+ * to license or distribute it to anyone else except as part of a product or
+ * program developed by the user.
+ * 
+ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
+ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * 
+ * Sun RPC is provided with no support and without any obligation on the
+ * part of Sun Microsystems, Inc. to assist in its use, correction,
+ * modification or enhancement.
+ * 
+ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
+ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
+ * OR ANY PART THEREOF.
+ * 
+ * In no event will Sun Microsystems, Inc. be liable for any lost revenue
+ * or profits or other special, indirect and consequential damages, even if
+ * Sun has been advised of the possibility of such damages.
+ * 
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California  94043
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _RPC__KRPC_H_
+#define	_RPC__KRPC_H_
+
+#ifdef _KERNEL
+/*
+ * Definitions now shared between client and server RPC for backchannels.
+ */
+#define MCALL_MSG_SIZE 24
+
+/*
+ * A pending RPC request which awaits a reply. Requests which have
+ * received their reply will have cr_xid set to zero and cr_mrep to
+ * the mbuf chain of the reply.
+ */
+struct ct_request {
+	TAILQ_ENTRY(ct_request) cr_link;
+	uint32_t		cr_xid;		/* XID of request */
+	struct mbuf		*cr_mrep;	/* reply received by upcall */
+	int			cr_error;	/* any error from upcall */
+	char			cr_verf[MAX_AUTH_BYTES]; /* reply verf */
+};
+
+TAILQ_HEAD(ct_request_list, ct_request);
+
+struct rc_data {
+	struct mtx		rc_lock;
+	struct sockaddr_storage	rc_addr; /* server address */
+	struct netconfig*	rc_nconf; /* network type */
+	rpcprog_t		rc_prog;  /* program number */
+	rpcvers_t		rc_vers;  /* version number */
+	size_t			rc_sendsz;
+	size_t			rc_recvsz;
+	struct timeval		rc_timeout;
+	struct timeval		rc_retry;
+	int			rc_retries;
+	int			rc_privport;
+	char			*rc_waitchan;
+	int			rc_intr;
+	int			rc_connecting;
+	int			rc_closed;
+	struct ucred		*rc_ucred;
+	CLIENT*			rc_client; /* underlying RPC client */
+	struct rpc_err		rc_err;
+	void			*rc_backchannel;
+};
+
+struct ct_data {
+	struct mtx	ct_lock;
+	int		ct_threads;	/* number of threads in clnt_vc_call */
+	bool_t		ct_closing;	/* TRUE if we are closing */
+	bool_t		ct_closed;	/* TRUE if we are closed */
+	struct socket	*ct_socket;	/* connection socket */
+	bool_t		ct_closeit;	/* close it on destroy */
+	struct timeval	ct_wait;	/* wait interval in milliseconds */
+	struct sockaddr_storage	ct_addr; /* remote addr */
+	struct rpc_err	ct_error;
+	uint32_t	ct_xid;
+	char		ct_mcallc[MCALL_MSG_SIZE]; /* marshalled callmsg */
+	size_t		ct_mpos;	/* pos after marshal */
+	const char	*ct_waitchan;
+	int		ct_waitflag;
+	struct mbuf	*ct_record;	/* current reply record */
+	size_t		ct_record_resid; /* how much left of reply to read */
+	bool_t		ct_record_eor;	 /* true if reading last fragment */
+	struct ct_request_list ct_pending;
+	int		ct_upcallrefs;	/* Ref cnt of upcalls in prog. */
+	SVCXPRT		*ct_backchannelxprt; /* xprt for backchannel */
+};
+
+struct cf_conn {  /* kept in xprt->xp_p1 for actual connection */
+	enum xprt_stat strm_stat;
+	struct mbuf *mpending;	/* unparsed data read from the socket */
+	struct mbuf *mreq;	/* current record being built from mpending */
+	uint32_t resid;		/* number of bytes needed for fragment */
+	bool_t eor;		/* reading last fragment of current record */
+};
+
+#endif	/* _KERNEL */
+
+#endif	/* _RPC__KRPC_H_ */

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 23:26:24 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BC87A1065673;
	Sat, 10 Dec 2011 23:26:24 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AD16B8FC13;
	Sat, 10 Dec 2011 23:26:24 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANQODK026402;
	Sat, 10 Dec 2011 23:26:24 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANQOrt026400;
	Sat, 10 Dec 2011 23:26:24 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112102326.pBANQOrt026400@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 23:26:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228401 - projects/nfsv4.1-client/sys/rpc
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 23:26:24 -0000

Author: rmacklem
Date: Sat Dec 10 23:26:24 2011
New Revision: 228401
URL: http://svn.freebsd.org/changeset/base/228401

Log:
  Define a new CLSET_BACKCHANNEL for the kernel rpc. This can
  be used to set up a backchannel on a TCP RPC socket. A backchannel
  allows RPC messages to travel in the opposite direction, with
  an RPC request from the server to client and an RPC reply
  from the client to server. This is used by NFSv4.1 for callback RPCs.

Modified:
  projects/nfsv4.1-client/sys/rpc/clnt.h

Modified: projects/nfsv4.1-client/sys/rpc/clnt.h
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/clnt.h	Sat Dec 10 23:18:34 2011	(r228400)
+++ projects/nfsv4.1-client/sys/rpc/clnt.h	Sat Dec 10 23:26:24 2011	(r228401)
@@ -372,6 +372,7 @@ enum clnt_stat clnt_call_private(CLIENT 
 #define CLGET_RETRIES		26	/* get retry count for reconnect */
 #define CLSET_PRIVPORT		27	/* set privileged source port flag */
 #define CLGET_PRIVPORT		28	/* get privileged source port flag */
+#define CLSET_BACKCHANNEL	29	/* set backchannel for socket */
 #endif
 
 

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 23:35:05 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B852B106566B;
	Sat, 10 Dec 2011 23:35:05 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 8F1458FC0C;
	Sat, 10 Dec 2011 23:35:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANZ58Y026704;
	Sat, 10 Dec 2011 23:35:05 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANZ5PC026702;
	Sat, 10 Dec 2011 23:35:05 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112102335.pBANZ5PC026702@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 23:35:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228402 - projects/nfsv4.1-client/sys/rpc
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 23:35:05 -0000

Author: rmacklem
Date: Sat Dec 10 23:35:05 2011
New Revision: 228402
URL: http://svn.freebsd.org/changeset/base/228402

Log:
  Add code to handle CLSET_BACKCHANNEL. Basically, just save the xprt
  returned by svc_vc_create_backchannel() and pass it down to the
  clnt_vc layer. Struct rc_data is now in _krpc.h.

Modified:
  projects/nfsv4.1-client/sys/rpc/clnt_rc.c

Modified: projects/nfsv4.1-client/sys/rpc/clnt_rc.c
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/clnt_rc.c	Sat Dec 10 23:26:24 2011	(r228401)
+++ projects/nfsv4.1-client/sys/rpc/clnt_rc.c	Sat Dec 10 23:35:05 2011	(r228402)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
 
 #include <rpc/rpc.h>
 #include <rpc/rpc_com.h>
+#include <rpc/_krpc.h>
 
 static enum clnt_stat clnt_reconnect_call(CLIENT *, struct rpc_callextra *,
     rpcproc_t, struct mbuf *, struct mbuf **, struct timeval);
@@ -67,27 +68,6 @@ static struct clnt_ops clnt_reconnect_op
 
 static int	fake_wchan;
 
-struct rc_data {
-	struct mtx		rc_lock;
-	struct sockaddr_storage	rc_addr; /* server address */
-	struct netconfig*	rc_nconf; /* network type */
-	rpcprog_t		rc_prog;  /* program number */
-	rpcvers_t		rc_vers;  /* version number */
-	size_t			rc_sendsz;
-	size_t			rc_recvsz;
-	struct timeval		rc_timeout;
-	struct timeval		rc_retry;
-	int			rc_retries;
-	int			rc_privport;
-	char			*rc_waitchan;
-	int			rc_intr;
-	int			rc_connecting;
-	int			rc_closed;
-	struct ucred		*rc_ucred;
-	CLIENT*			rc_client; /* underlying RPC client */
-	struct rpc_err		rc_err;
-};
-
 CLIENT *
 clnt_reconnect_create(
 	struct netconfig *nconf,	/* network type */
@@ -211,6 +191,8 @@ clnt_reconnect_connect(CLIENT *cl)
 	CLNT_CONTROL(newclient, CLSET_RETRY_TIMEOUT, &rc->rc_retry);
 	CLNT_CONTROL(newclient, CLSET_WAITCHAN, rc->rc_waitchan);
 	CLNT_CONTROL(newclient, CLSET_INTERRUPTIBLE, &rc->rc_intr);
+	if (rc->rc_backchannel != NULL)
+		CLNT_CONTROL(newclient, CLSET_BACKCHANNEL, rc->rc_backchannel);
 	stat = RPC_SUCCESS;
 
 out:
@@ -466,6 +448,10 @@ clnt_reconnect_control(CLIENT *cl, u_int
 		*(int *) info = rc->rc_privport;
 		break;
 
+	case CLSET_BACKCHANNEL:
+		rc->rc_backchannel = info;
+		break;
+
 	default:
 		return (FALSE);
 	}

From owner-svn-src-projects@FreeBSD.ORG  Sat Dec 10 23:57:32 2011
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8C4141065670;
	Sat, 10 Dec 2011 23:57:32 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7C0FE8FC08;
	Sat, 10 Dec 2011 23:57:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBANvWwR027407;
	Sat, 10 Dec 2011 23:57:32 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBANvWkq027405;
	Sat, 10 Dec 2011 23:57:32 GMT
	(envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201112102357.pBANvWkq027405@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sat, 10 Dec 2011 23:57:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r228403 - projects/nfsv4.1-client/sys/rpc
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 10 Dec 2011 23:57:32 -0000

Author: rmacklem
Date: Sat Dec 10 23:57:32 2011
New Revision: 228403
URL: http://svn.freebsd.org/changeset/base/228403

Log:
  Modify the TCP RPC client code to handle the backchannel. The main
  change is to recognize the case of an RPC request (CALL) message
  in the receive upcall and marshalling it to the server via the
  xprt structure in ct_backchannelxprt. The locking is:
  - ct_lock protects the ct_backchannelxprt field along with other ct_data
    fields and is held during most of the backchannel changes.
  - xp_lock protects the fields inside the xprt structure and must be
    held when the structure is being released in clnt_vc_destroy().
  The ct_request and ct_data structures are now defined in _krpc.h.

Modified:
  projects/nfsv4.1-client/sys/rpc/clnt_vc.c

Modified: projects/nfsv4.1-client/sys/rpc/clnt_vc.c
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/clnt_vc.c	Sat Dec 10 23:35:05 2011	(r228402)
+++ projects/nfsv4.1-client/sys/rpc/clnt_vc.c	Sat Dec 10 23:57:32 2011	(r228403)
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/protosw.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>
+#include <sys/sx.h>
 #include <sys/syslog.h>
 #include <sys/time.h>
 #include <sys/uio.h>
@@ -77,8 +78,7 @@ __FBSDID("$FreeBSD$");
 
 #include <rpc/rpc.h>
 #include <rpc/rpc_com.h>
-
-#define MCALL_MSG_SIZE 24
+#include <rpc/_krpc.h>
 
 struct cmessage {
         struct cmsghdr cmsg;
@@ -106,43 +106,6 @@ static struct clnt_ops clnt_vc_ops = {
 	.cl_control =	clnt_vc_control
 };
 
-/*
- * A pending RPC request which awaits a reply. Requests which have
- * received their reply will have cr_xid set to zero and cr_mrep to
- * the mbuf chain of the reply.
- */
-struct ct_request {
-	TAILQ_ENTRY(ct_request) cr_link;
-	uint32_t		cr_xid;		/* XID of request */
-	struct mbuf		*cr_mrep;	/* reply received by upcall */
-	int			cr_error;	/* any error from upcall */
-	char			cr_verf[MAX_AUTH_BYTES]; /* reply verf */
-};
-
-TAILQ_HEAD(ct_request_list, ct_request);
-
-struct ct_data {
-	struct mtx	ct_lock;
-	int		ct_threads;	/* number of threads in clnt_vc_call */
-	bool_t		ct_closing;	/* TRUE if we are closing */
-	bool_t		ct_closed;	/* TRUE if we are closed */
-	struct socket	*ct_socket;	/* connection socket */
-	bool_t		ct_closeit;	/* close it on destroy */
-	struct timeval	ct_wait;	/* wait interval in milliseconds */
-	struct sockaddr_storage	ct_addr; /* remote addr */
-	struct rpc_err	ct_error;
-	uint32_t	ct_xid;
-	char		ct_mcallc[MCALL_MSG_SIZE]; /* marshalled callmsg */
-	size_t		ct_mpos;	/* pos after marshal */
-	const char	*ct_waitchan;
-	int		ct_waitflag;
-	struct mbuf	*ct_record;	/* current reply record */
-	size_t		ct_record_resid; /* how much left of reply to read */
-	bool_t		ct_record_eor;	 /* true if reading last fragment */
-	struct ct_request_list ct_pending;
-	int		ct_upcallrefs;	/* Ref cnt of upcalls in prog. */
-};
-
 static void clnt_vc_upcallsdone(struct ct_data *);
 
 static const char clnt_vc_errstr[] = "%s : %s";
@@ -641,6 +604,7 @@ clnt_vc_control(CLIENT *cl, u_int reques
 {
 	struct ct_data *ct = (struct ct_data *)cl->cl_private;
 	void *infop = info;
+	SVCXPRT *xprt;
 
 	mtx_lock(&ct->ct_lock);
 
@@ -752,6 +716,14 @@ clnt_vc_control(CLIENT *cl, u_int reques
 			*(int *) info = FALSE;
 		break;
 
+	case CLSET_BACKCHANNEL:
+		xprt = (SVCXPRT *)info;
+		if (ct->ct_backchannelxprt == NULL) {
+			xprt->xp_p2 = ct;
+			ct->ct_backchannelxprt = xprt;
+		}
+		break;
+
 	default:
 		mtx_unlock(&ct->ct_lock);
 		return (FALSE);
@@ -817,10 +789,20 @@ clnt_vc_destroy(CLIENT *cl)
 {
 	struct ct_data *ct = (struct ct_data *) cl->cl_private;
 	struct socket *so = NULL;
+	SVCXPRT *xprt;
 
 	clnt_vc_close(cl);
 
 	mtx_lock(&ct->ct_lock);
+	xprt = ct->ct_backchannelxprt;
+	ct->ct_backchannelxprt = NULL;
+	if (xprt != NULL) {
+		mtx_unlock(&ct->ct_lock);	/* To avoid a LOR. */
+		sx_xlock(&xprt->xp_lock);
+		mtx_lock(&ct->ct_lock);
+		xprt->xp_p2 = NULL;
+		xprt_unregister(xprt);
+	}
 
 	if (ct->ct_socket) {
 		if (ct->ct_closeit) {
@@ -829,6 +811,11 @@ clnt_vc_destroy(CLIENT *cl)
 	}
 
 	mtx_unlock(&ct->ct_lock);
+	if (xprt != NULL) {
+		sx_xunlock(&xprt->xp_lock);
+		SVC_RELEASE(xprt);
+printf("xprt rel\n");
+	}
 
 	mtx_destroy(&ct->ct_lock);
 	if (so) {
@@ -855,11 +842,13 @@ clnt_vc_soupcall(struct socket *so, void
 {
 	struct ct_data *ct = (struct ct_data *) arg;
 	struct uio uio;
-	struct mbuf *m;
+	struct mbuf *m, *m2;
 	struct ct_request *cr;
 	int error, rcvflag, foundreq;
-	uint32_t xid, header;
+	uint32_t xid_plus_direction[2], header;
 	bool_t do_read;
+	SVCXPRT *xprt;
+	struct cf_conn *cd;
 
 	ct->ct_upcallrefs++;
 	uio.uio_td = curthread;
@@ -974,45 +963,91 @@ clnt_vc_soupcall(struct socket *so, void
 			    && ct->ct_record_eor) {
 				/*
 				 * The XID is in the first uint32_t of
-				 * the reply.
+				 * the reply and the message direction
+				 * is the second one.
 				 */
-				if (ct->ct_record->m_len < sizeof(xid) &&
+				if (ct->ct_record->m_len <
+				    sizeof(xid_plus_direction) &&
 				    m_length(ct->ct_record, NULL) <
-				    sizeof(xid)) {
+				    sizeof(xid_plus_direction)) {
 					m_freem(ct->ct_record);
 					break;
 				}
-				m_copydata(ct->ct_record, 0, sizeof(xid),
-				    (char *)&xid);
-				xid = ntohl(xid);
-
-				mtx_lock(&ct->ct_lock);
-				foundreq = 0;
-				TAILQ_FOREACH(cr, &ct->ct_pending, cr_link) {
-					if (cr->cr_xid == xid) {
+				m_copydata(ct->ct_record, 0,
+				    sizeof(xid_plus_direction),
+				    (char *)xid_plus_direction);
+				xid_plus_direction[0] =
+				    ntohl(xid_plus_direction[0]);
+				xid_plus_direction[1] =
+				    ntohl(xid_plus_direction[1]);
+				/* Check message direction. */
+				if (xid_plus_direction[1] == CALL) {
+					/* This is a backchannel request. */
+printf("bc req\n");
+					mtx_lock(&ct->ct_lock);
+					xprt = ct->ct_backchannelxprt;
+					if (xprt == NULL) {
+						mtx_unlock(&ct->ct_lock);
+						/* Just throw it away. */
+						m_freem(ct->ct_record);
+						ct->ct_record = NULL;
+					} else {
+						cd = (struct cf_conn *)
+						    xprt->xp_p1;
+						m2 = cd->mreq;
 						/*
-						 * This one
-						 * matches. We leave
-						 * the reply mbuf in
-						 * cr->cr_mrep. Set
-						 * the XID to zero so
-						 * that we will ignore
-						 * any duplicaed
-						 * replies.
+						 * The requests are chained
+						 * in the m_nextpkt list.
 						 */
-						cr->cr_xid = 0;
-						cr->cr_mrep = ct->ct_record;
-						cr->cr_error = 0;
-						foundreq = 1;
-						wakeup(cr);
-						break;
+						while (m2 != NULL &&
+						    m2->m_nextpkt != NULL)
+							/* Find end of list. */
+							m2 = m2->m_nextpkt;
+						if (m2 != NULL)
+							m2->m_nextpkt =
+							    ct->ct_record;
+						else
+							cd->mreq =
+							    ct->ct_record;
+						ct->ct_record->m_nextpkt =
+						    NULL;
+						ct->ct_record = NULL;
+						xprt_active(xprt);
+						mtx_unlock(&ct->ct_lock);
+printf("got bmsg\n");
 					}
-				}
-				mtx_unlock(&ct->ct_lock);
+				} else {
+					mtx_lock(&ct->ct_lock);
+					foundreq = 0;
+					TAILQ_FOREACH(cr, &ct->ct_pending,
+					    cr_link) {
+						if (cr->cr_xid ==
+						    xid_plus_direction[0]) {
+							/*
+							 * This one
+							 * matches. We leave
+							 * the reply mbuf in
+							 * cr->cr_mrep. Set
+							 * the XID to zero so
+							 * that we will ignore
+							 * any duplicated
+							 * replies.
+							 */
+							cr->cr_xid = 0;
+							cr->cr_mrep =
+							    ct->ct_record;
+							cr->cr_error = 0;
+							foundreq = 1;
+							wakeup(cr);
+							break;
+						}
+					}
+					mtx_unlock(&ct->ct_lock);
 
-				if (!foundreq)
-					m_freem(ct->ct_record);
-				ct->ct_record = NULL;
+					if (!foundreq)
+						m_freem(ct->ct_record);
+					ct->ct_record = NULL;
+				}
 			}
 		}
 	} while (m);