From owner-svn-src-projects@FreeBSD.ORG  Sun Mar 31 17:50:02 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 5746EC60;
 Sun, 31 Mar 2013 17:50:02 +0000 (UTC)
 (envelope-from cherry@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4A8558A5;
 Sun, 31 Mar 2013 17:50:02 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2VHo1SE031603;
 Sun, 31 Mar 2013 17:50:01 GMT (envelope-from cherry@svn.freebsd.org)
Received: (from cherry@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2VHo1iX031602;
 Sun, 31 Mar 2013 17:50:01 GMT (envelope-from cherry@svn.freebsd.org)
Message-Id: <201303311750.r2VHo1iX031602@svn.freebsd.org>
From: "Cherry G. Mathew" <cherry@FreeBSD.org>
Date: Sun, 31 Mar 2013 17:50:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248952 - projects/amd64_xen_pv/sys/xen/xenbus
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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: Sun, 31 Mar 2013 17:50:02 -0000

Author: cherry
Date: Sun Mar 31 17:50:01 2013
New Revision: 248952
URL: http://svnweb.freebsd.org/changeset/base/248952

Log:
  Do not defer disestablishing intrhooks when there are pending
  connecting device children. Any hooks that children establish will be
  run at SI_SUB_INT_CONFIG_HOOKS and in the order of registration, and
  thus the order of intrhook registration and running should reflect the
  device hierarchy.
  
  This patch takes the boot to vfsmountroot()
  
  Approved by: gibbs(implicit)

Modified:
  projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c

Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c
==============================================================================
--- projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c	Sun Mar 31 17:42:54 2013	(r248951)
+++ projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c	Sun Mar 31 17:50:01 2013	(r248952)
@@ -594,8 +594,7 @@ xenbusb_release_confighook(struct xenbus
 	KASSERT(xbs->xbs_connecting_children > 0,
 		("Connecting device count error\n"));
 	xbs->xbs_connecting_children--;
-	if (xbs->xbs_connecting_children == 0
-	 && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) {
+	if ((xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) {
 		xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE;
 		mtx_unlock(&xbs->xbs_lock);
 		config_intrhook_disestablish(&xbs->xbs_attach_ch);

From owner-svn-src-projects@FreeBSD.ORG  Mon Apr  1 10:45:36 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 1A119407;
 Mon,  1 Apr 2013 10:45:36 +0000 (UTC)
 (envelope-from cherry@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E86711F9;
 Mon,  1 Apr 2013 10:45:35 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31AjZmJ029847;
 Mon, 1 Apr 2013 10:45:35 GMT (envelope-from cherry@svn.freebsd.org)
Received: (from cherry@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31AjZCV029846;
 Mon, 1 Apr 2013 10:45:35 GMT (envelope-from cherry@svn.freebsd.org)
Message-Id: <201304011045.r31AjZCV029846@svn.freebsd.org>
From: "Cherry G. Mathew" <cherry@FreeBSD.org>
Date: Mon, 1 Apr 2013 10:45:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248970 - projects/amd64_xen_pv/sys/amd64/xen
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 01 Apr 2013 10:45:36 -0000

Author: cherry
Date: Mon Apr  1 10:45:35 2013
New Revision: 248970
URL: http://svnweb.freebsd.org/changeset/base/248970

Log:
  Use memcchr(9) instead of homebrew (and slow) memrchr(3) (incorrectly
  used here). This implements the current semantics of searching for
  zero-ed out backing lower page table, before zapping its higher level
  table entry.
  
  Approved by: gibbs(implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c

Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c	Mon Apr  1 09:59:38 2013	(r248969)
+++ projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c	Mon Apr  1 10:45:35 2013	(r248970)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_smp.h"
 
 
+#include <sys/libkern.h>
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/types.h>
@@ -383,30 +384,6 @@ mmu_map_hold_va(struct pmap *pm, void *a
 	return alloced;
 }
 
-/*$FreeBSD: head/lib/libc/string/memrchr.c 178051 2008-04-10 00:12:44Z delphij $*/
-/*
- * Reverse memchr()
- * Find the last occurrence of 'c' in the buffer 's' of size 'n'.
- */
-
-static const void * memrchr(const void *, int, size_t);
-
-static const void *
-memrchr(const void *s, int c, size_t n)
-{
-	const unsigned char *cp;
-
-	if (n != 0) {
-		cp = (const unsigned char *)s + n;
-		do {
-			if (*(--cp) == (unsigned char)c)
-				return((const void *)cp);
-		} while (--n != 0);
-	}
-	return(NULL);
-}
-
-
 void
 mmu_map_release_va(struct pmap *pm, void *addr, uintptr_t va)
 {
@@ -461,7 +438,7 @@ mmu_map_release_va(struct pmap *pm, void
 			}
 
 			/* We can free the PT only after the PDT entry is zapped */
-			if (memrchr(pti->pt, 0, PAGE_SIZE) == ((char *)pti->pt + PAGE_SIZE - 1)) {
+			if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) {
 				/* Zap the backing PDT entry */
 				pdtep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pdtep));
 				xen_queue_pt_update(pdtep_ma, 0);
@@ -509,7 +486,7 @@ mmu_map_release_va(struct pmap *pm, void
 		}
 
 		/* We can free the PDT only after the PDPT entry is zapped */
-		if (memrchr(pti->pdt, 0, PAGE_SIZE) == ((char *)pti->pdt + PAGE_SIZE - 1)) {
+		if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) {
 			pdptep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pdptep));
 			xen_queue_pt_update(pdptep_ma, 0);
 			xen_flush_queue();
@@ -551,7 +528,7 @@ mmu_map_release_va(struct pmap *pm, void
 			return;
 		}
 
-		if (memrchr(pti->pdpt, 0, PAGE_SIZE) == ((char *)pti->pdpt + PAGE_SIZE - 1)) {
+		if (memcchr(pti->pt, 0, PAGE_SIZE) == NULL) {
 			pml4tep_ma = xpmap_ptom(pti->ptmb.vtop((uintptr_t)pml4tep)
 );
 			xen_queue_pt_update(pml4tep_ma, 0);

From owner-svn-src-projects@FreeBSD.ORG  Mon Apr  1 13:27:51 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 7F8C5848;
 Mon,  1 Apr 2013 13:27:51 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 71C5C3DA;
 Mon,  1 Apr 2013 13:27:51 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31DRpw7076583;
 Mon, 1 Apr 2013 13:27:51 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31DRo5n076575;
 Mon, 1 Apr 2013 13:27:50 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304011327.r31DRo5n076575@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Mon, 1 Apr 2013 13:27:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248974 - in projects/camlock/sys/cam: . ata ctl scsi
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 01 Apr 2013 13:27:51 -0000

Author: mav
Date: Mon Apr  1 13:27:49 2013
New Revision: 248974
URL: http://svnweb.freebsd.org/changeset/base/248974

Log:
  Remove per-SIM queue of free CCBs.

Modified:
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_sim.c
  projects/camlock/sys/cam/cam_sim.h
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/ctl/scsi_ctl.c
  projects/camlock/sys/cam/scsi/scsi_xpt.c

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Mon Apr  1 13:27:49 2013	(r248974)
@@ -1549,11 +1549,6 @@ ata_alloc_device(struct cam_eb *bus, str
 	device->serial_num = NULL;
 	device->serial_num_len = 0;
 
-	/*
-	 * XXX should be limited by number of CCBs this bus can
-	 * do.
-	 */
-	bus->sim->max_ccbs += device->ccbq.devq_openings;
 	/* Insertion sort into our target's device list */
 	cur_device = TAILQ_FIRST(&target->ed_entries);
 	while (cur_device != NULL && cur_device->lun_id < lun_id)

Modified: projects/camlock/sys/cam/cam_sim.c
==============================================================================
--- projects/camlock/sys/cam/cam_sim.c	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/cam_sim.c	Mon Apr  1 13:27:49 2013	(r248974)
@@ -87,7 +87,6 @@ cam_sim_alloc(sim_action_func sim_action
 	sim->flags = 0;
 	sim->refcount = 1;
 	sim->devq = queue;
-	sim->max_ccbs = 8;	/* Reserve for management purposes. */
 	sim->mtx = mtx;
 	if (mtx == &Giant) {
 		sim->flags |= 0;
@@ -97,7 +96,6 @@ cam_sim_alloc(sim_action_func sim_action
 		callout_init(&sim->callout, 1);
 	}
 
-	SLIST_INIT(&sim->ccb_freeq);
 	TAILQ_INIT(&sim->sim_doneq);
 
 	return (sim);
@@ -106,7 +104,6 @@ cam_sim_alloc(sim_action_func sim_action
 void
 cam_sim_free(struct cam_sim *sim, int free_devq)
 {
-	union ccb *ccb;
 	int error;
 
 	sim->refcount--;
@@ -117,10 +114,6 @@ cam_sim_free(struct cam_sim *sim, int fr
 
 	KASSERT(sim->refcount == 0, ("sim->refcount == 0"));
 
-	while ((ccb = (union ccb *)SLIST_FIRST(&sim->ccb_freeq)) != NULL) {
-		SLIST_REMOVE_HEAD(&sim->ccb_freeq, xpt_links.sle);
-		xpt_free_ccb(ccb);
-	}
 	if (free_devq)
 		cam_simq_free(sim->devq);
 	free(sim, M_CAMSIM);

Modified: projects/camlock/sys/cam/cam_sim.h
==============================================================================
--- projects/camlock/sys/cam/cam_sim.h	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/cam_sim.h	Mon Apr  1 13:27:49 2013	(r248974)
@@ -110,17 +110,6 @@ struct cam_sim {
 	struct callout		callout;
 	struct cam_devq 	*devq;	/* Device Queue to use for this SIM */
 	int			refcount; /* References to the SIM. */
-
-	/* "Pool" of inactive ccbs managed by xpt_get_ccb and xpt_release_ccb */
-	SLIST_HEAD(,ccb_hdr)	ccb_freeq;
-	/*
-	 * Maximum size of ccb pool.  Modified as devices are added/removed
-	 * or have their * opening counts changed.
-	 */
-	u_int			max_ccbs;
-	/* Current count of allocated ccbs */
-	u_int			ccb_count;
-
 };
 
 #define CAM_SIM_LOCK(sim)	mtx_lock((sim)->mtx);

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 13:27:49 2013	(r248974)
@@ -3756,13 +3756,7 @@ xpt_release_ccb(union ccb *free_ccb)
 		cam_ccbq_resize(&device->ccbq,
 		    device->ccbq.dev_openings + device->ccbq.dev_active);
 	}
-	if (sim->ccb_count > sim->max_ccbs) {
-		xpt_free_ccb(free_ccb);
-		sim->ccb_count--;
-	} else {
-		SLIST_INSERT_HEAD(&sim->ccb_freeq, &free_ccb->ccb_h,
-		    xpt_links.sle);
-	}
+	xpt_free_ccb(free_ccb);
 	xpt_run_dev_allocq(device);
 }
 
@@ -4326,22 +4320,11 @@ static union ccb *
 xpt_get_ccb(struct cam_ed *device)
 {
 	union ccb *new_ccb;
-	struct cam_sim *sim;
 
-	sim = device->sim;
-	if ((new_ccb = (union ccb *)SLIST_FIRST(&sim->ccb_freeq)) == NULL) {
-		new_ccb = xpt_alloc_ccb_nowait();
-                if (new_ccb == NULL) {
-			return (NULL);
-		}
-		if ((sim->flags & CAM_SIM_MPSAFE) == 0)
-			callout_handle_init(&new_ccb->ccb_h.timeout_ch);
-		SLIST_INSERT_HEAD(&sim->ccb_freeq, &new_ccb->ccb_h,
-				  xpt_links.sle);
-		sim->ccb_count++;
-	}
+	new_ccb = malloc(sizeof(*new_ccb), M_CAMCCB, M_NOWAIT);
+	if (new_ccb == NULL)
+		return (NULL);
 	cam_ccbq_take_opening(&device->ccbq);
-	SLIST_REMOVE_HEAD(&sim->ccb_freeq, xpt_links.sle);
 	return (new_ccb);
 }
 
@@ -4431,7 +4414,6 @@ xpt_alloc_device_default(struct cam_eb *
 
 	device->mintags = 1;
 	device->maxtags = 1;
-	bus->sim->max_ccbs += device->ccbq.devq_openings;
 	cur_device = TAILQ_FIRST(&target->ed_entries);
 	while (cur_device != NULL && cur_device->lun_id < lun_id)
 		cur_device = TAILQ_NEXT(cur_device, links);
@@ -4525,7 +4507,6 @@ xpt_release_device(struct cam_ed *device
 
 		TAILQ_REMOVE(&device->target->ed_entries, device,links);
 		device->target->generation++;
-		device->target->bus->sim->max_ccbs -= device->ccbq.devq_openings;
 		/* Release our slot in the devq */
 		devq = device->target->bus->sim->devq;
 		cam_devq_resize(devq, devq->send_queue.array_size - 1);
@@ -4565,8 +4546,6 @@ xpt_dev_ccbq_resize(struct cam_path *pat
 	if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0
 	 || (dev->inq_flags & SID_CmdQue) != 0)
 		dev->tag_saved_openings = newopenings;
-	/* Adjust the global limit */
-	dev->sim->max_ccbs += diff;
 	return (result);
 }
 

Modified: projects/camlock/sys/cam/ctl/scsi_ctl.c
==============================================================================
--- projects/camlock/sys/cam/ctl/scsi_ctl.c	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/ctl/scsi_ctl.c	Mon Apr  1 13:27:49 2013	(r248974)
@@ -2063,12 +2063,6 @@ ctlfe_dump_sim(struct cam_sim *sim)
 	printf("%s%d: max tagged openings: %d, max dev openings: %d\n",
 	       sim->sim_name, sim->unit_number,
 	       sim->max_tagged_dev_openings, sim->max_dev_openings);
-	printf("%s%d: max_ccbs: %u, ccb_count: %u\n", 
-	       sim->sim_name, sim->unit_number,
-	       sim->max_ccbs, sim->ccb_count);
-	printf("%s%d: ccb_freeq is %sempty\n",
-	       sim->sim_name, sim->unit_number,
-	       (SLIST_FIRST(&sim->ccb_freeq) == NULL) ? "" : "NOT ");
 	printf("\n");
 }
 

Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- projects/camlock/sys/cam/scsi/scsi_xpt.c	Mon Apr  1 13:18:34 2013	(r248973)
+++ projects/camlock/sys/cam/scsi/scsi_xpt.c	Mon Apr  1 13:27:49 2013	(r248974)
@@ -2331,11 +2331,6 @@ scsi_alloc_device(struct cam_eb *bus, st
 	device->supported_vpds = NULL;
 	device->supported_vpds_len = 0;
 
-	/*
-	 * XXX should be limited by number of CCBs this bus can
-	 * do.
-	 */
-	bus->sim->max_ccbs += device->ccbq.devq_openings;
 	/* Insertion sort into our target's device list */
 	cur_device = TAILQ_FIRST(&target->ed_entries);
 	while (cur_device != NULL && cur_device->lun_id < lun_id)

From owner-svn-src-projects@FreeBSD.ORG  Mon Apr  1 16:26:21 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 7484FFF6;
 Mon,  1 Apr 2013 16:26:21 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4EED712E;
 Mon,  1 Apr 2013 16:26:21 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31GQLIQ029460;
 Mon, 1 Apr 2013 16:26:21 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31GQKeI029458;
 Mon, 1 Apr 2013 16:26:20 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304011626.r31GQKeI029458@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Mon, 1 Apr 2013 16:26:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248978 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 01 Apr 2013 16:26:21 -0000

Author: mav
Date: Mon Apr  1 16:26:20 2013
New Revision: 248978
URL: http://svnweb.freebsd.org/changeset/base/248978

Log:
  Remove cam_ccbq_frozen(), that is trivial after removing multilevel freeze
  at r248918.

Modified:
  projects/camlock/sys/cam/cam_queue.h
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_queue.h
==============================================================================
--- projects/camlock/sys/cam/cam_queue.h	Mon Apr  1 16:23:34 2013	(r248977)
+++ projects/camlock/sys/cam/cam_queue.h	Mon Apr  1 16:26:20 2013	(r248978)
@@ -243,12 +243,5 @@ cam_ccbq_release_opening(struct cam_ccbq
 	ccbq->devq_openings++;
 }
 
-static __inline u_int32_t
-cam_ccbq_frozen(struct cam_ccbq *ccbq)
-{
-
-	return (ccbq->queue.qfrozen_cnt);
-}
-
 #endif /* _KERNEL */
 #endif  /* _CAM_CAM_QUEUE_H */

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 16:23:34 2013	(r248977)
+++ projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 16:26:20 2013	(r248978)
@@ -306,7 +306,7 @@ xpt_schedule_dev_sendq(struct cam_eb *bu
 
 	if ((dev->ccbq.queue.entries > 0) &&
 	    (dev->ccbq.dev_openings > 0) &&
-	    (cam_ccbq_frozen(&dev->ccbq) == 0)) {
+	    (dev->ccbq.queue.qfrozen_cnt == 0)) {
 		/*
 		 * The priority of a device waiting for controller
 		 * resources is that of the highest priority CCB
@@ -3156,7 +3156,7 @@ xpt_run_dev_allocq(struct cam_ed *device
 	while ((drvq->entries > 0) &&
 	    (device->ccbq.devq_openings > 0 ||
 	     CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB) &&
-	    (cam_ccbq_frozen(&device->ccbq) == 0)) {
+	    (device->ccbq.queue.qfrozen_cnt == 0)) {
 		union	ccb *work_ccb;
 		struct	cam_periph *drv;
 
@@ -4156,9 +4156,7 @@ xpt_release_devq_device(struct cam_ed *d
 		count = dev->ccbq.queue.qfrozen_cnt;
 	}
 	dev->ccbq.queue.qfrozen_cnt -= count;
-	if (cam_ccbq_frozen(&dev->ccbq) == 0)
-		xpt_run_dev_allocq(dev);
-	if (cam_ccbq_frozen(&dev->ccbq) == 0) {
+	if (dev->ccbq.queue.qfrozen_cnt == 0) {
 		/*
 		 * No longer need to wait for a successful
 		 * command completion.
@@ -4172,6 +4170,7 @@ xpt_release_devq_device(struct cam_ed *d
 			callout_stop(&dev->callout);
 			dev->flags &= ~CAM_DEV_REL_TIMEOUT_PENDING;
 		}
+		xpt_run_dev_allocq(dev);
 		if (run_queue == 0)
 			return;
 		/*

From owner-svn-src-projects@FreeBSD.ORG  Mon Apr  1 17:32:52 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id D2F4426E;
 Mon,  1 Apr 2013 17:32:52 +0000 (UTC)
 (envelope-from neel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id AE1E6643;
 Mon,  1 Apr 2013 17:32:52 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31HWqW2049474;
 Mon, 1 Apr 2013 17:32:52 GMT (envelope-from neel@svn.freebsd.org)
Received: (from neel@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31HWqDh049473;
 Mon, 1 Apr 2013 17:32:52 GMT (envelope-from neel@svn.freebsd.org)
Message-Id: <201304011732.r31HWqDh049473@svn.freebsd.org>
From: Neel Natu <neel@FreeBSD.org>
Date: Mon, 1 Apr 2013 17:32:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248981 - projects/bhyve_svm
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 01 Apr 2013 17:32:52 -0000

Author: neel
Date: Mon Apr  1 17:32:52 2013
New Revision: 248981
URL: http://svnweb.freebsd.org/changeset/base/248981

Log:
  Create projects branch for AMD/SVM support in bhyve.

Added:
     - copied from r248980, head/
Directory Properties:
  projects/bhyve_svm/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Mon Apr  1 19:11:49 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 3A5F25AC;
 Mon,  1 Apr 2013 19:11:49 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 2A6BEA83;
 Mon,  1 Apr 2013 19:11:49 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r31JBncC078476;
 Mon, 1 Apr 2013 19:11:49 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r31JBiSE078444;
 Mon, 1 Apr 2013 19:11:44 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304011911.r31JBiSE078444@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Mon, 1 Apr 2013 19:11:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248982 - in projects/camlock/sys: cam cam/ata cam/ctl
 cam/scsi dev/aac dev/arcmsr dev/ata dev/ciss dev/firewire dev/hpt27xx
 dev/hptiop dev/hptrr dev/isci dev/iscsi/initiator dev/isp de...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 01 Apr 2013 19:11:49 -0000

Author: mav
Date: Mon Apr  1 19:11:43 2013
New Revision: 248982
URL: http://svnweb.freebsd.org/changeset/base/248982

Log:
  Stop abusing xpt_periph in random plases that really have no periph related
  to CCB, for example, bus scanning.  NULL value is fine in such cases and it
  is correctly logged in debug messages as "noperiph".  If at some point we
  need some real XPT periphs (alike to pmpX now), quite likely they will be
  per-bus, and not a single global instance as xpt_periph now.

Modified:
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/camlock/sys/cam/scsi/scsi_xpt.c
  projects/camlock/sys/dev/aac/aac_cam.c
  projects/camlock/sys/dev/arcmsr/arcmsr.c
  projects/camlock/sys/dev/ata/atapi-cam.c
  projects/camlock/sys/dev/ciss/ciss.c
  projects/camlock/sys/dev/firewire/sbp.c
  projects/camlock/sys/dev/hpt27xx/osm_bsd.c
  projects/camlock/sys/dev/hptiop/hptiop.c
  projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c
  projects/camlock/sys/dev/isci/isci_controller.c
  projects/camlock/sys/dev/isci/isci_domain.c
  projects/camlock/sys/dev/isci/isci_remote_device.c
  projects/camlock/sys/dev/iscsi/initiator/isc_cam.c
  projects/camlock/sys/dev/isp/isp_freebsd.c
  projects/camlock/sys/dev/mfi/mfi_cam.c
  projects/camlock/sys/dev/mly/mly.c
  projects/camlock/sys/dev/mps/mps_sas.c
  projects/camlock/sys/dev/mpt/mpt_cam.c
  projects/camlock/sys/dev/mpt/mpt_raid.c
  projects/camlock/sys/dev/twa/tw_osl_cam.c
  projects/camlock/sys/dev/tws/tws_cam.c
  projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1413,7 +1413,7 @@ done:
 		scan_info->counter = (scan_info->counter + 1 ) %
 		    (scan_info->cpi->max_target + 1);
 scan_next:
-		status = xpt_create_path(&path, xpt_periph,
+		status = xpt_create_path(&path, NULL,
 		    scan_info->request_ccb->ccb_h.path_id,
 		    scan_info->counter, 0);
 		if (status != CAM_REQ_CMP) {
@@ -1471,7 +1471,7 @@ ata_scan_lun(struct cam_periph *periph, 
 			    "can't continue\n");
 			return;
 		}
-		status = xpt_create_path(&new_path, xpt_periph,
+		status = xpt_create_path(&new_path, NULL,
 					  path->bus->path_id,
 					  path->target->target_id,
 					  path->device->lun_id);

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/cam/cam_xpt.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -458,7 +458,7 @@ xptioctl(struct cdev *dev, u_long cmd, c
 			 * Create a path using the bus, target, and lun the
 			 * user passed in.
 			 */
-			if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			if (xpt_create_path(&ccb->ccb_h.path, NULL,
 					    inccb->ccb_h.path_id,
 					    inccb->ccb_h.target_id,
 					    inccb->ccb_h.target_lun) !=
@@ -494,7 +494,7 @@ xptioctl(struct cdev *dev, u_long cmd, c
 			 * Create a path using the bus, target, and lun the
 			 * user passed in.
 			 */
-			if (xpt_create_path(&ccb.ccb_h.path, xpt_periph,
+			if (xpt_create_path(&ccb.ccb_h.path, NULL,
 					    inccb->ccb_h.path_id,
 					    inccb->ccb_h.target_id,
 					    inccb->ccb_h.target_lun) !=
@@ -2956,7 +2956,7 @@ xpt_action_default(union ccb *start_ccb)
 			CAM_SIM_LOCK(xpt_path_sim(start_ccb->ccb_h.path));
 		}
 		if (start_ccb->cdbg.flags != CAM_DEBUG_NONE) {
-			if (xpt_create_path(&cam_dpath, xpt_periph,
+			if (xpt_create_path(&cam_dpath, NULL,
 					    start_ccb->ccb_h.path_id,
 					    start_ccb->ccb_h.target_id,
 					    start_ccb->ccb_h.target_lun) !=
@@ -4669,7 +4669,7 @@ xpt_config(void *arg)
 
 	/* Setup debugging path */
 	if (cam_dflags != CAM_DEBUG_NONE) {
-		if (xpt_create_path_unlocked(&cam_dpath, xpt_periph,
+		if (xpt_create_path_unlocked(&cam_dpath, NULL,
 				    CAM_DEBUG_BUS, CAM_DEBUG_TARGET,
 				    CAM_DEBUG_LUN) != CAM_REQ_CMP) {
 			printf("xpt_config: xpt_create_path() failed for debug"

Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -291,7 +291,7 @@ cfcs_onoffline(void *arg, int online)
 		goto bailout;
 	}
 
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+	if (xpt_create_path(&ccb->ccb_h.path, NULL,
 			    cam_sim_path(softc->sim), CAM_TARGET_WILDCARD,
 			    CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		printf("%s: can't allocate path for rescan\n", __func__);

Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- projects/camlock/sys/cam/scsi/scsi_xpt.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/cam/scsi/scsi_xpt.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1953,7 +1953,7 @@ scsi_scan_bus(struct cam_periph *periph,
 			if (i == initiator_id)
 				continue;
 
-			status = xpt_create_path(&path, xpt_periph,
+			status = xpt_create_path(&path, NULL,
 						 request_ccb->ccb_h.path_id,
 						 i, 0);
 			if (status != CAM_REQ_CMP) {
@@ -2154,7 +2154,7 @@ scsi_scan_bus(struct cam_periph *periph,
 				xpt_free_ccb(request_ccb);
 				break;
 			}
-			status = xpt_create_path(&path, xpt_periph,
+			status = xpt_create_path(&path, NULL,
 			    scan_info->request_ccb->ccb_h.path_id,
 			    scan_info->counter, 0);
 			if (status != CAM_REQ_CMP) {
@@ -2177,7 +2177,7 @@ scsi_scan_bus(struct cam_periph *periph,
 			request_ccb->crcn.flags =
 			    scan_info->request_ccb->crcn.flags;
 		} else {
-			status = xpt_create_path(&path, xpt_periph,
+			status = xpt_create_path(&path, NULL,
 						 path_id, target_id, lun_id);
 			/*
 			 * Free the old request path- we're done with it. We
@@ -2250,7 +2250,7 @@ scsi_scan_lun(struct cam_periph *periph,
 			    "can't continue\n");
 			return;
 		}
-		status = xpt_create_path(&new_path, xpt_periph,
+		status = xpt_create_path(&new_path, NULL,
 					  path->bus->path_id,
 					  path->target->target_id,
 					  path->device->lun_id);

Modified: projects/camlock/sys/dev/aac/aac_cam.c
==============================================================================
--- projects/camlock/sys/dev/aac/aac_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/aac/aac_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -129,7 +129,7 @@ aac_cam_rescan(struct aac_softc *sc, uin
 			return;
 		}
 
-		if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+		if (xpt_create_path(&ccb->ccb_h.path, NULL,
 		    cam_sim_path(camsc->sim),
 		    target_id, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 			xpt_free_ccb(ccb);

Modified: projects/camlock/sys/dev/arcmsr/arcmsr.c
==============================================================================
--- projects/camlock/sys/dev/arcmsr/arcmsr.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/arcmsr/arcmsr.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1599,7 +1599,8 @@ static void	arcmsr_rescan_lun(struct Ada
 
 	if ((ccb = (union ccb *)xpt_alloc_ccb_nowait()) == NULL)
  		return;
-	if (xpt_create_path(&path, xpt_periph, cam_sim_path(acb->psim), target, lun) != CAM_REQ_CMP)
+	if (xpt_create_path(&path, NULL, cam_sim_path(acb->psim), target, lun)
+	    != CAM_REQ_CMP)
 	{
 		xpt_free_ccb(ccb);
 		return;

Modified: projects/camlock/sys/dev/ata/atapi-cam.c
==============================================================================
--- projects/camlock/sys/dev/ata/atapi-cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/ata/atapi-cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -825,7 +825,7 @@ cam_rescan(struct cam_sim *sim)
     ccb = xpt_alloc_ccb_nowait();
     if (ccb == NULL)
 	return;
-    if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim),
+    if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sim),
 			CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 	xpt_free_ccb(ccb);
 	return;

Modified: projects/camlock/sys/dev/ciss/ciss.c
==============================================================================
--- projects/camlock/sys/dev/ciss/ciss.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/ciss/ciss.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -2913,7 +2913,7 @@ ciss_cam_rescan_target(struct ciss_softc
 	return;
     }
 
-    if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+    if (xpt_create_path(&ccb->ccb_h.path, NULL,
 	    cam_sim_path(sc->ciss_cam_sim[bus]),
 	    target, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 	ciss_printf(sc, "rescan failed (can't create path)\n");

Modified: projects/camlock/sys/dev/firewire/sbp.c
==============================================================================
--- projects/camlock/sys/dev/firewire/sbp.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/firewire/sbp.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1086,7 +1086,7 @@ END_DEBUG
 	sbp_xfer_free(xfer);
 
 	if (sdev->path == NULL)
-		xpt_create_path(&sdev->path, xpt_periph,
+		xpt_create_path(&sdev->path, NULL,
 			cam_sim_path(target->sbp->sim),
 			target->target_id, sdev->lun_id);
 
@@ -2039,7 +2039,7 @@ END_DEBUG
 	if (xpt_bus_register(sbp->sim, dev, /*bus*/0) != CAM_SUCCESS)
 		goto fail;
 
-	if (xpt_create_path(&sbp->path, xpt_periph, cam_sim_path(sbp->sim),
+	if (xpt_create_path(&sbp->path, NULL, cam_sim_path(sbp->sim),
 	    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		xpt_bus_deregister(cam_sim_path(sbp->sim));
 		goto fail;

Modified: projects/camlock/sys/dev/hpt27xx/osm_bsd.c
==============================================================================
--- projects/camlock/sys/dev/hpt27xx/osm_bsd.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/hpt27xx/osm_bsd.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1347,7 +1347,7 @@ static int	hpt_rescan_bus(void)
 #endif
 
 	ldm_for_each_vbus(vbus, vbus_ext) {
-		if (xpt_create_path(&path, xpt_periph, cam_sim_path(vbus_ext->sim),
+		if (xpt_create_path(&path, NULL, cam_sim_path(vbus_ext->sim),
 			CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP)	
 			return(EIO);
 		if ((ccb = malloc(sizeof(union ccb), M_TEMP, M_WAITOK)) == NULL)

Modified: projects/camlock/sys/dev/hptiop/hptiop.c
==============================================================================
--- projects/camlock/sys/dev/hptiop/hptiop.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/hptiop/hptiop.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1437,7 +1437,7 @@ static int  hptiop_rescan_bus(struct hpt
 
 	if ((ccb = xpt_alloc_ccb()) == NULL)
 		return(ENOMEM);
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(hba->sim),
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(hba->sim),
 		CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		xpt_free_ccb(ccb);
 		return(EIO);

Modified: projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c
==============================================================================
--- projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/hptrr/hptrr_osm_bsd.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1355,7 +1355,7 @@ static int	hpt_rescan_bus(void)
 	ldm_for_each_vbus(vbus, vbus_ext) {
 		if ((ccb = xpt_alloc_ccb()) == NULL)
 			return(ENOMEM);
-		if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+		if (xpt_create_path(&ccb->ccb_h.path, NULL,
 		    cam_sim_path(vbus_ext->sim),
 		    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 			xpt_free_ccb(ccb);

Modified: projects/camlock/sys/dev/isci/isci_controller.c
==============================================================================
--- projects/camlock/sys/dev/isci/isci_controller.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/isci/isci_controller.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -580,7 +580,7 @@ void isci_controller_domain_discovery_co
 			 */
 			union ccb *ccb = xpt_alloc_ccb_nowait();
 
-			xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			xpt_create_path(&ccb->ccb_h.path, NULL,
 			    cam_sim_path(isci_controller->sim),
 			    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD);
 

Modified: projects/camlock/sys/dev/isci/isci_domain.c
==============================================================================
--- projects/camlock/sys/dev/isci/isci_domain.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/isci/isci_domain.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -300,7 +300,7 @@ scif_cb_domain_device_removed(SCI_CONTRO
 
 	isci_controller->remote_device[isci_remote_device->index] = NULL;
 
-	xpt_create_path(&ccb->ccb_h.path, xpt_periph, path,
+	xpt_create_path(&ccb->ccb_h.path, NULL, path,
 	    isci_remote_device->index, CAM_LUN_WILDCARD);
 
 	xpt_rescan(ccb);

Modified: projects/camlock/sys/dev/isci/isci_remote_device.c
==============================================================================
--- projects/camlock/sys/dev/isci/isci_remote_device.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/isci/isci_remote_device.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -83,7 +83,7 @@ scif_cb_remote_device_ready(SCI_CONTROLL
 			 */
 			union ccb *ccb = xpt_alloc_ccb_nowait();
 
-			xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			xpt_create_path(&ccb->ccb_h.path, NULL,
 			    cam_sim_path(isci_controller->sim),
 			    isci_remote_device->index, CAM_LUN_WILDCARD);
 
@@ -262,7 +262,7 @@ isci_remote_device_freeze_lun_queue(stru
 	if (!(remote_device->frozen_lun_mask & (1 << lun))) {
 		struct cam_path *path;
 
-		xpt_create_path(&path, xpt_periph,
+		xpt_create_path(&path, NULL,
 		    cam_sim_path(remote_device->domain->controller->sim),
 		    remote_device->index, lun);
 		xpt_freeze_devq(path, 1);
@@ -279,7 +279,7 @@ isci_remote_device_release_lun_queue(str
 		struct cam_path *path;
 
 		remote_device->frozen_lun_mask &= ~(1 << lun);
-		xpt_create_path(&path, xpt_periph,
+		xpt_create_path(&path, NULL,
 		    cam_sim_path(remote_device->domain->controller->sim),
 		    remote_device->index, lun);
 		xpt_release_devq(path, 1, TRUE);

Modified: projects/camlock/sys/dev/iscsi/initiator/isc_cam.c
==============================================================================
--- projects/camlock/sys/dev/iscsi/initiator/isc_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/iscsi/initiator/isc_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -150,7 +150,7 @@ ic_scan(isc_session_t *sp)
      sp->flags |= ISC_SCANWAIT;
 
      CAM_LOCK(sp);
-     if(xpt_create_path(&sp->cam_path, xpt_periph, cam_sim_path(sp->cam_sim),
+     if(xpt_create_path(&sp->cam_path, NULL, cam_sim_path(sp->cam_sim),
 			0, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 	  xdebug("can't create cam path");
 	  CAM_UNLOCK(sp);

Modified: projects/camlock/sys/dev/isp/isp_freebsd.c
==============================================================================
--- projects/camlock/sys/dev/isp/isp_freebsd.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/isp/isp_freebsd.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -4554,7 +4554,8 @@ isp_make_here(ispsoftc_t *isp, int chan,
 		isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan);
 		return;
 	}
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(fc->sim),
+	    tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan");
 		xpt_free_ccb(ccb);
 		return;

Modified: projects/camlock/sys/dev/mfi/mfi_cam.c
==============================================================================
--- projects/camlock/sys/dev/mfi/mfi_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/mfi/mfi_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -318,7 +318,7 @@ mfip_cam_rescan(struct mfi_softc *sc, ui
 	}
 
 	sim = camsc->sim;
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim),
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sim),
 	    tid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		xpt_free_ccb(ccb);
 		device_printf(sc->mfi_dev,

Modified: projects/camlock/sys/dev/mly/mly.c
==============================================================================
--- projects/camlock/sys/dev/mly/mly.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/mly/mly.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -2025,7 +2025,7 @@ mly_cam_rescan_btl(struct mly_softc *sc,
 	mly_printf(sc, "rescan failed (can't allocate CCB)\n");
 	return;
     }
-    if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, 
+    if (xpt_create_path(&ccb->ccb_h.path, NULL,
 	    cam_sim_path(sc->mly_cam_sim[bus]), target, 0) != CAM_REQ_CMP) {
 	mly_printf(sc, "rescan failed (can't create path)\n");
 	xpt_free_ccb(ccb);

Modified: projects/camlock/sys/dev/mps/mps_sas.c
==============================================================================
--- projects/camlock/sys/dev/mps/mps_sas.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/mps/mps_sas.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -271,7 +271,7 @@ mpssas_rescan_target(struct mps_softc *s
 		return;
 	}
 
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid,
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid,
 		            targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		mps_dprint(sc, MPS_FAULT, "unable to create path for rescan\n");
 		xpt_free_ccb(ccb);
@@ -3318,7 +3318,7 @@ mpssas_check_eedp(struct mpssas_softc *s
 				return;
 			}
 
-			if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			if (xpt_create_path(&ccb->ccb_h.path, NULL,
 			    pathid, targetid, lunid) != CAM_REQ_CMP) {
 				mps_dprint(sc, MPS_FAULT, "Unable to create "
 				    "path for EEDP support\n");

Modified: projects/camlock/sys/dev/mpt/mpt_cam.c
==============================================================================
--- projects/camlock/sys/dev/mpt/mpt_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/mpt/mpt_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -2364,7 +2364,7 @@ mpt_cam_event(struct mpt_softc *mpt, req
 			break;
 		}
 
-		if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid,
+		if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid,
 		    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 			mpt_prt(mpt, "unable to create path for rescan\n");
 			xpt_free_ccb(ccb);
@@ -2512,7 +2512,7 @@ mpt_cam_event(struct mpt_softc *mpt, req
 				    "unable to alloc CCB for rescan\n");
 				break;
 			}
-			if (xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			if (xpt_create_path(&ccb->ccb_h.path, NULL,
 			    cam_sim_path(sim), psdsc->TargetID,
 			    CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 				mpt_prt(mpt,

Modified: projects/camlock/sys/dev/mpt/mpt_raid.c
==============================================================================
--- projects/camlock/sys/dev/mpt/mpt_raid.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/mpt/mpt_raid.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -705,7 +705,7 @@ mpt_raid_thread(void *arg)
 			ccb = xpt_alloc_ccb();
 
 			MPT_LOCK(mpt);
-			error = xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+			error = xpt_create_path(&ccb->ccb_h.path, NULL,
 			    cam_sim_path(mpt->phydisk_sim),
 			    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD);
 			if (error != CAM_REQ_CMP) {
@@ -1662,7 +1662,7 @@ mpt_raid_set_vol_queue_depth(struct mpt_
 
 		mpt->raid_rescan = 0;
 
-		error = xpt_create_path(&path, xpt_periph,
+		error = xpt_create_path(&path, NULL,
 					cam_sim_path(mpt->sim),
 					mpt_vol->config_page->VolumeID,
 					/*lun*/0);

Modified: projects/camlock/sys/dev/twa/tw_osl_cam.c
==============================================================================
--- projects/camlock/sys/dev/twa/tw_osl_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/twa/tw_osl_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -488,7 +488,7 @@ tw_osli_request_bus_scan(struct twa_soft
 	if ((ccb = xpt_alloc_ccb()) == NULL)
 		return(ENOMEM);
 	mtx_lock(sc->sim_lock);
-	if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim),
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim),
 	    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		xpt_free_ccb(ccb);
 		mtx_unlock(sc->sim_lock);

Modified: projects/camlock/sys/dev/tws/tws_cam.c
==============================================================================
--- projects/camlock/sys/dev/tws/tws_cam.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/tws/tws_cam.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -221,7 +221,7 @@ tws_bus_scan(struct tws_softc *sc)
     if ((ccb = xpt_alloc_ccb()) == NULL)
 		    return(ENOMEM);
 
-    if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim),
+    if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim),
                   CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
         xpt_free_ccb(ccb);
         return(EIO);

Modified: projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c
==============================================================================
--- projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c	Mon Apr  1 17:32:52 2013	(r248981)
+++ projects/camlock/sys/dev/virtio/scsi/virtio_scsi.c	Mon Apr  1 19:11:43 2013	(r248982)
@@ -1702,7 +1702,7 @@ vtscsi_execute_rescan(struct vtscsi_soft
 		return;
 	}
 
-	status = xpt_create_path(&ccb->ccb_h.path, xpt_periph,
+	status = xpt_create_path(&ccb->ccb_h.path, NULL,
 	    cam_sim_path(sc->vtscsi_sim), target_id, lun_id);
 	if (status != CAM_REQ_CMP) {
 		xpt_free_ccb(ccb);

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 04:12:17 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id AEF44BC4;
 Tue,  2 Apr 2013 04:12:17 +0000 (UTC)
 (envelope-from cherry@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id A0DED65A;
 Tue,  2 Apr 2013 04:12:17 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r324CHhv038577;
 Tue, 2 Apr 2013 04:12:17 GMT (envelope-from cherry@svn.freebsd.org)
Received: (from cherry@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r324CH8C038576;
 Tue, 2 Apr 2013 04:12:17 GMT (envelope-from cherry@svn.freebsd.org)
Message-Id: <201304020412.r324CH8C038576@svn.freebsd.org>
From: "Cherry G. Mathew" <cherry@FreeBSD.org>
Date: Tue, 2 Apr 2013 04:12:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r248994 - projects/amd64_xen_pv/sys/xen/xenbus
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 04:12:17 -0000

Author: cherry
Date: Tue Apr  2 04:12:17 2013
New Revision: 248994
URL: http://svnweb.freebsd.org/changeset/base/248994

Log:
  Revert r248952
  This was a configuration error rather than a programming bug.
  
  Reviewed and Pointed out by: gibbs@

Modified:
  projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c

Modified: projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c
==============================================================================
--- projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c	Tue Apr  2 00:57:54 2013	(r248993)
+++ projects/amd64_xen_pv/sys/xen/xenbus/xenbusb.c	Tue Apr  2 04:12:17 2013	(r248994)
@@ -594,7 +594,8 @@ xenbusb_release_confighook(struct xenbus
 	KASSERT(xbs->xbs_connecting_children > 0,
 		("Connecting device count error\n"));
 	xbs->xbs_connecting_children--;
-	if ((xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) {
+	if (xbs->xbs_connecting_children == 0
+         && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) {
 		xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE;
 		mtx_unlock(&xbs->xbs_lock);
 		config_intrhook_disestablish(&xbs->xbs_attach_ch);

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 06:48:30 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 28BC1A3F;
 Tue,  2 Apr 2013 06:48:30 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 1AC8FB38;
 Tue,  2 Apr 2013 06:48:30 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r326mT63083982;
 Tue, 2 Apr 2013 06:48:29 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r326mTwN083981;
 Tue, 2 Apr 2013 06:48:29 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304020648.r326mTwN083981@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 06:48:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249001 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 06:48:30 -0000

Author: mav
Date: Tue Apr  2 06:48:29 2013
New Revision: 249001
URL: http://svnweb.freebsd.org/changeset/base/249001

Log:
  - Since we no longer have device allocq, rename *_dev_sendq() to *_devq().
  - *_devq() functions are really operating on device queues that may be used
  for several buses, not on a single bus; change arguments respectively.

Modified:
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 06:25:10 2013	(r249000)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 06:48:29 2013	(r249001)
@@ -224,7 +224,7 @@ static path_id_t xptnextfreepathid(void)
 static path_id_t xptpathid(const char *sim_name, int sim_unit, int sim_bus);
 static union ccb *xpt_get_ccb(struct cam_ed *device);
 static void	 xpt_run_dev_allocq(struct cam_ed *device);
-static void	 xpt_run_dev_sendq(struct cam_eb *bus);
+static void	 xpt_run_devq(struct cam_devq *devq);
 static timeout_t xpt_release_devq_timeout;
 static void	 xpt_release_simq_timeout(void *arg) __unused;
 static void	 xpt_release_bus(struct cam_eb *bus);
@@ -300,7 +300,7 @@ static __inline int device_is_alloc_queu
 static __inline int device_is_send_queued(struct cam_ed *device);
 
 static __inline int
-xpt_schedule_dev_sendq(struct cam_eb *bus, struct cam_ed *dev)
+xpt_schedule_devq(struct cam_devq *devq, struct cam_ed *dev)
 {
 	int	retval;
 
@@ -313,7 +313,7 @@ xpt_schedule_dev_sendq(struct cam_eb *bu
 		 * enqueued.
 		 */
 		retval =
-		    xpt_schedule_dev(&bus->sim->devq->send_queue,
+		    xpt_schedule_dev(&devq->send_queue,
 				     &dev->send_ccb_entry.pinfo,
 				     CAMQ_GET_PRIO(&dev->ccbq.queue));
 	} else {
@@ -2494,8 +2494,8 @@ xpt_action_default(union ccb *start_ccb)
 		frozen = cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb);
 		if (frozen > 0)
 			xpt_run_dev_allocq(path->device);
-		if (xpt_schedule_dev_sendq(path->bus, path->device))
-			xpt_run_dev_sendq(path->bus);
+		if (xpt_schedule_devq(path->bus->sim->devq, path->device))
+			xpt_run_devq(path->bus->sim->devq);
 		break;
 	}
 	case XPT_CALC_GEOMETRY:
@@ -3186,14 +3186,11 @@ xpt_run_dev_allocq(struct cam_ed *device
 }
 
 static void
-xpt_run_dev_sendq(struct cam_eb *bus)
+xpt_run_devq(struct cam_devq *devq)
 {
-	struct	cam_devq *devq;
 	char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1];
 
-	CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_dev_sendq\n"));
-
-	devq = bus->sim->devq;
+	CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_devq\n"));
 
 	devq->send_queue.qfrozen_cnt++;
 	while ((devq->send_queue.entries > 0)
@@ -3248,7 +3245,7 @@ xpt_run_dev_sendq(struct cam_eb *bus)
 		devq->send_openings--;
 		devq->send_active++;
 
-		xpt_schedule_dev_sendq(bus, device);
+		xpt_schedule_devq(devq, device);
 
 		if (work_ccb && (work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0){
 			/*
@@ -4178,8 +4175,8 @@ xpt_release_devq_device(struct cam_ed *d
 		 * device so any pending transactions are
 		 * run.
 		 */
-		if (xpt_schedule_dev_sendq(dev->target->bus, dev))
-			xpt_run_dev_sendq(dev->target->bus);
+		if (xpt_schedule_devq(dev->sim->devq, dev))
+			xpt_run_devq(dev->sim->devq);
 	}
 }
 
@@ -4208,14 +4205,10 @@ xpt_release_simq(struct cam_sim *sim, in
 			sim->flags &= ~CAM_SIM_REL_TIMEOUT_PENDING;
 		}
 		if (run_queue) {
-			struct cam_eb *bus;
-
 			/*
 			 * Now that we are unfrozen run the send queue.
 			 */
-			bus = xpt_find_bus(sim->path_id);
-			xpt_run_dev_sendq(bus);
-			xpt_release_bus(bus);
+			xpt_run_devq(sim->devq);
 		}
 	}
 }
@@ -4973,8 +4966,8 @@ camisr_runqueue(void *V_queue)
 			 && (--dev->tag_delay_count == 0))
 				xpt_start_tags(ccb_h->path);
 			if (!device_is_send_queued(dev)) {
-				(void)xpt_schedule_dev_sendq(ccb_h->path->bus, 
-							     dev);
+				(void)xpt_schedule_devq(
+				    ccb_h->path->bus->sim->devq, dev);
 			}
 		}
 
@@ -4991,7 +4984,7 @@ camisr_runqueue(void *V_queue)
 					 /*run_queue*/TRUE);
 			ccb_h->status &= ~CAM_DEV_QFRZN;
 		} else if (runq) {
-			xpt_run_dev_sendq(ccb_h->path->bus);
+			xpt_run_devq(ccb_h->path->bus->sim->devq);
 		}
 
 		/* Call the peripheral driver's callback */

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 07:28:19 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id A7D3BF08;
 Tue,  2 Apr 2013 07:28:19 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 96522CFE;
 Tue,  2 Apr 2013 07:28:19 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r327SJhN096005;
 Tue, 2 Apr 2013 07:28:19 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r327SEQh095972;
 Tue, 2 Apr 2013 07:28:14 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304020728.r327SEQh095972@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 07:28:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249003 - in projects/camlock: . bin/setfacl bin/sh
 cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace
 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt
 cddl/contrib/opensolari...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 07:28:19 -0000

Author: mav
Date: Tue Apr  2 07:28:14 2013
New Revision: 249003
URL: http://svnweb.freebsd.org/changeset/base/249003

Log:
  MFC @r249002

Added:
  projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh
     - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh
  projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh
     - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh
  projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh
     - copied unchanged from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh
Modified:
  projects/camlock/Makefile
  projects/camlock/Makefile.inc1
  projects/camlock/bin/setfacl/setfacl.1
  projects/camlock/bin/sh/exec.c
  projects/camlock/bin/sh/expand.c
  projects/camlock/bin/sh/input.c
  projects/camlock/bin/sh/input.h
  projects/camlock/bin/sh/jobs.c
  projects/camlock/bin/sh/main.c
  projects/camlock/bin/sh/memalloc.c
  projects/camlock/bin/sh/memalloc.h
  projects/camlock/bin/sh/parser.c
  projects/camlock/bin/sh/parser.h
  projects/camlock/bin/sh/trap.c
  projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst
  projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c
  projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c
  projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c
  projects/camlock/crypto/openssh/umac128.c
  projects/camlock/etc/mtree/BSD.usr.dist
  projects/camlock/lib/libc/gen/wordexp.c
  projects/camlock/lib/libc/sys/extattr_get_file.2
  projects/camlock/sys/amd64/vmm/intel/vmx.c
  projects/camlock/sys/amd64/vmm/io/vlapic.c
  projects/camlock/sys/amd64/vmm/vmm_stat.c
  projects/camlock/sys/amd64/vmm/vmm_stat.h
  projects/camlock/sys/arm/arm/locore.S
  projects/camlock/sys/arm/at91/at91rm9200.c
  projects/camlock/sys/arm/at91/uart_dev_at91usart.c
  projects/camlock/sys/arm/s3c2xx0/uart_dev_s3c2410.c
  projects/camlock/sys/arm/sa11x0/uart_dev_sa1110.c
  projects/camlock/sys/boot/arm/uboot/start.S
  projects/camlock/sys/boot/fdt/fdt_loader_cmd.c
  projects/camlock/sys/cam/scsi/scsi_all.c
  projects/camlock/sys/cam/scsi/scsi_all.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h
  projects/camlock/sys/compat/freebsd32/freebsd32_proto.h
  projects/camlock/sys/compat/freebsd32/freebsd32_syscall.h
  projects/camlock/sys/compat/freebsd32/freebsd32_syscalls.c
  projects/camlock/sys/compat/freebsd32/freebsd32_sysent.c
  projects/camlock/sys/compat/freebsd32/freebsd32_systrace_args.c
  projects/camlock/sys/compat/freebsd32/syscalls.master
  projects/camlock/sys/compat/linux/linux_file.c
  projects/camlock/sys/conf/NOTES
  projects/camlock/sys/dev/ath/if_ath.c
  projects/camlock/sys/dev/ath/if_ath_misc.h
  projects/camlock/sys/dev/ath/if_ath_rx.c
  projects/camlock/sys/dev/ath/if_ath_rx_edma.c
  projects/camlock/sys/dev/ath/if_ath_tx.c
  projects/camlock/sys/dev/bge/if_bge.c
  projects/camlock/sys/dev/nvd/nvd.c
  projects/camlock/sys/dev/nvme/nvme.h
  projects/camlock/sys/dev/nvme/nvme_ns.c
  projects/camlock/sys/dev/nvme/nvme_ns_cmd.c
  projects/camlock/sys/dev/nvme/nvme_private.h
  projects/camlock/sys/dev/nvme/nvme_qpair.c
  projects/camlock/sys/dev/tws/tws_cam.c
  projects/camlock/sys/dev/tws/tws_user.c
  projects/camlock/sys/dev/uart/uart_core.c
  projects/camlock/sys/dev/uart/uart_dev_imx.c
  projects/camlock/sys/dev/uart/uart_dev_pl011.c
  projects/camlock/sys/dev/uart/uart_dev_quicc.c
  projects/camlock/sys/dev/uart/uart_dev_sab82532.c
  projects/camlock/sys/dev/uart/uart_dev_z8530.c
  projects/camlock/sys/fs/nfsclient/nfs_clbio.c
  projects/camlock/sys/kern/init_sysent.c
  projects/camlock/sys/kern/sys_pipe.c
  projects/camlock/sys/kern/syscalls.c
  projects/camlock/sys/kern/syscalls.master
  projects/camlock/sys/kern/systrace_args.c
  projects/camlock/sys/kern/vfs_extattr.c
  projects/camlock/sys/kern/vfs_lookup.c
  projects/camlock/sys/kern/vfs_vnops.c
  projects/camlock/sys/mips/adm5120/uart_dev_adm5120.c
  projects/camlock/sys/mips/rt305x/uart_dev_rt305x.c
  projects/camlock/sys/modules/dtrace/dtrace/Makefile
  projects/camlock/sys/netinet/sctp_constants.h
  projects/camlock/sys/netpfil/ipfw/ip_fw_sockopt.c
  projects/camlock/sys/sparc64/pci/sbbc.c
  projects/camlock/sys/sys/extattr.h
  projects/camlock/sys/sys/socket.h
  projects/camlock/sys/sys/syscall.h
  projects/camlock/sys/sys/syscall.mk
  projects/camlock/sys/sys/syscallsubr.h
  projects/camlock/sys/sys/sysproto.h
  projects/camlock/sys/x86/x86/busdma_machdep.c
  projects/camlock/tools/regression/lib/libc/gen/test-wordexp.c
  projects/camlock/usr.sbin/bhyvectl/bhyvectl.c
  projects/camlock/usr.sbin/extattr/rmextattr.c
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/cddl/   (props changed)
  projects/camlock/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/contrib/libarchive/   (props changed)
  projects/camlock/contrib/libarchive/libarchive/   (props changed)
  projects/camlock/crypto/openssh/   (props changed)
  projects/camlock/lib/libc/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/amd64/vmm/   (props changed)
  projects/camlock/sys/boot/   (props changed)
  projects/camlock/sys/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/sys/conf/   (props changed)
  projects/camlock/usr.sbin/bhyvectl/   (props changed)

Modified: projects/camlock/Makefile
==============================================================================
--- projects/camlock/Makefile	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/Makefile	Tue Apr  2 07:28:14 2013	(r249003)
@@ -392,6 +392,14 @@ universe_${target}_${target_arch}: unive
 .endfor
 .endif
 .if !defined(MAKE_JUST_WORLDS)
+# If we are building world and kernels wait for the required worlds to finish
+.if !defined(MAKE_JUST_KERNELS)
+.for target_arch in ${TARGET_ARCHES_${target}}
+universe_${target}_kernels: universe_${target}_${target_arch}
+.endfor
+.endif
+universe_${target}: universe_${target}_kernels
+universe_${target}_kernels: universe_${target}_prologue
 .if exists(${KERNSRCDIR}/${target}/conf/NOTES)
 	@(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
 	    ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \

Modified: projects/camlock/Makefile.inc1
==============================================================================
--- projects/camlock/Makefile.inc1	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/Makefile.inc1	Tue Apr  2 07:28:14 2013	(r249003)
@@ -1743,13 +1743,15 @@ XDTP=/usr/${XDDIR}
 CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \
 	INSTALL="sh ${.CURDIR}/tools/install.sh"
 CDENV= ${CDBENV} \
-	_SHLIBDIRPREFIX=${XDTP} \
-	TOOLS_PREFIX=${XDTP}
-CD2ENV=${CDENV} \
+	_SHLIBDIRPREFIX=${XDDESTDIR} \
+	TOOLS_PREFIX=${XDDESTDIR}
+CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \
+	-B${XDDESTDIR}/usr/lib
+CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" \
 	MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH}
 
-CDTMP=	${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp
-CDMAKE=${CDENV} ${MAKE} ${NOFUN}
+CDTMP=	${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp
+CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
 CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
 XDDESTDIR=${DESTDIR}${XDTP}
 .if !defined(OSREL)
@@ -1759,8 +1761,24 @@ OSREL!= uname -r | sed -e 's/[-(].*//'
 .ORDER: xdev-build xdev-install
 xdev: xdev-build xdev-install
 
-.ORDER: _xb-build-tools _xb-cross-tools
-xdev-build: _xb-build-tools _xb-cross-tools
+.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
+xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
+
+_xb-worldtmp:
+	mkdir -p ${CDTMP}/usr
+	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
+	    -p ${CDTMP}/usr >/dev/null
+
+_xb-bootstrap-tools:
+.for _tool in \
+    ${_clang_tblgen}
+	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
+	cd ${.CURDIR}/${_tool}; \
+	${CDMAKE} DIRPRFX=${_tool}/ obj; \
+	${CDMAKE} DIRPRFX=${_tool}/ depend; \
+	${CDMAKE} DIRPRFX=${_tool}/ all; \
+	${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
+.endfor
 
 _xb-build-tools:
 	${_+_}@cd ${.CURDIR}; \
@@ -1770,7 +1788,9 @@ _xb-cross-tools:
 .for _tool in \
     gnu/usr.bin/binutils \
     gnu/usr.bin/cc \
-    usr.bin/ar
+    usr.bin/ar \
+    ${_clang_libs} \
+    ${_clang}
 	${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \
 	cd ${.CURDIR}/${_tool}; \
 	${CDMAKE} DIRPRFX=${_tool}/ obj; \
@@ -1796,7 +1816,8 @@ _xi-cross-tools:
 .for _tool in \
     gnu/usr.bin/binutils \
     gnu/usr.bin/cc \
-    usr.bin/ar
+    usr.bin/ar \
+    ${_clang}
 	${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
 	cd ${.CURDIR}/${_tool}; \
 	${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}

Modified: projects/camlock/bin/setfacl/setfacl.1
==============================================================================
--- projects/camlock/bin/setfacl/setfacl.1	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/setfacl/setfacl.1	Tue Apr  2 07:28:14 2013	(r249003)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 8, 2013
+.Dd April 1, 2013
 .Dt SETFACL 1
 .Os
 .Sh NAME
@@ -401,6 +401,10 @@ NFSv4 ACL entries are evaluated in their
 .Pp
 Multiple ACL entries specified on the command line are
 separated by commas.
+.Pp
+Note that the file owner is always granted the read_acl, write_acl,
+read_attributes, and write_attributes permissions, even if the ACL
+would deny it.
 .Sh EXIT STATUS
 .Ex -std
 .Sh EXAMPLES

Modified: projects/camlock/bin/sh/exec.c
==============================================================================
--- projects/camlock/bin/sh/exec.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/exec.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -165,7 +165,7 @@ tryexec(char *cmd, char **argv, char **e
 			}
 		}
 		*argv = cmd;
-		*--argv = _PATH_BSHELL;
+		*--argv = __DECONST(char *, _PATH_BSHELL);
 		execve(_PATH_BSHELL, argv, envp);
 	}
 	errno = e;
@@ -188,7 +188,7 @@ padvance(const char **path, const char *
 {
 	const char *p, *start;
 	char *q;
-	int len;
+	size_t len;
 
 	if (*path == NULL)
 		return NULL;

Modified: projects/camlock/bin/sh/expand.c
==============================================================================
--- projects/camlock/bin/sh/expand.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/expand.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -460,7 +460,7 @@ expbackq(union node *cmd, int quoted, in
 	int startloc = dest - stackblock();
 	char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
 	int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
-	int nnl;
+	size_t nnl;
 
 	INTOFF;
 	saveifs = ifsfirst;
@@ -1163,9 +1163,9 @@ nometa:
 static void
 expmeta(char *enddir, char *name)
 {
-	char *p;
-	char *q;
-	char *start;
+	const char *p;
+	const char *q;
+	const char *start;
 	char *endname;
 	int metaflag;
 	struct stat statb;
@@ -1229,7 +1229,7 @@ expmeta(char *enddir, char *name)
 			addfname(expdir);
 		return;
 	}
-	endname = p;
+	endname = name + (p - name);
 	if (start != name) {
 		p = name;
 		while (p < start) {
@@ -1412,7 +1412,8 @@ match_charclass(const char *p, wchar_t c
 	*end = NULL;
 	p++;
 	nameend = strstr(p, ":]");
-	if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p)
+	if (nameend == NULL || (size_t)(nameend - p) >= sizeof(name) ||
+	    nameend == p)
 		return 0;
 	memcpy(name, p, nameend - p);
 	name[nameend - p] = '\0';

Modified: projects/camlock/bin/sh/input.c
==============================================================================
--- projects/camlock/bin/sh/input.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/input.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$");
 
 struct strpush {
 	struct strpush *prev;	/* preceding string on stack */
-	char *prevstring;
+	const char *prevstring;
 	int prevnleft;
 	int prevlleft;
 	struct alias *ap;	/* if push was associated with an alias */
@@ -83,7 +83,7 @@ struct parsefile {
 	int fd;			/* file descriptor (or -1 if string) */
 	int nleft;		/* number of chars left in this line */
 	int lleft;		/* number of lines left in this buffer */
-	char *nextc;		/* next char in buffer */
+	const char *nextc;	/* next char in buffer */
 	char *buf;		/* input buffer */
 	struct strpush *strpush; /* for pushing strings at this level */
 	struct strpush basestrpush; /* so pushing one is fast */
@@ -93,7 +93,7 @@ struct parsefile {
 int plinno = 1;			/* input line number */
 int parsenleft;			/* copy of parsefile->nleft */
 MKINIT int parselleft;		/* copy of parsefile->lleft */
-char *parsenextc;		/* copy of parsefile->nextc */
+const char *parsenextc;		/* copy of parsefile->nextc */
 static char basebuf[BUFSIZ + 1];/* buffer for top level input file */
 static struct parsefile basepf = {	/* top level input file */
 	.nextc = basebuf,
@@ -185,7 +185,7 @@ retry:
 			nr = el_len;
 			if (nr > BUFSIZ)
 				nr = BUFSIZ;
-			memcpy(parsenextc, rl_cp, nr);
+			memcpy(parsefile->buf, rl_cp, nr);
 			if (nr != el_len) {
 				el_len -= nr;
 				rl_cp += nr;
@@ -194,7 +194,7 @@ retry:
 		}
 	} else
 #endif
-		nr = read(parsefile->fd, parsenextc, BUFSIZ);
+		nr = read(parsefile->fd, parsefile->buf, BUFSIZ);
 
 	if (nr <= 0) {
                 if (nr < 0) {
@@ -252,7 +252,7 @@ again:
 		}
 	}
 
-	q = p = parsenextc;
+	q = p = parsefile->buf + (parsenextc - parsefile->buf);
 
 	/* delete nul characters */
 	something = 0;
@@ -439,7 +439,7 @@ setinputfd(int fd, int push)
  */
 
 void
-setinputstring(char *string, int push)
+setinputstring(const char *string, int push)
 {
 	INTOFF;
 	if (push)

Modified: projects/camlock/bin/sh/input.h
==============================================================================
--- projects/camlock/bin/sh/input.h	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/input.h	Tue Apr  2 07:28:14 2013	(r249003)
@@ -42,7 +42,7 @@
  */
 extern int plinno;
 extern int parsenleft;		/* number of characters left in input buffer */
-extern char *parsenextc;	/* next character in input buffer */
+extern const char *parsenextc;	/* next character in input buffer */
 
 struct alias;
 struct parsefile;
@@ -55,7 +55,7 @@ void pungetc(void);
 void pushstring(char *, int, struct alias *);
 void setinputfile(const char *, int);
 void setinputfd(int, int);
-void setinputstring(char *, int);
+void setinputstring(const char *, int);
 void popfile(void);
 struct parsefile *getcurrentfile(void);
 void popfilesupto(struct parsefile *);

Modified: projects/camlock/bin/sh/jobs.c
==============================================================================
--- projects/camlock/bin/sh/jobs.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/jobs.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -668,7 +668,8 @@ makejob(union node *node __unused, int n
 				jobtab = jp;
 			}
 			jp = jobtab + njobs;
-			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0);
+			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0)
+				;
 			INTON;
 			break;
 		}
@@ -1005,7 +1006,7 @@ waitforjob(struct job *jp, int *origstat
 
 
 static void
-dummy_handler(int sig)
+dummy_handler(int sig __unused)
 {
 }
 

Modified: projects/camlock/bin/sh/main.c
==============================================================================
--- projects/camlock/bin/sh/main.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/main.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -80,7 +80,7 @@ struct jmploc main_handler;
 int localeisutf8, initial_localeisutf8;
 
 static void cmdloop(int);
-static void read_profile(char *);
+static void read_profile(const char *);
 static char *find_dot_file(char *);
 
 /*
@@ -239,7 +239,7 @@ cmdloop(int top)
  */
 
 static void
-read_profile(char *name)
+read_profile(const char *name)
 {
 	int fd;
 	const char *expandedname;

Modified: projects/camlock/bin/sh/memalloc.c
==============================================================================
--- projects/camlock/bin/sh/memalloc.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/memalloc.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -233,7 +233,8 @@ growstackblock(int min)
 
 	if (min < stacknleft)
 		min = stacknleft;
-	if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
+	if ((unsigned int)min >=
+	    INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
 		error("Out of space");
 	min += stacknleft;
 	min += ALIGN(sizeof(struct stack_block));
@@ -327,7 +328,7 @@ makestrspace(int min, char *p)
 
 
 char *
-stputbin(const char *data, int len, char *p)
+stputbin(const char *data, size_t len, char *p)
 {
 	CHECKSTRSPACE(len, p);
 	memcpy(p, data, len);

Modified: projects/camlock/bin/sh/memalloc.h
==============================================================================
--- projects/camlock/bin/sh/memalloc.h	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/memalloc.h	Tue Apr  2 07:28:14 2013	(r249003)
@@ -57,7 +57,7 @@ void setstackmark(struct stackmark *);
 void popstackmark(struct stackmark *);
 char *growstackstr(void);
 char *makestrspace(int, char *);
-char *stputbin(const char *data, int len, char *p);
+char *stputbin(const char *data, size_t len, char *p);
 char *stputs(const char *data, char *p);
 
 
@@ -67,7 +67,7 @@ char *stputs(const char *data, char *p);
 #define grabstackblock(n) stalloc(n)
 #define STARTSTACKSTR(p)	p = stackblock()
 #define STPUTC(c, p)	do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0)
-#define CHECKSTRSPACE(n, p)	{ if (sstrend - p < n) p = makestrspace(n, p); }
+#define CHECKSTRSPACE(n, p)	{ if ((size_t)(sstrend - p) < n) p = makestrspace(n, p); }
 #define USTPUTC(c, p)	(*p++ = (c))
 /*
  * STACKSTRNUL's use is where we want to be able to turn a stack

Modified: projects/camlock/bin/sh/parser.c
==============================================================================
--- projects/camlock/bin/sh/parser.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/parser.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -119,7 +119,7 @@ static void parseheredoc(void);
 static int peektoken(void);
 static int readtoken(void);
 static int xxreadtoken(void);
-static int readtoken1(int, char const *, char *, int);
+static int readtoken1(int, const char *, const char *, int);
 static int noexpand(char *);
 static void synexpect(int) __dead2;
 static void synerror(const char *) __dead2;
@@ -983,7 +983,7 @@ parsebackq(char *out, struct nodelist **
 	char *volatile str;
 	struct jmploc jmploc;
 	struct jmploc *const savehandler = handler;
-	int savelen;
+	size_t savelen;
 	int saveprompt;
 	const int bq_startlinno = plinno;
 	char *volatile ostr = NULL;
@@ -1300,7 +1300,8 @@ readcstyleesc(char *out)
 #define	PARSEARITH()	{goto parsearith; parsearith_return:;}
 
 static int
-readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs)
+readtoken1(int firstc, char const *initialsyntax, const char *eofmark,
+    int striptabs)
 {
 	int c = firstc;
 	char *out;
@@ -1521,7 +1522,7 @@ checkend: {
 		}
 		if (c == *eofmark) {
 			if (pfgets(line, sizeof line) != NULL) {
-				char *p, *q;
+				const char *p, *q;
 
 				p = line;
 				for (q = eofmark + 1 ; *q && *p == *q ; p++, q++);
@@ -2038,7 +2039,7 @@ getprompt(void *unused __unused)
 
 
 const char *
-expandstr(char *ps)
+expandstr(const char *ps)
 {
 	union node n;
 	struct jmploc jmploc;

Modified: projects/camlock/bin/sh/parser.h
==============================================================================
--- projects/camlock/bin/sh/parser.h	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/parser.h	Tue Apr  2 07:28:14 2013	(r249003)
@@ -82,4 +82,4 @@ void fixredir(union node *, const char *
 int goodname(const char *);
 int isassignment(const char *);
 char *getprompt(void *);
-const char *expandstr(char *);
+const char *expandstr(const char *);

Modified: projects/camlock/bin/sh/trap.c
==============================================================================
--- projects/camlock/bin/sh/trap.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/bin/sh/trap.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -150,7 +150,7 @@ printsignals(void)
  * The trap builtin.
  */
 int
-trapcmd(int argc, char **argv)
+trapcmd(int argc __unused, char **argv)
 {
 	char *action;
 	int signo;

Modified: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst
==============================================================================
--- projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst	Tue Apr  2 07:28:14 2013	(r249003)
@@ -23,7 +23,6 @@
 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
-# ident	"%Z%%M%	%I%	%E% SMI"
 
 # Exception list: names tests that are bypassed when running in Java
 # mode (relative to /opt/SUNWdtrt/tst)
@@ -52,14 +51,17 @@ common/usdt/tst.enabled.ksh
 common/usdt/tst.enabled2.ksh
 common/usdt/tst.entryreturn.ksh
 common/usdt/tst.fork.ksh
-common/usdt/tst.header.ksh
 common/usdt/tst.guess32.ksh
 common/usdt/tst.guess64.ksh
+common/usdt/tst.header.ksh
 common/usdt/tst.linkpriv.ksh
 common/usdt/tst.linkunpriv.ksh
 common/usdt/tst.multiple.ksh
 common/usdt/tst.nodtrace.ksh
+common/usdt/tst.noreap.ksh
+common/usdt/tst.noreapring.ksh
 common/usdt/tst.onlyenabled.ksh
+common/usdt/tst.reap.ksh
 common/usdt/tst.reeval.ksh
 common/usdt/tst.static.ksh
 common/usdt/tst.static2.ksh

Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh	Tue Apr  2 07:28:14 2013	(r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh)
@@ -0,0 +1,128 @@
+#
+# CDDL HEADER START
+#
+# 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]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2011, Joyent, Inc. All rights reserved.
+#
+
+if [ $# != 1 ]; then
+	echo expected one argument: '<'dtrace-path'>'
+	exit 2
+fi
+
+dtrace=$1
+DIR=/var/tmp/dtest.$$
+
+mkdir $DIR
+cd $DIR
+
+cat > test.c <<EOF
+#include <unistd.h>
+#include <sys/sdt.h>
+
+int
+main(int argc, char **argv)
+{
+	DTRACE_PROBE(test_prov, probe1);
+}
+EOF
+
+cat > prov.d <<EOF
+provider test_prov {
+	probe probe1();
+};
+EOF
+
+gcc -c test.c
+if [ $? -ne 0 ]; then
+	print -u2 "failed to compile test.c"
+	exit 1
+fi
+$dtrace -G -32 -s prov.d test.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to create DOF"
+	exit 1
+fi
+gcc -o test test.o prov.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to link final executable"
+	exit 1
+fi
+
+script()
+{
+	$dtrace -Zwqs /dev/stdin <<EOF
+
+	BEGIN
+	{
+		spec = speculation();
+		speculate(spec);
+		printf("this is speculative!\n");
+	}
+
+	test_prov*:::
+	{
+		probeid = id;
+	}
+
+	tick-1sec
+	/probeid == 0/
+	{
+		printf("launching test\n");
+		system("./test");
+	}
+
+	tick-1sec
+	/probeid != 0/
+	{
+		printf("attempting re-enabling\n");
+		system("dtrace -e -x errtags -i %d", probeid);
+		attempts++;
+	}
+
+	tick-1sec
+	/attempts > 10/
+	{
+		exit(0);
+	}
+EOF
+}
+
+script 2>&1 | tee test.out
+
+#
+# It should be true that our probe was not reaped after the provider was made
+# defunct: the speculative tracing action prevents reaping of any ECB in the
+# enabling.
+# 
+status=0
+
+if grep D_PDESC_INVAL test.out 2> /dev/null 1>&2 ; then
+	status=1
+else
+	grep D_PROC_GRAB test.out 2> /dev/null 1>&2
+	status=$?
+fi
+
+cd /
+/usr/bin/rm -rf $DIR
+
+exit $status

Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh	Tue Apr  2 07:28:14 2013	(r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh)
@@ -0,0 +1,124 @@
+#
+# CDDL HEADER START
+#
+# 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]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2011, Joyent, Inc. All rights reserved.
+#
+
+if [ $# != 1 ]; then
+	echo expected one argument: '<'dtrace-path'>'
+	exit 2
+fi
+
+dtrace=$1
+DIR=/var/tmp/dtest.$$
+
+mkdir $DIR
+cd $DIR
+
+cat > test.c <<EOF
+#include <unistd.h>
+#include <sys/sdt.h>
+
+int
+main(int argc, char **argv)
+{
+	DTRACE_PROBE(test_prov, probe1);
+}
+EOF
+
+cat > prov.d <<EOF
+provider test_prov {
+	probe probe1();
+};
+EOF
+
+gcc -c test.c
+if [ $? -ne 0 ]; then
+	print -u2 "failed to compile test.c"
+	exit 1
+fi
+$dtrace -G -32 -s prov.d test.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to create DOF"
+	exit 1
+fi
+gcc -o test test.o prov.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to link final executable"
+	exit 1
+fi
+
+script()
+{
+	$dtrace -Zwqs /dev/stdin <<EOF
+	test_prov*:::
+	{
+		probeid = id;
+	}
+
+	tick-1sec
+	/probeid == 0/
+	{
+		printf("launching test\n");
+		system("./test");
+	}
+
+	tick-1sec
+	/probeid != 0/
+	{
+		printf("attempting re-enabling\n");
+		system("dtrace -e -x errtags -i %d", probeid);
+		attempts++;
+	}
+
+	tick-1sec
+	/attempts > 10/
+	{
+		exit(0);
+	}
+EOF
+}
+
+$dtrace -x bufpolicy=ring -ZwqP test_prov\* > /dev/null 2>&1 &
+background=$!
+echo launched ring buffered enabling as pid $background
+script 2>&1 | tee test.out
+
+#
+# It should be true that our probe was not reaped after the provider was made
+# defunct: the active ring buffer in the earlier enabling prevents reaping of
+# any of the earlier enabling's ECBs.
+# 
+status=0
+
+if grep D_PDESC_INVAL test.out 2> /dev/null 1>&2 ; then
+	status=1
+else
+	grep D_PROC_GRAB test.out 2> /dev/null 1>&2
+	status=$?
+fi
+
+kill $background
+cd /
+/usr/bin/rm -rf $DIR
+
+exit $status

Copied: projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh (from r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh	Tue Apr  2 07:28:14 2013	(r249003, copy of r249002, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh)
@@ -0,0 +1,115 @@
+#
+# CDDL HEADER START
+#
+# 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]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright (c) 2011, Joyent, Inc. All rights reserved.
+#
+
+if [ $# != 1 ]; then
+	echo expected one argument: '<'dtrace-path'>'
+	exit 2
+fi
+
+dtrace=$1
+DIR=/var/tmp/dtest.$$
+
+mkdir $DIR
+cd $DIR
+
+cat > test.c <<EOF
+#include <unistd.h>
+#include <sys/sdt.h>
+
+int
+main(int argc, char **argv)
+{
+	DTRACE_PROBE(test_prov, probe1);
+}
+EOF
+
+cat > prov.d <<EOF
+provider test_prov {
+	probe probe1();
+};
+EOF
+
+gcc -c test.c
+if [ $? -ne 0 ]; then
+	print -u2 "failed to compile test.c"
+	exit 1
+fi
+$dtrace -G -32 -s prov.d test.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to create DOF"
+	exit 1
+fi
+gcc -o test test.o prov.o
+if [ $? -ne 0 ]; then
+	print -u2 "failed to link final executable"
+	exit 1
+fi
+
+script()
+{
+	$dtrace -Zwqs /dev/stdin <<EOF
+	test_prov*:::
+	{
+		probeid = id;
+	}
+
+	tick-1sec
+	/probeid == 0/
+	{
+		printf("launching test\n");
+		system("./test");
+	}
+
+	tick-1sec
+	/probeid != 0/
+	{
+		printf("attempting re-enabling\n");
+		system("dtrace -e -x errtags -i %d", probeid);
+		attempts++;
+	}
+
+	tick-1sec
+	/attempts > 10/
+	{
+		exit(0);
+	}
+EOF
+}
+
+script 2>&1 | tee test.out
+
+#
+# It should be true that our probe was reaped over the course of the enabling,
+# causing the embedded DTrace invocation to fail on an invalid probe (that is,
+# D_PDESC_INVAL) instead of an inability to grab the underlying process
+# (D_PROC_GRAB).
+# 
+grep D_PDESC_INVAL test.out 2> /dev/null 1>&2
+status=$?
+
+cd /
+/usr/bin/rm -rf $DIR
+
+exit $status

Modified: projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c
==============================================================================
--- projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/cddl/contrib/opensolaris/tools/ctf/cvt/input.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -387,6 +387,7 @@ GElf_Sym *
 symit_next(symit_data_t *si, int type)
 {
 	GElf_Sym sym;
+	char *bname;
 	int check_sym = (type == STT_OBJECT || type == STT_FUNC);
 
 	for (; si->si_next < si->si_nument; si->si_next++) {
@@ -394,8 +395,10 @@ symit_next(symit_data_t *si, int type)
 		gelf_getsym(si->si_symd, si->si_next, &sym);
 		si->si_curname = (caddr_t)si->si_strd->d_buf + sym.st_name;
 
-		if (GELF_ST_TYPE(sym.st_info) == STT_FILE)
-			si->si_curfile = si->si_curname;
+		if (GELF_ST_TYPE(sym.st_info) == STT_FILE) {
+			bname = strrchr(si->si_curname, '/');
+			si->si_curfile = bname == NULL ? si->si_curname : bname + 1;
+		}
 
 		if (GELF_ST_TYPE(sym.st_info) != type ||
 		    sym.st_shndx == SHN_UNDEF)

Modified: projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c
==============================================================================
--- projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/contrib/libarchive/libarchive/archive_write_disk_posix.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -3707,7 +3707,7 @@ set_xattrs(struct archive_write_disk *a)
 		size_t size;
 		archive_entry_xattr_next(entry, &name, &value, &size);
 		if (name != NULL) {
-			int e;
+			ssize_t e;
 			int namespace;
 
 			if (strncmp(name, "user.", 5) == 0) {
@@ -3734,7 +3734,7 @@ set_xattrs(struct archive_write_disk *a)
 				e = extattr_set_file(archive_entry_pathname(entry),
 				    namespace, name, value, size);
 			}
-			if (e != (int)size) {
+			if (e != (ssize_t)size) {
 				if (errno == ENOTSUP || errno == ENOSYS) {
 					if (!warning_done) {
 						warning_done = 1;

Modified: projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c
==============================================================================
--- projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/contrib/libarchive/libarchive/test/test_extattr_freebsd.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -47,7 +47,8 @@ DEFINE_TEST(test_extattr_freebsd)
 	struct stat st;
 	struct archive *a;
 	struct archive_entry *ae;
-	int n, fd;
+	ssize_t n;
+	int fd;
 	int extattr_privilege_bug = 0;
 
 	/*

Modified: projects/camlock/crypto/openssh/umac128.c
==============================================================================
--- projects/camlock/crypto/openssh/umac128.c	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/crypto/openssh/umac128.c	Tue Apr  2 07:28:14 2013	(r249003)
@@ -1,7 +1,11 @@
 /* $FreeBSD$ */
 #define UMAC_OUTPUT_LEN		16
+#undef umac_new
 #define umac_new		ssh_umac128_new
+#undef umac_update
 #define umac_update		ssh_umac128_update
+#undef umac_final
 #define umac_final		ssh_umac128_final
+#undef umac_delete
 #define umac_delete		ssh_umac128_delete
 #include "umac.c"

Modified: projects/camlock/etc/mtree/BSD.usr.dist
==============================================================================
--- projects/camlock/etc/mtree/BSD.usr.dist	Tue Apr  2 06:49:44 2013	(r249002)
+++ projects/camlock/etc/mtree/BSD.usr.dist	Tue Apr  2 07:28:14 2013	(r249003)
@@ -22,14 +22,14 @@
         ..
         engines
         ..
-	i18n
-	..
+        i18n
+        ..
     ..
     lib32
-	dtrace
-	..
-	i18n
-	..
+        dtrace
+        ..
+        i18n
+        ..
     ..
     libdata
         gcc
@@ -40,8 +40,8 @@
         ..
     ..
     libexec
-	bsdinstall
-	..
+        bsdinstall
+        ..
         lpr
             ru
             ..
@@ -207,7 +207,7 @@
         dtrace
             toolkit
             ..
-        ..  
+        ..
         examples
             BSD_daemon
             ..
@@ -330,79 +330,79 @@
             fortune
             ..
         ..
+        i18n
+            csmapper
+                APPLE
+                ..
+                AST
+                ..
+                BIG5
+                ..
+                CNS
+                ..
+                CP
+                ..
+                EBCDIC
+                ..
+                GB
+                ..
+                GEORGIAN
+                ..
+                ISO-8859
+                ..
+                ISO646
+                ..
+                JIS
+                ..
+                KAZAKH
+                ..
+                KOI
+                ..
+                KS
+                ..
+                MISC
+                ..
+                TCVN
+                ..
+            ..
+            esdb
+                APPLE
+                ..
+                AST
+                ..
+                BIG5
+                ..
+                CP
+                ..
+                DEC
+                ..
+                EBCDIC
+                ..
+                EUC
+                ..
+                GB
+                ..
+                GEORGIAN
+                ..
+                ISO-2022
+                ..
+                ISO-8859
+                ..
+                ISO646
+                ..
+                KAZAKH
+                ..
+                KOI
+                ..
+                MISC
+                ..
+                TCVN
+                ..
+                UTF
+                ..
+            ..
+        ..

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

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 09:03:41 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 821269B0;
 Tue,  2 Apr 2013 09:03:41 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 752F3149;
 Tue,  2 Apr 2013 09:03:41 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3293f6k024681;
 Tue, 2 Apr 2013 09:03:41 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3293fGK024680;
 Tue, 2 Apr 2013 09:03:41 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304020903.r3293fGK024680@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 09:03:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249006 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 09:03:41 -0000

Author: mav
Date: Tue Apr  2 09:03:40 2013
New Revision: 249006
URL: http://svnweb.freebsd.org/changeset/base/249006

Log:
  Pass SIM pointer as an argument to camisr_runqueue() instead of doneq
  pointer.

Modified:
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 08:41:38 2013	(r249005)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:03:40 2013	(r249006)
@@ -244,7 +244,7 @@ static xpt_devicefunc_t xptpassannouncef
 static void	 xptaction(struct cam_sim *sim, union ccb *work_ccb);
 static void	 xptpoll(struct cam_sim *sim);
 static void	 camisr(void *);
-static void	 camisr_runqueue(void *);
+static void	 camisr_runqueue(struct cam_sim *);
 static dev_match_ret	xptbusmatch(struct dev_match_pattern *patterns,
 				    u_int num_patterns, struct cam_eb *bus);
 static dev_match_ret	xptdevicematch(struct dev_match_pattern *patterns,
@@ -3022,7 +3022,7 @@ xpt_polled_action(union ccb *start_ccb)
 	   dev->ccbq.dev_openings < 0) && (--timeout > 0)) {
 		DELAY(100);
 		(*(sim->sim_poll))(sim);
-		camisr_runqueue(&sim->sim_doneq);
+		camisr_runqueue(sim);
 	}
 
 	dev->ccbq.devq_openings++;
@@ -3032,7 +3032,7 @@ xpt_polled_action(union ccb *start_ccb)
 		xpt_action(start_ccb);
 		while(--timeout > 0) {
 			(*(sim->sim_poll))(sim);
-			camisr_runqueue(&sim->sim_doneq);
+			camisr_runqueue(sim);
 			if ((start_ccb->ccb_h.status  & CAM_STATUS_MASK)
 			    != CAM_REQ_INPROG)
 				break;
@@ -4270,7 +4270,7 @@ xpt_batch_done(struct cam_sim *sim)
 	sim->flags &= ~CAM_SIM_BATCH;
 	if (!TAILQ_EMPTY(&sim->sim_doneq) &&
 	    (sim->flags & CAM_SIM_ON_DONEQ) == 0)
-		camisr_runqueue(&sim->sim_doneq);
+		camisr_runqueue(sim);
 }
 
 union ccb *
@@ -4884,7 +4884,7 @@ camisr(void *dummy)
 		while ((sim = TAILQ_FIRST(&queue)) != NULL) {
 			TAILQ_REMOVE(&queue, sim, links);
 			CAM_SIM_LOCK(sim);
-			camisr_runqueue(&sim->sim_doneq);
+			camisr_runqueue(sim);
 			sim->flags &= ~CAM_SIM_ON_DONEQ;
 			CAM_SIM_UNLOCK(sim);
 		}
@@ -4894,15 +4894,14 @@ camisr(void *dummy)
 }
 
 static void
-camisr_runqueue(void *V_queue)
+camisr_runqueue(struct cam_sim *sim)
 {
-	cam_isrq_t *queue = V_queue;
 	struct	ccb_hdr *ccb_h;
 
-	while ((ccb_h = TAILQ_FIRST(queue)) != NULL) {
+	while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) {
 		int	runq;
 
-		TAILQ_REMOVE(queue, ccb_h, sim_links.tqe);
+		TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe);
 		ccb_h->pinfo.index = CAM_UNQUEUED_INDEX;
 
 		CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE,
@@ -4944,8 +4943,8 @@ camisr_runqueue(void *V_queue)
 			dev = ccb_h->path->device;
 
 			cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h);
-			ccb_h->path->bus->sim->devq->send_active--;
-			ccb_h->path->bus->sim->devq->send_openings++;
+			sim->devq->send_active--;
+			sim->devq->send_openings++;
 			runq = TRUE;
 
 			if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0
@@ -4966,14 +4965,12 @@ camisr_runqueue(void *V_queue)
 			 && (--dev->tag_delay_count == 0))
 				xpt_start_tags(ccb_h->path);
 			if (!device_is_send_queued(dev)) {
-				(void)xpt_schedule_devq(
-				    ccb_h->path->bus->sim->devq, dev);
+				(void)xpt_schedule_devq(sim->devq, dev);
 			}
 		}
 
 		if (ccb_h->status & CAM_RELEASE_SIMQ) {
-			xpt_release_simq(ccb_h->path->bus->sim,
-					 /*run_queue*/TRUE);
+			xpt_release_simq(sim, /*run_queue*/TRUE);
 			ccb_h->status &= ~CAM_RELEASE_SIMQ;
 			runq = FALSE;
 		}
@@ -4984,7 +4981,7 @@ camisr_runqueue(void *V_queue)
 					 /*run_queue*/TRUE);
 			ccb_h->status &= ~CAM_DEV_QFRZN;
 		} else if (runq) {
-			xpt_run_devq(ccb_h->path->bus->sim->devq);
+			xpt_run_devq(sim->devq);
 		}
 
 		/* Call the peripheral driver's callback */

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 09:33:23 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 1FB7366E;
 Tue,  2 Apr 2013 09:33:23 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 0348F390;
 Tue,  2 Apr 2013 09:33:23 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329XMtb033586;
 Tue, 2 Apr 2013 09:33:22 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329XMKh033583;
 Tue, 2 Apr 2013 09:33:22 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304020933.r329XMKh033583@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 09:33:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249007 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 09:33:23 -0000

Author: mav
Date: Tue Apr  2 09:33:22 2013
New Revision: 249007
URL: http://svnweb.freebsd.org/changeset/base/249007

Log:
  Introduce sim_doneq_mtx, mutex protecting done CCB queue.  Now it is only
  pessimization, but it removes barrier for dropping SIM mutex during CCB
  completion processing.

Modified:
  projects/camlock/sys/cam/cam_sim.c
  projects/camlock/sys/cam/cam_sim.h
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_sim.c
==============================================================================
--- projects/camlock/sys/cam/cam_sim.c	Tue Apr  2 09:03:40 2013	(r249006)
+++ projects/camlock/sys/cam/cam_sim.c	Tue Apr  2 09:33:22 2013	(r249007)
@@ -95,7 +95,7 @@ cam_sim_alloc(sim_action_func sim_action
 		sim->flags |= CAM_SIM_MPSAFE;
 		callout_init(&sim->callout, 1);
 	}
-
+	mtx_init(&sim->sim_doneq_mtx, "CAM doneq", NULL, MTX_DEF);
 	TAILQ_INIT(&sim->sim_doneq);
 
 	return (sim);
@@ -116,6 +116,7 @@ cam_sim_free(struct cam_sim *sim, int fr
 
 	if (free_devq)
 		cam_simq_free(sim->devq);
+	mtx_destroy(&sim->sim_doneq_mtx);
 	free(sim, M_CAMSIM);
 }
 

Modified: projects/camlock/sys/cam/cam_sim.h
==============================================================================
--- projects/camlock/sys/cam/cam_sim.h	Tue Apr  2 09:03:40 2013	(r249006)
+++ projects/camlock/sys/cam/cam_sim.h	Tue Apr  2 09:33:22 2013	(r249007)
@@ -95,6 +95,11 @@ struct cam_sim {
 	void			*softc;
 	struct mtx		*mtx;
 	TAILQ_HEAD(, ccb_hdr)	sim_doneq;
+	struct mtx		sim_doneq_mtx;
+	int			sim_doneq_flags;
+#define	CAM_SIM_DQ_ONQ		0x04
+#define	CAM_SIM_DQ_POLLED	0x08
+#define	CAM_SIM_DQ_BATCH	0x10
 	TAILQ_ENTRY(cam_sim)	links;
 	u_int32_t		path_id;/* The Boot device may set this to 0? */
 	u_int32_t		unit_number;
@@ -104,9 +109,6 @@ struct cam_sim {
 	u_int32_t		flags;
 #define	CAM_SIM_REL_TIMEOUT_PENDING	0x01
 #define	CAM_SIM_MPSAFE			0x02
-#define	CAM_SIM_ON_DONEQ		0x04
-#define	CAM_SIM_POLLED			0x08
-#define	CAM_SIM_BATCH			0x10
 	struct callout		callout;
 	struct cam_devq 	*devq;	/* Device Queue to use for this SIM */
 	int			refcount; /* References to the SIM. */

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:03:40 2013	(r249006)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:33:22 2013	(r249007)
@@ -3009,7 +3009,9 @@ xpt_polled_action(union ccb *start_ccb)
 	mtx_assert(sim->mtx, MA_OWNED);
 
 	/* Don't use ISR for this SIM while polling. */
-	sim->flags |= CAM_SIM_POLLED;
+	mtx_lock(&sim->sim_doneq_mtx);
+	sim->sim_doneq_flags |= CAM_SIM_DQ_POLLED;
+	mtx_unlock(&sim->sim_doneq_mtx);
 
 	/*
 	 * Steal an opening so that no other queued requests
@@ -3052,7 +3054,9 @@ xpt_polled_action(union ccb *start_ccb)
 	}
 
 	/* We will use CAM ISR for this SIM again. */
-	sim->flags &= ~CAM_SIM_POLLED;
+	mtx_lock(&sim->sim_doneq_mtx);
+	sim->sim_doneq_flags &= ~CAM_SIM_DQ_POLLED;
+	mtx_unlock(&sim->sim_doneq_mtx);
 }
 
 /*
@@ -4238,19 +4242,22 @@ xpt_done(union ccb *done_ccb)
 		 * any of the "non-immediate" type of ccbs.
 		 */
 		sim = done_ccb->ccb_h.path->bus->sim;
+		mtx_lock(&sim->sim_doneq_mtx);
 		TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h,
 		    sim_links.tqe);
 		done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX;
-		if ((sim->flags & (CAM_SIM_ON_DONEQ | CAM_SIM_POLLED |
-		    CAM_SIM_BATCH)) == 0) {
+		if ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ |
+		    CAM_SIM_DQ_POLLED | CAM_SIM_DQ_BATCH)) == 0) {
 			mtx_lock(&cam_simq_lock);
 			first = TAILQ_EMPTY(&cam_simq);
 			TAILQ_INSERT_TAIL(&cam_simq, sim, links);
 			mtx_unlock(&cam_simq_lock);
-			sim->flags |= CAM_SIM_ON_DONEQ;
-			if (first)
-				swi_sched(cambio_ih, 0);
-		}
+			sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ;
+		} else
+			first = 0;
+		mtx_unlock(&sim->sim_doneq_mtx);
+		if (first)
+			swi_sched(cambio_ih, 0);
 	}
 }
 
@@ -4258,19 +4265,32 @@ void
 xpt_batch_start(struct cam_sim *sim)
 {
 
-	KASSERT((sim->flags & CAM_SIM_BATCH) == 0, ("Batch flag already set"));
-	sim->flags |= CAM_SIM_BATCH;
+	mtx_lock(&sim->sim_doneq_mtx);
+	KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) == 0,
+	    ("Batch flag already set"));
+	sim->sim_doneq_flags |= CAM_SIM_DQ_BATCH;
+	mtx_unlock(&sim->sim_doneq_mtx);
 }
 
 void
 xpt_batch_done(struct cam_sim *sim)
 {
+	int runq;
 
-	KASSERT((sim->flags & CAM_SIM_BATCH) != 0, ("Batch flag was not set"));
-	sim->flags &= ~CAM_SIM_BATCH;
-	if (!TAILQ_EMPTY(&sim->sim_doneq) &&
-	    (sim->flags & CAM_SIM_ON_DONEQ) == 0)
+	mtx_lock(&sim->sim_doneq_mtx);
+	KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) != 0,
+	    ("Batch flag was not set"));
+	sim->sim_doneq_flags &= ~CAM_SIM_DQ_BATCH;
+	runq = ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ |
+	    CAM_SIM_DQ_POLLED)) == 0);
+	if (runq)
+		sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ;
+	mtx_unlock(&sim->sim_doneq_mtx);
+	if (runq) {
+		CAM_SIM_UNLOCK(sim);
 		camisr_runqueue(sim);
+		CAM_SIM_LOCK(sim);
+	}
 }
 
 union ccb *
@@ -4883,10 +4903,7 @@ camisr(void *dummy)
 
 		while ((sim = TAILQ_FIRST(&queue)) != NULL) {
 			TAILQ_REMOVE(&queue, sim, links);
-			CAM_SIM_LOCK(sim);
 			camisr_runqueue(sim);
-			sim->flags &= ~CAM_SIM_ON_DONEQ;
-			CAM_SIM_UNLOCK(sim);
 		}
 		mtx_lock(&cam_simq_lock);
 	}
@@ -4897,11 +4914,13 @@ static void
 camisr_runqueue(struct cam_sim *sim)
 {
 	struct	ccb_hdr *ccb_h;
+	int	runq;
 
+	mtx_lock(&sim->sim_doneq_mtx);
 	while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) {
-		int	runq;
-
 		TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe);
+		mtx_unlock(&sim->sim_doneq_mtx);
+		CAM_SIM_LOCK(sim);
 		ccb_h->pinfo.index = CAM_UNQUEUED_INDEX;
 
 		CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE,
@@ -4986,5 +5005,9 @@ camisr_runqueue(struct cam_sim *sim)
 
 		/* Call the peripheral driver's callback */
 		(*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h);
+		CAM_SIM_UNLOCK(sim);
+		mtx_lock(&sim->sim_doneq_mtx);
 	}
+	sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ;
+	mtx_unlock(&sim->sim_doneq_mtx);
 }

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 09:44:13 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 2FF89D4C;
 Tue,  2 Apr 2013 09:44:13 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 23EC0633;
 Tue,  2 Apr 2013 09:44:13 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329iDLA036724;
 Tue, 2 Apr 2013 09:44:13 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329iCjr036722;
 Tue, 2 Apr 2013 09:44:12 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304020944.r329iCjr036722@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 09:44:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249010 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 09:44:13 -0000

Author: mav
Date: Tue Apr  2 09:44:12 2013
New Revision: 249010
URL: http://svnweb.freebsd.org/changeset/base/249010

Log:
  Remove owner field from struct cam_ed, unused at least since FreeBSD 7.

Modified:
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/cam_xpt_internal.h

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:42:42 2013	(r249009)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:44:12 2013	(r249010)
@@ -4479,7 +4479,6 @@ xpt_alloc_device(struct cam_eb *bus, str
 		SLIST_INIT(&device->asyncs);
 		SLIST_INIT(&device->periphs);
 		device->generation = 0;
-		device->owner = NULL;
 		device->flags = CAM_DEV_UNCONFIGURED;
 		device->tag_delay_count = 0;
 		device->tag_saved_openings = 0;

Modified: projects/camlock/sys/cam/cam_xpt_internal.h
==============================================================================
--- projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 09:42:42 2013	(r249009)
+++ projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 09:44:12 2013	(r249010)
@@ -84,7 +84,6 @@ struct cam_ed {
 	struct	async_list asyncs;	/* Async callback info for this B/T/L */
 	struct	periph_list periphs;	/* All attached devices */
 	u_int	generation;		/* Generation number */
-	struct	cam_periph *owner;	/* Peripheral driver's ownership tag */
 	void		 *quirk;	/* Oddities about this device */
 	u_int		 maxtags;
 	u_int		 mintags;

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 09:51:43 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 5CAF2358;
 Tue,  2 Apr 2013 09:51:43 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4C39C6A2;
 Tue,  2 Apr 2013 09:51:43 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r329phv4039516;
 Tue, 2 Apr 2013 09:51:43 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r329pbqc039480;
 Tue, 2 Apr 2013 09:51:37 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304020951.r329pbqc039480@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Tue, 2 Apr 2013 09:51:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249013 - in projects/counters: . bin/chflags bin/ed
 bin/mv bin/setfacl bin/sh
 cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace
 cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/f...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 09:51:43 -0000

Author: glebius
Date: Tue Apr  2 09:51:36 2013
New Revision: 249013
URL: http://svnweb.freebsd.org/changeset/base/249013

Log:
  Merge head r243428 through r249011.

Added:
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d
     - copied from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_ARGS.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_ARGS.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_DYNSIZE.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_TRACEMEM_DYNSIZE.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d.out
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/tst.dynsize.d.out
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreap.ksh
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noreapring.ksh
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.reap.ksh
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c
     - copied unchanged from r249011, head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.Z.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.Z.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.bz2.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.bz2.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.grz.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.grz.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.gz.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.gz.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lrz.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lrz.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lz.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lz.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lzma.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lzma.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.lzo.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract.cpio.xz.uu
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract.cpio.xz.uu
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_Z.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_Z.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_grz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_grz.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_gz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_gz.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lz.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c
  projects/counters/contrib/libarchive/cpio/test/test_extract_cpio_xz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_extract_cpio_xz.c
  projects/counters/contrib/libarchive/cpio/test/test_option_b64encode.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_b64encode.c
  projects/counters/contrib/libarchive/cpio/test/test_option_grzip.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_grzip.c
  projects/counters/contrib/libarchive/cpio/test/test_option_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_lrzip.c
  projects/counters/contrib/libarchive/cpio/test/test_option_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_lzop.c
  projects/counters/contrib/libarchive/cpio/test/test_option_uuencode.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_uuencode.c
  projects/counters/contrib/libarchive/cpio/test/test_option_xz.c
     - copied unchanged from r249011, head/contrib/libarchive/cpio/test/test_option_xz.c
  projects/counters/contrib/libarchive/libarchive/archive_cmdline.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_cmdline.c
  projects/counters/contrib/libarchive/libarchive/archive_cmdline_private.h
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_cmdline_private.h
  projects/counters/contrib/libarchive/libarchive/archive_read_append_filter.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_append_filter.c
  projects/counters/contrib/libarchive/libarchive/archive_read_set_format.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_set_format.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c
  projects/counters/contrib/libarchive/libarchive/filter_fork_posix.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/filter_fork_posix.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_cmdline.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_cmdline.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu
  projects/counters/contrib/libarchive/libarchive/test/test_compat_uudecode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_compat_uudecode.c
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_grzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_grzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_program.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_program.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_set_format.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_set_format.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu
  projects/counters/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu
  projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu
  projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu
  projects/counters/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_compress.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_compress.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_gzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_gzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzip.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzma.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzma.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_lzop.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_program.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_program.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_filter_xz.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_filter_xz.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c
     - copied unchanged from r249011, head/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c
  projects/counters/contrib/libarchive/tar/creation_set.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/creation_set.c
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.Z.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.Z.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.bz2.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.bz2.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.grz.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.grz.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.gz.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.gz.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.lrz.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lrz.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.lz.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lz.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.lzma.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lzma.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.lzo.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.lzo.uu
  projects/counters/contrib/libarchive/tar/test/test_extract.tar.xz.uu
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract.tar.xz.uu
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_Z.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_Z.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_bz2.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_bz2.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_grz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_grz.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_gz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_gz.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_lrz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lrz.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_lz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lz.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_lzma.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lzma.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_lzo.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_lzo.c
  projects/counters/contrib/libarchive/tar/test/test_extract_tar_xz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_extract_tar_xz.c
  projects/counters/contrib/libarchive/tar/test/test_option_a.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_a.c
  projects/counters/contrib/libarchive/tar/test/test_option_b64encode.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_b64encode.c
  projects/counters/contrib/libarchive/tar/test/test_option_grzip.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_grzip.c
  projects/counters/contrib/libarchive/tar/test/test_option_j.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_j.c
  projects/counters/contrib/libarchive/tar/test/test_option_lrzip.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lrzip.c
  projects/counters/contrib/libarchive/tar/test/test_option_lzma.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lzma.c
  projects/counters/contrib/libarchive/tar/test/test_option_lzop.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_lzop.c
  projects/counters/contrib/libarchive/tar/test/test_option_older_than.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_older_than.c
  projects/counters/contrib/libarchive/tar/test/test_option_uuencode.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_uuencode.c
  projects/counters/contrib/libarchive/tar/test/test_option_xz.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_xz.c
  projects/counters/contrib/libarchive/tar/test/test_option_z.c
     - copied unchanged from r249011, head/contrib/libarchive/tar/test/test_option_z.c
  projects/counters/contrib/libarchive/test_utils/
     - copied from r249011, head/contrib/libarchive/test_utils/
  projects/counters/crypto/openssh/PROTOCOL.krl
     - copied unchanged from r249011, head/crypto/openssh/PROTOCOL.krl
  projects/counters/crypto/openssh/krl.c
     - copied unchanged from r249011, head/crypto/openssh/krl.c
  projects/counters/crypto/openssh/krl.h
     - copied unchanged from r249011, head/crypto/openssh/krl.h
  projects/counters/crypto/openssh/openbsd-compat/bsd-setres_id.c
     - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/bsd-setres_id.c
  projects/counters/crypto/openssh/openbsd-compat/bsd-setres_id.h
     - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/bsd-setres_id.h
  projects/counters/crypto/openssh/openbsd-compat/strtoull.c
     - copied unchanged from r249011, head/crypto/openssh/openbsd-compat/strtoull.c
  projects/counters/crypto/openssh/scard/
     - copied from r249011, head/crypto/openssh/scard/
  projects/counters/crypto/openssh/umac128.c
     - copied unchanged from r249011, head/crypto/openssh/umac128.c
  projects/counters/lib/libpmc/pmc.haswell.3
     - copied unchanged from r249011, head/lib/libpmc/pmc.haswell.3
  projects/counters/lib/libpmc/pmc.haswelluc.3
     - copied unchanged from r249011, head/lib/libpmc/pmc.haswelluc.3
  projects/counters/share/man/man4/ctl.4
     - copied unchanged from r249011, head/share/man/man4/ctl.4
  projects/counters/sys/arm/include/at91_gpio.h
     - copied unchanged from r249011, head/sys/arm/include/at91_gpio.h
  projects/counters/sys/mips/atheros/ar933x_chip.c
     - copied unchanged from r249011, head/sys/mips/atheros/ar933x_chip.c
  projects/counters/sys/mips/atheros/ar933x_chip.h
     - copied unchanged from r249011, head/sys/mips/atheros/ar933x_chip.h
  projects/counters/sys/mips/atheros/ar933x_uart.h
     - copied unchanged from r249011, head/sys/mips/atheros/ar933x_uart.h
  projects/counters/sys/mips/atheros/ar933xreg.h
     - copied unchanged from r249011, head/sys/mips/atheros/ar933xreg.h
  projects/counters/sys/mips/atheros/uart_bus_ar933x.c
     - copied unchanged from r249011, head/sys/mips/atheros/uart_bus_ar933x.c
  projects/counters/sys/mips/atheros/uart_cpu_ar933x.c
     - copied unchanged from r249011, head/sys/mips/atheros/uart_cpu_ar933x.c
  projects/counters/sys/mips/atheros/uart_dev_ar933x.c
     - copied unchanged from r249011, head/sys/mips/atheros/uart_dev_ar933x.c
  projects/counters/sys/mips/atheros/uart_dev_ar933x.h
     - copied unchanged from r249011, head/sys/mips/atheros/uart_dev_ar933x.h
  projects/counters/sys/mips/conf/AP121
     - copied unchanged from r249011, head/sys/mips/conf/AP121
  projects/counters/sys/mips/conf/AP121.hints
     - copied unchanged from r249011, head/sys/mips/conf/AP121.hints
  projects/counters/sys/mips/conf/AR933X_BASE
     - copied unchanged from r249011, head/sys/mips/conf/AR933X_BASE
  projects/counters/sys/mips/conf/AR933X_BASE.hints
     - copied unchanged from r249011, head/sys/mips/conf/AR933X_BASE.hints
  projects/counters/sys/modules/ctl/
     - copied from r249011, head/sys/modules/ctl/
  projects/counters/sys/modules/cxgbe/t4_firmware/
     - copied from r249011, head/sys/modules/cxgbe/t4_firmware/
  projects/counters/tools/tools/ath/athalq/ar9300_ds.c
     - copied unchanged from r249011, head/tools/tools/ath/athalq/ar9300_ds.c
  projects/counters/tools/tools/ath/athalq/ar9300_ds.h
     - copied unchanged from r249011, head/tools/tools/ath/athalq/ar9300_ds.h
  projects/counters/tools/tools/cxgbetool/reg_defs_t5.c
     - copied unchanged from r249011, head/tools/tools/cxgbetool/reg_defs_t5.c
  projects/counters/tools/tools/shlib-compat/
     - copied from r249011, head/tools/tools/shlib-compat/
  projects/counters/usr.bin/unifdef/unifdef.h
     - copied unchanged from r249011, head/usr.bin/unifdef/unifdef.h
Directory Properties:
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/   (props changed)
Deleted:
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/tracemem/err.D_PROTO_LEN.toomany.d
  projects/counters/contrib/libarchive/libarchive/filter_fork.c
  projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_compress_program.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_uu.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_gzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_lzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_lzma.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_program.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_compress_xz.c
  projects/counters/crypto/openssh/acss.c
  projects/counters/crypto/openssh/acss.h
  projects/counters/crypto/openssh/cipher-acss.c
  projects/counters/sys/modules/cxgbe/firmware/
Modified:
  projects/counters/MAINTAINERS   (contents, props changed)
  projects/counters/Makefile
  projects/counters/Makefile.inc1
  projects/counters/ObsoleteFiles.inc
  projects/counters/bin/chflags/chflags.c
  projects/counters/bin/ed/cbc.c
  projects/counters/bin/mv/mv.c
  projects/counters/bin/setfacl/setfacl.1
  projects/counters/bin/sh/exec.c
  projects/counters/bin/sh/expand.c
  projects/counters/bin/sh/input.c
  projects/counters/bin/sh/input.h
  projects/counters/bin/sh/jobs.c
  projects/counters/bin/sh/main.c
  projects/counters/bin/sh/memalloc.c
  projects/counters/bin/sh/memalloc.h
  projects/counters/bin/sh/parser.c
  projects/counters/bin/sh/parser.h
  projects/counters/bin/sh/sh.1
  projects/counters/bin/sh/trap.c
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst
  projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dof.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_map.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pragma.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c
  projects/counters/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h
  projects/counters/cddl/contrib/opensolaris/tools/ctf/cvt/input.c
  projects/counters/cddl/lib/libdtrace/Makefile
  projects/counters/contrib/bind9/CHANGES
  projects/counters/contrib/bind9/config.h.in
  projects/counters/contrib/bind9/configure.in
  projects/counters/contrib/bind9/version
  projects/counters/contrib/binutils/bfd/dwarf2.c
  projects/counters/contrib/binutils/binutils/dwarf.c
  projects/counters/contrib/libarchive/NEWS
  projects/counters/contrib/libarchive/README
  projects/counters/contrib/libarchive/cpio/bsdcpio.1
  projects/counters/contrib/libarchive/cpio/cmdline.c
  projects/counters/contrib/libarchive/cpio/cpio.c
  projects/counters/contrib/libarchive/cpio/cpio.h
  projects/counters/contrib/libarchive/cpio/test/main.c
  projects/counters/contrib/libarchive/cpio/test/test.h
  projects/counters/contrib/libarchive/cpio/test/test_basic.c
  projects/counters/contrib/libarchive/cpio/test/test_format_newc.c
  projects/counters/contrib/libarchive/cpio/test/test_option_y.c
  projects/counters/contrib/libarchive/cpio/test/test_option_z.c
  projects/counters/contrib/libarchive/libarchive/archive.h
  projects/counters/contrib/libarchive/libarchive/archive_crypto.c
  projects/counters/contrib/libarchive/libarchive/archive_entry.c
  projects/counters/contrib/libarchive/libarchive/archive_entry.h
  projects/counters/contrib/libarchive/libarchive/archive_entry_link_resolver.c
  projects/counters/contrib/libarchive/libarchive/archive_match.c
  projects/counters/contrib/libarchive/libarchive/archive_options.c
  projects/counters/contrib/libarchive/libarchive/archive_ppmd7.c
  projects/counters/contrib/libarchive/libarchive/archive_private.h
  projects/counters/contrib/libarchive/libarchive/archive_rb.c
  projects/counters/contrib/libarchive/libarchive/archive_read.c
  projects/counters/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
  projects/counters/contrib/libarchive/libarchive/archive_read_disk_posix.c
  projects/counters/contrib/libarchive/libarchive/archive_read_extract.c
  projects/counters/contrib/libarchive/libarchive/archive_read_open_fd.c
  projects/counters/contrib/libarchive/libarchive/archive_read_open_file.c
  projects/counters/contrib/libarchive/libarchive/archive_read_open_filename.c
  projects/counters/contrib/libarchive/libarchive/archive_read_private.h
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_all.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_compress.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_program.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_uu.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_filter_xz.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_ar.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_cab.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_cpio.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_empty.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_lha.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_mtree.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_rar.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_raw.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_tar.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_xar.c
  projects/counters/contrib/libarchive/libarchive/archive_read_support_format_zip.c
  projects/counters/contrib/libarchive/libarchive/archive_string.c
  projects/counters/contrib/libarchive/libarchive/archive_util.c
  projects/counters/contrib/libarchive/libarchive/archive_virtual.c
  projects/counters/contrib/libarchive/libarchive/archive_write.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_compress.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_program.c
  projects/counters/contrib/libarchive/libarchive/archive_write_add_filter_xz.c
  projects/counters/contrib/libarchive/libarchive/archive_write_disk_acl.c
  projects/counters/contrib/libarchive/libarchive/archive_write_disk_posix.c
  projects/counters/contrib/libarchive/libarchive/archive_write_free.3
  projects/counters/contrib/libarchive/libarchive/archive_write_open_filename.c
  projects/counters/contrib/libarchive/libarchive/archive_write_private.h
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_ar.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_by_name.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_mtree.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_pax.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_xar.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_format_zip.c
  projects/counters/contrib/libarchive/libarchive/archive_write_set_options.c
  projects/counters/contrib/libarchive/libarchive/filter_fork.h
  projects/counters/contrib/libarchive/libarchive/libarchive-formats.5
  projects/counters/contrib/libarchive/libarchive/test/main.c
  projects/counters/contrib/libarchive/libarchive/test/test.h
  projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c
  projects/counters/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c
  projects/counters/contrib/libarchive/libarchive/test/test_acl_nfs4.c
  projects/counters/contrib/libarchive/libarchive/test/test_acl_pax.c
  projects/counters/contrib/libarchive/libarchive/test/test_acl_posix1e.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_clear_error.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_read_set_options.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_set_error.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_option.c
  projects/counters/contrib/libarchive/libarchive/test/test_archive_write_set_options.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_bzip2.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_cpio.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_gtar.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_gzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_lzma.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_mac.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_xz.c
  projects/counters/contrib/libarchive/libarchive/test/test_compat_zip.c
  projects/counters/contrib/libarchive/libarchive/test/test_empty_write.c
  projects/counters/contrib/libarchive/libarchive/test/test_entry.c
  projects/counters/contrib/libarchive/libarchive/test/test_extattr_freebsd.c
  projects/counters/contrib/libarchive/libarchive/test/test_filter_count.c
  projects/counters/contrib/libarchive/libarchive/test/test_fuzz.c
  projects/counters/contrib/libarchive/libarchive/test/test_open_failure.c
  projects/counters/contrib/libarchive/libarchive/test/test_open_fd.c
  projects/counters/contrib/libarchive/libarchive/test/test_open_file.c
  projects/counters/contrib/libarchive/libarchive/test/test_open_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_data_large.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_disk.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_extract.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_7zip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_ar.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cab.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_lha.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_mtree.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_rar.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tar.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tbz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tgz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tlz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_txz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_tz.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_xar.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_pax_truncated.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_truncated.c
  projects/counters/contrib/libarchive/libarchive/test/test_read_truncated_filter.c
  projects/counters/contrib/libarchive/libarchive/test/test_sparse_basic.c
  projects/counters/contrib/libarchive/libarchive/test/test_tar_filenames.c
  projects/counters/contrib/libarchive/libarchive/test/test_ustar_filenames.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_disk_sparse.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_7zip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_ar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_gnutar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_pax.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_xar.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c
  projects/counters/contrib/libarchive/libarchive/test/test_write_open_memory.c
  projects/counters/contrib/libarchive/tar/bsdtar.1
  projects/counters/contrib/libarchive/tar/bsdtar.c
  projects/counters/contrib/libarchive/tar/bsdtar.h
  projects/counters/contrib/libarchive/tar/cmdline.c
  projects/counters/contrib/libarchive/tar/read.c
  projects/counters/contrib/libarchive/tar/subst.c
  projects/counters/contrib/libarchive/tar/test/main.c
  projects/counters/contrib/libarchive/tar/test/test.h
  projects/counters/contrib/libarchive/tar/test/test_copy.c
  projects/counters/contrib/libarchive/tar/test/test_option_newer_than.c
  projects/counters/contrib/libarchive/tar/test/test_option_r.c
  projects/counters/contrib/libarchive/tar/test/test_stdio.c
  projects/counters/contrib/libarchive/tar/util.c
  projects/counters/contrib/libarchive/tar/write.c
  projects/counters/contrib/openbsm/etc/audit_event
  projects/counters/crypto/openssh/ChangeLog
  projects/counters/crypto/openssh/FREEBSD-upgrade
  projects/counters/crypto/openssh/INSTALL
  projects/counters/crypto/openssh/PROTOCOL
  projects/counters/crypto/openssh/PROTOCOL.agent
  projects/counters/crypto/openssh/README
  projects/counters/crypto/openssh/auth-options.c
  projects/counters/crypto/openssh/auth-rsa.c
  projects/counters/crypto/openssh/auth.c
  projects/counters/crypto/openssh/auth.h
  projects/counters/crypto/openssh/auth1.c
  projects/counters/crypto/openssh/auth2-chall.c
  projects/counters/crypto/openssh/auth2-gss.c
  projects/counters/crypto/openssh/auth2-jpake.c
  projects/counters/crypto/openssh/auth2-pubkey.c
  projects/counters/crypto/openssh/auth2.c
  projects/counters/crypto/openssh/authfile.c
  projects/counters/crypto/openssh/channels.c
  projects/counters/crypto/openssh/cipher-aes.c
  projects/counters/crypto/openssh/cipher-ctr.c
  projects/counters/crypto/openssh/cipher.c
  projects/counters/crypto/openssh/cipher.h
  projects/counters/crypto/openssh/clientloop.c
  projects/counters/crypto/openssh/clientloop.h
  projects/counters/crypto/openssh/compat.c
  projects/counters/crypto/openssh/config.h
  projects/counters/crypto/openssh/config.h.in
  projects/counters/crypto/openssh/defines.h
  projects/counters/crypto/openssh/includes.h
  projects/counters/crypto/openssh/kex.c
  projects/counters/crypto/openssh/kex.h
  projects/counters/crypto/openssh/key.c
  projects/counters/crypto/openssh/key.h
  projects/counters/crypto/openssh/log.c
  projects/counters/crypto/openssh/log.h
  projects/counters/crypto/openssh/loginrec.c
  projects/counters/crypto/openssh/mac.c
  projects/counters/crypto/openssh/moduli
  projects/counters/crypto/openssh/moduli.5
  projects/counters/crypto/openssh/monitor.c
  projects/counters/crypto/openssh/monitor.h
  projects/counters/crypto/openssh/monitor_wrap.c
  projects/counters/crypto/openssh/mux.c
  projects/counters/crypto/openssh/myproposal.h
  projects/counters/crypto/openssh/openbsd-compat/bsd-misc.c
  projects/counters/crypto/openssh/openbsd-compat/bsd-misc.h
  projects/counters/crypto/openssh/openbsd-compat/openbsd-compat.h
  projects/counters/crypto/openssh/openbsd-compat/openssl-compat.h
  projects/counters/crypto/openssh/openbsd-compat/sys-queue.h
  projects/counters/crypto/openssh/openbsd-compat/sys-tree.h
  projects/counters/crypto/openssh/openbsd-compat/vis.c
  projects/counters/crypto/openssh/openbsd-compat/vis.h
  projects/counters/crypto/openssh/packet.c
  projects/counters/crypto/openssh/platform.c
  projects/counters/crypto/openssh/platform.h
  projects/counters/crypto/openssh/scp.1
  projects/counters/crypto/openssh/scp.c
  projects/counters/crypto/openssh/servconf.c
  projects/counters/crypto/openssh/servconf.h
  projects/counters/crypto/openssh/serverloop.c
  projects/counters/crypto/openssh/session.c
  projects/counters/crypto/openssh/sftp-server.8
  projects/counters/crypto/openssh/sftp-server.c
  projects/counters/crypto/openssh/sftp.1
  projects/counters/crypto/openssh/sftp.c
  projects/counters/crypto/openssh/ssh-add.1
  projects/counters/crypto/openssh/ssh-add.c
  projects/counters/crypto/openssh/ssh-gss.h
  projects/counters/crypto/openssh/ssh-keygen.1
  projects/counters/crypto/openssh/ssh-keygen.c
  projects/counters/crypto/openssh/ssh-keyscan.1
  projects/counters/crypto/openssh/ssh.1
  projects/counters/crypto/openssh/ssh_config
  projects/counters/crypto/openssh/ssh_config.5
  projects/counters/crypto/openssh/ssh_namespace.h
  projects/counters/crypto/openssh/sshconnect.c
  projects/counters/crypto/openssh/sshconnect2.c
  projects/counters/crypto/openssh/sshd.8
  projects/counters/crypto/openssh/sshd.c
  projects/counters/crypto/openssh/sshd_config
  projects/counters/crypto/openssh/sshd_config.5
  projects/counters/crypto/openssh/uidswap.c
  projects/counters/crypto/openssh/umac.c
  projects/counters/crypto/openssh/umac.h
  projects/counters/crypto/openssh/version.h
  projects/counters/etc/mtree/BSD.usr.dist
  projects/counters/etc/rc.d/sysctl
  projects/counters/etc/rc.subr
  projects/counters/gnu/lib/libsupc++/Makefile
  projects/counters/gnu/usr.bin/gdb/kgdb/kld.c
  projects/counters/lib/bind/config.h
  projects/counters/lib/bind/dns/code.h
  projects/counters/lib/bind/dns/dns/enumclass.h
  projects/counters/lib/bind/dns/dns/enumtype.h
  projects/counters/lib/bind/dns/dns/rdatastruct.h
  projects/counters/lib/libarchive/Makefile
  projects/counters/lib/libarchive/config_freebsd.h
  projects/counters/lib/libarchive/test/Makefile
  projects/counters/lib/libc/gen/wordexp.c
  projects/counters/lib/libc/locale/btowc.3
  projects/counters/lib/libc/locale/isblank.3
  projects/counters/lib/libc/stdtime/Makefile.inc
  projects/counters/lib/libc/sys/Makefile.inc
  projects/counters/lib/libc/sys/Symbol.map
  projects/counters/lib/libc/sys/accept.2
  projects/counters/lib/libc/sys/cap_rights_limit.2
  projects/counters/lib/libc/sys/chflags.2
  projects/counters/lib/libc/sys/extattr_get_file.2
  projects/counters/lib/libc/sys/posix_openpt.2
  projects/counters/lib/libdwarf/dwarf_die.c
  projects/counters/lib/libpmc/Makefile
  projects/counters/lib/libpmc/libpmc.c
  projects/counters/lib/libpmc/pmc.sandybridgexeon.3
  projects/counters/release/doc/en_US.ISO8859-1/hardware/article.xml
  projects/counters/sbin/dumpfs/dumpfs.c
  projects/counters/sbin/fsck_ffs/fsck.h
  projects/counters/sbin/fsck_ffs/fsutil.c
  projects/counters/sbin/fsck_ffs/inode.c
  projects/counters/sbin/fsck_ffs/pass1.c
  projects/counters/sbin/fsck_ffs/pass5.c
  projects/counters/sbin/fsck_ffs/setup.c
  projects/counters/sbin/fsck_ffs/suj.c
  projects/counters/sbin/fsdb/fsdb.c
  projects/counters/sbin/geom/class/eli/geli.8
  projects/counters/sbin/newfs/mkfs.c
  projects/counters/sbin/newfs/newfs.8
  projects/counters/sbin/newfs/newfs.c
  projects/counters/sbin/newfs/newfs.h
  projects/counters/sbin/nvmecontrol/nvmecontrol.8
  projects/counters/sbin/nvmecontrol/nvmecontrol.c
  projects/counters/sbin/tunefs/tunefs.8
  projects/counters/sbin/tunefs/tunefs.c
  projects/counters/secure/lib/libssh/Makefile
  projects/counters/secure/libexec/ssh-keysign/Makefile
  projects/counters/share/examples/bhyve/vmrun.sh
  projects/counters/share/examples/etc/make.conf
  projects/counters/share/man/man4/Makefile
  projects/counters/share/man/man5/make.conf.5
  projects/counters/share/man/man9/taskqueue.9
  projects/counters/share/misc/committers-ports.dot
  projects/counters/share/mk/bsd.lib.mk
  projects/counters/share/mk/bsd.own.mk
  projects/counters/share/mk/bsd.prog.mk
  projects/counters/sys/amd64/include/vmm_instruction_emul.h   (contents, props changed)
  projects/counters/sys/amd64/vmm/intel/vmx.c
  projects/counters/sys/amd64/vmm/io/vlapic.c
  projects/counters/sys/amd64/vmm/vmm_instruction_emul.c
  projects/counters/sys/amd64/vmm/vmm_stat.c
  projects/counters/sys/amd64/vmm/vmm_stat.h
  projects/counters/sys/arm/arm/busdma_machdep-v6.c
  projects/counters/sys/arm/arm/locore.S
  projects/counters/sys/arm/at91/at91_machdep.c
  projects/counters/sys/arm/at91/at91_mci.c
  projects/counters/sys/arm/at91/at91_pio.c
  projects/counters/sys/arm/at91/at91_piovar.h
  projects/counters/sys/arm/at91/at91_pmc.c
  projects/counters/sys/arm/at91/at91rm9200.c
  projects/counters/sys/arm/at91/at91rm9200_devices.c
  projects/counters/sys/arm/at91/uart_dev_at91usart.c
  projects/counters/sys/arm/include/machdep.h
  projects/counters/sys/arm/s3c2xx0/uart_dev_s3c2410.c
  projects/counters/sys/arm/sa11x0/uart_dev_sa1110.c
  projects/counters/sys/boot/arm/uboot/start.S
  projects/counters/sys/boot/fdt/fdt_loader_cmd.c
  projects/counters/sys/bsm/audit_kevents.h
  projects/counters/sys/cam/ata/ata_all.c
  projects/counters/sys/cam/ata/ata_da.c
  projects/counters/sys/cam/cam.c
  projects/counters/sys/cam/cam.h
  projects/counters/sys/cam/cam_periph.c
  projects/counters/sys/cam/cam_periph.h
  projects/counters/sys/cam/cam_sim.c
  projects/counters/sys/cam/ctl/README.ctl.txt
  projects/counters/sys/cam/ctl/ctl.c
  projects/counters/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/counters/sys/cam/ctl/ctl_frontend_internal.c
  projects/counters/sys/cam/ctl/scsi_ctl.c
  projects/counters/sys/cam/scsi/scsi_all.c
  projects/counters/sys/cam/scsi/scsi_all.h
  projects/counters/sys/cam/scsi/scsi_da.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h
  projects/counters/sys/cddl/dev/fbt/fbt.c
  projects/counters/sys/compat/freebsd32/freebsd32_proto.h
  projects/counters/sys/compat/freebsd32/freebsd32_syscall.h
  projects/counters/sys/compat/freebsd32/freebsd32_syscalls.c
  projects/counters/sys/compat/freebsd32/freebsd32_sysent.c
  projects/counters/sys/compat/freebsd32/freebsd32_systrace_args.c
  projects/counters/sys/compat/freebsd32/syscalls.master
  projects/counters/sys/compat/linux/linux_file.c
  projects/counters/sys/conf/NOTES
  projects/counters/sys/conf/files
  projects/counters/sys/dev/ahci/ahci.c
  projects/counters/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_domains.h
  projects/counters/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regmap.h
  projects/counters/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
  projects/counters/sys/dev/ath/if_ath.c
  projects/counters/sys/dev/ath/if_ath_beacon.c
  projects/counters/sys/dev/ath/if_ath_beacon.h
  projects/counters/sys/dev/ath/if_ath_misc.h
  projects/counters/sys/dev/ath/if_ath_rx.c
  projects/counters/sys/dev/ath/if_ath_rx_edma.c
  projects/counters/sys/dev/ath/if_ath_sysctl.c
  projects/counters/sys/dev/ath/if_ath_tdma.c
  projects/counters/sys/dev/ath/if_ath_tx.c
  projects/counters/sys/dev/ath/if_ath_tx_edma.c
  projects/counters/sys/dev/ath/if_athvar.h
  projects/counters/sys/dev/bge/if_bge.c
  projects/counters/sys/dev/ciss/ciss.c
  projects/counters/sys/dev/cxgbe/adapter.h
  projects/counters/sys/dev/cxgbe/common/common.h
  projects/counters/sys/dev/cxgbe/common/t4_hw.c
  projects/counters/sys/dev/cxgbe/common/t4_hw.h
  projects/counters/sys/dev/cxgbe/common/t4_msg.h
  projects/counters/sys/dev/cxgbe/common/t4_regs.h
  projects/counters/sys/dev/cxgbe/osdep.h
  projects/counters/sys/dev/cxgbe/t4_ioctl.h
  projects/counters/sys/dev/cxgbe/t4_main.c
  projects/counters/sys/dev/cxgbe/t4_sge.c
  projects/counters/sys/dev/cxgbe/tom/t4_connect.c
  projects/counters/sys/dev/cxgbe/tom/t4_cpl_io.c
  projects/counters/sys/dev/cxgbe/tom/t4_ddp.c
  projects/counters/sys/dev/cxgbe/tom/t4_listen.c
  projects/counters/sys/dev/cxgbe/tom/t4_tom.c
  projects/counters/sys/dev/cxgbe/tom/t4_tom.h
  projects/counters/sys/dev/drm2/ttm/ttm_bo_util.c
  projects/counters/sys/dev/drm2/ttm/ttm_bo_vm.c
  projects/counters/sys/dev/drm2/ttm/ttm_memory.c
  projects/counters/sys/dev/e1000/if_igb.c
  projects/counters/sys/dev/e1000/if_igb.h
  projects/counters/sys/dev/fb/vesa.c
  projects/counters/sys/dev/hwpmc/hwpmc_core.c
  projects/counters/sys/dev/hwpmc/hwpmc_intel.c
  projects/counters/sys/dev/hwpmc/hwpmc_uncore.c
  projects/counters/sys/dev/hwpmc/pmc_events.h
  projects/counters/sys/dev/ipmi/ipmi_kcs.c
  projects/counters/sys/dev/ipmi/ipmi_smic.c
  projects/counters/sys/dev/isci/isci_controller.c
  projects/counters/sys/dev/isci/isci_io_request.c
  projects/counters/sys/dev/ixgbe/ixgbe.c
  projects/counters/sys/dev/mfi/mfi_disk.c
  projects/counters/sys/dev/mmc/mmc.c
  projects/counters/sys/dev/mmc/mmcsd.c
  projects/counters/sys/dev/mps/mps_sas.c
  projects/counters/sys/dev/nvd/nvd.c
  projects/counters/sys/dev/nvme/nvme.c
  projects/counters/sys/dev/nvme/nvme.h
  projects/counters/sys/dev/nvme/nvme_ctrlr.c
  projects/counters/sys/dev/nvme/nvme_ctrlr_cmd.c
  projects/counters/sys/dev/nvme/nvme_ns.c
  projects/counters/sys/dev/nvme/nvme_ns_cmd.c
  projects/counters/sys/dev/nvme/nvme_private.h
  projects/counters/sys/dev/nvme/nvme_qpair.c
  projects/counters/sys/dev/nvme/nvme_sysctl.c
  projects/counters/sys/dev/nvme/nvme_test.c
  projects/counters/sys/dev/nvme/nvme_uio.c
  projects/counters/sys/dev/sound/pci/hda/hdaa_patches.c
  projects/counters/sys/dev/tws/tws_cam.c
  projects/counters/sys/dev/tws/tws_user.c
  projects/counters/sys/dev/uart/uart_core.c
  projects/counters/sys/dev/uart/uart_dev_imx.c
  projects/counters/sys/dev/uart/uart_dev_pl011.c
  projects/counters/sys/dev/uart/uart_dev_quicc.c
  projects/counters/sys/dev/uart/uart_dev_sab82532.c
  projects/counters/sys/dev/uart/uart_dev_z8530.c
  projects/counters/sys/fs/nfsclient/nfs_clbio.c
  projects/counters/sys/fs/tmpfs/tmpfs.h
  projects/counters/sys/fs/tmpfs/tmpfs_subr.c
  projects/counters/sys/fs/tmpfs/tmpfs_vnops.c
  projects/counters/sys/geom/gate/g_gate.c
  projects/counters/sys/geom/geom_dev.c
  projects/counters/sys/geom/geom_disk.c
  projects/counters/sys/geom/geom_event.c
  projects/counters/sys/geom/geom_int.h
  projects/counters/sys/geom/geom_io.c
  projects/counters/sys/geom/geom_slice.c
  projects/counters/sys/geom/geom_subr.c
  projects/counters/sys/geom/multipath/g_multipath.c
  projects/counters/sys/geom/nop/g_nop.c
  projects/counters/sys/geom/raid/tr_raid1e.c
  projects/counters/sys/i386/include/param.h
  projects/counters/sys/kern/capabilities.conf
  projects/counters/sys/kern/init_sysent.c
  projects/counters/sys/kern/kern_physio.c
  projects/counters/sys/kern/kern_timeout.c
  projects/counters/sys/kern/kern_umtx.c
  projects/counters/sys/kern/subr_bus_dma.c
  projects/counters/sys/kern/subr_taskqueue.c
  projects/counters/sys/kern/sys_pipe.c
  projects/counters/sys/kern/syscalls.c
  projects/counters/sys/kern/syscalls.master
  projects/counters/sys/kern/systrace_args.c
  projects/counters/sys/kern/tty_pts.c
  projects/counters/sys/kern/uipc_mbuf.c
  projects/counters/sys/kern/uipc_sockbuf.c
  projects/counters/sys/kern/uipc_socket.c
  projects/counters/sys/kern/uipc_syscalls.c
  projects/counters/sys/kern/vfs_aio.c
  projects/counters/sys/kern/vfs_bio.c
  projects/counters/sys/kern/vfs_extattr.c
  projects/counters/sys/kern/vfs_lookup.c
  projects/counters/sys/kern/vfs_mountroot.c
  projects/counters/sys/kern/vfs_syscalls.c
  projects/counters/sys/kern/vfs_vnops.c
  projects/counters/sys/mips/adm5120/uart_dev_adm5120.c
  projects/counters/sys/mips/atheros/ar71xx_chip.c
  projects/counters/sys/mips/atheros/ar71xx_cpudef.h
  projects/counters/sys/mips/atheros/ar71xx_machdep.c
  projects/counters/sys/mips/atheros/ar71xx_setup.c
  projects/counters/sys/mips/atheros/ar724x_chip.c
  projects/counters/sys/mips/atheros/ar91xx_chip.c
  projects/counters/sys/mips/atheros/files.ar71xx
  projects/counters/sys/mips/rt305x/uart_dev_rt305x.c
  projects/counters/sys/modules/Makefile
  projects/counters/sys/modules/cxgbe/Makefile
  projects/counters/sys/modules/dtrace/dtrace/Makefile
  projects/counters/sys/modules/igb/Makefile
  projects/counters/sys/net/if_arcsubr.c
  projects/counters/sys/net/if_bridge.c
  projects/counters/sys/net/if_lagg.c
  projects/counters/sys/net/if_lagg.h
  projects/counters/sys/netgraph/netflow/netflow.c
  projects/counters/sys/netgraph/netflow/ng_netflow.c
  projects/counters/sys/netgraph/ng_ksocket.c
  projects/counters/sys/netinet/sctp_constants.h
  projects/counters/sys/netinet/tcp_input.c
  projects/counters/sys/netinet6/in6_proto.c
  projects/counters/sys/netinet6/nd6.c
  projects/counters/sys/netpfil/ipfw/ip_fw_sockopt.c
  projects/counters/sys/sparc64/pci/sbbc.c
  projects/counters/sys/sys/bio.h
  projects/counters/sys/sys/bus_dma.h
  projects/counters/sys/sys/capability.h
  projects/counters/sys/sys/conf.h
  projects/counters/sys/sys/extattr.h
  projects/counters/sys/sys/pmc.h
  projects/counters/sys/sys/socket.h
  projects/counters/sys/sys/stat.h
  projects/counters/sys/sys/syscall.h
  projects/counters/sys/sys/syscall.mk
  projects/counters/sys/sys/syscallsubr.h
  projects/counters/sys/sys/sysproto.h
  projects/counters/sys/sys/taskqueue.h
  projects/counters/sys/ufs/ffs/ffs_alloc.c
  projects/counters/sys/ufs/ffs/ffs_balloc.c
  projects/counters/sys/ufs/ffs/fs.h
  projects/counters/sys/vm/vm_mmap.c
  projects/counters/sys/vm/vm_radix.c
  projects/counters/sys/x86/x86/busdma_machdep.c
  projects/counters/tools/regression/lib/libc/gen/test-wordexp.c
  projects/counters/tools/regression/pjdfstest/Makefile
  projects/counters/tools/regression/pjdfstest/pjdfstest.c
  projects/counters/tools/regression/security/cap_test/cap_test_capabilities.c
  projects/counters/tools/tools/ath/athstats/athstats.c
  projects/counters/tools/tools/cxgbetool/cxgbetool.c
  projects/counters/tools/tools/tinybsd/conf/firewall/TINYBSD
  projects/counters/usr.bin/ar/Makefile
  projects/counters/usr.bin/ar/acpyacc.y
  projects/counters/usr.bin/ar/read.c
  projects/counters/usr.bin/ar/write.c
  projects/counters/usr.bin/cpio/Makefile
  projects/counters/usr.bin/cpio/test/Makefile
  projects/counters/usr.bin/ctlstat/ctlstat.8
  projects/counters/usr.bin/systat/vmstat.c
  projects/counters/usr.bin/tar/Makefile
  projects/counters/usr.bin/tar/test/Makefile
  projects/counters/usr.bin/unifdef/unifdef.1
  projects/counters/usr.bin/unifdef/unifdef.c
  projects/counters/usr.bin/unifdef/unifdefall.sh
  projects/counters/usr.bin/unzip/unzip.c
  projects/counters/usr.sbin/bhyvectl/bhyvectl.c
  projects/counters/usr.sbin/bsdinstall/distextract/distextract.c
  projects/counters/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_storage_tbl.c
  projects/counters/usr.sbin/config/main.c
  projects/counters/usr.sbin/ctladm/ctladm.8
  projects/counters/usr.sbin/extattr/rmextattr.c
  projects/counters/usr.sbin/jail/command.c
  projects/counters/usr.sbin/jail/config.c
  projects/counters/usr.sbin/jail/jailp.h
  projects/counters/usr.sbin/newsyslog/newsyslog.c
  projects/counters/usr.sbin/watchdogd/watchdogd.8
  projects/counters/usr.sbin/watchdogd/watchdogd.c
Directory Properties:
  projects/counters/   (props changed)
  projects/counters/cddl/   (props changed)
  projects/counters/cddl/contrib/opensolaris/   (props changed)
  projects/counters/contrib/bind9/   (props changed)
  projects/counters/contrib/binutils/   (props changed)
  projects/counters/contrib/libarchive/   (props changed)
  projects/counters/contrib/libarchive/cpio/   (props changed)
  projects/counters/contrib/libarchive/libarchive/   (props changed)
  projects/counters/contrib/libarchive/tar/   (props changed)
  projects/counters/contrib/openbsm/   (props changed)
  projects/counters/crypto/openssh/   (props changed)
  projects/counters/gnu/lib/   (props changed)
  projects/counters/gnu/usr.bin/gdb/   (props changed)
  projects/counters/lib/libc/   (props changed)
  projects/counters/lib/libc/stdtime/   (props changed)
  projects/counters/sbin/   (props changed)
  projects/counters/share/man/man4/   (props changed)
  projects/counters/sys/   (props changed)
  projects/counters/sys/amd64/vmm/   (props changed)
  projects/counters/sys/boot/   (props changed)
  projects/counters/sys/cddl/contrib/opensolaris/   (props changed)
  projects/counters/sys/conf/   (props changed)
  projects/counters/usr.sbin/bhyvectl/   (props changed)
  projects/counters/usr.sbin/jail/   (props changed)

Modified: projects/counters/MAINTAINERS
==============================================================================
--- projects/counters/MAINTAINERS	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/MAINTAINERS	Tue Apr  2 09:51:36 2013	(r249013)
@@ -30,7 +30,8 @@ contrib/openbsm	rwatson	Pre-commit revie
 sys/security/audit	rwatson	Pre-commit review requested.
 ahc(4)		gibbs	Pre-commit review requested.
 ahd(4)		gibbs	Pre-commit review requested.
-NEWCARD		imp	Pre-commit review requested.
+PC Card		imp	Pre-commit review requested.
+CardBus		imp	Pre-commit review requested.
 pci bus		imp,jhb	Pre-commit review requested.
 cdboot		jhb	Pre-commit review requested.
 pxeboot		jhb	Pre-commit review requested.

Modified: projects/counters/Makefile
==============================================================================
--- projects/counters/Makefile	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/Makefile	Tue Apr  2 09:51:36 2013	(r249013)
@@ -392,6 +392,14 @@ universe_${target}_${target_arch}: unive
 .endfor
 .endif
 .if !defined(MAKE_JUST_WORLDS)
+# If we are building world and kernels wait for the required worlds to finish
+.if !defined(MAKE_JUST_KERNELS)
+.for target_arch in ${TARGET_ARCHES_${target}}
+universe_${target}_kernels: universe_${target}_${target_arch}
+.endfor
+.endif
+universe_${target}: universe_${target}_kernels
+universe_${target}_kernels: universe_${target}_prologue
 .if exists(${KERNSRCDIR}/${target}/conf/NOTES)
 	@(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \
 	    ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \

Modified: projects/counters/Makefile.inc1
==============================================================================
--- projects/counters/Makefile.inc1	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/Makefile.inc1	Tue Apr  2 09:51:36 2013	(r249013)
@@ -1743,13 +1743,15 @@ XDTP=/usr/${XDDIR}
 CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \
 	INSTALL="sh ${.CURDIR}/tools/install.sh"
 CDENV= ${CDBENV} \
-	_SHLIBDIRPREFIX=${XDTP} \
-	TOOLS_PREFIX=${XDTP}
-CD2ENV=${CDENV} \
+	_SHLIBDIRPREFIX=${XDDESTDIR} \
+	TOOLS_PREFIX=${XDDESTDIR}
+CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \
+	-B${XDDESTDIR}/usr/lib
+CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" \
 	MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH}
 
-CDTMP=	${MAKEOBJDIRPREFIX}/${XDEV}/${.CURDIR}/tmp
-CDMAKE=${CDENV} ${MAKE} ${NOFUN}
+CDTMP=	${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp
+CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
 CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDTP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
 XDDESTDIR=${DESTDIR}${XDTP}
 .if !defined(OSREL)
@@ -1759,8 +1761,24 @@ OSREL!= uname -r | sed -e 's/[-(].*//'
 .ORDER: xdev-build xdev-install
 xdev: xdev-build xdev-install
 
-.ORDER: _xb-build-tools _xb-cross-tools
-xdev-build: _xb-build-tools _xb-cross-tools
+.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
+xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
+
+_xb-worldtmp:
+	mkdir -p ${CDTMP}/usr
+	mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
+	    -p ${CDTMP}/usr >/dev/null
+
+_xb-bootstrap-tools:
+.for _tool in \
+    ${_clang_tblgen}
+	${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
+	cd ${.CURDIR}/${_tool}; \
+	${CDMAKE} DIRPRFX=${_tool}/ obj; \
+	${CDMAKE} DIRPRFX=${_tool}/ depend; \
+	${CDMAKE} DIRPRFX=${_tool}/ all; \
+	${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
+.endfor
 
 _xb-build-tools:
 	${_+_}@cd ${.CURDIR}; \
@@ -1770,7 +1788,9 @@ _xb-cross-tools:
 .for _tool in \
     gnu/usr.bin/binutils \
     gnu/usr.bin/cc \
-    usr.bin/ar
+    usr.bin/ar \
+    ${_clang_libs} \
+    ${_clang}
 	${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \
 	cd ${.CURDIR}/${_tool}; \
 	${CDMAKE} DIRPRFX=${_tool}/ obj; \
@@ -1796,7 +1816,8 @@ _xi-cross-tools:
 .for _tool in \
     gnu/usr.bin/binutils \
     gnu/usr.bin/cc \
-    usr.bin/ar
+    usr.bin/ar \
+    ${_clang}
 	${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
 	cd ${.CURDIR}/${_tool}; \
 	${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}
@@ -1819,6 +1840,6 @@ _xi-links:
 			    ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
 		done
 .else
-xdev xdev-buil xdev-install:
+xdev xdev-build xdev-install:
 	@echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target"
 .endif

Modified: projects/counters/ObsoleteFiles.inc
==============================================================================
--- projects/counters/ObsoleteFiles.inc	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/ObsoleteFiles.inc	Tue Apr  2 09:51:36 2013	(r249013)
@@ -38,7 +38,11 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20130316: vinum.4 removed
 OLD_FILES+=usr/share/man/man4/vinum.4.gz
+# 20130312: fortunes-o removed
+OLD_FILES+=usr/share/games/fortune/fortunes-o
+OLD_FILES+=usr/share/games/fortune/fortunes-o.dat
 # 20130311: Ports are no more available via cvsup
 OLD_FILES+=usr/share/examples/cvsup/ports-supfile
 OLD_FILES+=usr/share/examples/cvsup/refuse

Modified: projects/counters/bin/chflags/chflags.c
==============================================================================
--- projects/counters/bin/chflags/chflags.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/chflags/chflags.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -117,11 +117,7 @@ main(int argc, char *argv[])
 	} else
 		fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL;
 
-	/* XXX: Why don't chflags and lchflags have compatible prototypes? */
-	if (hflag)
-		change_flags = (int (*)(const char *, unsigned long))lchflags;
-	else
-		change_flags = chflags;
+	change_flags = hflag ? lchflags : chflags;
 
 	flags = *argv;
 	if (*flags >= '0' && *flags <= '7') {

Modified: projects/counters/bin/ed/cbc.c
==============================================================================
--- projects/counters/bin/ed/cbc.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/ed/cbc.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -71,7 +71,6 @@ __FBSDID("$FreeBSD$");
 #ifdef DES
 static DES_cblock ivec;			/* initialization vector */
 static DES_cblock pvec;			/* padding vector */
-#endif
 
 static char bits[] = {			/* used to extract bits from a char */
 	'\200', '\100', '\040', '\020', '\010', '\004', '\002', '\001'
@@ -79,13 +78,12 @@ static char bits[] = {			/* used to extr
 
 static int pflag;			/* 1 to preserve parity bits */
 
-#ifdef DES
 static DES_key_schedule schedule;	/* expanded DES key */
-#endif
 
 static unsigned char des_buf[8];/* shared buffer for get_des_char/put_des_char */
 static int des_ct = 0;		/* count for get_des_char/put_des_char */
 static int des_n = 0;		/* index for put_des_char/get_des_char */
+#endif
 
 /* init_des_cipher: initialize DES */
 void

Modified: projects/counters/bin/mv/mv.c
==============================================================================
--- projects/counters/bin/mv/mv.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/mv/mv.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -337,7 +337,7 @@ err:		if (unlink(to))
 	 * on a file that we copied, i.e., that we didn't create.)
 	 */
 	errno = 0;
-	if (fchflags(to_fd, (u_long)sbp->st_flags))
+	if (fchflags(to_fd, sbp->st_flags))
 		if (errno != EOPNOTSUPP || sbp->st_flags != 0)
 			warn("%s: set flags (was: 0%07o)", to, sbp->st_flags);
 

Modified: projects/counters/bin/setfacl/setfacl.1
==============================================================================
--- projects/counters/bin/setfacl/setfacl.1	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/setfacl/setfacl.1	Tue Apr  2 09:51:36 2013	(r249013)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 8, 2013
+.Dd April 1, 2013
 .Dt SETFACL 1
 .Os
 .Sh NAME
@@ -401,6 +401,10 @@ NFSv4 ACL entries are evaluated in their
 .Pp
 Multiple ACL entries specified on the command line are
 separated by commas.
+.Pp
+Note that the file owner is always granted the read_acl, write_acl,
+read_attributes, and write_attributes permissions, even if the ACL
+would deny it.
 .Sh EXIT STATUS
 .Ex -std
 .Sh EXAMPLES

Modified: projects/counters/bin/sh/exec.c
==============================================================================
--- projects/counters/bin/sh/exec.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/exec.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -165,7 +165,7 @@ tryexec(char *cmd, char **argv, char **e
 			}
 		}
 		*argv = cmd;
-		*--argv = _PATH_BSHELL;
+		*--argv = __DECONST(char *, _PATH_BSHELL);
 		execve(_PATH_BSHELL, argv, envp);
 	}
 	errno = e;
@@ -188,7 +188,7 @@ padvance(const char **path, const char *
 {
 	const char *p, *start;
 	char *q;
-	int len;
+	size_t len;
 
 	if (*path == NULL)
 		return NULL;

Modified: projects/counters/bin/sh/expand.c
==============================================================================
--- projects/counters/bin/sh/expand.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/expand.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -460,7 +460,7 @@ expbackq(union node *cmd, int quoted, in
 	int startloc = dest - stackblock();
 	char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
 	int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
-	int nnl;
+	size_t nnl;
 
 	INTOFF;
 	saveifs = ifsfirst;
@@ -1163,9 +1163,9 @@ nometa:
 static void
 expmeta(char *enddir, char *name)
 {
-	char *p;
-	char *q;
-	char *start;
+	const char *p;
+	const char *q;
+	const char *start;
 	char *endname;
 	int metaflag;
 	struct stat statb;
@@ -1229,7 +1229,7 @@ expmeta(char *enddir, char *name)
 			addfname(expdir);
 		return;
 	}
-	endname = p;
+	endname = name + (p - name);
 	if (start != name) {
 		p = name;
 		while (p < start) {
@@ -1412,7 +1412,8 @@ match_charclass(const char *p, wchar_t c
 	*end = NULL;
 	p++;
 	nameend = strstr(p, ":]");
-	if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p)
+	if (nameend == NULL || (size_t)(nameend - p) >= sizeof(name) ||
+	    nameend == p)
 		return 0;
 	memcpy(name, p, nameend - p);
 	name[nameend - p] = '\0';

Modified: projects/counters/bin/sh/input.c
==============================================================================
--- projects/counters/bin/sh/input.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/input.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$");
 
 struct strpush {
 	struct strpush *prev;	/* preceding string on stack */
-	char *prevstring;
+	const char *prevstring;
 	int prevnleft;
 	int prevlleft;
 	struct alias *ap;	/* if push was associated with an alias */
@@ -83,7 +83,7 @@ struct parsefile {
 	int fd;			/* file descriptor (or -1 if string) */
 	int nleft;		/* number of chars left in this line */
 	int lleft;		/* number of lines left in this buffer */
-	char *nextc;		/* next char in buffer */
+	const char *nextc;	/* next char in buffer */
 	char *buf;		/* input buffer */
 	struct strpush *strpush; /* for pushing strings at this level */
 	struct strpush basestrpush; /* so pushing one is fast */
@@ -93,7 +93,7 @@ struct parsefile {
 int plinno = 1;			/* input line number */
 int parsenleft;			/* copy of parsefile->nleft */
 MKINIT int parselleft;		/* copy of parsefile->lleft */
-char *parsenextc;		/* copy of parsefile->nextc */
+const char *parsenextc;		/* copy of parsefile->nextc */
 static char basebuf[BUFSIZ + 1];/* buffer for top level input file */
 static struct parsefile basepf = {	/* top level input file */
 	.nextc = basebuf,
@@ -185,7 +185,7 @@ retry:
 			nr = el_len;
 			if (nr > BUFSIZ)
 				nr = BUFSIZ;
-			memcpy(parsenextc, rl_cp, nr);
+			memcpy(parsefile->buf, rl_cp, nr);
 			if (nr != el_len) {
 				el_len -= nr;
 				rl_cp += nr;
@@ -194,7 +194,7 @@ retry:
 		}
 	} else
 #endif
-		nr = read(parsefile->fd, parsenextc, BUFSIZ);
+		nr = read(parsefile->fd, parsefile->buf, BUFSIZ);
 
 	if (nr <= 0) {
                 if (nr < 0) {
@@ -252,7 +252,7 @@ again:
 		}
 	}
 
-	q = p = parsenextc;
+	q = p = parsefile->buf + (parsenextc - parsefile->buf);
 
 	/* delete nul characters */
 	something = 0;
@@ -439,7 +439,7 @@ setinputfd(int fd, int push)
  */
 
 void
-setinputstring(char *string, int push)
+setinputstring(const char *string, int push)
 {
 	INTOFF;
 	if (push)

Modified: projects/counters/bin/sh/input.h
==============================================================================
--- projects/counters/bin/sh/input.h	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/input.h	Tue Apr  2 09:51:36 2013	(r249013)
@@ -42,7 +42,7 @@
  */
 extern int plinno;
 extern int parsenleft;		/* number of characters left in input buffer */
-extern char *parsenextc;	/* next character in input buffer */
+extern const char *parsenextc;	/* next character in input buffer */
 
 struct alias;
 struct parsefile;
@@ -55,7 +55,7 @@ void pungetc(void);
 void pushstring(char *, int, struct alias *);
 void setinputfile(const char *, int);
 void setinputfd(int, int);
-void setinputstring(char *, int);
+void setinputstring(const char *, int);
 void popfile(void);
 struct parsefile *getcurrentfile(void);
 void popfilesupto(struct parsefile *);

Modified: projects/counters/bin/sh/jobs.c
==============================================================================
--- projects/counters/bin/sh/jobs.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/jobs.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -668,7 +668,8 @@ makejob(union node *node __unused, int n
 				jobtab = jp;
 			}
 			jp = jobtab + njobs;
-			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0);
+			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0)
+				;
 			INTON;
 			break;
 		}
@@ -1005,7 +1006,7 @@ waitforjob(struct job *jp, int *origstat
 
 
 static void
-dummy_handler(int sig)
+dummy_handler(int sig __unused)
 {
 }
 

Modified: projects/counters/bin/sh/main.c
==============================================================================
--- projects/counters/bin/sh/main.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/main.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -80,7 +80,7 @@ struct jmploc main_handler;
 int localeisutf8, initial_localeisutf8;
 
 static void cmdloop(int);
-static void read_profile(char *);
+static void read_profile(const char *);
 static char *find_dot_file(char *);
 
 /*
@@ -239,7 +239,7 @@ cmdloop(int top)
  */
 
 static void
-read_profile(char *name)
+read_profile(const char *name)
 {
 	int fd;
 	const char *expandedname;

Modified: projects/counters/bin/sh/memalloc.c
==============================================================================
--- projects/counters/bin/sh/memalloc.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/memalloc.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -233,7 +233,8 @@ growstackblock(int min)
 
 	if (min < stacknleft)
 		min = stacknleft;
-	if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
+	if ((unsigned int)min >=
+	    INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
 		error("Out of space");
 	min += stacknleft;
 	min += ALIGN(sizeof(struct stack_block));
@@ -327,7 +328,7 @@ makestrspace(int min, char *p)
 
 
 char *
-stputbin(const char *data, int len, char *p)
+stputbin(const char *data, size_t len, char *p)
 {
 	CHECKSTRSPACE(len, p);
 	memcpy(p, data, len);

Modified: projects/counters/bin/sh/memalloc.h
==============================================================================
--- projects/counters/bin/sh/memalloc.h	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/memalloc.h	Tue Apr  2 09:51:36 2013	(r249013)
@@ -57,7 +57,7 @@ void setstackmark(struct stackmark *);
 void popstackmark(struct stackmark *);
 char *growstackstr(void);
 char *makestrspace(int, char *);
-char *stputbin(const char *data, int len, char *p);
+char *stputbin(const char *data, size_t len, char *p);
 char *stputs(const char *data, char *p);
 
 
@@ -67,7 +67,7 @@ char *stputs(const char *data, char *p);
 #define grabstackblock(n) stalloc(n)
 #define STARTSTACKSTR(p)	p = stackblock()
 #define STPUTC(c, p)	do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0)
-#define CHECKSTRSPACE(n, p)	{ if (sstrend - p < n) p = makestrspace(n, p); }
+#define CHECKSTRSPACE(n, p)	{ if ((size_t)(sstrend - p) < n) p = makestrspace(n, p); }
 #define USTPUTC(c, p)	(*p++ = (c))
 /*
  * STACKSTRNUL's use is where we want to be able to turn a stack

Modified: projects/counters/bin/sh/parser.c
==============================================================================
--- projects/counters/bin/sh/parser.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/parser.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -119,7 +119,7 @@ static void parseheredoc(void);
 static int peektoken(void);
 static int readtoken(void);
 static int xxreadtoken(void);
-static int readtoken1(int, char const *, char *, int);
+static int readtoken1(int, const char *, const char *, int);
 static int noexpand(char *);
 static void synexpect(int) __dead2;
 static void synerror(const char *) __dead2;
@@ -983,7 +983,7 @@ parsebackq(char *out, struct nodelist **
 	char *volatile str;
 	struct jmploc jmploc;
 	struct jmploc *const savehandler = handler;
-	int savelen;
+	size_t savelen;
 	int saveprompt;
 	const int bq_startlinno = plinno;
 	char *volatile ostr = NULL;
@@ -1300,7 +1300,8 @@ readcstyleesc(char *out)
 #define	PARSEARITH()	{goto parsearith; parsearith_return:;}
 
 static int
-readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs)
+readtoken1(int firstc, char const *initialsyntax, const char *eofmark,
+    int striptabs)
 {
 	int c = firstc;
 	char *out;
@@ -1521,7 +1522,7 @@ checkend: {
 		}
 		if (c == *eofmark) {
 			if (pfgets(line, sizeof line) != NULL) {
-				char *p, *q;
+				const char *p, *q;
 
 				p = line;
 				for (q = eofmark + 1 ; *q && *p == *q ; p++, q++);
@@ -2038,7 +2039,7 @@ getprompt(void *unused __unused)
 
 
 const char *
-expandstr(char *ps)
+expandstr(const char *ps)
 {
 	union node n;
 	struct jmploc jmploc;

Modified: projects/counters/bin/sh/parser.h
==============================================================================
--- projects/counters/bin/sh/parser.h	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/parser.h	Tue Apr  2 09:51:36 2013	(r249013)
@@ -82,4 +82,4 @@ void fixredir(union node *, const char *
 int goodname(const char *);
 int isassignment(const char *);
 char *getprompt(void *);
-const char *expandstr(char *);
+const char *expandstr(const char *);

Modified: projects/counters/bin/sh/sh.1
==============================================================================
--- projects/counters/bin/sh/sh.1	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/sh.1	Tue Apr  2 09:51:36 2013	(r249013)
@@ -32,7 +32,7 @@
 .\"	from: @(#)sh.1	8.6 (Berkeley) 5/4/95
 .\" $FreeBSD$
 .\"
-.Dd January 22, 2013
+.Dd March 24, 2013
 .Dt SH 1
 .Os
 .Sh NAME
@@ -1061,6 +1061,9 @@ A subshell environment may be implemente
 If job control is enabled in an interactive shell,
 commands grouped in parentheses can be suspended and continued as a unit.
 .Pp
+For compatibility with other shells,
+two open parentheses in sequence should be separated by whitespace.
+.Pp
 The second form never forks another shell,
 so it is slightly more efficient.
 Grouping commands together this way allows the user to
@@ -1618,6 +1621,16 @@ and
 .Ic times
 returns information about the same process
 if they are the only command in a command substitution.
+.Pp
+If a command substitution of the
+.Li $(
+form begins with a subshell,
+the
+.Li $(
+and
+.Li (\&
+must be separated by whitespace
+to avoid ambiguity with arithmetic expansion.
 .Ss Arithmetic Expansion
 Arithmetic expansion provides a mechanism for evaluating an arithmetic
 expression and substituting its value.

Modified: projects/counters/bin/sh/trap.c
==============================================================================
--- projects/counters/bin/sh/trap.c	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/bin/sh/trap.c	Tue Apr  2 09:51:36 2013	(r249013)
@@ -150,7 +150,7 @@ printsignals(void)
  * The trap builtin.
  */
 int
-trapcmd(int argc, char **argv)
+trapcmd(int argc __unused, char **argv)
 {
 	char *action;
 	int signo;

Modified: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst	Tue Apr  2 09:45:34 2013	(r249012)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/jdtrace/exception.lst	Tue Apr  2 09:51:36 2013	(r249013)
@@ -23,7 +23,6 @@
 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
-# ident	"%Z%%M%	%I%	%E% SMI"
 
 # Exception list: names tests that are bypassed when running in Java
 # mode (relative to /opt/SUNWdtrt/tst)
@@ -52,14 +51,17 @@ common/usdt/tst.enabled.ksh
 common/usdt/tst.enabled2.ksh
 common/usdt/tst.entryreturn.ksh
 common/usdt/tst.fork.ksh
-common/usdt/tst.header.ksh
 common/usdt/tst.guess32.ksh
 common/usdt/tst.guess64.ksh
+common/usdt/tst.header.ksh
 common/usdt/tst.linkpriv.ksh
 common/usdt/tst.linkunpriv.ksh
 common/usdt/tst.multiple.ksh
 common/usdt/tst.nodtrace.ksh
+common/usdt/tst.noreap.ksh
+common/usdt/tst.noreapring.ksh
 common/usdt/tst.onlyenabled.ksh
+common/usdt/tst.reap.ksh
 common/usdt/tst.reeval.ksh
 common/usdt/tst.static.ksh
 common/usdt/tst.static2.ksh

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower(2152006));
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(toupper(timestamp));
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower());
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower("dory", "eel", "roughy"));
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(toupper());
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d)
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower("haino", "tylo"));
+	exit(1);
+}

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d)
@@ -0,0 +1,80 @@
+/*
+ * CDDL HEADER START
+ *
+ * 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]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+int64_t val[int];
+
+BEGIN
+{
+	base = -2;
+	i = 0;
+	val[i++] = -10;
+	val[i++] = -1;
+	val[i++] = 0;
+	val[i++] = 10;
+	val[i++] = 100;
+	val[i++] = 1000;
+	val[i++] = (1LL << 62);
+	maxval = i;
+	i = 0;
+}
+
+tick-1ms
+/i < maxval/
+{
+	printf("base %2d of %20d:  ", base, val[i]);
+}
+
+tick-1ms
+/i < maxval/
+{
+	printf("  %s\n", lltostr(val[i], base));
+}
+
+ERROR
+{
+	printf("  <error>\n");
+}
+
+tick-1ms
+/i < maxval/
+{
+	i++;
+}
+
+tick-1ms
+/i == maxval/
+{
+	i = 0;
+	base++;
+}
+
+tick-1ms
+/base > 40/
+{
+	exit(0);
+}
+

Copied: projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out (from r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out	Tue Apr  2 09:51:36 2013	(r249013, copy of r249011, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out)
@@ -0,0 +1,302 @@
+base -2 of                  -10:    <error>
+base -2 of                   -1:    <error>
+base -2 of                    0:    <error>
+base -2 of                   10:    <error>
+base -2 of                  100:    <error>
+base -2 of                 1000:    <error>
+base -2 of  4611686018427387904:    <error>
+base -1 of                  -10:    <error>
+base -1 of                   -1:    <error>
+base -1 of                    0:    <error>
+base -1 of                   10:    <error>
+base -1 of                  100:    <error>
+base -1 of                 1000:    <error>
+base -1 of  4611686018427387904:    <error>
+base  0 of                  -10:    <error>
+base  0 of                   -1:    <error>
+base  0 of                    0:    <error>
+base  0 of                   10:    <error>
+base  0 of                  100:    <error>
+base  0 of                 1000:    <error>
+base  0 of  4611686018427387904:    <error>
+base  1 of                  -10:    <error>
+base  1 of                   -1:    <error>
+base  1 of                    0:    <error>
+base  1 of                   10:    <error>
+base  1 of                  100:    <error>
+base  1 of                 1000:    <error>
+base  1 of  4611686018427387904:    <error>
+base  2 of                  -10:    1111111111111111111111111111111111111111111111111111111111110110
+base  2 of                   -1:    1111111111111111111111111111111111111111111111111111111111111111
+base  2 of                    0:    0
+base  2 of                   10:    1010
+base  2 of                  100:    1100100
+base  2 of                 1000:    1111101000
+base  2 of  4611686018427387904:    100000000000000000000000000000000000000000000000000000000000000
+base  3 of                  -10:    11112220022122120101211020120210210211120
+base  3 of                   -1:    11112220022122120101211020120210210211220
+base  3 of                    0:    0
+base  3 of                   10:    101
+base  3 of                  100:    10201
+base  3 of                 1000:    1101001
+base  3 of  4611686018427387904:    1010201120122220002201001122110012110111
+base  4 of                  -10:    33333333333333333333333333333312
+base  4 of                   -1:    33333333333333333333333333333333
+base  4 of                    0:    0
+base  4 of                   10:    22
+base  4 of                  100:    1210
+base  4 of                 1000:    33220
+base  4 of  4611686018427387904:    10000000000000000000000000000000
+base  5 of                  -10:    2214220303114400424121122411
+base  5 of                   -1:    2214220303114400424121122430
+base  5 of                    0:    0
+base  5 of                   10:    20
+base  5 of                  100:    400
+base  5 of                 1000:    13000
+base  5 of  4611686018427387904:    302141200402211214402403104
+base  6 of                  -10:    3520522010102100444244410
+base  6 of                   -1:    3520522010102100444244423
+base  6 of                    0:    0
+base  6 of                   10:    14
+base  6 of                  100:    244
+base  6 of                 1000:    4344
+base  6 of  4611686018427387904:    550120301313313111041104
+base  7 of                  -10:    45012021522523134134556
+base  7 of                   -1:    45012021522523134134601
+base  7 of                    0:    0
+base  7 of                   10:    13
+base  7 of                  100:    202
+base  7 of                 1000:    2626
+base  7 of  4611686018427387904:    11154003640456024361134
+base  8 of                  -10:    01777777777777777777766
+base  8 of                   -1:    01777777777777777777777
+base  8 of                    0:    0
+base  8 of                   10:    012
+base  8 of                  100:    0144
+base  8 of                 1000:    01750
+base  8 of  4611686018427387904:    0400000000000000000000
+base  9 of                  -10:    145808576354216723746
+base  9 of                   -1:    145808576354216723756
+base  9 of                    0:    0
+base  9 of                   10:    11
+base  9 of                  100:    121
+base  9 of                 1000:    1331
+base  9 of  4611686018427387904:    33646586081048405414
+base 10 of                  -10:    -10
+base 10 of                   -1:    -1
+base 10 of                    0:    0
+base 10 of                   10:    10
+base 10 of                  100:    100
+base 10 of                 1000:    1000
+base 10 of  4611686018427387904:    4611686018427387904
+base 11 of                  -10:    335500516a429071276
+base 11 of                   -1:    335500516a429071284
+base 11 of                    0:    0
+base 11 of                   10:    a
+base 11 of                  100:    91
+base 11 of                 1000:    82a
+base 11 of  4611686018427387904:    9140013181078458a4
+base 12 of                  -10:    839365134a2a240706
+base 12 of                   -1:    839365134a2a240713
+base 12 of                    0:    0
+base 12 of                   10:    a
+base 12 of                  100:    84
+base 12 of                 1000:    6b4
+base 12 of  4611686018427387904:    20b3a733a268670194
+base 13 of                  -10:    219505a9511a867b66
+base 13 of                   -1:    219505a9511a867b72
+base 13 of                    0:    0
+base 13 of                   10:    a
+base 13 of                  100:    79
+base 13 of                 1000:    5bc
+base 13 of  4611686018427387904:    6c1349246a2881c84
+base 14 of                  -10:    8681049adb03db166
+base 14 of                   -1:    8681049adb03db171
+base 14 of                    0:    0
+base 14 of                   10:    a
+base 14 of                  100:    72
+base 14 of                 1000:    516
+base 14 of  4611686018427387904:    219038263637dd3c4
+base 15 of                  -10:    2c1d56b648c6cd106
+base 15 of                   -1:    2c1d56b648c6cd110
+base 15 of                    0:    0
+base 15 of                   10:    a
+base 15 of                  100:    6a
+base 15 of                 1000:    46a
+base 15 of  4611686018427387904:    a7e8ce189a933404
+base 16 of                  -10:    0xfffffffffffffff6
+base 16 of                   -1:    0xffffffffffffffff
+base 16 of                    0:    0x0
+base 16 of                   10:    0xa
+base 16 of                  100:    0x64
+base 16 of                 1000:    0x3e8
+base 16 of  4611686018427387904:    0x4000000000000000
+base 17 of                  -10:    67979g60f5428008
+base 17 of                   -1:    67979g60f5428010
+base 17 of                    0:    0
+base 17 of                   10:    a
+base 17 of                  100:    5f
+base 17 of                 1000:    37e
+base 17 of  4611686018427387904:    1a6a6ca03e10a88d
+base 18 of                  -10:    2d3fgb0b9cg4bd26
+base 18 of                   -1:    2d3fgb0b9cg4bd2f
+base 18 of                    0:    0
+base 18 of                   10:    a
+base 18 of                  100:    5a
+base 18 of                 1000:    31a
+base 18 of  4611686018427387904:    c588bdbfgd12ge4
+base 19 of                  -10:    141c8786h1ccaag7
+base 19 of                   -1:    141c8786h1ccaagg
+base 19 of                    0:    0
+base 19 of                   10:    a
+base 19 of                  100:    55
+base 19 of                 1000:    2ec
+base 19 of  4611686018427387904:    5ecbb6fi9h7ggi9
+base 20 of                  -10:    b53bjh07be4dj06
+base 20 of                   -1:    b53bjh07be4dj0f
+base 20 of                    0:    0

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

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 10:05:31 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 288FC882;
 Tue,  2 Apr 2013 10:05:31 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 1B7EE73E;
 Tue,  2 Apr 2013 10:05:31 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32A5UpF043223;
 Tue, 2 Apr 2013 10:05:30 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32A5UAB043220;
 Tue, 2 Apr 2013 10:05:30 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304021005.r32A5UAB043220@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 10:05:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249014 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 10:05:31 -0000

Author: mav
Date: Tue Apr  2 10:05:30 2013
New Revision: 249014
URL: http://svnweb.freebsd.org/changeset/base/249014

Log:
  - Drop alloc_ccb_entry field, unused since r248890.
  - Rename send_ccb_entry field to devq_entry.

Modified:
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/cam_xpt_internal.h

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 09:51:36 2013	(r249013)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 10:05:30 2013	(r249014)
@@ -296,8 +296,7 @@ static xpt_busfunc_t	xptsetasyncbusfunc;
 static cam_status	xptregister(struct cam_periph *periph,
 				    void *arg);
 static __inline int periph_is_queued(struct cam_periph *periph);
-static __inline int device_is_alloc_queued(struct cam_ed *device);
-static __inline int device_is_send_queued(struct cam_ed *device);
+static __inline int device_is_queued(struct cam_ed *device);
 
 static __inline int
 xpt_schedule_devq(struct cam_devq *devq, struct cam_ed *dev)
@@ -314,7 +313,7 @@ xpt_schedule_devq(struct cam_devq *devq,
 		 */
 		retval =
 		    xpt_schedule_dev(&devq->send_queue,
-				     &dev->send_ccb_entry.pinfo,
+				     &dev->devq_entry.pinfo,
 				     CAMQ_GET_PRIO(&dev->ccbq.queue));
 	} else {
 		retval = 0;
@@ -329,15 +328,9 @@ periph_is_queued(struct cam_periph *peri
 }
 
 static __inline int
-device_is_alloc_queued(struct cam_ed *device)
+device_is_queued(struct cam_ed *device)
 {
-	return (device->alloc_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX);
-}
-
-static __inline int
-device_is_send_queued(struct cam_ed *device)
-{
-	return (device->send_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX);
+	return (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX);
 }
 
 static void
@@ -4112,9 +4105,9 @@ xpt_freeze_devq(struct cam_path *path, u
 	mtx_assert(path->bus->sim->mtx, MA_OWNED);
 	dev->ccbq.queue.qfrozen_cnt += count;
 	/* Remove frozen device from sendq. */
-	if (device_is_send_queued(dev)) {
+	if (device_is_queued(dev)) {
 		camq_remove(&dev->sim->devq->send_queue,
-		    dev->send_ccb_entry.pinfo.index);
+		    dev->devq_entry.pinfo.index);
 	}
 	return (dev->ccbq.queue.qfrozen_cnt);
 }
@@ -4458,10 +4451,8 @@ xpt_alloc_device(struct cam_eb *bus, str
 	}
 
 	if (device != NULL) {
-		cam_init_pinfo(&device->alloc_ccb_entry.pinfo);
-		device->alloc_ccb_entry.device = device;
-		cam_init_pinfo(&device->send_ccb_entry.pinfo);
-		device->send_ccb_entry.device = device;
+		cam_init_pinfo(&device->devq_entry.pinfo);
+		device->devq_entry.device = device;
 		device->target = target;
 		device->lun_id = lun_id;
 		device->sim = bus->sim;
@@ -4509,8 +4500,7 @@ xpt_release_device(struct cam_ed *device
 	if (device->refcount == 1) {
 		struct cam_devq *devq;
 
-		if (device->alloc_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX
-		 || device->send_ccb_entry.pinfo.index != CAM_UNQUEUED_INDEX)
+		if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX)
 			panic("Removing device while still queued for ccbs");
 
 		if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0)
@@ -4982,7 +4972,7 @@ camisr_runqueue(struct cam_sim *sim)
 			if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0
 			 && (--dev->tag_delay_count == 0))
 				xpt_start_tags(ccb_h->path);
-			if (!device_is_send_queued(dev)) {
+			if (!device_is_queued(dev)) {
 				(void)xpt_schedule_devq(sim->devq, dev);
 			}
 		}

Modified: projects/camlock/sys/cam/cam_xpt_internal.h
==============================================================================
--- projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 09:51:36 2013	(r249013)
+++ projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 10:05:30 2013	(r249014)
@@ -71,8 +71,7 @@ struct cam_ed_qinfo {
  */
 struct cam_ed {
 	TAILQ_ENTRY(cam_ed) links;
-	struct	cam_ed_qinfo alloc_ccb_entry;
-	struct	cam_ed_qinfo send_ccb_entry;
+	struct	cam_ed_qinfo devq_entry;
 	struct	cam_et	 *target;
 	struct	cam_sim  *sim;
 	lun_id_t	 lun_id;

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 11:45:39 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id E3E8C201;
 Tue,  2 Apr 2013 11:45:39 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D6773D46;
 Tue,  2 Apr 2013 11:45:39 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32BjdHg072905;
 Tue, 2 Apr 2013 11:45:39 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32Bjd4s072897;
 Tue, 2 Apr 2013 11:45:39 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304021145.r32Bjd4s072897@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 11:45:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249017 - in projects/camlock/sys/cam: . ata scsi
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 11:45:40 -0000

Author: mav
Date: Tue Apr  2 11:45:38 2013
New Revision: 249017
URL: http://svnweb.freebsd.org/changeset/base/249017

Log:
  Some cosmetic things:
   - Unify device to target insertion inside xpt_alloc_device() instead of
  duplicating it three times.
   - Remove extra checks for empty lists of devices and targets on release
  since zero refcount check also implies it.
   - Reformat code to reduce indentation.

Modified:
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/cam_xpt_internal.h
  projects/camlock/sys/cam/scsi/scsi_xpt.c

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Tue Apr  2 11:44:55 2013	(r249016)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Tue Apr  2 11:45:38 2013	(r249017)
@@ -1529,7 +1529,6 @@ ata_alloc_device(struct cam_eb *bus, str
 	struct cam_path path;
 	struct ata_quirk_entry *quirk;
 	struct cam_ed *device;
-	struct cam_ed *cur_device;
 
 	device = xpt_alloc_device(bus, target, lun_id);
 	if (device == NULL)
@@ -1549,16 +1548,6 @@ ata_alloc_device(struct cam_eb *bus, str
 	device->serial_num = NULL;
 	device->serial_num_len = 0;
 
-	/* Insertion sort into our target's device list */
-	cur_device = TAILQ_FIRST(&target->ed_entries);
-	while (cur_device != NULL && cur_device->lun_id < lun_id)
-		cur_device = TAILQ_NEXT(cur_device, links);
-	if (cur_device != NULL) {
-		TAILQ_INSERT_BEFORE(cur_device, device, links);
-	} else {
-		TAILQ_INSERT_TAIL(&target->ed_entries, device, links);
-	}
-	target->generation++;
 	if (lun_id != CAM_LUN_WILDCARD) {
 		xpt_compile_path(&path,
 				 NULL,

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 11:44:55 2013	(r249016)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 11:45:38 2013	(r249017)
@@ -4339,8 +4339,7 @@ xpt_release_bus(struct cam_eb *bus)
 
 	mtx_lock(&xsoftc.xpt_topo_lock);
 	KASSERT(bus->refcount >= 1, ("bus->refcount >= 1"));
-	if ((--bus->refcount == 0)
-	 && (TAILQ_FIRST(&bus->et_entries) == NULL)) {
+	if (--bus->refcount == 0) {
 		TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links);
 		xsoftc.bus_generation++;
 		mtx_unlock(&xsoftc.xpt_topo_lock);
@@ -4353,40 +4352,38 @@ xpt_release_bus(struct cam_eb *bus)
 static struct cam_et *
 xpt_alloc_target(struct cam_eb *bus, target_id_t target_id)
 {
-	struct cam_et *target;
+	struct cam_et *cur_target, *target;
 
 	target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT,
 					 M_NOWAIT|M_ZERO);
-	if (target != NULL) {
-		struct cam_et *cur_target;
+	if (target == NULL)
+		return (NULL);
 
-		TAILQ_INIT(&target->ed_entries);
-		target->bus = bus;
-		target->target_id = target_id;
-		target->refcount = 1;
-		target->generation = 0;
-		target->luns = NULL;
-		timevalclear(&target->last_reset);
-		/*
-		 * Hold a reference to our parent bus so it
-		 * will not go away before we do.
-		 */
-		mtx_lock(&xsoftc.xpt_topo_lock);
-		bus->refcount++;
-		mtx_unlock(&xsoftc.xpt_topo_lock);
+	TAILQ_INIT(&target->ed_entries);
+	target->bus = bus;
+	target->target_id = target_id;
+	target->refcount = 1;
+	target->generation = 0;
+	target->luns = NULL;
+	timevalclear(&target->last_reset);
+	/*
+	 * Hold a reference to our parent bus so it
+	 * will not go away before we do.
+	 */
+	mtx_lock(&xsoftc.xpt_topo_lock);
+	bus->refcount++;
+	mtx_unlock(&xsoftc.xpt_topo_lock);
 
-		/* Insertion sort into our bus's target list */
-		cur_target = TAILQ_FIRST(&bus->et_entries);
-		while (cur_target != NULL && cur_target->target_id < target_id)
-			cur_target = TAILQ_NEXT(cur_target, links);
-
-		if (cur_target != NULL) {
-			TAILQ_INSERT_BEFORE(cur_target, target, links);
-		} else {
-			TAILQ_INSERT_TAIL(&bus->et_entries, target, links);
-		}
-		bus->generation++;
+	/* Insertion sort into our bus's target list */
+	cur_target = TAILQ_FIRST(&bus->et_entries);
+	while (cur_target != NULL && cur_target->target_id < target_id)
+		cur_target = TAILQ_NEXT(cur_target, links);
+	if (cur_target != NULL) {
+		TAILQ_INSERT_BEFORE(cur_target, target, links);
+	} else {
+		TAILQ_INSERT_TAIL(&bus->et_entries, target, links);
 	}
+	bus->generation++;
 	return (target);
 }
 
@@ -4394,24 +4391,21 @@ static void
 xpt_release_target(struct cam_et *target)
 {
 
-	if (target->refcount == 1) {
-		if (TAILQ_FIRST(&target->ed_entries) == NULL) {
-			TAILQ_REMOVE(&target->bus->et_entries, target, links);
-			target->bus->generation++;
-			xpt_release_bus(target->bus);
-			if (target->luns)
-				free(target->luns, M_CAMXPT);
-			free(target, M_CAMXPT);
-		}
-	} else
-		target->refcount--;
+	if (--target->refcount > 0)
+		return;
+	TAILQ_REMOVE(&target->bus->et_entries, target, links);
+	target->bus->generation++;
+	xpt_release_bus(target->bus);
+	if (target->luns)
+		free(target->luns, M_CAMXPT);
+	free(target, M_CAMXPT);
 }
 
 static struct cam_ed *
 xpt_alloc_device_default(struct cam_eb *bus, struct cam_et *target,
 			 lun_id_t lun_id)
 {
-	struct cam_ed *device, *cur_device;
+	struct cam_ed *device;
 
 	device = xpt_alloc_device(bus, target, lun_id);
 	if (device == NULL)
@@ -4419,70 +4413,61 @@ xpt_alloc_device_default(struct cam_eb *
 
 	device->mintags = 1;
 	device->maxtags = 1;
-	cur_device = TAILQ_FIRST(&target->ed_entries);
-	while (cur_device != NULL && cur_device->lun_id < lun_id)
-		cur_device = TAILQ_NEXT(cur_device, links);
-	if (cur_device != NULL) {
-		TAILQ_INSERT_BEFORE(cur_device, device, links);
-	} else {
-		TAILQ_INSERT_TAIL(&target->ed_entries, device, links);
-	}
-	target->generation++;
-
 	return (device);
 }
 
 struct cam_ed *
 xpt_alloc_device(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id)
 {
-	struct	   cam_ed *device;
-	struct	   cam_devq *devq;
+	struct cam_ed	*cur_device, *device;
+	struct cam_devq	*devq;
 	cam_status status;
 
 	/* Make space for us in the device queue on our bus */
 	devq = bus->sim->devq;
 	status = cam_devq_resize(devq, devq->send_queue.array_size + 1);
+	if (status != CAM_REQ_CMP)
+		return (NULL);
 
-	if (status != CAM_REQ_CMP) {
-		device = NULL;
-	} else {
-		device = (struct cam_ed *)malloc(sizeof(*device),
-						 M_CAMDEV, M_NOWAIT|M_ZERO);
-	}
-
-	if (device != NULL) {
-		cam_init_pinfo(&device->devq_entry.pinfo);
-		device->devq_entry.device = device;
-		device->target = target;
-		device->lun_id = lun_id;
-		device->sim = bus->sim;
-		/* Initialize our queues */
-		if (camq_init(&device->drvq, 0) != 0) {
-			free(device, M_CAMDEV);
-			return (NULL);
-		}
-		if (cam_ccbq_init(&device->ccbq,
-				  bus->sim->max_dev_openings) != 0) {
-			camq_fini(&device->drvq);
-			free(device, M_CAMDEV);
-			return (NULL);
-		}
-		SLIST_INIT(&device->asyncs);
-		SLIST_INIT(&device->periphs);
-		device->generation = 0;
-		device->flags = CAM_DEV_UNCONFIGURED;
-		device->tag_delay_count = 0;
-		device->tag_saved_openings = 0;
-		device->refcount = 1;
-		callout_init_mtx(&device->callout, bus->sim->mtx, 0);
-
-		/*
-		 * Hold a reference to our parent target so it
-		 * will not go away before we do.
-		 */
-		target->refcount++;
+	device = (struct cam_ed *)malloc(sizeof(*device),
+					 M_CAMDEV, M_NOWAIT|M_ZERO);
+	if (device == NULL)
+		return (NULL);
 
+	cam_init_pinfo(&device->devq_entry.pinfo);
+	device->devq_entry.device = device;
+	device->target = target;
+	device->lun_id = lun_id;
+	device->sim = bus->sim;
+	/* Initialize our queues */
+	if (camq_init(&device->drvq, 0) != 0) {
+		free(device, M_CAMDEV);
+		return (NULL);
+	}
+	if (cam_ccbq_init(&device->ccbq,
+			  bus->sim->max_dev_openings) != 0) {
+		camq_fini(&device->drvq);
+		free(device, M_CAMDEV);
+		return (NULL);
 	}
+	SLIST_INIT(&device->asyncs);
+	SLIST_INIT(&device->periphs);
+	device->generation = 0;
+	device->flags = CAM_DEV_UNCONFIGURED;
+	device->tag_delay_count = 0;
+	device->tag_saved_openings = 0;
+	device->refcount = 1;
+	callout_init_mtx(&device->callout, bus->sim->mtx, 0);
+
+	cur_device = TAILQ_FIRST(&target->ed_entries);
+	while (cur_device != NULL && cur_device->lun_id < lun_id)
+		cur_device = TAILQ_NEXT(cur_device, links);
+	if (cur_device != NULL)
+		TAILQ_INSERT_BEFORE(cur_device, device, links);
+	else
+		TAILQ_INSERT_TAIL(&target->ed_entries, device, links);
+	target->refcount++;
+	target->generation++;
 	return (device);
 }
 
@@ -4496,38 +4481,37 @@ xpt_acquire_device(struct cam_ed *device
 void
 xpt_release_device(struct cam_ed *device)
 {
+	struct cam_devq *devq;
 
-	if (device->refcount == 1) {
-		struct cam_devq *devq;
-
-		if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX)
-			panic("Removing device while still queued for ccbs");
+	if (--device->refcount > 0)
+		return;
 
-		if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0)
-			callout_stop(&device->callout);
+	if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX)
+		panic("Removing device while still queued for ccbs");
 
-		TAILQ_REMOVE(&device->target->ed_entries, device,links);
-		device->target->generation++;
-		/* Release our slot in the devq */
-		devq = device->target->bus->sim->devq;
-		cam_devq_resize(devq, devq->send_queue.array_size - 1);
-		camq_fini(&device->drvq);
-		cam_ccbq_fini(&device->ccbq);
-		/*
-		 * Free allocated memory.  free(9) does nothing if the
-		 * supplied pointer is NULL, so it is safe to call without
-		 * checking.
-		 */
-		free(device->supported_vpds, M_CAMXPT);
-		free(device->device_id, M_CAMXPT);
-		free(device->physpath, M_CAMXPT);
-		free(device->rcap_buf, M_CAMXPT);
-		free(device->serial_num, M_CAMXPT);
+	if ((device->flags & CAM_DEV_REL_TIMEOUT_PENDING) != 0)
+		callout_stop(&device->callout);
+
+	TAILQ_REMOVE(&device->target->ed_entries, device,links);
+	device->target->generation++;
+	/* Release our slot in the devq */
+	devq = device->target->bus->sim->devq;
+	cam_devq_resize(devq, devq->send_queue.array_size - 1);
+	camq_fini(&device->drvq);
+	cam_ccbq_fini(&device->ccbq);
+	/*
+	 * Free allocated memory.  free(9) does nothing if the
+	 * supplied pointer is NULL, so it is safe to call without
+	 * checking.
+	 */
+	free(device->supported_vpds, M_CAMXPT);
+	free(device->device_id, M_CAMXPT);
+	free(device->physpath, M_CAMXPT);
+	free(device->rcap_buf, M_CAMXPT);
+	free(device->serial_num, M_CAMXPT);
 
-		xpt_release_target(device->target);
-		free(device, M_CAMDEV);
-	} else
-		device->refcount--;
+	xpt_release_target(device->target);
+	free(device, M_CAMDEV);
 }
 
 u_int32_t

Modified: projects/camlock/sys/cam/cam_xpt_internal.h
==============================================================================
--- projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 11:44:55 2013	(r249016)
+++ projects/camlock/sys/cam/cam_xpt_internal.h	Tue Apr  2 11:45:38 2013	(r249017)
@@ -75,6 +75,7 @@ struct cam_ed {
 	struct	cam_et	 *target;
 	struct	cam_sim  *sim;
 	lun_id_t	 lun_id;
+	struct mtx	 mtx;
 	struct	camq drvq;		/*
 					 * Queue of type drivers wanting to do
 					 * work on this device.

Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- projects/camlock/sys/cam/scsi/scsi_xpt.c	Tue Apr  2 11:44:55 2013	(r249016)
+++ projects/camlock/sys/cam/scsi/scsi_xpt.c	Tue Apr  2 11:45:38 2013	(r249017)
@@ -2307,7 +2307,6 @@ scsi_alloc_device(struct cam_eb *bus, st
 	struct cam_path path;
 	struct scsi_quirk_entry *quirk;
 	struct cam_ed *device;
-	struct cam_ed *cur_device;
 
 	device = xpt_alloc_device(bus, target, lun_id);
 	if (device == NULL)
@@ -2331,16 +2330,6 @@ scsi_alloc_device(struct cam_eb *bus, st
 	device->supported_vpds = NULL;
 	device->supported_vpds_len = 0;
 
-	/* Insertion sort into our target's device list */
-	cur_device = TAILQ_FIRST(&target->ed_entries);
-	while (cur_device != NULL && cur_device->lun_id < lun_id)
-		cur_device = TAILQ_NEXT(cur_device, links);
-	if (cur_device != NULL) {
-		TAILQ_INSERT_BEFORE(cur_device, device, links);
-	} else {
-		TAILQ_INSERT_TAIL(&target->ed_entries, device, links);
-	}
-	target->generation++;
 	if (lun_id != CAM_LUN_WILDCARD) {
 		xpt_compile_path(&path,
 				 NULL,

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 11:48:10 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 8A1CC341;
 Tue,  2 Apr 2013 11:48:10 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 6E1F0D60;
 Tue,  2 Apr 2013 11:48:10 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32BmAKP073309;
 Tue, 2 Apr 2013 11:48:10 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32Bm7ur073283;
 Tue, 2 Apr 2013 11:48:07 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304021148.r32Bm7ur073283@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 11:48:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249018 - in projects/camlock: crypto/openssh
 share/man/man4 sys/cam sys/cam/ctl
 sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/modules sys/modules/ctl
 usr.bin/ctlstat usr.sbin/ctladm
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 11:48:10 -0000

Author: mav
Date: Tue Apr  2 11:48:06 2013
New Revision: 249018
URL: http://svnweb.freebsd.org/changeset/base/249018

Log:
  MFC @ r249017

Added:
  projects/camlock/share/man/man4/ctl.4
     - copied unchanged from r249017, head/share/man/man4/ctl.4
  projects/camlock/sys/modules/ctl/
     - copied from r249017, head/sys/modules/ctl/
Modified:
  projects/camlock/crypto/openssh/krl.c
  projects/camlock/crypto/openssh/readconf.c
  projects/camlock/crypto/openssh/readconf.h
  projects/camlock/crypto/openssh/ssh.c
  projects/camlock/crypto/openssh/sshconnect2.c
  projects/camlock/share/man/man4/Makefile
  projects/camlock/sys/cam/cam_periph.c
  projects/camlock/sys/cam/ctl/README.ctl.txt
  projects/camlock/sys/cam/ctl/ctl.c
  projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/camlock/sys/cam/ctl/ctl_frontend_internal.c
  projects/camlock/sys/cam/ctl/scsi_ctl.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/camlock/sys/modules/Makefile
  projects/camlock/usr.bin/ctlstat/ctlstat.8
  projects/camlock/usr.sbin/ctladm/ctladm.8
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/crypto/openssh/   (props changed)
  projects/camlock/share/man/man4/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/camlock/crypto/openssh/krl.c
==============================================================================
--- projects/camlock/crypto/openssh/krl.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/crypto/openssh/krl.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -502,8 +502,11 @@ choose_next_state(int current_state, u_i
 	}
 	debug3("%s: contig %llu last_gap %llu next_gap %llu final %d, costs:"
 	    "list %llu range %llu bitmap %llu new bitmap %llu, "
-	    "selected 0x%02x%s", __func__, contig, last_gap, next_gap, final,
-	    cost_list, cost_range, cost_bitmap, cost_bitmap_restart, new_state,
+	    "selected 0x%02x%s", __func__, (unsigned long long)contig,
+	    (unsigned long long)last_gap, (unsigned long long)next_gap, final,
+	    (unsigned long long)cost_list, (unsigned long long)cost_range,
+	    (unsigned long long)cost_bitmap,
+	    (unsigned long long)cost_bitmap_restart, new_state,
 	    *force_new_section ? " restart" : "");
 	return new_state;
 }
@@ -539,7 +542,8 @@ revoked_certs_generate(struct revoked_ce
 	     rs != NULL;
 	     rs = RB_NEXT(revoked_serial_tree, &rc->revoked_serials, rs)) {
 		debug3("%s: serial %llu:%llu state 0x%02x", __func__,
-		    rs->lo, rs->hi, state);
+		    (unsigned long long)rs->lo, (unsigned long long)rs->hi,
+		    state);
 
 		/* Check contiguous length and gap to next section (if any) */
 		nrs = RB_NEXT(revoked_serial_tree, &rc->revoked_serials, rs);
@@ -928,8 +932,9 @@ ssh_krl_from_blob(Buffer *buf, struct ss
 	}
 
 	format_timestamp(krl->generated_date, timestamp, sizeof(timestamp));
-	debug("KRL version %llu generated at %s%s%s", krl->krl_version,
-	    timestamp, *krl->comment ? ": " : "", krl->comment);
+	debug("KRL version %llu generated at %s%s%s",
+	    (unsigned long long)krl->krl_version, timestamp,
+	    *krl->comment ? ": " : "", krl->comment);
 
 	/*
 	 * 1st pass: verify signatures, if any. This is done to avoid

Modified: projects/camlock/crypto/openssh/readconf.c
==============================================================================
--- projects/camlock/crypto/openssh/readconf.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/crypto/openssh/readconf.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.c,v 1.194 2011/09/23 07:45:05 markus Exp $ */
+/* $OpenBSD: readconf.c,v 1.195 2013/02/17 23:16:57 dtucker Exp $ */
 /* $FreeBSD$ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -356,6 +356,26 @@ clear_forwardings(Options *options)
 	options->tun_open = SSH_TUNMODE_NO;
 }
 
+void
+add_identity_file(Options *options, const char *dir, const char *filename,
+    int userprovided)
+{
+	char *path;
+
+	if (options->num_identity_files >= SSH_MAX_IDENTITY_FILES)
+		fatal("Too many identity files specified (max %d)",
+		    SSH_MAX_IDENTITY_FILES);
+
+	if (dir == NULL) /* no dir, filename is absolute */
+		path = xstrdup(filename);
+	else
+		(void)xasprintf(&path, "%.100s%.100s", dir, filename);
+
+	options->identity_file_userprovided[options->num_identity_files] =
+	    userprovided;
+	options->identity_files[options->num_identity_files++] = path;
+}
+
 /*
  * Returns the number of the token pointed to by cp or oBadOption.
  */
@@ -616,9 +636,7 @@ parse_yesnoask:
 			if (*intptr >= SSH_MAX_IDENTITY_FILES)
 				fatal("%.200s line %d: Too many identity files specified (max %d).",
 				    filename, linenum, SSH_MAX_IDENTITY_FILES);
-			charptr = &options->identity_files[*intptr];
-			*charptr = xstrdup(arg);
-			*intptr = *intptr + 1;
+			add_identity_file(options, NULL, arg, 1);
 		}
 		break;
 

Modified: projects/camlock/crypto/openssh/readconf.h
==============================================================================
--- projects/camlock/crypto/openssh/readconf.h	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/crypto/openssh/readconf.h	Tue Apr  2 11:48:06 2013	(r249018)
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.h,v 1.91 2011/09/23 07:45:05 markus Exp $ */
+/* $OpenBSD: readconf.h,v 1.92 2013/02/17 23:16:57 dtucker Exp $ */
 /* $FreeBSD$ */
 
 /*
@@ -97,6 +97,7 @@ typedef struct {
 
 	int     num_identity_files;	/* Number of files for RSA/DSA identities. */
 	char   *identity_files[SSH_MAX_IDENTITY_FILES];
+	int    identity_file_userprovided[SSH_MAX_IDENTITY_FILES];
 	Key    *identity_keys[SSH_MAX_IDENTITY_FILES];
 
 	/* Local TCP/IP forward requests. */
@@ -172,5 +173,6 @@ process_config_line(Options *, const cha
 
 void	 add_local_forward(Options *, const Forward *);
 void	 add_remote_forward(Options *, const Forward *);
+void	 add_identity_file(Options *, const char *, const char *, int);
 
 #endif				/* READCONF_H */

Modified: projects/camlock/crypto/openssh/ssh.c
==============================================================================
--- projects/camlock/crypto/openssh/ssh.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/crypto/openssh/ssh.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh.c,v 1.370 2012/07/06 01:47:38 djm Exp $ */
+/* $OpenBSD: ssh.c,v 1.371 2013/02/17 23:16:57 dtucker Exp $ */
 /* $FreeBSD$ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -407,12 +407,7 @@ main(int ac, char **av)
 				    strerror(errno));
 				break;
 			}
-			if (options.num_identity_files >=
-			    SSH_MAX_IDENTITY_FILES)
-				fatal("Too many identity files specified "
-				    "(max %d)", SSH_MAX_IDENTITY_FILES);
-			options.identity_files[options.num_identity_files++] =
-			    xstrdup(optarg);
+			add_identity_file(&options, NULL, optarg, 1);
 			break;
 		case 'I':
 #ifdef ENABLE_PKCS11

Modified: projects/camlock/crypto/openssh/sshconnect2.c
==============================================================================
--- projects/camlock/crypto/openssh/sshconnect2.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/crypto/openssh/sshconnect2.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.191 2013/02/15 00:21:01 dtucker Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.192 2013/02/17 23:16:57 dtucker Exp $ */
 /* $FreeBSD$ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -1418,7 +1418,7 @@ pubkey_prepare(Authctxt *authctxt)
 		id = xcalloc(1, sizeof(*id));
 		id->key = key;
 		id->filename = xstrdup(options.identity_files[i]);
-		id->userprovided = 1;
+		id->userprovided = options.identity_file_userprovided[i];
 		TAILQ_INSERT_TAIL(&files, id, next);
 	}
 	/* Prefer PKCS11 keys that are explicitly listed */

Modified: projects/camlock/share/man/man4/Makefile
==============================================================================
--- projects/camlock/share/man/man4/Makefile	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/share/man/man4/Makefile	Tue Apr  2 11:48:06 2013	(r249018)
@@ -99,6 +99,7 @@ MAN=	aac.4 \
 	${_cpuctl.4} \
 	cpufreq.4 \
 	crypto.4 \
+	ctl.4 \
 	cue.4 \
 	cxgb.4 \
 	cxgbe.4 \

Copied: projects/camlock/share/man/man4/ctl.4 (from r249017, head/share/man/man4/ctl.4)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/share/man/man4/ctl.4	Tue Apr  2 11:48:06 2013	(r249018, copy of r249017, head/share/man/man4/ctl.4)
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2013 Edward Tomasz Napierala
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.Dd April 2, 2013
+.Dt CTL 4
+.Os
+.Sh NAME
+.Nm ctl
+.Nd CAM Target Layer
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ctl"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ctl_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+subsystem provides SCSI disk and processor emulation.
+It supports features such as:
+.Pp
+.Bl -bullet -compact
+.It
+Disk and processor device emulation
+.It
+Tagged queueing
+.It
+SCSI task attribute support (ordered, head of queue, simple tags)
+.It
+SCSI implicit command ordering support.
+.It
+Full task management support (abort, LUN reset, target reset, etc.)
+.It
+Support for multiple ports
+.It
+Support for multiple simultaneous initiators
+.It
+Support for multiple simultaneous backing stores
+.It
+Persistent reservation support
+.It
+Mode sense/select support
+.It
+Error injection support
+.It
+All I/O handled in-kernel, no userland context switch overhead
+.El
+.Sh SEE ALSO
+.Xr ctladm 8 ,
+.Xr ctlstat 8
+.Sh HISTORY
+The
+.Nm
+subsystem first appeared in
+.Fx 9.1 .
+.Sh AUTHORS
+The
+.Nm
+subsystem was written by
+.An Kenneth Merry Aq ken@FreeBSD.org .

Modified: projects/camlock/sys/cam/cam_periph.c
==============================================================================
--- projects/camlock/sys/cam/cam_periph.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/cam_periph.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -218,9 +218,9 @@ cam_periph_alloc(periph_ctor_t *periph_c
 	}
 	if (*p_drv == NULL) {
 		printf("cam_periph_alloc: invalid periph name '%s'\n", name);
+		xpt_unlock_buses();
 		xpt_free_path(periph->path);
 		free(periph, M_CAMPERIPH);
-		xpt_unlock_buses();
 		return (CAM_REQ_INVALID);
 	}
 	periph->unit_number = camperiphunit(*p_drv, path_id, target_id, lun_id);

Modified: projects/camlock/sys/cam/ctl/README.ctl.txt
==============================================================================
--- projects/camlock/sys/cam/ctl/README.ctl.txt	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/ctl/README.ctl.txt	Tue Apr  2 11:48:06 2013	(r249018)
@@ -227,9 +227,6 @@ Revision 1.2 Changes
 To Do List:
 ==========
 
- - Make CTL buildable as a module.  Work needs to be done on initialization,
-   and on freeing resources and LUNs when it is built as a module.
-
  - Use devstat(9) for CTL's statistics collection.  CTL uses a home-grown
    statistics collection system that is similar to devstat(9).  ctlstat
    should be retired in favor of iostat, etc., once aggregation modes are

Modified: projects/camlock/sys/cam/ctl/ctl.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/ctl/ctl.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/bio.h>
 #include <sys/fcntl.h>
 #include <sys/lock.h>
+#include <sys/module.h>
 #include <sys/mutex.h>
 #include <sys/condvar.h>
 #include <sys/malloc.h>
@@ -338,7 +339,7 @@ TUNABLE_INT("kern.cam.ctl.disable", &ctl
 static void ctl_isc_event_handler(ctl_ha_channel chanel, ctl_ha_event event,
 				  int param);
 static void ctl_copy_sense_data(union ctl_ha_msg *src, union ctl_io *dest);
-static void ctl_init(void);
+static int ctl_init(void);
 void ctl_shutdown(void);
 static int ctl_open(struct cdev *dev, int flags, int fmt, struct thread *td);
 static int ctl_close(struct cdev *dev, int flags, int fmt, struct thread *td);
@@ -458,11 +459,16 @@ static struct cdevsw ctl_cdevsw = {
 
 MALLOC_DEFINE(M_CTL, "ctlmem", "Memory used for CTL");
 
-/*
- * If we have the CAM SIM, we may or may not have another SIM that will
- * cause CTL to get initialized.  If not, we need to initialize it.
- */
-SYSINIT(ctl_init, SI_SUB_CONFIGURE, SI_ORDER_THIRD, ctl_init, NULL);
+static int ctl_module_event_handler(module_t, int /*modeventtype_t*/, void *);
+
+static moduledata_t ctl_moduledata = {
+	"ctl",
+	ctl_module_event_handler,
+	NULL
+};
+
+DECLARE_MODULE(ctl, ctl_moduledata, SI_SUB_CONFIGURE, SI_ORDER_THIRD);
+MODULE_VERSION(ctl, 1);
 
 static void
 ctl_isc_handler_finish_xfer(struct ctl_softc *ctl_softc,
@@ -942,7 +948,7 @@ ctl_copy_sense_data(union ctl_ha_msg *sr
 	dest->io_hdr.status = src->hdr.status;
 }
 
-static void
+static int
 ctl_init(void)
 {
 	struct ctl_softc *softc;
@@ -953,7 +959,7 @@ ctl_init(void)
 #if 0
 	int i;
 #endif
-	int retval;
+	int error, retval;
 	//int isc_retval;
 
 	retval = 0;
@@ -962,7 +968,7 @@ ctl_init(void)
 
 	/* If we're disabled, don't initialize. */
 	if (ctl_disable != 0)
-		return;
+		return (0);
 
 	control_softc = malloc(sizeof(*control_softc), M_DEVBUF,
 			       M_WAITOK | M_ZERO);
@@ -991,7 +997,7 @@ ctl_init(void)
 		destroy_dev(softc->dev);
 		free(control_softc, M_DEVBUF);
 		control_softc = NULL;
-		return;
+		return (ENOMEM);
 	}
 
 	SYSCTL_ADD_INT(&softc->sysctl_ctx,
@@ -1053,7 +1059,7 @@ ctl_init(void)
 			    &internal_pool)!= 0){
 		printf("ctl: can't allocate %d entry internal pool, "
 		       "exiting\n", CTL_POOL_ENTRIES_INTERNAL);
-		return;
+		return (ENOMEM);
 	}
 
 	if (ctl_pool_create(softc, CTL_POOL_EMERGENCY,
@@ -1061,7 +1067,7 @@ ctl_init(void)
 		printf("ctl: can't allocate %d entry emergency pool, "
 		       "exiting\n", CTL_POOL_ENTRIES_EMERGENCY);
 		ctl_pool_free(softc, internal_pool);
-		return;
+		return (ENOMEM);
 	}
 
 	if (ctl_pool_create(softc, CTL_POOL_4OTHERSC, CTL_POOL_ENTRIES_OTHER_SC,
@@ -1071,7 +1077,7 @@ ctl_init(void)
 		       "exiting\n", CTL_POOL_ENTRIES_OTHER_SC);
 		ctl_pool_free(softc, internal_pool);
 		ctl_pool_free(softc, emergency_pool);
-		return;
+		return (ENOMEM);
 	}
 
 	softc->internal_pool = internal_pool;
@@ -1092,14 +1098,15 @@ ctl_init(void)
 	mtx_unlock(&softc->ctl_lock);
 #endif
 
-	if (kproc_create(ctl_work_thread, softc, &softc->work_thread, 0, 0,
-			 "ctl_thrd") != 0) {
+	error = kproc_create(ctl_work_thread, softc, &softc->work_thread, 0, 0,
+			 "ctl_thrd");
+	if (error != 0) {
 		printf("error creating CTL work thread!\n");
 		ctl_free_lun(lun);
 		ctl_pool_free(softc, internal_pool);
 		ctl_pool_free(softc, emergency_pool);
 		ctl_pool_free(softc, other_pool);
-		return;
+		return (error);
 	}
 	printf("ctl: CAM Target Layer loaded\n");
 
@@ -1139,10 +1146,11 @@ ctl_init(void)
 	if (sizeof(struct callout) > CTL_TIMER_BYTES) {
 		printf("sizeof(struct callout) %zd > CTL_TIMER_BYTES %zd\n",
 		       sizeof(struct callout), CTL_TIMER_BYTES);
-		return;
+		return (EINVAL);
 	}
 #endif /* CTL_IO_DELAY */
 
+	return (0);
 }
 
 void
@@ -1199,6 +1207,20 @@ ctl_shutdown(void)
 	printf("ctl: CAM Target Layer unloaded\n");
 }
 
+static int
+ctl_module_event_handler(module_t mod, int what, void *arg)
+{
+
+	switch (what) {
+	case MOD_LOAD:
+		return (ctl_init());
+	case MOD_UNLOAD:
+		return (EBUSY);
+	default:
+		return (EOPNOTSUPP);
+	}
+}
+
 /*
  * XXX KDM should we do some access checks here?  Bump a reference count to
  * prevent a CTL module from being unloaded while someone has it open?

Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -121,12 +121,23 @@ struct cfcs_softc cfcs_softc;
 static int cfcs_max_sense = sizeof(struct scsi_sense_data);
 extern int ctl_disable;
 
-SYSINIT(cfcs_init, SI_SUB_CONFIGURE, SI_ORDER_FOURTH, cfcs_init, NULL);
 SYSCTL_NODE(_kern_cam, OID_AUTO, ctl2cam, CTLFLAG_RD, 0,
 	    "CAM Target Layer SIM frontend");
 SYSCTL_INT(_kern_cam_ctl2cam, OID_AUTO, max_sense, CTLFLAG_RW,
            &cfcs_max_sense, 0, "Maximum sense data size");
 
+static int cfcs_module_event_handler(module_t, int /*modeventtype_t*/, void *);
+
+static moduledata_t cfcs_moduledata = {
+	"ctlcfcs",
+	cfcs_module_event_handler,
+	NULL
+};
+
+DECLARE_MODULE(ctlcfcs, cfcs_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH);
+MODULE_VERSION(ctlcfcs, 1);
+MODULE_DEPEND(ctlcfi, ctl, 1, 1, 1);
+MODULE_DEPEND(ctlcfi, cam, 1, 1, 1);
 
 int
 cfcs_init(void)
@@ -176,7 +187,7 @@ cfcs_init(void)
 		printf("%s: ctl_frontend_register() failed with error %d!\n",
 		       __func__, retval);
 		mtx_destroy(&softc->lock);
-		return (1);
+		return (retval);
 	}
 
 	/*
@@ -236,7 +247,7 @@ cfcs_init(void)
 			    CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		printf("%s: error creating path\n", __func__);
 		xpt_bus_deregister(cam_sim_path(softc->sim));
-		retval = 1;
+		retval = EINVAL;
 		goto bailout;
 	}
 
@@ -274,6 +285,20 @@ cfcs_shutdown(void)
 
 }
 
+static int
+cfcs_module_event_handler(module_t mod, int what, void *arg)
+{
+
+	switch (what) {
+	case MOD_LOAD:
+		return (cfcs_init());
+	case MOD_UNLOAD:
+		return (EBUSY);
+	default:
+		return (EOPNOTSUPP);
+	}
+}
+
 static void
 cfcs_onoffline(void *arg, int online)
 {

Modified: projects/camlock/sys/cam/ctl/ctl_frontend_internal.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl_frontend_internal.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/ctl/ctl_frontend_internal.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/kernel.h>
 #include <sys/types.h>
 #include <sys/malloc.h>
+#include <sys/module.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/condvar.h>
@@ -189,7 +190,7 @@ MALLOC_DEFINE(M_CTL_CFI, "ctlcfi", "CTL 
 static struct cfi_softc fetd_internal_softc;
 extern int ctl_disable;
 
-void cfi_init(void);
+int cfi_init(void);
 void cfi_shutdown(void) __unused;
 static void cfi_online(void *arg);
 static void cfi_offline(void *arg);
@@ -217,9 +218,19 @@ static void cfi_metatask_io_done(union c
 static void cfi_err_recovery_done(union ctl_io *io);
 static void cfi_lun_io_done(union ctl_io *io);
 
-SYSINIT(cfi_init, SI_SUB_CONFIGURE, SI_ORDER_FOURTH, cfi_init, NULL);
+static int cfi_module_event_handler(module_t, int /*modeventtype_t*/, void *);
 
-void
+static moduledata_t cfi_moduledata = {
+	"ctlcfi",
+	cfi_module_event_handler,
+	NULL
+};
+
+DECLARE_MODULE(ctlcfi, cfi_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH);
+MODULE_VERSION(ctlcfi, 1);
+MODULE_DEPEND(ctlcfi, ctl, 1, 1, 1);
+
+int
 cfi_init(void)
 {
 	struct cfi_softc *softc;
@@ -234,7 +245,7 @@ cfi_init(void)
 
 	/* If we're disabled, don't initialize */
 	if (ctl_disable != 0)
-		return;
+		return (0);
 
 	if (sizeof(struct cfi_lun_io) > CTL_PORT_PRIV_SIZE) {
 		printf("%s: size of struct cfi_lun_io %zd > "
@@ -292,7 +303,7 @@ cfi_init(void)
 	}
 bailout:
 
-	return;
+	return (0);
 
 bailout_error:
 
@@ -309,6 +320,8 @@ bailout_error:
 	default:
 		break;
 	}
+
+	return (ENOMEM);
 }
 
 void
@@ -331,6 +344,20 @@ cfi_shutdown(void)
 		printf("%s: error shrinking LUN pool\n", __func__);
 }
 
+static int
+cfi_module_event_handler(module_t mod, int what, void *arg)
+{
+
+	switch (what) {
+	case MOD_LOAD:
+		return (cfi_init());
+	case MOD_UNLOAD:
+		return (EBUSY);
+	default:
+		return (EOPNOTSUPP);
+	}
+}
+
 static void
 cfi_online(void *arg)
 {

Modified: projects/camlock/sys/cam/ctl/scsi_ctl.c
==============================================================================
--- projects/camlock/sys/cam/ctl/scsi_ctl.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cam/ctl/scsi_ctl.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -225,38 +225,26 @@ static struct periph_driver ctlfe_driver
 	ctlfeinit, "ctl",
 	TAILQ_HEAD_INITIALIZER(ctlfe_driver.units), /*generation*/ 0
 };
-PERIPHDRIVER_DECLARE(ctl, ctlfe_driver);
 
-extern struct ctl_softc *control_softc;
-extern int ctl_disable;
-
-int
-ctlfeinitialize(void)
-{
-	cam_status status;
-
-	/* Don't initialize if we're disabled */
-	if (ctl_disable != 0)
-		return (0);
+static int ctlfe_module_event_handler(module_t, int /*modeventtype_t*/, void *);
 
-	STAILQ_INIT(&ctlfe_softc_list);
-
-	mtx_init(&ctlfe_list_mtx, ctlfe_mtx_desc, NULL, MTX_DEF);
-
-	xpt_lock_buses();
-	periphdriver_register(&ctlfe_driver);
-	xpt_unlock_buses();
+/*
+ * We're not using PERIPHDRIVER_DECLARE(), because it runs at SI_SUB_DRIVERS,
+ * and that happens before CTL gets initialised.
+ */
+static moduledata_t ctlfe_moduledata = {
+	"ctlfe",
+	ctlfe_module_event_handler,
+	NULL
+};
 
-	status = xpt_register_async(AC_PATH_REGISTERED | AC_PATH_DEREGISTERED | 
-				    AC_CONTRACT, ctlfeasync, NULL, NULL);
+DECLARE_MODULE(ctlfe, ctlfe_moduledata, SI_SUB_CONFIGURE, SI_ORDER_FOURTH);
+MODULE_VERSION(ctlfe, 1);
+MODULE_DEPEND(ctlfe, ctl, 1, 1, 1);
+MODULE_DEPEND(ctlfe, cam, 1, 1, 1);
 
-	if (status != CAM_REQ_CMP) {
-		printf("ctl: Failed to attach async callback due to CAM "
-		       "status 0x%x!\n", status);
-	}
-
-	return (0);
-}
+extern struct ctl_softc *control_softc;
+extern int ctl_disable;
 
 void
 ctlfeshutdown(void)
@@ -288,6 +276,21 @@ ctlfeinit(void)
 	}
 }
 
+static int
+ctlfe_module_event_handler(module_t mod, int what, void *arg)
+{
+
+	switch (what) {
+	case MOD_LOAD:
+		periphdriver_register(&ctlfe_driver);
+		return (0);
+	case MOD_UNLOAD:
+		return (EBUSY);
+	default:
+		return (EOPNOTSUPP);
+	}
+}
+
 static void
 ctlfeasync(void *callback_arg, uint32_t code, struct cam_path *path, void *arg)
 {
@@ -1971,7 +1974,6 @@ ctlfe_lun_enable(void *arg, struct ctl_i
 	struct cam_sim *sim;
 	cam_status status;
 
-	
 	bus_softc = (struct ctlfe_softc *)arg;
 	sim = bus_softc->sim;
 

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Tue Apr  2 11:48:06 2013	(r249018)
@@ -5713,11 +5713,11 @@ zfsdev_ioctl(struct cdev *dev, u_long zc
 {
 	zfs_cmd_t *zc;
 	uint_t vecnum;
-	int error, rc, len;
 #ifdef illumos
+	int error, rc, len;
 	minor_t minor = getminor(dev);
 #else
-	int cflag, cmd, oldvecnum;
+	int error, len, cflag, cmd, oldvecnum;
 	cred_t *cr = td->td_ucred;
 #endif
 	const zfs_ioc_vec_t *vec;
@@ -5904,8 +5904,11 @@ zfsdev_ioctl(struct cdev *dev, u_long zc
 
 out:
 	nvlist_free(innvl);
+#ifdef illumos
+	rc = ddi_copyout(zc, (void *)arg, sizeof (zfs_cmd_t), flag);
 	if (error == 0 && rc != 0)
 		error = EFAULT;
+#endif
 	if (error == 0 && vec->zvec_allow_log) {
 		char *s = tsd_get(zfs_allow_log_key);
 		if (s != NULL)

Modified: projects/camlock/sys/modules/Makefile
==============================================================================
--- projects/camlock/sys/modules/Makefile	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/sys/modules/Makefile	Tue Apr  2 11:48:06 2013	(r249018)
@@ -78,6 +78,7 @@ SUBDIR=	\
 	${_cs} \
 	${_ct} \
 	${_ctau} \
+	ctl \
 	${_cxgb} \
 	cxgbe \
 	${_cyclic} \

Modified: projects/camlock/usr.bin/ctlstat/ctlstat.8
==============================================================================
--- projects/camlock/usr.bin/ctlstat/ctlstat.8	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/usr.bin/ctlstat/ctlstat.8	Tue Apr  2 11:48:06 2013	(r249018)
@@ -34,7 +34,7 @@
 .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.bin/ctlstat/ctlstat.8#2 $
 .\" $FreeBSD$
 .\"
-.Dd June 4, 2010
+.Dd March 6, 2013
 .Dt CTLSTAT 8
 .Os
 .Sh NAME
@@ -113,6 +113,7 @@ every 10 seconds.
 .Sh SEE ALSO
 .Xr cam 3 ,
 .Xr cam 4 ,
+.Xr ctl 4 ,
 .Xr xpt 4 ,
 .Xr camcontrol 8 ,
 .Xr ctladm 8 ,

Modified: projects/camlock/usr.sbin/ctladm/ctladm.8
==============================================================================
--- projects/camlock/usr.sbin/ctladm/ctladm.8	Tue Apr  2 11:45:38 2013	(r249017)
+++ projects/camlock/usr.sbin/ctladm/ctladm.8	Tue Apr  2 11:48:06 2013	(r249018)
@@ -34,7 +34,7 @@
 .\" $Id: //depot/users/kenm/FreeBSD-test2/usr.sbin/ctladm/ctladm.8#3 $
 .\" $FreeBSD$
 .\"
-.Dd March 6, 2012
+.Dd April 2, 2013
 .Dt CTLADM 8
 .Os
 .Sh NAME
@@ -975,6 +975,7 @@ This will result in a sense key of NOT R
 .Xr cam 3 ,
 .Xr cam_cdbparse 3 ,
 .Xr cam 4 ,
+.Xr ctl 4 ,
 .Xr xpt 4 ,
 .Xr camcontrol 8
 .Sh HISTORY

From owner-svn-src-projects@FreeBSD.ORG  Tue Apr  2 19:07:12 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 92F91BC2;
 Tue,  2 Apr 2013 19:07:12 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 85FD0172;
 Tue,  2 Apr 2013 19:07:12 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r32J7BDo015667;
 Tue, 2 Apr 2013 19:07:11 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r32J7B8j015666;
 Tue, 2 Apr 2013 19:07:11 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304021907.r32J7B8j015666@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Tue, 2 Apr 2013 19:07:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249030 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 02 Apr 2013 19:07:12 -0000

Author: mav
Date: Tue Apr  2 19:07:11 2013
New Revision: 249030
URL: http://svnweb.freebsd.org/changeset/base/249030

Log:
  Remove two no longer needed checks.

Modified:
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 17:34:42 2013	(r249029)
+++ projects/camlock/sys/cam/cam_xpt.c	Tue Apr  2 19:07:11 2013	(r249030)
@@ -2481,16 +2481,10 @@ xpt_action_default(union ccb *start_ccb)
 	case XPT_RESET_DEV:
 	case XPT_ENG_EXEC:
 	case XPT_SMP_IO:
-	{
-		int frozen;
-
-		frozen = cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb);
-		if (frozen > 0)
-			xpt_run_dev_allocq(path->device);
+		cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb);
 		if (xpt_schedule_devq(path->bus->sim->devq, path->device))
 			xpt_run_devq(path->bus->sim->devq);
 		break;
-	}
 	case XPT_CALC_GEOMETRY:
 	{
 		struct cam_sim *sim;
@@ -3244,7 +3238,7 @@ xpt_run_devq(struct cam_devq *devq)
 
 		xpt_schedule_devq(devq, device);
 
-		if (work_ccb && (work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0){
+		if ((work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0) {
 			/*
 			 * The client wants to freeze the queue
 			 * after this CCB is sent.

From owner-svn-src-projects@FreeBSD.ORG  Wed Apr  3 06:29:26 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id C220D403;
 Wed,  3 Apr 2013 06:29:26 +0000 (UTC)
 (envelope-from neel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id B61A5792;
 Wed,  3 Apr 2013 06:29:26 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r336TQ86016472;
 Wed, 3 Apr 2013 06:29:26 GMT (envelope-from neel@svn.freebsd.org)
Received: (from neel@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r336TQkq016471;
 Wed, 3 Apr 2013 06:29:26 GMT (envelope-from neel@svn.freebsd.org)
Message-Id: <201304030629.r336TQkq016471@svn.freebsd.org>
From: Neel Natu <neel@FreeBSD.org>
Date: Wed, 3 Apr 2013 06:29:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249037 - projects/bhyve_svm/sys/x86/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 03 Apr 2013 06:29:26 -0000

Author: neel
Date: Wed Apr  3 06:29:26 2013
New Revision: 249037
URL: http://svnweb.freebsd.org/changeset/base/249037

Log:
  SVM related MSR registers and bitfield definitions.
  
  Submitted by:	Anish Gupta (akgupt3@gmail.com)

Modified:
  projects/bhyve_svm/sys/x86/include/specialreg.h

Modified: projects/bhyve_svm/sys/x86/include/specialreg.h
==============================================================================
--- projects/bhyve_svm/sys/x86/include/specialreg.h	Wed Apr  3 01:27:15 2013	(r249036)
+++ projects/bhyve_svm/sys/x86/include/specialreg.h	Wed Apr  3 06:29:26 2013	(r249037)
@@ -81,6 +81,7 @@
 #define	EFER_LME 0x000000100	/* Long mode enable (R/W) */
 #define	EFER_LMA 0x000000400	/* Long mode active (R) */
 #define	EFER_NXE 0x000000800	/* PTE No-Execute bit enable (R/W) */
+#define	EFER_SVM 0x000001000	/* SVM enable bit for AMD, reserved for Intel */
 
 /*
  * Intel Extended Features registers
@@ -691,6 +692,11 @@
 #define	MSR_TOP_MEM2	0xc001001d	/* boundary for ram above 4G */
 #define	MSR_K8_UCODE_UPDATE	0xc0010020	/* update microcode */
 #define	MSR_MC0_CTL_MASK	0xc0010044
+#define	MSR_VM_CR		0xC0010114 /* SVM: feature control */
+#define	MSR_VM_HSAVE_PA		0xC0010117 /* SVM: host save area address */
+
+/* AMD VM_CR related */
+#define	VM_CR_SVMDIS		0x10	/* SVM: disabled by BIOS */
 
 /* VIA ACE crypto featureset: for via_feature_rng */
 #define	VIA_HAS_RNG		1	/* cpu has RNG */

From owner-svn-src-projects@FreeBSD.ORG  Wed Apr  3 10:37:28 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 8B88FD56;
 Wed,  3 Apr 2013 10:37:28 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 7BF3D360;
 Wed,  3 Apr 2013 10:37:28 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33AbSae090082;
 Wed, 3 Apr 2013 10:37:28 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33AbQKh090067;
 Wed, 3 Apr 2013 10:37:26 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304031037.r33AbQKh090067@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Wed, 3 Apr 2013 10:37:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249044 - in projects/counters/sys: amd64/include
 arm/include i386/include ia64/include mips/include netinet powerpc/include
 sparc64/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 03 Apr 2013 10:37:28 -0000

Author: glebius
Date: Wed Apr  3 10:37:26 2013
New Revision: 249044
URL: http://svnweb.freebsd.org/changeset/base/249044

Log:
  o Add counter_enter(), counter_exit(), counter_u64_add_protected().
  o Remove counter_u64_subtract() and change argument type to int64_t.
  
  Discussed with:	luigi, kib

Modified:
  projects/counters/sys/amd64/include/counter.h
  projects/counters/sys/arm/include/counter.h
  projects/counters/sys/i386/include/counter.h
  projects/counters/sys/ia64/include/counter.h
  projects/counters/sys/mips/include/counter.h
  projects/counters/sys/netinet/ip_input.c
  projects/counters/sys/netinet/ip_var.h
  projects/counters/sys/powerpc/include/counter.h
  projects/counters/sys/sparc64/include/counter.h

Modified: projects/counters/sys/amd64/include/counter.h
==============================================================================
--- projects/counters/sys/amd64/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/amd64/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -33,23 +33,18 @@
 
 extern struct pcpu __pcpu[1];
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	do {} while (0)
+#define	counter_exit()	do {} while (0)
 
-	__asm __volatile("addq\t%1,%%gs:(%0)"
-	    :
-	    : "r" ((char *)c - (char *)&__pcpu[0]), "r" (inc)
-	    : "memory", "cc");
-}
+#define	counter_u64_add_protected(c, i)	counter_u64_add(c, i)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	__asm __volatile("subq\t%1,%%gs:(%0)"
+	__asm __volatile("addq\t%1,%%gs:(%0)"
 	    :
-	    : "r" ((char *)c - (char *)&__pcpu[0]), "r" (dec)
+	    : "r" ((char *)c - (char *)&__pcpu[0]), "r" (inc)
 	    : "memory", "cc");
 }
 

Modified: projects/counters/sys/arm/include/counter.h
==============================================================================
--- projects/counters/sys/arm/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/arm/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -31,22 +31,21 @@
 
 #include <sys/pcpu.h>
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	critical_enter()
+#define	counter_exit()	critical_exit()
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) += inc;
-	critical_exit();
-}
+#define	counter_u64_add_protected(c, inc)	do {	\
+	CRITICAL_ASSERT(td);				\
+	*(uint64_t *)zpcpu_get(c) += (inc);		\
+} while (0)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) -= dec;
-	critical_exit();
+	counter_enter();
+	counter_u64_add_protected(c, inc);
+	counter_exit();
 }
 
 #endif	/* ! __MACHINE_COUNTER_H__ */

Modified: projects/counters/sys/i386/include/counter.h
==============================================================================
--- projects/counters/sys/i386/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/i386/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -33,8 +33,18 @@
 #include <machine/md_var.h>
 #include <machine/specialreg.h>
 
+#define	counter_enter()	do {				\
+	if ((cpu_feature & CPUID_CX8) == 0)		\
+		critical_enter();			\
+} while (0)
+
+#define	counter_exit()	do {				\
+	if ((cpu_feature & CPUID_CX8) == 0)		\
+		critical_exit();			\
+} while (0)
+
 static inline void
-counter_64_inc_8b(uint64_t *p, uint64_t inc)
+counter_64_inc_8b(uint64_t *p, int64_t inc)
 {
 
 	__asm __volatile(
@@ -52,8 +62,16 @@ counter_64_inc_8b(uint64_t *p, uint64_t 
 	: "memory", "cc", "eax", "edx", "ebx", "ecx");
 }
 
+#define	counter_u64_add_protected(c, inc)	do {	\
+	if ((cpu_feature & CPUID_CX8) == 0) {		\
+		CRITICAL_ASSERT(td);			\
+		*(uint64_t *)zpcpu_get(c) += (inc);	\
+	} else						\
+		counter_64_inc_8b((c), (inc));		\
+} while (0)
+
 static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
 	if ((cpu_feature & CPUID_CX8) == 0) {
@@ -65,11 +83,4 @@ counter_u64_add(counter_u64_t c, uint64_
 	}
 }
 
-static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
-{
-
-	counter_u64_add(c, -(int64_t)dec);
-}
-
 #endif	/* ! __MACHINE_COUNTER_H__ */

Modified: projects/counters/sys/ia64/include/counter.h
==============================================================================
--- projects/counters/sys/ia64/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/ia64/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -31,22 +31,21 @@
 
 #include <sys/pcpu.h>
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	critical_enter()
+#define	counter_exit()	critical_exit()
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) += inc;
-	critical_exit();
-}
+#define	counter_u64_add_protected(c, inc)	do {	\
+	CRITICAL_ASSERT(td);				\
+	*(uint64_t *)zpcpu_get(c) += (inc);		\
+} while (0)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) -= dec;
-	critical_exit();
+	counter_enter();
+	counter_u64_add_protected(c, inc);
+	counter_exit();
 }
 
 #endif	/* ! __MACHINE_COUNTER_H__ */

Modified: projects/counters/sys/mips/include/counter.h
==============================================================================
--- projects/counters/sys/mips/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/mips/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -31,22 +31,21 @@
 
 #include <sys/pcpu.h>
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	critical_enter()
+#define	counter_exit()	critical_exit()
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) += inc;
-	critical_exit();
-}
+#define	counter_u64_add_protected(c, inc)	do {	\
+	CRITICAL_ASSERT(td);				\
+	*(uint64_t *)zpcpu_get(c) += (inc);		\
+} while (0)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) -= dec;
-	critical_exit();
+	counter_enter();
+	counter_u64_add_protected(c, inc);
+	counter_exit();
 }
 
 #endif	/* ! __MACHINE_COUNTER_H__ */

Modified: projects/counters/sys/netinet/ip_input.c
==============================================================================
--- projects/counters/sys/netinet/ip_input.c	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/netinet/ip_input.c	Wed Apr  3 10:37:26 2013	(r249044)
@@ -293,7 +293,7 @@ void
 kmod_ipstat_dec(int statnum)
 {
 
-	counter_u64_subtract((counter_u64_t )&V_ipstatp + statnum, 1);
+	counter_u64_add((counter_u64_t )&V_ipstatp + statnum, -1);
 }
 
 static int

Modified: projects/counters/sys/netinet/ip_var.h
==============================================================================
--- projects/counters/sys/netinet/ip_var.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/netinet/ip_var.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -175,7 +175,7 @@ VNET_DECLARE(struct ipstat_p, ipstatp);
 #define	IPSTAT_ADD(name, val)	counter_u64_add(V_ipstatp.name, (val))
 #define	IPSTAT_SUB(name, val)	counter_u64_subtract(V_ipstatp.name, (val))
 #define	IPSTAT_INC(name)	IPSTAT_ADD(name, 1)
-#define	IPSTAT_DEC(name)	IPSTAT_SUB(name, 1)
+#define	IPSTAT_DEC(name)	IPSTAT_ADD(name, -1)
 
 /*
  * Kernel module consumers must use this accessor macro.

Modified: projects/counters/sys/powerpc/include/counter.h
==============================================================================
--- projects/counters/sys/powerpc/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/powerpc/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -33,8 +33,13 @@
 
 #if defined(AIM) && defined(__powerpc64__)
 
+#define	counter_enter()	do {} while (0)
+#define	counter_exit()	do {} while (0)
+
+#define	counter_u64_add_protected(c, i)	counter_u64_add(c, i)
+
 static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 	uint64_t ccpu, old;
 
@@ -50,31 +55,23 @@ counter_u64_add(counter_u64_t c, uint64_
 	    : "cc", "memory");
 }
 
-static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
-{
-
-	counter_u64_add(c, -dec);
-}
-
 #else	/* !AIM || !64bit */
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	critical_enter()
+#define	counter_exit()	critical_exit()
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) += inc;
-	critical_exit();
-}
+#define	counter_u64_add_protected(c, inc)	do {	\
+	CRITICAL_ASSERT(td);				\
+	*(uint64_t *)zpcpu_get(c) += (inc);		\
+} while (0)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) -= dec;
-	critical_exit();
+	counter_enter();
+	counter_u64_add_protected(c, inc);
+	counter_exit();
 }
 
 #endif	/* AIM 64bit */

Modified: projects/counters/sys/sparc64/include/counter.h
==============================================================================
--- projects/counters/sys/sparc64/include/counter.h	Wed Apr  3 10:31:13 2013	(r249043)
+++ projects/counters/sys/sparc64/include/counter.h	Wed Apr  3 10:37:26 2013	(r249044)
@@ -31,22 +31,21 @@
 
 #include <sys/pcpu.h>
 
-static inline void
-counter_u64_add(counter_u64_t c, uint64_t inc)
-{
+#define	counter_enter()	critical_enter()
+#define	counter_exit()	critical_exit()
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) += inc;
-	critical_exit();
-}
+#define	counter_u64_add_protected(c, inc)	do {	\
+	CRITICAL_ASSERT(td);				\
+	*(uint64_t *)zpcpu_get(c) += (inc);		\
+} while (0)
 
 static inline void
-counter_u64_subtract(counter_u64_t c, uint64_t dec)
+counter_u64_add(counter_u64_t c, int64_t inc)
 {
 
-	critical_enter();
-	*(uint64_t *)zpcpu_get(c) -= dec;
-	critical_exit();
+	counter_enter();
+	counter_u64_add_protected(c, inc);
+	counter_exit();
 }
 
 #endif	/* ! __MACHINE_COUNTER_H__ */

From owner-svn-src-projects@FreeBSD.ORG  Wed Apr  3 10:49:05 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id C0A8416C;
 Wed,  3 Apr 2013 10:49:05 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 99CFD5E8;
 Wed,  3 Apr 2013 10:49:05 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33An59c093274;
 Wed, 3 Apr 2013 10:49:05 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33An54X093273;
 Wed, 3 Apr 2013 10:49:05 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304031049.r33An54X093273@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Wed, 3 Apr 2013 10:49:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249045 - projects/counters/share/man/man9
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 03 Apr 2013 10:49:05 -0000

Author: glebius
Date: Wed Apr  3 10:49:05 2013
New Revision: 249045
URL: http://svnweb.freebsd.org/changeset/base/249045

Log:
  Document recent changes and improve wording[1].
  
  Submitted by:	bde [1]

Modified:
  projects/counters/share/man/man9/counter.9

Modified: projects/counters/share/man/man9/counter.9
==============================================================================
--- projects/counters/share/man/man9/counter.9	Wed Apr  3 10:37:26 2013	(r249044)
+++ projects/counters/share/man/man9/counter.9	Wed Apr  3 10:49:05 2013	(r249045)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 17, 2013
+.Dd April 3, 2013
 .Dt COUNTER 9
 .Os
 .Sh NAME
@@ -39,9 +39,13 @@
 .Ft void
 .Fn counter_u64_free "counter_u64_t cnt"
 .Ft void
-.Fn counter_u64_add "counter_u64_t cnt" "uint64_t inc"
+.Fn counter_u64_add "counter_u64_t cnt" "int64_t value"
 .Ft void
-.Fn counter_u64_subtract "counter_u64_t cnt" "uint64_t dec"
+.Fn counter_enter
+.Ft void
+.Fn counter_exit
+.Ft void
+.Fn counter_u64_add_protected "counter_u64_t cnt" "int64_t value"
 .Ft uint64_t
 .Fn counter_u64_fetch "counter_u64_t cnt"
 .Ft void
@@ -92,21 +96,28 @@ is specified the operation may fail.
 Free previously allocated
 .Nm
 .Fa cnt .
-.It Fn counter_u64_add cnt inc
-Add value of
-.Fa inc
-to
-.Nm
-.Fa cnt .
-.It Fn counter_u64_subtract cnt dec
-Subtract value of
-.Fa dec
-from
+.It Fn counter_u64_add cnt value
+Add
+.Fa value
+to the
 .Nm
 .Fa cnt .
 The KPI does not guarantee any protection from underflow.
+.It Fn counter_enter
+Enter mode that would allow to safely update several counters via
+.Fn counter_u64_add_protected .
+On some machines this expands to
+.Xr critical 9
+section, while on other is a nop.
 See
 .Sx IMPLEMENTATION DETAILS .
+.It Fn counter_exit
+Exit mode for updating several counters.
+.It Fn counter_u64_add_protected cnt value
+Same as
+.Fn counter_u64_add ,
+but should be preceded by
+.Fn counter_enter .
 .It Fn counter_u64_fetch cnt
 Obtain current snapshot of the data collected in
 .Nm
@@ -176,7 +187,7 @@ section.
 .Xr critical 9 ,
 .Xr locking 9 ,
 .Xr malloc 9 ,
-.Xr sysctl 9,
+.Xr sysctl 9 ,
 .Xr uma 9
 .Sh HISTORY
 The

From owner-svn-src-projects@FreeBSD.ORG  Wed Apr  3 16:55:34 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 5D572556;
 Wed,  3 Apr 2013 16:55:34 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4EA97FB8;
 Wed,  3 Apr 2013 16:55:34 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33GtYll002420;
 Wed, 3 Apr 2013 16:55:34 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33GtYia002419;
 Wed, 3 Apr 2013 16:55:34 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201304031655.r33GtYia002419@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Wed, 3 Apr 2013 16:55:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249060 - projects/counters/sys/powerpc/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 03 Apr 2013 16:55:34 -0000

Author: kib
Date: Wed Apr  3 16:55:33 2013
New Revision: 249060
URL: http://svnweb.freebsd.org/changeset/base/249060

Log:
  Match reality

Modified:
  projects/counters/sys/powerpc/include/counter.h

Modified: projects/counters/sys/powerpc/include/counter.h
==============================================================================
--- projects/counters/sys/powerpc/include/counter.h	Wed Apr  3 16:31:30 2013	(r249059)
+++ projects/counters/sys/powerpc/include/counter.h	Wed Apr  3 16:55:33 2013	(r249060)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2012 Konstantin Belousov <kib@FreeBSD.org>
+ * Copyright (c) 2012, 2013 Konstantin Belousov <kib@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without

From owner-svn-src-projects@FreeBSD.ORG  Wed Apr  3 17:19:27 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 62AB8A82;
 Wed,  3 Apr 2013 17:19:27 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 55A6D189;
 Wed,  3 Apr 2013 17:19:27 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r33HJRrQ008888;
 Wed, 3 Apr 2013 17:19:27 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r33HJRKi008887;
 Wed, 3 Apr 2013 17:19:27 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304031719.r33HJRKi008887@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Wed, 3 Apr 2013 17:19:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249061 - projects/counters/sys/powerpc/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 03 Apr 2013 17:19:27 -0000

Author: glebius
Date: Wed Apr  3 17:19:26 2013
New Revision: 249061
URL: http://svnweb.freebsd.org/changeset/base/249061

Log:
  Remove zero sized array.
  
  Submitted by:	kib

Modified:
  projects/counters/sys/powerpc/include/pcpu.h

Modified: projects/counters/sys/powerpc/include/pcpu.h
==============================================================================
--- projects/counters/sys/powerpc/include/pcpu.h	Wed Apr  3 16:55:33 2013	(r249060)
+++ projects/counters/sys/powerpc/include/pcpu.h	Wed Apr  3 17:19:26 2013	(r249061)
@@ -52,7 +52,7 @@ struct pmap;
 	register_t	pc_dbsave[CPUSAVE_LEN];
 
 #define PCPU_MD_AIM32_FIELDS						\
-	char		__pad[0]		/* no pad for now */
+	/* char		__pad[0] */
 
 #define PCPU_MD_AIM64_FIELDS						\
 	struct slb	pc_slb[64];					\

From owner-svn-src-projects@FreeBSD.ORG  Thu Apr  4 16:02:26 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 3E4EDEAE;
 Thu,  4 Apr 2013 16:02:26 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 2E525D39;
 Thu,  4 Apr 2013 16:02:26 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34G2Q13012344;
 Thu, 4 Apr 2013 16:02:26 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34G2MDX012316;
 Thu, 4 Apr 2013 16:02:22 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304041602.r34G2MDX012316@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Thu, 4 Apr 2013 16:02:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249098 - in projects/camlock: . bin/dd bin/sh
 contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests etc/defaults
 etc/periodic/daily lib/libc/stdlib rescue/rescue sbin sbin/atacontrol...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 04 Apr 2013 16:02:26 -0000

Author: mav
Date: Thu Apr  4 16:02:21 2013
New Revision: 249098
URL: http://svnweb.freebsd.org/changeset/base/249098

Log:
  MFC

Added:
  projects/camlock/contrib/bmake/unit-tests/export-env
     - copied unchanged from r249097, head/contrib/bmake/unit-tests/export-env
  projects/camlock/etc/periodic/daily/401.status-graid
     - copied unchanged from r249097, head/etc/periodic/daily/401.status-graid
  projects/camlock/sys/dev/cfi/cfi_bus_nexus.c
     - copied unchanged from r249097, head/sys/dev/cfi/cfi_bus_nexus.c
Deleted:
  projects/camlock/etc/periodic/daily/405.status-ata-raid
  projects/camlock/sbin/atacontrol/
  projects/camlock/share/man/man4/atapicam.4
  projects/camlock/share/man/man4/ataraid.4
  projects/camlock/sys/dev/ata/ata-disk.c
  projects/camlock/sys/dev/ata/ata-disk.h
  projects/camlock/sys/dev/ata/ata-raid-ddf.h
  projects/camlock/sys/dev/ata/ata-raid.c
  projects/camlock/sys/dev/ata/ata-raid.h
  projects/camlock/sys/dev/ata/atapi-cam.c
  projects/camlock/sys/dev/ata/atapi-cd.c
  projects/camlock/sys/dev/ata/atapi-cd.h
  projects/camlock/sys/dev/ata/atapi-fd.c
  projects/camlock/sys/dev/ata/atapi-fd.h
  projects/camlock/sys/dev/ata/atapi-tape.c
  projects/camlock/sys/dev/ata/atapi-tape.h
  projects/camlock/sys/modules/ata/atacam/
  projects/camlock/sys/modules/ata/atadisk/
  projects/camlock/sys/modules/ata/atapicam/
  projects/camlock/sys/modules/ata/atapicd/
  projects/camlock/sys/modules/ata/atapifd/
  projects/camlock/sys/modules/ata/atapist/
  projects/camlock/sys/modules/ata/ataraid/
  projects/camlock/usr.sbin/burncd/
Modified:
  projects/camlock/ObsoleteFiles.inc
  projects/camlock/bin/dd/dd.c
  projects/camlock/bin/sh/redir.c
  projects/camlock/contrib/bmake/ChangeLog
  projects/camlock/contrib/bmake/FILES
  projects/camlock/contrib/bmake/Makefile
  projects/camlock/contrib/bmake/bmake.1
  projects/camlock/contrib/bmake/bmake.cat1
  projects/camlock/contrib/bmake/boot-strap
  projects/camlock/contrib/bmake/configure
  projects/camlock/contrib/bmake/configure.in
  projects/camlock/contrib/bmake/dir.c
  projects/camlock/contrib/bmake/job.c
  projects/camlock/contrib/bmake/job.h
  projects/camlock/contrib/bmake/main.c
  projects/camlock/contrib/bmake/make.1
  projects/camlock/contrib/bmake/make.h
  projects/camlock/contrib/bmake/meta.c
  projects/camlock/contrib/bmake/meta.h
  projects/camlock/contrib/bmake/mk/ChangeLog
  projects/camlock/contrib/bmake/mk/dirdeps.mk
  projects/camlock/contrib/bmake/mk/gendirdeps.mk
  projects/camlock/contrib/bmake/mk/install-mk
  projects/camlock/contrib/bmake/mk/meta.stage.mk
  projects/camlock/contrib/bmake/mk/meta2deps.py
  projects/camlock/contrib/bmake/mk/meta2deps.sh
  projects/camlock/contrib/bmake/mk/sys.dependfile.mk
  projects/camlock/contrib/bmake/parse.c
  projects/camlock/contrib/bmake/unit-tests/Makefile.in
  projects/camlock/contrib/bmake/unit-tests/test.exp
  projects/camlock/contrib/bmake/var.c
  projects/camlock/etc/defaults/periodic.conf
  projects/camlock/etc/periodic/daily/Makefile
  projects/camlock/lib/libc/stdlib/rand.3
  projects/camlock/lib/libc/stdlib/rand.c
  projects/camlock/lib/libc/stdlib/random.3
  projects/camlock/lib/libc/stdlib/random.c
  projects/camlock/rescue/rescue/Makefile
  projects/camlock/sbin/Makefile
  projects/camlock/sbin/geom/class/raid/graid.8
  projects/camlock/sbin/geom/class/stripe/gstripe.8
  projects/camlock/sbin/nvmecontrol/nvmecontrol.c
  projects/camlock/share/man/man4/Makefile
  projects/camlock/share/man/man4/ata.4
  projects/camlock/share/man/man4/igb.4
  projects/camlock/share/man/man5/devfs.conf.5
  projects/camlock/share/man/man5/periodic.conf.5
  projects/camlock/share/man/man5/rc.conf.5
  projects/camlock/share/man/man7/hier.7
  projects/camlock/share/mk/sys.mk
  projects/camlock/sys/amd64/conf/GENERIC
  projects/camlock/sys/arm/conf/AC100
  projects/camlock/sys/arm/conf/ARMADAXP
  projects/camlock/sys/arm/conf/AVILA
  projects/camlock/sys/arm/conf/CAMBRIA
  projects/camlock/sys/arm/conf/CRB
  projects/camlock/sys/arm/conf/CUBIEBOARD
  projects/camlock/sys/arm/conf/EFIKA_MX
  projects/camlock/sys/arm/conf/EP80219
  projects/camlock/sys/arm/conf/IQ31244
  projects/camlock/sys/arm/conf/TS7800
  projects/camlock/sys/cam/ata/ata_da.c
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/ctl/ctl.c
  projects/camlock/sys/cam/ctl/ctl_backend_block.c
  projects/camlock/sys/cam/ctl/scsi_ctl.c
  projects/camlock/sys/cam/scsi/scsi_da.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/camlock/sys/conf/NOTES
  projects/camlock/sys/conf/files
  projects/camlock/sys/conf/files.sparc64
  projects/camlock/sys/conf/options
  projects/camlock/sys/dev/ahci/ahciem.c
  projects/camlock/sys/dev/ata/ata-all.c
  projects/camlock/sys/dev/ata/ata-all.h
  projects/camlock/sys/dev/ata/ata-cbus.c
  projects/camlock/sys/dev/ata/ata-dma.c
  projects/camlock/sys/dev/ata/ata-lowlevel.c
  projects/camlock/sys/dev/ata/ata-pci.c
  projects/camlock/sys/dev/ata/ata-pci.h
  projects/camlock/sys/dev/ata/ata-queue.c
  projects/camlock/sys/dev/ata/ata-sata.c
  projects/camlock/sys/dev/ata/ata_if.m
  projects/camlock/sys/dev/ata/chipsets/ata-acard.c
  projects/camlock/sys/dev/ata/chipsets/ata-acerlabs.c
  projects/camlock/sys/dev/ata/chipsets/ata-intel.c
  projects/camlock/sys/dev/ata/chipsets/ata-ite.c
  projects/camlock/sys/dev/ata/chipsets/ata-serverworks.c
  projects/camlock/sys/dev/ata/chipsets/ata-siliconimage.c
  projects/camlock/sys/dev/ath/if_ath_rx.c
  projects/camlock/sys/dev/ath/if_ath_rx.h
  projects/camlock/sys/dev/ath/if_ath_rx_edma.c
  projects/camlock/sys/dev/drm2/drm_edid.c
  projects/camlock/sys/dev/drm2/i915/intel_iic.c
  projects/camlock/sys/dev/drm2/i915/intel_modes.c
  projects/camlock/sys/dev/drm2/i915/intel_sdvo.c
  projects/camlock/sys/dev/e1000/if_em.c
  projects/camlock/sys/dev/e1000/if_igb.c
  projects/camlock/sys/dev/e1000/if_lem.c
  projects/camlock/sys/dev/hwpmc/hwpmc_core.c
  projects/camlock/sys/dev/hwpmc/hwpmc_intel.c
  projects/camlock/sys/dev/hwpmc/hwpmc_uncore.c
  projects/camlock/sys/dev/hwpmc/pmc_events.h
  projects/camlock/sys/dev/md/md.c
  projects/camlock/sys/dev/usb/misc/udbp.c
  projects/camlock/sys/dev/usb/usb_device.c
  projects/camlock/sys/dev/usb/usbdevs
  projects/camlock/sys/i386/conf/GENERIC
  projects/camlock/sys/i386/conf/XBOX
  projects/camlock/sys/ia64/conf/GENERIC
  projects/camlock/sys/kern/init_main.c
  projects/camlock/sys/kern/subr_bus_dma.c
  projects/camlock/sys/mips/atheros/uart_dev_ar933x.c
  projects/camlock/sys/mips/conf/AR933X_BASE.hints
  projects/camlock/sys/mips/conf/OCTEON1
  projects/camlock/sys/mips/conf/XLR
  projects/camlock/sys/mips/conf/XLR64
  projects/camlock/sys/mips/conf/XLRN32
  projects/camlock/sys/mips/conf/std.SWARM
  projects/camlock/sys/mips/conf/std.XLP
  projects/camlock/sys/mips/malta/std.malta
  projects/camlock/sys/modules/ata/Makefile
  projects/camlock/sys/modules/ctl/Makefile
  projects/camlock/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
  projects/camlock/sys/pc98/conf/GENERIC
  projects/camlock/sys/pc98/conf/NOTES
  projects/camlock/sys/powerpc/conf/GENERIC
  projects/camlock/sys/powerpc/conf/GENERIC64
  projects/camlock/sys/powerpc/conf/MPC85XX
  projects/camlock/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c
  projects/camlock/sys/sparc64/conf/GENERIC
  projects/camlock/sys/sys/bus.h
  projects/camlock/sys/ufs/ffs/ffs_softdep.c
  projects/camlock/sys/vm/vm_radix.c
  projects/camlock/usr.bin/bmake/Makefile
  projects/camlock/usr.bin/bmake/config.h
  projects/camlock/usr.bin/bmake/unit-tests/Makefile
  projects/camlock/usr.sbin/Makefile
  projects/camlock/usr.sbin/bsdconfig/share/device.subr
  projects/camlock/usr.sbin/pc-sysinstall/backend-query/disk-list.sh
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/contrib/bmake/   (props changed)
  projects/camlock/lib/libc/   (props changed)
  projects/camlock/sbin/   (props changed)
  projects/camlock/share/man/man4/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/sys/conf/   (props changed)

Modified: projects/camlock/ObsoleteFiles.inc
==============================================================================
--- projects/camlock/ObsoleteFiles.inc	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/ObsoleteFiles.inc	Thu Apr  4 16:02:21 2013	(r249098)
@@ -38,6 +38,13 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20130404: legacy ATA stack removed
+OLD_FILES+=sbin/atacontrol
+OLD_FILES+=usr/share/man/man8/atacontrol.8.gz
+OLD_FILES+=usr/share/man/man4/atapicam.4.gz
+OLD_FILES+=usr/share/man/man4/ataraid.4.gz
+OLD_FILES+=usr.sbin/burncd
+OLD_FILES+=usr/share/man/man8/burncd.8.gz
 # 20130316: vinum.4 removed
 OLD_FILES+=usr/share/man/man4/vinum.4.gz
 # 20130312: fortunes-o removed

Modified: projects/camlock/bin/dd/dd.c
==============================================================================
--- projects/camlock/bin/dd/dd.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/bin/dd/dd.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -98,6 +98,13 @@ main(int argc __unused, char *argv[])
 		dd_in();
 
 	dd_close();
+	/*
+	 * Some devices such as cfi(4) may perform significant amounts
+	 * of work when a write descriptor is closed.  Close the out
+	 * descriptor explicitly so that the summary handler (called
+	 * from an atexit() hook) includes this work.
+	 */
+	close(out.fd);
 	exit(0);
 }
 

Modified: projects/camlock/bin/sh/redir.c
==============================================================================
--- projects/camlock/bin/sh/redir.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/bin/sh/redir.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$");
 
 #define EMPTY -2		/* marks an unused slot in redirtab */
 #define CLOSED -1		/* fd was not open before redir */
-#define PIPESIZE 4096		/* amount of buffering in a pipe */
 
 
 MKINIT
@@ -253,7 +252,9 @@ openhere(union node *redir)
 {
 	char *p;
 	int pip[2];
-	int len = 0;
+	size_t len = 0;
+	int flags;
+	ssize_t written = 0;
 
 	if (pipe(pip) < 0)
 		error("Pipe call failed: %s", strerror(errno));
@@ -263,9 +264,16 @@ openhere(union node *redir)
 	else
 		p = redir->nhere.doc->narg.text;
 	len = strlen(p);
-	if (len <= PIPESIZE) {
-		xwrite(pip[1], p, len);
+	if (len == 0)
 		goto out;
+	flags = fcntl(pip[1], F_GETFL, 0);
+	if (flags != -1 && fcntl(pip[1], F_SETFL, flags | O_NONBLOCK) != -1) {
+		written = write(pip[1], p, len);
+		if (written < 0)
+			written = 0;
+		if ((size_t)written == len)
+			goto out;
+		fcntl(pip[1], F_SETFL, flags);
 	}
 
 	if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {
@@ -275,7 +283,7 @@ openhere(union node *redir)
 		signal(SIGHUP, SIG_IGN);
 		signal(SIGTSTP, SIG_IGN);
 		signal(SIGPIPE, SIG_DFL);
-		xwrite(pip[1], p, len);
+		xwrite(pip[1], p + written, len - written);
 		_exit(0);
 	}
 out:

Modified: projects/camlock/contrib/bmake/ChangeLog
==============================================================================
--- projects/camlock/contrib/bmake/ChangeLog	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/ChangeLog	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,3 +1,47 @@
+2013-03-30  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130330
+	  Merge with NetBSD make, pick up
+	  o meta.c: refine the handling of .OODATE in commands.
+	    Rather than suppress command comparison for the entire script
+	    as though .NOMETA_CMP had been used, only suppress it for the
+	    one command line.
+	    This allows something like ${.OODATE:M.NOMETA_CMP} to be used to 
+	    suppress comparison of a command without otherwise affecting it.
+	  o make.1: document that
+
+2013-03-22  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130321
+	  yes, not quite right but its a cooler number.
+	  Merge with NetBSD make, pick up
+	  o parse.c: fix ParseGmakeExport to be portable 
+	    and add a unit-test.
+	* meta.c: call meta_init() before makefiles are read and if built
+	  with filemon support set .MAKE.PATH_FILEMON to _PATH_FILEMON
+	  this let's makefiles test for support.
+	  Call meta_mode_init() to process .MAKE.MODE.
+
+2013-03-13  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130305
+	  Merge with NetBSD make, pick up
+	  o run .STALE: target when a dependency from .depend is missing.
+	  o job.c: add Job_RunTarget() for the above and .BEGIN
+
+2013-03-03  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130303
+	  Merge with NetBSD make, pick up
+	  o main.c: set .MAKE.OS to utsname.sysname
+	  o job.c: more checks for read and poll errors
+	  o var.c: lose VarChangeCase() saves 4% time
+
+2013-03-02  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* boot-strap: remove MAKEOBJDIRPREFIX from environment since we
+	  want to use MAKEOBJDIR
+
 2013-01-27  Simon J. Gerraty  <sjg@bad.crufty.net>
 
 	* Merge with NetBSD make, pick up

Modified: projects/camlock/contrib/bmake/FILES
==============================================================================
--- projects/camlock/contrib/bmake/FILES	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/FILES	Thu Apr  4 16:02:21 2013	(r249098)
@@ -102,6 +102,7 @@ unit-tests/dotwait
 unit-tests/error
 unit-tests/export
 unit-tests/export-all
+unit-tests/export-env
 unit-tests/forloop
 unit-tests/forsubst
 unit-tests/hash

Modified: projects/camlock/contrib/bmake/Makefile
==============================================================================
--- projects/camlock/contrib/bmake/Makefile	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/Makefile	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,7 +1,7 @@
-#	$Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $
+#	$Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $
 
 # Base version on src date
-MAKE_VERSION= 20130123
+MAKE_VERSION= 20130330
 
 PROG=	bmake
 
@@ -187,14 +187,14 @@ MANDIR= ${SHAREDIR}/man
 .if !exists(.depend)
 ${OBJS}: config.h
 .endif
-.if ${MK_AUTOCONF_MK} == "yes"
-.include <autoconf.mk>
-.endif
 
 # make sure that MAKE_VERSION gets updated.
 main.o: ${SRCS} ${MAKEFILE}
 
 # start-delete2 for bsd.after-import.mk
+.if ${MK_AUTOCONF_MK} == "yes"
+.include <autoconf.mk>
+.endif
 SHARE_MK?=${SHAREDIR}/mk
 MKSRC=${srcdir}/mk
 INSTALL?=${srcdir}/install-sh

Modified: projects/camlock/contrib/bmake/bmake.1
==============================================================================
--- projects/camlock/contrib/bmake/bmake.1	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/bmake.1	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $
+.\"	$NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd January 23, 2013
+.Dd March 30, 2013
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -874,6 +874,13 @@ by appending their names to
 is re-exported whenever
 .Ql Va .MAKEOVERRIDES
 is modified.
+.It Va .MAKE.PATH_FILEMON
+If
+.Nm
+was built with 
+.Xr filemon 4
+support, this is set to the path of the device node.
+This allows makefiles to test for this support.
 .It Va .MAKE.PID
 The process-id of
 .Nm .
@@ -1757,6 +1764,20 @@ targets.
 Ignore differences in commands when deciding if target is out of date.
 This is useful if the command contains a value which always changes.
 If the number of commands change, though, the target will still be out of date.
+The same effect applies to any command line that uses the variable
+.Va .OODATE ,
+which can be used for that purpose even when not otherwise needed or desired:
+.Bd -literal -offset indent
+
+skip-compare-for-some:
+	@echo this will be compared
+	@echo this will not ${.OODATE:M.NOMETA_CMP}
+	@echo this will also be compared
+
+.Ed
+The
+.Cm \&:M
+pattern suppresses any expansion of the unwanted variable.
 .It Ic .NOPATH
 Do not search for the target in the directories specified by
 .Ic .PATH .
@@ -2008,6 +2029,10 @@ If no sources are specified, the
 .Ic .SILENT
 attribute is applied to every
 command in the file.
+.It Ic .STALE
+This target gets run when a dependency file contains stale entries, having
+.Va .ALLSRC
+set to the name of that dependency file.
 .It Ic .SUFFIXES
 Each source specifies a suffix to
 .Nm .

Modified: projects/camlock/contrib/bmake/bmake.cat1
==============================================================================
--- projects/camlock/contrib/bmake/bmake.cat1	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/bmake.cat1	Thu Apr  4 16:02:21 2013	(r249098)
@@ -565,6 +565,11 @@ VVAARRIIAABBLLEE AASSSSIIGG
                      `MAKEFLAGS' is re-exported whenever `_._M_A_K_E_O_V_E_R_R_I_D_E_S' is
                      modified.
 
+     _._M_A_K_E_._P_A_T_H___F_I_L_E_M_O_N
+                     If bbmmaakkee was built with filemon(4) support, this is set
+                     to the path of the device node.  This allows makefiles to
+                     test for this support.
+
      _._M_A_K_E_._P_I_D       The process-id of bbmmaakkee.
 
      _._M_A_K_E_._P_P_I_D      The parent process-id of bbmmaakkee.
@@ -1106,7 +1111,19 @@ SSPPEECCIIAALL SSOOUURRCCEE
                Ignore differences in commands when deciding if target is out
                of date.  This is useful if the command contains a value which
                always changes.  If the number of commands change, though, the
-               target will still be out of date.
+               target will still be out of date.  The same effect applies to
+               any command line that uses the variable _._O_O_D_A_T_E, which can be
+               used for that purpose even when not otherwise needed or
+               desired:
+
+
+                     skip-compare-for-some:
+                             @echo this will be compared
+                             @echo this will not ${.OODATE:M.NOMETA_CMP}
+                             @echo this will also be compared
+
+               The ::MM pattern suppresses any expansion of the unwanted vari-
+               able.
 
      ..NNOOPPAATTHH   Do not search for the target in the directories specified by
                ..PPAATTHH.
@@ -1278,6 +1295,9 @@ SSPPEECCIIAALL TTAARRGGEETT
               sources are specified, the ..SSIILLEENNTT attribute is applied to every
               command in the file.
 
+     ..SSTTAALLEE   This target gets run when a dependency file contains stale
+              entries, having _._A_L_L_S_R_C set to the name of that dependency file.
+
      ..SSUUFFFFIIXXEESS
               Each source specifies a suffix to bbmmaakkee.  If no sources are
               specified, any previously specified suffixes are deleted.  It
@@ -1340,4 +1360,4 @@ BBUUGGSS
 
      There is no way of escaping a space character in a filename.
 
-NetBSD 5.1                     January 23, 2013                     NetBSD 5.1
+NetBSD 5.1                      March 30, 2013                      NetBSD 5.1

Modified: projects/camlock/contrib/bmake/boot-strap
==============================================================================
--- projects/camlock/contrib/bmake/boot-strap	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/boot-strap	Thu Apr  4 16:02:21 2013	(r249098)
@@ -111,7 +111,7 @@
 #	Simon J. Gerraty <sjg@crufty.net>
 
 # RCSid:
-#	$Id: boot-strap,v 1.42 2013/01/25 20:20:33 sjg Exp $
+#	$Id: boot-strap,v 1.43 2013/03/02 18:55:23 sjg Exp $
 #
 #	@(#) Copyright (c) 2001 Simon J. Gerraty
 #
@@ -159,6 +159,9 @@ source_rc() {
 
 cmd_args="$@"
 
+# clear some things from the environment that we care about
+unset MAKEOBJDIR MAKEOBJDIRPREFIX
+
 # --install[-host-target] will set this
 INSTALL_PREFIX=
 # other things we pass to install step

Modified: projects/camlock/contrib/bmake/configure
==============================================================================
Binary file (source and/or target). No diff available.

Modified: projects/camlock/contrib/bmake/configure.in
==============================================================================
--- projects/camlock/contrib/bmake/configure.in	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/configure.in	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,10 +1,10 @@
 dnl
 dnl RCSid:
-dnl	$Id: configure.in,v 1.46 2012/12/28 21:28:18 sjg Exp $
+dnl	$Id: configure.in,v 1.48 2013/03/04 21:25:57 sjg Exp $
 dnl
 dnl Process this file with autoconf to produce a configure script
 dnl
-AC_INIT([bmake], [20121212], [sjg@NetBSD.org])
+AC_INIT([bmake], [20130303], [sjg@NetBSD.org])
 AC_CONFIG_HEADER(config.h)
 
 dnl make srcdir absolute

Modified: projects/camlock/contrib/bmake/dir.c
==============================================================================
--- projects/camlock/contrib/bmake/dir.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/dir.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $	*/
+/*	$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c	8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $");
+__RCSID("$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -145,6 +145,7 @@ __RCSID("$NetBSD: dir.c,v 1.65 2012/06/1
 #include "make.h"
 #include "hash.h"
 #include "dir.h"
+#include "job.h"
 
 /*
  *	A search path consists of a Lst of Path structures. A Path structure
@@ -1463,9 +1464,11 @@ Dir_MTime(GNode *gn, Boolean recheck)
 			 * so that we give that to the compiler.
 			 */
 			gn->path = bmake_strdup(fullName);
-			fprintf(stdout,
-				"%s: ignoring stale %s for %s, found %s\n",
-				progname, makeDependfile, gn->name, fullName);
+			if (!Job_RunTarget(".STALE", gn->fname))
+			    fprintf(stdout,
+				"%s: %s, %d: ignoring stale %s for %s, "
+				"found %s\n", progname, gn->fname, gn->lineno,
+				makeDependfile, gn->name, fullName);
 		    }
 		}
 	    }

Modified: projects/camlock/contrib/bmake/job.c
==============================================================================
--- projects/camlock/contrib/bmake/job.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/job.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $	*/
+/*	$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $");
+__RCSID("$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -142,6 +142,7 @@ __RCSID("$NetBSD: job.c,v 1.165 2013/01/
 #include <sys/time.h>
 #include "wait.h"
 
+#include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
 #if !defined(USE_SELECT) && defined(HAVE_POLL_H)
@@ -1245,8 +1246,10 @@ Job_CheckCommands(GNode *gn, void (*abor
 	    static const char msg[] = ": don't know how to make";
 
 	    if (gn->flags & FROM_DEPEND) {
-		fprintf(stdout, "%s: ignoring stale %s for %s\n",
-			progname, makeDependfile, gn->name);
+		if (!Job_RunTarget(".STALE", gn->fname))
+		    fprintf(stdout, "%s: %s, %d: ignoring stale %s for %s\n",
+			progname, gn->fname, gn->lineno, makeDependfile,
+			gn->name);
 		return TRUE;
 	    }
 
@@ -2063,32 +2066,45 @@ Job_CatchOutput(void)
     (void)fflush(stdout);
 
     /* The first fd in the list is the job token pipe */
-    nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC);
+    do {
+	nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC);
+    } while (nready < 0 && errno == EINTR);
 
-    if (nready < 0 || readyfd(&childExitJob)) {
+    if (nready < 0)
+	Punt("poll: %s", strerror(errno));
+
+    if (nready > 0 && readyfd(&childExitJob)) {
 	char token = 0;
-	nready -= 1;
-	while (read(childExitJob.inPipe, &token, 1) == -1 && errno == EAGAIN)
-		continue;
-	if (token == DO_JOB_RESUME[0])
-	    /* Complete relay requested from our SIGCONT handler */
-	    JobRestartJobs();
-	Job_CatchChildren();
+	ssize_t count;
+	count = read(childExitJob.inPipe, &token, 1);
+	switch (count) {
+	case 0:
+	    Punt("unexpected eof on token pipe");
+	case -1:
+	    Punt("token pipe read: %s", strerror(errno));
+	case 1:
+	    if (token == DO_JOB_RESUME[0])
+		/* Complete relay requested from our SIGCONT handler */
+		JobRestartJobs();
+	    break;
+	default:
+	    abort();
+	}
+	--nready;
     }
 
-    if (nready <= 0)
-	return;
-
-    if (wantToken && readyfd(&tokenWaitJob))
-	nready--;
+    Job_CatchChildren();
+    if (nready == 0)
+	    return;
 
     for (i = 2; i < nfds; i++) {
 	if (!fds[i].revents)
 	    continue;
 	job = jobfds[i];
-	if (job->job_state != JOB_ST_RUNNING)
-	    continue;
-	JobDoOutput(job, FALSE);
+	if (job->job_state == JOB_ST_RUNNING)
+	    JobDoOutput(job, FALSE);
+	if (--nready == 0)
+		return;
     }
 }
 
@@ -2179,8 +2195,6 @@ Job_SetPrefix(void)
 void
 Job_Init(void)
 {
-    GNode         *begin;     /* node for commands to do at the very start */
-
     /* Allocate space for all the job info */
     job_table = bmake_malloc(maxJobs * sizeof *job_table);
     memset(job_table, 0, maxJobs * sizeof *job_table);
@@ -2256,15 +2270,7 @@ Job_Init(void)
     ADDSIG(SIGCONT, JobContinueSig)
 #undef ADDSIG
 
-    begin = Targ_FindNode(".BEGIN", TARG_NOCREATE);
-
-    if (begin != NULL) {
-	JobRun(begin);
-	if (begin->made == ERROR) {
-	    PrintOnError(begin, "\n\nStop.");
-	    exit(1);
-	}
-    }
+    (void)Job_RunTarget(".BEGIN", NULL);
     postCommands = Targ_FindNode(".END", TARG_CREATE);
 }
 
@@ -2930,6 +2936,38 @@ Job_TokenWithdraw(void)
     return TRUE;
 }
 
+/*-
+ *-----------------------------------------------------------------------
+ * Job_RunTarget --
+ *	Run the named target if found. If a filename is specified, then
+ *	set that to the sources.
+ *
+ * Results:
+ *	None
+ *
+ * Side Effects:
+ * 	exits if the target fails.
+ *
+ *-----------------------------------------------------------------------
+ */
+Boolean
+Job_RunTarget(const char *target, const char *fname) {
+    GNode *gn = Targ_FindNode(target, TARG_NOCREATE);
+
+    if (gn == NULL)
+	return FALSE;
+
+    if (fname)
+	Var_Set(ALLSRC, fname, gn, 0);
+
+    JobRun(gn);
+    if (gn->made == ERROR) {
+	PrintOnError(gn, "\n\nStop.");
+	exit(1);
+    }
+    return TRUE;
+}
+
 #ifdef USE_SELECT
 int
 emul_poll(struct pollfd *fd, int nfd, int timeout)

Modified: projects/camlock/contrib/bmake/job.h
==============================================================================
--- projects/camlock/contrib/bmake/job.h	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/job.h	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.h,v 1.40 2010/09/13 15:36:57 sjg Exp $	*/
+/*	$NetBSD: job.h,v 1.41 2013/03/05 22:01:44 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -268,5 +268,6 @@ void Job_TokenReturn(void);
 Boolean Job_TokenWithdraw(void);
 void Job_ServerStart(int, int, int);
 void Job_SetPrefix(void);
+Boolean Job_RunTarget(const char *, const char *);
 
 #endif /* _JOB_H_ */

Modified: projects/camlock/contrib/bmake/main.c
==============================================================================
--- projects/camlock/contrib/bmake/main.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/main.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $	*/
+/*	$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
@@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -119,9 +119,7 @@ __RCSID("$NetBSD: main.c,v 1.205 2013/01
 #include <sys/resource.h>
 #include <signal.h>
 #include <sys/stat.h>
-#ifdef MAKE_NATIVE
 #include <sys/utsname.h>
-#endif
 #include "wait.h"
 
 #include <errno.h>
@@ -768,7 +766,7 @@ MakeMode(const char *mode)
 	}
 #if USE_META
 	if (strstr(mode, "meta"))
-	    meta_init(mode);
+	    meta_mode_init(mode);
 #endif
     }
     if (mp)
@@ -813,9 +811,7 @@ main(int argc, char **argv)
 	static char defsyspath[] = _PATH_DEFSYSPATH;
 	char found_path[MAXPATHLEN + 1];	/* for searching for sys.mk */
 	struct timeval rightnow;		/* to initialize random seed */
-#ifdef MAKE_NATIVE
 	struct utsname utsname;
-#endif
 
 	/* default to writing debug to stderr */
 	debug_file = stderr;
@@ -834,7 +830,7 @@ main(int argc, char **argv)
 		progname++;
 	else
 		progname = argv[0];
-#ifdef RLIMIT_NOFILE
+#if defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE))
 	/*
 	 * get rid of resource limit on file descriptors
 	 */
@@ -848,6 +844,12 @@ main(int argc, char **argv)
 	}
 #endif
 
+	if (uname(&utsname) == -1) {
+	    (void)fprintf(stderr, "%s: uname failed (%s).\n", progname,
+		strerror(errno));
+	    exit(2);
+	}
+
 	/*
 	 * Get the name of this type of MACHINE from utsname
 	 * so we can share an executable for similar machines.
@@ -858,11 +860,6 @@ main(int argc, char **argv)
 	 */
 	if (!machine) {
 #ifdef MAKE_NATIVE
-	    if (uname(&utsname) == -1) {
-		(void)fprintf(stderr, "%s: uname failed (%s).\n", progname,
-		    strerror(errno));
-		exit(2);
-	    }
 	    machine = utsname.machine;
 #else
 #ifdef MAKE_MACHINE
@@ -892,6 +889,7 @@ main(int argc, char **argv)
 	 */
 	Var_Init();		/* Initialize the lists of variables for
 				 * parsing arguments */
+	Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL, 0);
 	Var_Set("MACHINE", machine, VAR_GLOBAL, 0);
 	Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0);
 #ifdef MAKE_VERSION
@@ -987,6 +985,9 @@ main(int argc, char **argv)
 	}
 	Job_SetPrefix();
 
+#ifdef USE_META
+	meta_init();
+#endif
 	/*
 	 * First snag any flags out of the MAKE environment variable.
 	 * (Note this is *not* MAKEFLAGS since /bin/make uses that and it's
@@ -1697,7 +1698,7 @@ Finish(int errors)
 }
 
 /*
- * enunlink --
+ * eunlink --
  *	Remove a file carefully, avoiding directories.
  */
 int

Modified: projects/camlock/contrib/bmake/make.1
==============================================================================
--- projects/camlock/contrib/bmake/make.1	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/make.1	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $
+.\"	$NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd January 23, 2013
+.Dd March 30, 2013
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -874,6 +874,13 @@ by appending their names to
 is re-exported whenever
 .Ql Va .MAKEOVERRIDES
 is modified.
+.It Va .MAKE.PATH_FILEMON
+If
+.Nm
+was built with 
+.Xr filemon 4
+support, this is set to the path of the device node.
+This allows makefiles to test for this support.
 .It Va .MAKE.PID
 The process-id of
 .Nm .
@@ -1757,6 +1764,20 @@ targets.
 Ignore differences in commands when deciding if target is out of date.
 This is useful if the command contains a value which always changes.
 If the number of commands change, though, the target will still be out of date.
+The same effect applies to any command line that uses the variable
+.Va .OODATE ,
+which can be used for that purpose even when not otherwise needed or desired:
+.Bd -literal -offset indent
+
+skip-compare-for-some:
+	@echo this will be compared
+	@echo this will not ${.OODATE:M.NOMETA_CMP}
+	@echo this will also be compared
+
+.Ed
+The
+.Cm \&:M
+pattern suppresses any expansion of the unwanted variable.
 .It Ic .NOPATH
 Do not search for the target in the directories specified by
 .Ic .PATH .
@@ -2008,6 +2029,10 @@ If no sources are specified, the
 .Ic .SILENT
 attribute is applied to every
 command in the file.
+.It Ic .STALE
+This target gets run when a dependency file contains stale entries, having
+.Va .ALLSRC
+set to the name of that dependency file.
 .It Ic .SUFFIXES
 Each source specifies a suffix to
 .Nm .

Modified: projects/camlock/contrib/bmake/make.h
==============================================================================
--- projects/camlock/contrib/bmake/make.h	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/make.h	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.h,v 1.89 2012/06/12 19:21:51 joerg Exp $	*/
+/*	$NetBSD: make.h,v 1.90 2013/02/25 01:57:14 dholland Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -103,7 +103,7 @@
 	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||			\
 	 (__GNUC__ > (x)))
 #else /* defined(__GNUC__) */
-#define	MAKE_GNUC_PREREQx, y)	0
+#define	MAKE_GNUC_PREREQ(x, y)	0
 #endif /* defined(__GNUC__) */
 
 #if MAKE_GNUC_PREREQ(2, 7)

Modified: projects/camlock/contrib/bmake/meta.c
==============================================================================
--- projects/camlock/contrib/bmake/meta.c	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/meta.c	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.26 2013/01/19 04:23:37 sjg Exp $ */
+/*      $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -539,8 +539,24 @@ boolValue(char *s)
     return TRUE;
 }
 
+/*
+ * Initialization we need before reading makefiles.
+ */
+void
+meta_init()
+{
+#ifdef USE_FILEMON
+	/* this allows makefiles to test if we have filemon support */
+	Var_Set(".MAKE.PATH_FILEMON", _PATH_FILEMON, VAR_GLOBAL, 0);
+#endif
+}
+
+
+/*
+ * Initialization we need after reading makefiles.
+ */
 void
-meta_init(const char *make_mode)
+meta_mode_init(const char *make_mode)
 {
     static int once = 0;
     char *cp;
@@ -1037,6 +1053,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 			    char *tp = Lst_Datum(ln);
 			    Lst_Remove(missingFiles, ln);
 			    free(tp);
+			    ln = NULL;	/* we're done with it */
 			}
 		    }
 		    break;
@@ -1196,17 +1213,19 @@ meta_oodate(GNode *gn, Boolean oodate)
 		    oodate = TRUE;
 		} else {
 		    char *cmd = (char *)Lst_Datum(ln);
+		    Boolean hasOODATE = FALSE;
 
-		    if (!needOODATE) {
-			if (strstr(cmd, "$?"))
-			    needOODATE = TRUE;
-			else if ((cp = strstr(cmd, ".OODATE"))) {
-			    /* check for $[{(].OODATE[)}] */
-			    if (cp > cmd + 2 && cp[-2] == '$')
-				needOODATE = TRUE;
-			}
-			if (needOODATE && DEBUG(META))
-			    fprintf(debug_file, "%s: %d: cannot compare commands using .OODATE\n", fname, lineno);
+		    if (strstr(cmd, "$?"))
+			hasOODATE = TRUE;
+		    else if ((cp = strstr(cmd, ".OODATE"))) {
+			/* check for $[{(].OODATE[:)}] */
+			if (cp > cmd + 2 && cp[-2] == '$')
+			    hasOODATE = TRUE;
+		    }
+		    if (hasOODATE) {
+			needOODATE = TRUE;
+			if (DEBUG(META))
+			    fprintf(debug_file, "%s: %d: cannot compare command using .OODATE\n", fname, lineno);
 		    }
 		    cmd = Var_Subst(NULL, cmd, gn, TRUE);
 
@@ -1235,7 +1254,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 			if (buf[x - 1] == '\n')
 			    buf[x - 1] = '\0';
 		    }
-		    if (!needOODATE &&
+		    if (!hasOODATE &&
 			!(gn->type & OP_NOMETA_CMP) &&
 			strcmp(p, cmd) != 0) {
 			if (DEBUG(META))

Modified: projects/camlock/contrib/bmake/meta.h
==============================================================================
--- projects/camlock/contrib/bmake/meta.h	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/meta.h	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.h,v 1.2 2011/03/30 22:03:49 sjg Exp $ */
+/*      $NetBSD: meta.h,v 1.3 2013/03/23 05:31:29 sjg Exp $ */
 
 /*
  * Things needed for 'meta' mode.
@@ -41,7 +41,8 @@ typedef struct BuildMon {
 extern Boolean useMeta;
 
 struct Job;				/* not defined yet */
-void meta_init(const char *);
+void meta_init(void);
+void meta_mode_init(const char *);
 void meta_job_start(struct Job *, GNode *);
 void meta_job_child(struct Job *);
 void meta_job_error(struct Job *, GNode *, int, int);

Modified: projects/camlock/contrib/bmake/mk/ChangeLog
==============================================================================
--- projects/camlock/contrib/bmake/mk/ChangeLog	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/mk/ChangeLog	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,3 +1,71 @@
+2013-03-30  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized.
+	* install-mk (MK_VERSION): bump version
+
+2013-03-21  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version
+	* gendirdeps.mk: do not apply :tA to DPADD entries, since we lose
+	  any trailing /., rather apply :tA only when needed.
+	* gendirdeps.mk: better mimic meta2deps handling of .dirdep files.
+	* meta.stage.mk (LN_CP_SCRIPT): Add LnCp to do the ln||cp dance
+	  consistently.
+	* dirdeps.mk: better describe the dance in sys.mk for TARGET_SPEC.
+	
+2013-03-18  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* gendirdeps.mk: revert the dance around .MAKE.DEPENDFILE_DEFAULT
+	  it is simpler to just not update when say building for "host"
+	  (where we know we apply filters to DIRDEPS), and using a
+	  non-machine qualified dependfile.
+
+2013-03-16  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* dirdeps.mk: improve DIRDEPS filtering by allowing DEP_SKIP_DIR
+	  and DEP_DIRDEPS_FILTER to vary by DEP_MACHINE and DEP_TARGET_SPEC
+	* gendirdeps.mk: ensure _objroot has trailing / if it needs it.
+	* meta2deps.py: if machine is "host", then also trim
+	  self.host_target from any OBJROOTS.
+	
+
+2013-03-11  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* gendirdeps.mk: if .MAKE.DEPENDFILE_DEFAULT is not machine
+	  qualified but _DEPENDFILE is, and .MAKE.DEPENDFILE_DEFAULT exists
+	  but _DEPENDFILE does not, compare the new _DEPENDFILE against
+	  .MAKE.DEPENDFILE_DEFAULT and discard if the same.
+
+2013-03-08  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* meta.stage.mk: use STAGE_TARGETS to control .ORDER
+	  and hook to all: via staging:
+
+2013-03-07  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* sys.dependfile.mk (.MAKE.DEPENDFILE_DEFAULT): 
+	  use a separate variable for the default .MAKE.DEPENDFILE value
+	  so that it can be controlled independently of
+	  .MAKE.DEPENDFILE_PREFERENCE
+
+	* meta.stage.mk: throw error if cp fails etc.
+	  Stage*() return early if passed no args.
+	  .ORDER stage_*
+
+2013-03-03  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version
+	* gendirdeps.mk: handle multiple M2D_OBJROOTS better.
+
+2013-02-10  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version to 20130210
+	* import latest dirdeps.mk, gendirdeps.mk and meta2deps.py 
+	  from Juniper. 
+	  o dirdeps.mk now fully supports TARGET_SPEC consisting of more
+	    than just MACHINE.
+	  o no longer use DEP_MACHINE from Makefile.depend* so remove it.
+	
 2013-01-23  Simon J. Gerraty  <sjg@bad.crufty.net>
 
 	* install-mk (MK_VERSION): bump version to 20130123

Modified: projects/camlock/contrib/bmake/mk/dirdeps.mk
==============================================================================
--- projects/camlock/contrib/bmake/mk/dirdeps.mk	Thu Apr  4 15:40:19 2013	(r249097)
+++ projects/camlock/contrib/bmake/mk/dirdeps.mk	Thu Apr  4 16:02:21 2013	(r249098)
@@ -1,6 +1,7 @@
-# $Id: dirdeps.mk,v 1.23 2012/11/06 05:44:03 sjg Exp $
+# $Id: dirdeps.mk,v 1.28 2013/03/25 21:11:43 sjg Exp $
 
-# Copyright (c) 2010-2012, Juniper Networks, Inc.
+# Copyright (c) 2010-2013, Juniper Networks, Inc.
+# All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions 
@@ -33,21 +34,31 @@
 # This is what we do with DIRDEPS
 
 # DIRDEPS:
-#	This is a list of directories - relative to SRCTOP, it is only
-#	of interest to .MAKE.LEVEL 0.
+#	This is a list of directories - relative to SRCTOP, it is
+#	normally only of interest to .MAKE.LEVEL 0.
 #	In some cases the entry may be qualified with a .<machine>
-#	suffix, for example to force building something for the pseudo
+#	or .<target_spec> suffix (see TARGET_SPEC_VARS below),
+#	for example to force building something for the pseudo
 #	machines "host" or "common" regardless of current ${MACHINE}.
-#	All unqualified entries end up being qualified with .${MACHINE}
-#	and _DIRDEPS_USE below, uses the suffix to set MACHINE
+#	
+#	All unqualified entries end up being qualified with .${TARGET_SPEC}
+#	and partially qualified (if TARGET_SPEC_VARS has multiple
+#	entries) are also expanded to a full .<target_spec>.
+#	The  _DIRDEPS_USE target uses the suffix to set TARGET_SPEC
 #	correctly when visiting each entry.
 #
-#	Each entry is also converted into a set of paths to look for
-#	Makefile.depend.<machine> to learn the dependencies of each.
-#	Each Makefile.depend.<machine> sets DEP_RELDIR to be the
+#	The fully qualified directory entries are used to construct a
+#	dependency graph that will drive the build later.
+#	
+#	Also, for each fully qualified directory target, we will search
+#	using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional
+#	dependencies.  We use Makefile.depend (default value for
+#	.MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to
+#	distinguish them from others.
+#	
+#	Each Makefile.depend file sets DEP_RELDIR to be the
 #	the RELDIR (path relative to SRCTOP) for its directory, and
-#	DEP_MACHINE to its suffix (<machine>), further since
-#	each Makefile.depend.<machine> includes dirdeps.mk, this
+#	since each Makefile.depend file includes dirdeps.mk, this
 #	processing is recursive and results in .MAKE.LEVEL 0 learning the
 #	dependencies of the tree wrt the initial directory (_DEP_RELDIR).
 #
@@ -55,38 +66,49 @@
 #	Indicates whether .MAKE.LEVEL 0 builds anything:
 #	if "no" sub-makes are used to build everything,
 #	if "yes" sub-makes are only used to build for other machines.
+#	It is best to use "no", but this can require fixing some
+#	makefiles to not do anything at .MAKE.LEVEL 0.
 #
 # TARGET_SPEC_VARS
-#	All the description above (and below) assumes <machine> is the
-#	only data needed to control the build.
-#	This is not always the case.  So in addition to setting
-#	MACHINE in the build environment we set TARGET_SPEC which is
-#	composed of the values of TARGET_SPEC_VARS separated by
-#	commas.  The default is just MACHINE.
+#	The default value is just MACHINE, and for most environments
+#	this is sufficient.  The _DIRDEPS_USE target actually sets
+#	both MACHINE and TARGET_SPEC to the suffix of the current
+#	target so that in the general case TARGET_SPEC can be ignored.
 #

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

From owner-svn-src-projects@FreeBSD.ORG  Thu Apr  4 17:10:45 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 967BA5E6;
 Thu,  4 Apr 2013 17:10:45 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 7167B1C3;
 Thu,  4 Apr 2013 17:10:45 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34HAjcL031239;
 Thu, 4 Apr 2013 17:10:45 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34HAjBT031237;
 Thu, 4 Apr 2013 17:10:45 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304041710.r34HAjBT031237@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Thu, 4 Apr 2013 17:10:45 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249101 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 04 Apr 2013 17:10:45 -0000

Author: mav
Date: Thu Apr  4 17:10:44 2013
New Revision: 249101
URL: http://svnweb.freebsd.org/changeset/base/249101

Log:
  MFC

Modified:
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/cam_xpt_sim.h
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/sys/   (props changed)

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Thu Apr  4 17:10:36 2013	(r249100)
+++ projects/camlock/sys/cam/cam_xpt.c	Thu Apr  4 17:10:44 2013	(r249101)
@@ -2031,39 +2031,6 @@ xptbustraverse(struct cam_eb *start_bus,
 	return(retval);
 }
 
-int
-xpt_sim_opened(struct cam_sim *sim)
-{
-	struct cam_eb *bus;
-	struct cam_et *target;
-	struct cam_ed *device;
-	struct cam_periph *periph;
-
-	KASSERT(sim->refcount >= 1, ("sim->refcount >= 1"));
-	mtx_assert(sim->mtx, MA_OWNED);
-
-	xpt_lock_buses();
-	TAILQ_FOREACH(bus, &xsoftc.xpt_busses, links) {
-		if (bus->sim != sim)
-			continue;
-
-		TAILQ_FOREACH(target, &bus->et_entries, links) {
-			TAILQ_FOREACH(device, &target->ed_entries, links) {
-				SLIST_FOREACH(periph, &device->periphs,
-				    periph_links) {
-					if (periph->refcount > 0) {
-						xpt_unlock_buses();
-						return (1);
-					}
-				}
-			}
-		}
-	}
-
-	xpt_unlock_buses();
-	return (0);
-}
-
 static int
 xpttargettraverse(struct cam_eb *bus, struct cam_et *start_target,
 		  xpt_targetfunc_t *tr_func, void *arg)

Modified: projects/camlock/sys/cam/cam_xpt_sim.h
==============================================================================
--- projects/camlock/sys/cam/cam_xpt_sim.h	Thu Apr  4 17:10:36 2013	(r249100)
+++ projects/camlock/sys/cam/cam_xpt_sim.h	Thu Apr  4 17:10:44 2013	(r249101)
@@ -45,7 +45,6 @@ void		xpt_release_simq(struct cam_sim *s
 u_int32_t	xpt_freeze_devq(struct cam_path *path, u_int count);
 void		xpt_release_devq(struct cam_path *path,
 		    u_int count, int run_queue);
-int		xpt_sim_opened(struct cam_sim *sim);
 void		xpt_done(union ccb *done_ccb);
 void		xpt_batch_start(struct cam_sim *sim);
 void		xpt_batch_done(struct cam_sim *sim);

From owner-svn-src-projects@FreeBSD.ORG  Thu Apr  4 18:42:24 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 77632820;
 Thu,  4 Apr 2013 18:42:24 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 68B4E7B2;
 Thu,  4 Apr 2013 18:42:24 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r34IgO5J059276;
 Thu, 4 Apr 2013 18:42:24 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r34IgNMM059270;
 Thu, 4 Apr 2013 18:42:23 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304041842.r34IgNMM059270@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Thu, 4 Apr 2013 18:42:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249103 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 04 Apr 2013 18:42:24 -0000

Author: mav
Date: Thu Apr  4 18:42:23 2013
New Revision: 249103
URL: http://svnweb.freebsd.org/changeset/base/249103

Log:
   - Add lock assertions to every point where reference counters are modified.
   - When reference counters are reaching zero, add assertions that there are
  no children items left.
   - Add a bit more locking to the xptpdperiphtraverse().

Modified:
  projects/camlock/sys/cam/cam_periph.c
  projects/camlock/sys/cam/cam_sim.c
  projects/camlock/sys/cam/cam_xpt.c

Modified: projects/camlock/sys/cam/cam_periph.c
==============================================================================
--- projects/camlock/sys/cam/cam_periph.c	Thu Apr  4 18:00:18 2013	(r249102)
+++ projects/camlock/sys/cam/cam_periph.c	Thu Apr  4 18:42:23 2013	(r249103)
@@ -378,13 +378,10 @@ cam_periph_acquire(struct cam_periph *pe
 void
 cam_periph_release_locked_buses(struct cam_periph *periph)
 {
-	if (periph->refcount != 0) {
-		periph->refcount--;
-	} else {
-		panic("%s: release of %p when refcount is zero\n ", __func__,
-		      periph);
-	}
-	if (periph->refcount == 0
+
+	mtx_assert(periph->sim->mtx, MA_OWNED);
+	KASSERT(periph->refcount >= 1, ("periph->refcount >= 1"));
+	if (--periph->refcount == 0
 	    && (periph->flags & CAM_PERIPH_INVALID)) {
 		camperiphfree(periph);
 	}
@@ -583,6 +580,7 @@ cam_periph_invalidate(struct cam_periph 
 {
 
 	CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph invalidated\n"));
+	mtx_assert(periph->sim->mtx, MA_OWNED);
 	/*
 	 * We only call this routine the first time a peripheral is
 	 * invalidated.
@@ -605,6 +603,7 @@ camperiphfree(struct cam_periph *periph)
 {
 	struct periph_driver **p_drv;
 
+	mtx_assert(periph->sim->mtx, MA_OWNED);
 	for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) {
 		if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0)
 			break;

Modified: projects/camlock/sys/cam/cam_sim.c
==============================================================================
--- projects/camlock/sys/cam/cam_sim.c	Thu Apr  4 18:00:18 2013	(r249102)
+++ projects/camlock/sys/cam/cam_sim.c	Thu Apr  4 18:42:23 2013	(r249103)
@@ -106,6 +106,7 @@ cam_sim_free(struct cam_sim *sim, int fr
 {
 	int error;
 
+	mtx_assert(sim->mtx, MA_OWNED);
 	sim->refcount--;
 	if (sim->refcount > 0) {
 		error = msleep(sim, sim->mtx, PRIBIO, "simfree", 0);

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Thu Apr  4 18:00:18 2013	(r249102)
+++ projects/camlock/sys/cam/cam_xpt.c	Thu Apr  4 18:42:23 2013	(r249103)
@@ -2038,6 +2038,7 @@ xpttargettraverse(struct cam_eb *bus, st
 	struct cam_et *target, *next_target;
 	int retval;
 
+	mtx_assert(bus->sim->mtx, MA_OWNED);
 	retval = 1;
 	for (target = (start_target ? start_target :
 		       TAILQ_FIRST(&bus->et_entries));
@@ -2065,6 +2066,7 @@ xptdevicetraverse(struct cam_et *target,
 	struct cam_ed *device, *next_device;
 	int retval;
 
+	mtx_assert(target->bus->sim->mtx, MA_OWNED);
 	retval = 1;
 	for (device = (start_device ? start_device :
 		       TAILQ_FIRST(&target->ed_entries));
@@ -2103,6 +2105,7 @@ xptperiphtraverse(struct cam_ed *device,
 
 	retval = 1;
 
+	mtx_assert(device->sim->mtx, MA_OWNED);
 	xpt_lock_buses();
 	for (periph = (start_periph ? start_periph :
 		       SLIST_FIRST(&device->periphs));
@@ -2184,6 +2187,7 @@ xptpdperiphtraverse(struct periph_driver
 		    xpt_periphfunc_t *tr_func, void *arg)
 {
 	struct cam_periph *periph, *next_periph;
+	struct cam_sim *sim;
 	int retval;
 
 	retval = 1;
@@ -2212,7 +2216,10 @@ xptpdperiphtraverse(struct periph_driver
 		 * traversal function, so it can't go away.
 		 */
 		periph->refcount++;
-
+		sim = periph->sim;
+		xpt_unlock_buses();
+		CAM_SIM_LOCK(sim);
+		xpt_lock_buses();
 		retval = tr_func(periph, arg);
 
 		/*
@@ -2222,6 +2229,7 @@ xptpdperiphtraverse(struct periph_driver
 		next_periph = TAILQ_NEXT(periph, unit_links);
 
 		cam_periph_release_locked_buses(periph);
+		CAM_SIM_UNLOCK(sim);
 
 		if (retval == 0)
 			goto bailout_done;
@@ -3461,13 +3469,13 @@ xpt_path_counts(struct cam_path *path, u
 		else
 			*bus_ref = 0;
 	}
-	xpt_unlock_buses();
 	if (periph_ref) {
 		if (path->periph)
 			*periph_ref = path->periph->refcount;
 		else
 			*periph_ref = 0;
 	}
+	xpt_unlock_buses();
 	if (target_ref) {
 		if (path->target)
 			*target_ref = path->target->refcount;
@@ -4300,14 +4308,17 @@ xpt_release_bus(struct cam_eb *bus)
 
 	xpt_lock_buses();
 	KASSERT(bus->refcount >= 1, ("bus->refcount >= 1"));
-	if (--bus->refcount == 0) {
-		TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links);
-		xsoftc.bus_generation++;
-		xpt_unlock_buses();
-		cam_sim_release(bus->sim);
-		free(bus, M_CAMXPT);
-	} else
+	if (--bus->refcount > 0) {
 		xpt_unlock_buses();
+		return;
+	}
+	KASSERT(TAILQ_EMPTY(&bus->et_entries),
+	    ("refcount is zero, but target list is not empty"));
+	TAILQ_REMOVE(&xsoftc.xpt_busses, bus, links);
+	xsoftc.bus_generation++;
+	xpt_unlock_buses();
+	cam_sim_release(bus->sim);
+	free(bus, M_CAMXPT);
 }
 
 static struct cam_et *
@@ -4315,6 +4326,7 @@ xpt_alloc_target(struct cam_eb *bus, tar
 {
 	struct cam_et *cur_target, *target;
 
+	mtx_assert(bus->sim->mtx, MA_OWNED);
 	target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT,
 					 M_NOWAIT|M_ZERO);
 	if (target == NULL)
@@ -4352,8 +4364,11 @@ static void
 xpt_release_target(struct cam_et *target)
 {
 
+	mtx_assert(target->bus->sim->mtx, MA_OWNED);
 	if (--target->refcount > 0)
 		return;
+	KASSERT(TAILQ_EMPTY(&target->ed_entries),
+	    ("refcount is zero, but device list is not empty"));
 	TAILQ_REMOVE(&target->bus->et_entries, target, links);
 	target->bus->generation++;
 	xpt_release_bus(target->bus);
@@ -4384,6 +4399,7 @@ xpt_alloc_device(struct cam_eb *bus, str
 	struct cam_devq	*devq;
 	cam_status status;
 
+	mtx_assert(target->bus->sim->mtx, MA_OWNED);
 	/* Make space for us in the device queue on our bus */
 	devq = bus->sim->devq;
 	status = cam_devq_resize(devq, devq->send_queue.array_size + 1);
@@ -4436,6 +4452,7 @@ void
 xpt_acquire_device(struct cam_ed *device)
 {
 
+	mtx_assert(device->sim->mtx, MA_OWNED);
 	device->refcount++;
 }
 
@@ -4444,9 +4461,12 @@ xpt_release_device(struct cam_ed *device
 {
 	struct cam_devq *devq;
 
+	mtx_assert(device->sim->mtx, MA_OWNED);
 	if (--device->refcount > 0)
 		return;
 
+	KASSERT(SLIST_EMPTY(&device->periphs),
+	    ("refcount is zero, but periphs list is not empty"));
 	if (device->devq_entry.pinfo.index != CAM_UNQUEUED_INDEX)
 		panic("Removing device while still queued for ccbs");
 
@@ -4518,6 +4538,7 @@ xpt_find_target(struct cam_eb *bus, targ
 {
 	struct cam_et *target;
 
+	mtx_assert(bus->sim->mtx, MA_OWNED);
 	for (target = TAILQ_FIRST(&bus->et_entries);
 	     target != NULL;
 	     target = TAILQ_NEXT(target, links)) {
@@ -4534,6 +4555,7 @@ xpt_find_device(struct cam_et *target, l
 {
 	struct cam_ed *device;
 
+	mtx_assert(target->bus->sim->mtx, MA_OWNED);
 	for (device = TAILQ_FIRST(&target->ed_entries);
 	     device != NULL;
 	     device = TAILQ_NEXT(device, links)) {

From owner-svn-src-projects@FreeBSD.ORG  Fri Apr  5 06:55:20 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id B53C21DD;
 Fri,  5 Apr 2013 06:55:20 +0000 (UTC)
 (envelope-from neel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 97D9B3CB;
 Fri,  5 Apr 2013 06:55:20 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r356tKO5075529;
 Fri, 5 Apr 2013 06:55:20 GMT (envelope-from neel@svn.freebsd.org)
Received: (from neel@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r356tKAT075528;
 Fri, 5 Apr 2013 06:55:20 GMT (envelope-from neel@svn.freebsd.org)
Message-Id: <201304050655.r356tKAT075528@svn.freebsd.org>
From: Neel Natu <neel@FreeBSD.org>
Date: Fri, 5 Apr 2013 06:55:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249130 - projects/bhyve_svm/sys/amd64/vmm/amd
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 05 Apr 2013 06:55:20 -0000

Author: neel
Date: Fri Apr  5 06:55:19 2013
New Revision: 249130
URL: http://svnweb.freebsd.org/changeset/base/249130

Log:
  Macros, bitmasks and structs that describe the SVM virtual machine control
  block aka VMCB.
  
  Submitted by:	Anish Gupta (akgupt3@gmail.com)

Added:
  projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h   (contents, props changed)

Added: projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.h	Fri Apr  5 06:55:19 2013	(r249130)
@@ -0,0 +1,270 @@
+/*-
+ * Copyright (c) 2013 Anish Gupta (akgupt3@gmail.com)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _VMCB_H_
+#define	_VMCB_H_
+
+/*
+ * Secure Virtual Machine: AMD64 Programmer's Manual Vol2, Chapter 15
+ * Layout of VMCB: AMD64 Programmer's Manual Vol2, Appendix B
+ */
+
+/* VMCB Control offset 0xC */
+#define	VMCB_INTCPT_INTR		BIT(0)
+#define	VMCB_INTCPT_NMI			BIT(1)
+#define	VMCB_INTCPT_SMI			BIT(2)
+#define	VMCB_INTCPT_INIT		BIT(3)
+#define	VMCB_INTCPT_VINTR		BIT(4)
+#define	VMCB_INTCPT_CR0_WRITE		BIT(5)
+#define	VMCB_INTCPT_IDTR_READ		BIT(6)
+#define	VMCB_INTCPT_GDTR_READ		BIT(7)
+#define	VMCB_INTCPT_LDTR_READ		BIT(8)
+#define	VMCB_INTCPT_TR_READ		BIT(9)
+#define	VMCB_INTCPT_IDTR_WRITE		BIT(10)
+#define	VMCB_INTCPT_GDTR_WRITE		BIT(11)
+#define	VMCB_INTCPT_LDTR_WRITE		BIT(12)
+#define	VMCB_INTCPT_TR_WRITE		BIT(13)
+#define	VMCB_INTCPT_RDTSC		BIT(14)
+#define	VMCB_INTCPT_RDPMC		BIT(15)
+#define	VMCB_INTCPT_PUSHF		BIT(16)
+#define	VMCB_INTCPT_POPF		BIT(17)
+#define	VMCB_INTCPT_CPUID		BIT(18)
+#define	VMCB_INTCPT_RSM			BIT(19)
+#define	VMCB_INTCPT_IRET		BIT(20)
+#define	VMCB_INTCPT_INTn		BIT(21)
+#define	VMCB_INTCPT_INVD		BIT(22)
+#define	VMCB_INTCPT_PAUSE		BIT(23)
+#define	VMCB_INTCPT_HLT			BIT(24)
+#define	VMCB_INTCPT_INVPG		BIT(25)
+#define	VMCB_INTCPT_INVPGA		BIT(26)
+#define	VMCB_INTCPT_IO			BIT(27)
+#define	VMCB_INTCPT_MSR			BIT(28)
+#define	VMCB_INTCPT_TASK_SWITCH		BIT(29)
+#define	VMCB_INTCPT_FERR_FREEZE		BIT(30)
+#define	VMCB_INTCPT_SHUTDOWN		BIT(31)
+
+/* VMCB Control offset 0x10 */
+#define	VMCB_INTCPT_VMRUN		BIT(0)
+#define	VMCB_INTCPT_VMMCALL		BIT(1)
+#define	VMCB_INTCPT_VMLOAD		BIT(2)
+#define	VMCB_INTCPT_VMSAVE		BIT(3)
+#define	VMCB_INTCPT_STGI		BIT(4)
+#define	VMCB_INTCPT_CLGI		BIT(5)
+#define	VMCB_INTCPT_SKINIT		BIT(6)
+#define	VMCB_INTCPT_RDTSCP		BIT(7)
+#define	VMCB_INTCPT_ICEBP		BIT(8)
+#define	VMCB_INTCPT_WBINVD		BIT(9)
+#define	VMCB_INTCPT_MONITOR		BIT(10)
+#define	VMCB_INTCPT_MWAIT		BIT(11)
+#define	VMCB_INTCPT_MWAIT_ARMED		BIT(12)
+#define	VMCB_INTCPT_XSETBV		BIT(13)
+
+/* VMCB TLB control */
+#define	VMCB_TLB_FLUSH_NOTHING		0	/* Flush nothing */
+#define	VMCB_TLB_FLUSH_EVERYTHING	1	/* Flush entire TLB */
+#define	VMCB_TLB_FLUSH_GUEST		3	/* Flush all guest entries */
+#define	VMCB_TLB_FLUSH_GUEST_NONGLOBAL	7	/* Flush guest non-PG entries */
+
+/* VMCB state caching */
+#define	VMCB_CACHE_NONE			0	/* No caching */
+#define	VMCB_CACHE_I			BIT(0)	/* Cache vectors, TSC offset */
+#define	VMCB_CACHE_IOPM			BIT(1)	/* I/O and MSR permission */
+#define	VMCB_CACHE_ASID			BIT(2)	/* ASID */
+#define	VMCB_CACHE_TPR			BIT(3)	/* V_TPR to V_INTR_VECTOR */
+#define	VMCB_CACHE_NP			BIT(4)	/* Nested Paging */
+#define	VMCB_CACHE_CR			BIT(5)	/* CR0, CR3, CR4 & EFER */
+#define	VMCB_CACHE_DR			BIT(6)	/* Debug registers */
+#define	VMCB_CACHE_DT			BIT(7)	/* GDT/IDT */
+#define	VMCB_CACHE_SEG			BIT(8)	/* User segments, CPL */
+#define	VMCB_CACHE_CR2			BIT(9)	/* page fault address */
+#define	VMCB_CACHE_LBR			BIT(10)	/* Last branch */
+
+
+/* VMCB control event injection */
+#define	VMCB_EVENTINJ_EC_VALID		BIT(11)	/* Error Code valid */
+#define	VMCB_EVENTINJ_VALID		BIT(31)	/* Event valid */
+
+#define	VMCB_EVENTINJ_VECTOR_MASK	0xFF
+#define	VMCB_EVENTINJ_INTR_TYPE_SHIFT	8
+#define	VMCB_EVENTINJ_ERRCODE_SHIFT	32
+
+/* Event types that can be injected */
+#define	VMCB_EVENTINJ_TYPE_INTR		0
+#define	VMCB_EVENTINJ_TYPE_NMI		2
+#define	VMCB_EVENTINJ_TYPE_EXCEPTION	3
+#define	VMCB_EVENTINJ_TYPE_INTn		4
+
+/* VMCB exit code, APM vol2 Appendix C */
+#define	VMCB_EXIT_MC			0x52
+#define	VMCB_EXIT_INTR			0x60
+#define	VMCB_EXIT_PUSHF			0x70
+#define	VMCB_EXIT_POPF			0x71
+#define	VMCB_EXIT_CPUID			0x72
+#define	VMCB_EXIT_IRET			0x74
+#define	VMCB_EXIT_PAUSE			0x77
+#define	VMCB_EXIT_HLT			0x78
+#define	VMCB_EXIT_IO			0x7B
+#define	VMCB_EXIT_MSR			0x7C
+#define	VMCB_EXIT_SHUTDOWN		0x7F
+#define	VMCB_EXIT_VMSAVE		0x83
+#define	VMCB_EXIT_NPF			0x400
+#define	VMCB_EXIT_INVALID		-1
+
+/*
+ * Nested page fault.
+ * Bit definitions to decode EXITINFO1.
+ */
+#define	VMCB_NPF_INFO1_P		BIT(0) /* Nested page present. */
+#define	VMCB_NPF_INFO1_W		BIT(1) /* Access was write. */
+#define	VMCB_NPF_INFO1_U		BIT(2) /* Access was user access. */
+#define	VMCB_NPF_INFO1_RSV		BIT(3) /* Reserved bits present. */
+#define	VMCB_NPF_INFO1_ID		BIT(4) /* Code read. */
+
+#define	VMCB_NPF_INFO1_GPA		BIT(32) /* Guest physical address. */
+#define	VMCB_NPF_INFO1_GPT		BIT(33) /* Guest page table. */
+
+/* VMCB save state area segment format */
+struct vmcb_segment {
+	uint16_t	selector;
+	uint16_t	attrib;
+	uint32_t	limit;
+	uint64_t	base;
+} __attribute__ ((__packed__));
+CTASSERT(sizeof(struct vmcb_segment) == 16);
+
+/*
+ * The VMCB is divided into two areas - the first one contains various
+ * control bits including the intercept vector and the second one contains
+ * the guest state.
+ */
+
+/* VMCB control area - padded up to 1024 bytes */
+struct vmcb_ctrl {
+	uint16_t cr_read;	/* Offset 0, CR0-15 read/write */
+	uint16_t cr_write;
+	uint16_t dr_read;	/* Offset 4, DR0-DR15 */
+	uint16_t dr_write;
+	uint32_t exception;	/* Offset 8, bit mask for exceptions. */
+	uint32_t ctrl1;		/* Offset 0xC, intercept events1 */
+	uint32_t ctrl2;		/* Offset 0x10, intercept event2 */
+	uint8_t	 pad1[0x28];	/* Offsets 0x14-0x3B are reserved. */
+	uint16_t pause_filthresh; /* Offset 0x3C, PAUSE filter threshold */
+	uint16_t pause_filcnt;  /* Offset 0x3E, PAUSE filter count */
+	uint64_t iopm_base_pa;	/* 0x40: IOPM_BASE_PA */
+	uint64_t msrpm_base_pa; /* 0x48: MSRPM_BASE_PA */
+	uint64_t tsc_offset;	/* 0x50: TSC_OFFSET */
+	uint32_t asid;		/* 0x58: Guest ASID */
+	uint8_t	 tlb_ctrl;	/* 0x5C: TLB_CONTROL */
+	uint8_t  pad2[3];	/* 0x5D-0x5F: Reserved. */
+	uint8_t	 v_tpr;		/* 0x60: V_TPR, guest CR8 */
+	uint8_t	 v_irq:1;	/* Is virtual interrupt pending? */
+	uint8_t	:7; 		/* Padding */
+	uint8_t v_intr_prio:4;	/* 0x62: Priority for virtual interrupt. */
+	uint8_t v_ign_tpr:1;
+	uint8_t :3;
+	uint8_t	v_intr_masking:1; /* Guest and host sharing of RFLAGS. */
+	uint8_t	:7;
+	uint8_t	v_intr_vector;	/* 0x65: Vector for virtual interrupt. */
+	uint8_t pad3[3];	/* Bit64-40 Reserved. */
+	uint64_t intr_shadow:1; /* 0x68: Interrupt shadow, section15.2.1 APM2 */
+	uint64_t :63;
+	uint64_t exitcode;	/* 0x70, Exitcode */
+	uint64_t exitinfo1;	/* 0x78, EXITINFO1 */
+	uint64_t exitinfo2;	/* 0x80, EXITINFO2 */
+	uint64_t exitintinfo;	/* 0x88, Interrupt exit value. */
+	uint64_t np_enable:1;   /* 0x90, Nested paging enable. */
+	uint64_t :63;
+	uint8_t  pad4[0x10];	/* 0x98-0xA7 reserved. */
+	uint64_t eventinj;	/* 0xA8, Event injection. */
+	uint64_t n_cr3;		/* B0, Nested page table. */
+	uint64_t lbr_virt_en:1;	/* Enable LBR virtualization. */
+	uint64_t :63;
+	uint32_t vmcb_clean;	/* 0xC0: VMCB clean bits for caching */
+	uint32_t :32;		/* 0xC4: Reserved */
+	uint64_t nrip;		/* 0xC8: Guest next nRIP. */
+	uint8_t	inst_decode_size; /* 0xD0: Instruction decode */
+	uint8_t	inst_decode_bytes[15];
+	uint8_t	padd6[0x320];
+} __attribute__ ((__packed__));
+CTASSERT(sizeof(struct vmcb_ctrl) == 1024);
+
+struct vmcb_state {
+	struct   vmcb_segment es;
+	struct   vmcb_segment cs;
+	struct   vmcb_segment ss;
+	struct   vmcb_segment ds;
+	struct   vmcb_segment fs;
+	struct   vmcb_segment gs;
+	struct   vmcb_segment gdt;
+	struct   vmcb_segment ldt;
+	struct   vmcb_segment idt;
+	struct   vmcb_segment tr;
+	uint8_t	 pad1[0x2b];		/* Reserved: 0xA0-0xCA */
+	uint8_t	 cpl;
+	uint8_t  pad2[4];
+	uint64_t efer;
+	uint8_t	 pad3[0x70];		/* Reserved: 0xd8-0x147 */
+	uint64_t cr4;
+	uint64_t cr3;			/* Guest CR3 */
+	uint64_t cr0;
+	uint64_t dr7;
+	uint64_t dr6;
+	uint64_t rflags;
+	uint64_t rip;
+	uint8_t	 pad4[0x58]; 		/* Reserved: 0x180-0x1D7 */
+	uint64_t rsp;
+	uint8_t	 pad5[0x18]; 		/* Reserved 0x1E0-0x1F7 */
+	uint64_t rax;
+	uint64_t star;
+	uint64_t lstar;
+	uint64_t cstar;
+	uint64_t sfmask;
+	uint64_t kernelgsbase;
+	uint64_t sysenter_cs;
+	uint64_t sysenter_esp;
+	uint64_t sysenter_eip;
+	uint64_t cr2;
+	uint8_t	 pad6[0x20];
+	uint64_t g_pat;
+	uint64_t dbgctl;
+	uint64_t br_from;
+	uint64_t br_to;
+	uint64_t lastexcpfrom;
+	uint64_t lastexcpto;
+	uint8_t	 pad7[0x968];		/* Reserved upto end of VMCB */
+} __attribute__ ((__packed__));
+CTASSERT(sizeof(struct vmcb_state) == 0xC00);
+
+struct vmcb {
+	struct vmcb_ctrl ctrl;
+	struct vmcb_state state;
+} __attribute__ ((__packed__));
+CTASSERT(sizeof(struct vmcb) == PAGE_SIZE);
+CTASSERT(offsetof(struct vmcb, state) == 0x400);
+
+#endif /* _VMCB_H_ */

From owner-svn-src-projects@FreeBSD.ORG  Fri Apr  5 11:30:32 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 98B9FA2F;
 Fri,  5 Apr 2013 11:30:32 +0000 (UTC)
 (envelope-from cherry@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 8B0A0FF4;
 Fri,  5 Apr 2013 11:30:32 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r35BUWls059158;
 Fri, 5 Apr 2013 11:30:32 GMT (envelope-from cherry@svn.freebsd.org)
Received: (from cherry@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r35BUWgZ059157;
 Fri, 5 Apr 2013 11:30:32 GMT (envelope-from cherry@svn.freebsd.org)
Message-Id: <201304051130.r35BUWgZ059157@svn.freebsd.org>
From: "Cherry G. Mathew" <cherry@FreeBSD.org>
Date: Fri, 5 Apr 2013 11:30:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249151 - projects/amd64_xen_pv/sys/amd64/xen
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 05 Apr 2013 11:30:32 -0000

Author: cherry
Date: Fri Apr  5 11:30:31 2013
New Revision: 249151
URL: http://svnweb.freebsd.org/changeset/base/249151

Log:
  Update Copyright.
  
  Make asserts a bit more informative (prints the name of the current
  function scope)
  
  Approved by: gibbs (implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c

Modified: projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c	Fri Apr  5 10:57:02 2013	(r249150)
+++ projects/amd64_xen_pv/sys/amd64/xen/mmu_map.c	Fri Apr  5 11:30:31 2013	(r249151)
@@ -1,6 +1,6 @@
 /* $FreeBSD$ */
 /*-
- * Copyright (c) 2011-2012 Spectra Logic Corporation
+ * Copyright (c) 2011-2013 Spectra Logic Corporation
  * All rights reserved.
  *
  * This software was developed by Cherry G. Mathew <cherry@FreeBSD.org>
@@ -216,7 +216,7 @@ void mmu_map_t_fini(void *addr)
 	KASSERT(addr != NULL, ("NULL args given!"));
 
 	struct mmu_map_index *pti = addr;
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 	struct mmu_map_mbackend *mb = &pti->ptmb;
 
 	pti->sanity = 0;
@@ -233,7 +233,7 @@ mmu_map_pml4t(void *addr)
 	KASSERT(addr != NULL, ("NULL args given!"));
 	struct mmu_map_index *pti = addr;
 
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	return pti->pml4t;
 }
@@ -244,7 +244,7 @@ mmu_map_pdpt(void *addr)
 	KASSERT(addr != NULL, ("NULL args given!"));
 	struct mmu_map_index *pti = addr;
 
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	return pti->pdpt;
 }
@@ -255,7 +255,7 @@ mmu_map_pdt(void *addr)
 	KASSERT(addr != NULL, ("NULL args given!"));
 	struct mmu_map_index *pti = addr;
 
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	return pti->pdt;
 }
@@ -266,7 +266,7 @@ mmu_map_pt(void *addr)
 	KASSERT(addr != NULL, ("NULL args given!"));
 	struct mmu_map_index *pti = addr;
 
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	return pti->pt;
 }
@@ -277,7 +277,7 @@ mmu_map_inspect_va(struct pmap *pm, void
 	KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given"));
 
 	struct mmu_map_index *pti = addr;
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	vm_paddr_t pt;
 
@@ -316,7 +316,7 @@ mmu_map_hold_va(struct pmap *pm, void *a
 	KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given"));
 
 	struct mmu_map_index *pti = addr;
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	bool alloced = false; /* Did we have to alloc backing pages ? */
 	vm_paddr_t pt;
@@ -391,7 +391,7 @@ mmu_map_release_va(struct pmap *pm, void
 	KASSERT(addr != NULL && pm != NULL, ("NULL arg(s) given"));
 
 	struct mmu_map_index *pti = addr;
-	KASSERT(pti->sanity == SANE, ("Uninitialised index cookie used"));
+	KASSERT(pti->sanity == SANE, ("%s: Uninitialised index cookie used", __func__));
 
 	/*
 	 * We're expected to be called after an init-ed pti has either

From owner-svn-src-projects@FreeBSD.ORG  Fri Apr  5 13:19:31 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 22817B1A;
 Fri,  5 Apr 2013 13:19:31 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 1315A6CB;
 Fri,  5 Apr 2013 13:19:31 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r35DJVvB090363;
 Fri, 5 Apr 2013 13:19:31 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r35DJUsG090358;
 Fri, 5 Apr 2013 13:19:30 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304051319.r35DJUsG090358@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Fri, 5 Apr 2013 13:19:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249162 - in projects/camlock: sbin/camcontrol share/misc
 sys/boot/common sys/cam/ctl sys/conf sys/contrib/dev/acpica
 sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/c...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 05 Apr 2013 13:19:31 -0000

Author: mav
Date: Fri Apr  5 13:19:30 2013
New Revision: 249162
URL: http://svnweb.freebsd.org/changeset/base/249162

Log:
  MFC @ r249161

Added:
     - copied from r249161, head/contrib/unbound/
  projects/camlock/sys/contrib/dev/acpica/compiler/asllistsup.c
     - copied unchanged from r249161, head/sys/contrib/dev/acpica/compiler/asllistsup.c
  projects/camlock/sys/contrib/dev/acpica/compiler/asloffset.c
     - copied unchanged from r249161, head/sys/contrib/dev/acpica/compiler/asloffset.c
  projects/camlock/sys/contrib/dev/acpica/components/utilities/utpredef.c
     - copied unchanged from r249161, head/sys/contrib/dev/acpica/components/utilities/utpredef.c
Directory Properties:
  projects/camlock/contrib/unbound/   (props changed)
Modified:
  projects/camlock/sbin/camcontrol/camcontrol.8
  projects/camlock/sbin/camcontrol/camcontrol.c
  projects/camlock/share/misc/committers-ports.dot
  projects/camlock/sys/boot/common/util.c
  projects/camlock/sys/cam/ctl/ctl.c
  projects/camlock/sys/conf/files
  projects/camlock/sys/contrib/dev/acpica/changes.txt   (contents, props changed)
  projects/camlock/sys/contrib/dev/acpica/common/ahpredef.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslcompile.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslcompiler.h
  projects/camlock/sys/contrib/dev/acpica/compiler/asldefine.h
  projects/camlock/sys/contrib/dev/acpica/compiler/aslerror.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslfiles.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslglobal.h
  projects/camlock/sys/contrib/dev/acpica/compiler/asllisting.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslmain.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslpredef.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslprepkg.c
  projects/camlock/sys/contrib/dev/acpica/compiler/aslresource.c
  projects/camlock/sys/contrib/dev/acpica/compiler/asltypes.h
  projects/camlock/sys/contrib/dev/acpica/compiler/aslwalks.c
  projects/camlock/sys/contrib/dev/acpica/components/debugger/dbmethod.c
  projects/camlock/sys/contrib/dev/acpica/components/debugger/dbnames.c
  projects/camlock/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
  projects/camlock/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
  projects/camlock/sys/contrib/dev/acpica/components/events/evevent.c
  projects/camlock/sys/contrib/dev/acpica/components/executer/exoparg2.c
  projects/camlock/sys/contrib/dev/acpica/components/namespace/nseval.c
  projects/camlock/sys/contrib/dev/acpica/components/namespace/nspredef.c
  projects/camlock/sys/contrib/dev/acpica/components/tables/tbfadt.c
  projects/camlock/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/camlock/sys/contrib/dev/acpica/components/utilities/utdelete.c
  projects/camlock/sys/contrib/dev/acpica/components/utilities/utmutex.c
  projects/camlock/sys/contrib/dev/acpica/components/utilities/utosi.c
  projects/camlock/sys/contrib/dev/acpica/components/utilities/utxface.c
  projects/camlock/sys/contrib/dev/acpica/include/acglobal.h
  projects/camlock/sys/contrib/dev/acpica/include/aclocal.h
  projects/camlock/sys/contrib/dev/acpica/include/acnamesp.h
  projects/camlock/sys/contrib/dev/acpica/include/acpixf.h
  projects/camlock/sys/contrib/dev/acpica/include/acpredef.h
  projects/camlock/sys/contrib/dev/acpica/include/acutils.h
  projects/camlock/sys/dev/ath/ath_hal/ah.h
  projects/camlock/sys/dev/ath/ath_hal/ah_debug.h
  projects/camlock/sys/dev/ath/ath_hal/ah_internal.h
  projects/camlock/sys/geom/geom_disk.c
  projects/camlock/sys/mips/atheros/apb.c
  projects/camlock/sys/mips/atheros/ar71xx_ehci.c
  projects/camlock/sys/mips/atheros/ar71xx_setup.c
  projects/camlock/sys/mips/atheros/ar71xx_setup.h
  projects/camlock/sys/mips/atheros/ar933x_chip.c
  projects/camlock/sys/mips/atheros/ar933xreg.h
  projects/camlock/sys/mips/atheros/if_arge.c
  projects/camlock/sys/mips/atheros/uart_dev_ar933x.c
  projects/camlock/sys/mips/conf/AP121
  projects/camlock/sys/mips/conf/AP121.hints
  projects/camlock/sys/mips/conf/AR933X_BASE.hints
  projects/camlock/sys/powerpc/aim/trap.c
  projects/camlock/sys/sys/ata.h
  projects/camlock/usr.bin/calendar/calendars/calendar.freebsd
  projects/camlock/usr.sbin/acpi/acpidb/Makefile
  projects/camlock/usr.sbin/acpi/iasl/Makefile
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/sbin/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/boot/   (props changed)
  projects/camlock/sys/conf/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/common/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/compiler/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/debugger/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/dispatcher/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/events/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/executer/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/namespace/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/tables/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/components/utilities/   (props changed)
  projects/camlock/sys/contrib/dev/acpica/include/   (props changed)
  projects/camlock/usr.bin/calendar/   (props changed)

Modified: projects/camlock/sbin/camcontrol/camcontrol.8
==============================================================================
--- projects/camlock/sbin/camcontrol/camcontrol.8	Fri Apr  5 13:11:28 2013	(r249161)
+++ projects/camlock/sbin/camcontrol/camcontrol.8	Fri Apr  5 13:19:30 2013	(r249162)
@@ -228,6 +228,21 @@
 .Op Fl y
 .Op Fl s
 .Nm
+.Ic security
+.Op device id
+.Op generic args
+.Op Fl d Ar pwd
+.Op Fl e Ar pwd
+.Op Fl f
+.Op Fl h Ar pwd
+.Op Fl k Ar pwd
+.Op Fl l Ar high|maximum
+.Op Fl q
+.Op Fl s Ar pwd
+.Op Fl T Ar timeout
+.Op Fl U Ar user|master
+.Op Fl y
+.Nm
 .Ic help
 .Sh DESCRIPTION
 The
@@ -1072,6 +1087,123 @@ specifies automatic standby timer value 
 .It Ic sleep
 Put ATA device into SLEEP state. Note that the only way get device out of
 this state may be reset.
+.It Ic security
+Update or report security settings, using an ATA identify command (0xec).
+By default,
+.Nm
+will print out the security support and associated settings of the device.
+The
+.Ic security
+command takes several arguments:
+.Bl -tag -width 0n
+.It Fl d Ar pwd
+.Pp
+Disable device security using the given password for the selected user according
+to the devices configured security level.
+.It Fl e Ar pwd
+.Pp
+Erase the device using the given password for the selected user.
+.Pp
+.Em WARNING! WARNING! WARNING!
+.Pp
+Issuing a secure erase will
+.Em ERASE ALL
+user data on the device and may take several hours to complete.
+.Pp
+When this command is used against an SSD drive all its cells will be marked as
+empty, restoring it to factory default write performance. For SSD's this action
+usually takes just a few seconds.
+.It Fl f
+.Pp
+Freeze the security configuration of the specified device.
+.Pp
+After command completion any other commands that update the device lock mode
+shall be command aborted. Frozen mode is disabled by power-off or hardware reset. 
+.It Fl h Ar pwd
+.Pp
+Enhanced erase the device using the given password for the selected user.
+.Pp
+.Em WARNING! WARNING! WARNING!
+.Pp
+Issuing an enhanced secure erase will 
+.Em ERASE ALL
+user data on the device and may take several hours to complete.
+.Pp
+An enhanced erase writes predetermined data patterns to all user data areas,
+all previously written user data shall be overwritten, including sectors that
+are no longer in use due to reallocation.
+.It Fl k Ar pwd
+.Pp
+Unlock the device using the given password for the selected user according to
+the devices configured security level.
+.It Fl l Ar high|maximum
+.Pp
+Specifies which security level to set when issuing a
+.Fl s Ar pwd
+command. The security level determines device behavior when the master
+password is used to unlock the device. When the security level is set to high
+the device requires the unlock command and the master password to unlock.
+When the security level is set to maximum the device requires a secure erase
+with the master password to unlock.
+.Pp
+This option must be used in conjunction with one of the security action commands.
+.Pp
+Defaults to
+.Em high
+.It Fl q
+.Pp
+Be quiet, do not print any status messages.
+This option will not disable the questions, however.
+To disable questions, use the
+.Fl y
+argument, below.
+.It Fl s Ar pwd
+.Pp
+Password the device (enable security) using the given password for the selected
+user. This option can be combined with other options such as
+.Fl e Em pwd
+.Pp
+A master password may be set in a addition to the user password. The purpose of
+the master password is to allow an administrator to establish a password that
+is kept secret from the user, and which may be used to unlock the device if the
+user password is lost.
+.Pp
+.Em Note:
+Setting the master password does not enable device security.
+.Pp
+If the master password is set and the drive supports a Master Revision Code
+feature the Master Password Revision Code will be decremented.
+.It Fl T Ar timeout
+.Pp
+Overrides the default timeout, specified in seconds, used for both
+.Fl e
+and
+.Fl h
+this is useful if your system has problems processing long timeouts correctly.
+.Pp
+Usually the timeout is calculated from the information stored on the drive if
+present, otherwise it defaults to 2 hours.
+.It Fl U Ar user|master
+.Pp
+Specifies which user to set / use for the running action command, valid values
+are user or master and defaults to master if not set.
+.Pp
+This option must be used in conjunction with one of the security action commands.
+.Pp
+Defaults to
+.Em master
+.It Fl y
+.Pp
+Confirm yes to dangerous options such as
+.Fl e
+without prompting for confirmation.
+.Pp
+.El
+If the password specified for any action commands doesn't match the configured
+password for the specified user the command will fail.
+.Pp
+The password in all cases is limited to 32 characters, longer passwords will
+fail.
 .It Ic fwdownload
 Program firmware of the named SCSI device using the image file provided.
 .Pp
@@ -1240,6 +1372,30 @@ camcontrol smpcmd ses0 -v -r 4 "40 0 00 
 Send the SMP REPORT GENERAL command to ses0, and display the number of PHYs
 it contains.
 Display SMP errors if the command fails.
+.Bd -literal -offset indent
+camcontrol security ada0
+.Ed
+.Pp
+Report security support and settings for ada0
+.Bd -literal -offset indent
+camcontrol security ada0 -u user -s MyPass 
+.Ed
+.Pp
+Enable security on device ada0 with the password MyPass
+.Bd -literal -offset indent
+camcontrol security ada0 -u user -e MyPass
+.Ed
+.Pp
+Secure erase ada0 which has had security enabled with user password MyPass
+.Pp
+.Em WARNING! WARNING! WARNING!
+.Pp
+This will
+.Em ERASE ALL
+data from the device, so backup your data before using!
+.Pp
+This command can be used used against an SSD drive to restoring it to
+factory default write performance.
 .Sh SEE ALSO
 .Xr cam 3 ,
 .Xr cam_cdbparse 3 ,

Modified: projects/camlock/sbin/camcontrol/camcontrol.c
==============================================================================
--- projects/camlock/sbin/camcontrol/camcontrol.c	Fri Apr  5 13:11:28 2013	(r249161)
+++ projects/camlock/sbin/camcontrol/camcontrol.c	Fri Apr  5 13:19:30 2013	(r249162)
@@ -87,7 +87,8 @@ typedef enum {
 	CAM_CMD_SMP_PC		= 0x00000019,
 	CAM_CMD_SMP_PHYLIST	= 0x0000001a,
 	CAM_CMD_SMP_MANINFO	= 0x0000001b,
-	CAM_CMD_DOWNLOAD_FW	= 0x0000001c
+	CAM_CMD_DOWNLOAD_FW	= 0x0000001c,
+	CAM_CMD_SECURITY	= 0x0000001d
 } cam_cmdmask;
 
 typedef enum {
@@ -140,6 +141,7 @@ static const char negotiate_opts[] = "ac
 static const char smprg_opts[] = "l";
 static const char smppc_opts[] = "a:A:d:lm:M:o:p:s:S:T:";
 static const char smpphylist_opts[] = "lq";
+static char pwd_opt;
 #endif
 
 static struct camcontrol_opts option_table[] = {
@@ -183,6 +185,7 @@ static struct camcontrol_opts option_tab
 	{"standby", CAM_CMD_STANDBY, CAM_ARG_NONE, "t:"},
 	{"sleep", CAM_CMD_SLEEP, CAM_ARG_NONE, ""},
 	{"fwdownload", CAM_CMD_DOWNLOAD_FW, CAM_ARG_NONE, "f:ys"},
+	{"security", CAM_CMD_SECURITY, CAM_ARG_NONE, "d:e:fh:k:l:qs:T:U:y"},
 #endif /* MINIMALISTIC */
 	{"help", CAM_CMD_USAGE, CAM_ARG_NONE, NULL},
 	{"-?", CAM_CMD_USAGE, CAM_ARG_NONE, NULL},
@@ -274,7 +277,10 @@ static int scsireportluns(struct cam_dev
 static int scsireadcapacity(struct cam_device *device, int argc, char **argv,
 			    char *combinedopt, int retry_count, int timeout);
 static int atapm(struct cam_device *device, int argc, char **argv,
-			    char *combinedopt, int retry_count, int timeout);
+		 char *combinedopt, int retry_count, int timeout);
+static int atasecurity(struct cam_device *device, int retry_count, int timeout,
+		       int argc, char **argv, char *combinedopt);
+
 #endif /* MINIMALISTIC */
 #ifndef min
 #define min(a,b) (((a)<(b))?(a):(b))
@@ -1328,55 +1334,93 @@ atacapprint(struct ata_params *parm)
 	printf("free-fall                      %s	%s\n",
 		parm->support2 & ATA_SUPPORT_FREEFALL ? "yes" : "no",
 		parm->enabled2 & ATA_SUPPORT_FREEFALL ? "yes" : "no");
-	printf("data set management (TRIM)     %s\n",
-		parm->support_dsm & ATA_SUPPORT_DSM_TRIM ? "yes" : "no");
+	printf("Data Set Management (DSM/TRIM) ");
+	if (parm->support_dsm & ATA_SUPPORT_DSM_TRIM) {
+		printf("yes\n");
+		printf("DSM - max 512byte blocks       ");
+		if (parm->max_dsm_blocks == 0x00)
+			printf("yes              not specified\n");
+		else
+			printf("yes              %d\n",
+				parm->max_dsm_blocks);
+
+		printf("DSM - deterministic read       ");
+		if (parm->support3 & ATA_SUPPORT_DRAT) {
+			if (parm->support3 & ATA_SUPPORT_RZAT)
+				printf("yes              zeroed\n");
+			else
+				printf("yes              any value\n");
+		} else {
+			printf("no\n");
+		}
+	} else {
+		printf("no\n");
+	}
 }
 
 static int
-ataidentify(struct cam_device *device, int retry_count, int timeout)
+scsi_cam_pass_16_send(struct cam_device *device, union ccb *ccb, int quiet)
 {
-	union ccb *ccb;
-	struct ata_params *ident_buf;
-	struct ccb_getdev cgd;
-	u_int i, error = 0;
-	int16_t *ptr;
+	struct ata_pass_16 *ata_pass_16;
+	struct ata_cmd ata_cmd;
 
-	if (get_cgd(device, &cgd) != 0) {
-		warnx("couldn't get CGD");
-		return(1);
-	}
-	ccb = cam_getccb(device);
+	ata_pass_16 = (struct ata_pass_16 *)ccb->csio.cdb_io.cdb_bytes;
+	ata_cmd.command = ata_pass_16->command;
+	ata_cmd.control = ata_pass_16->control;
+	ata_cmd.features = ata_pass_16->features;
 
-	if (ccb == NULL) {
-		warnx("couldn't allocate CCB");
-		return(1);
+	if (arglist & CAM_ARG_VERBOSE) {
+		warnx("sending ATA %s via pass_16 with timeout of %u msecs",
+		      ata_op_string(&ata_cmd),
+		      ccb->csio.ccb_h.timeout);
 	}
 
-	/* cam_getccb cleans up the header, caller has to zero the payload */
-	bzero(&(&ccb->ccb_h)[1],
-	      sizeof(struct ccb_ataio) - sizeof(struct ccb_hdr));
+	/* Disable freezing the device queue */
+	ccb->ccb_h.flags |= CAM_DEV_QFRZDIS;
 
-	ptr = (uint16_t *)malloc(sizeof(struct ata_params));
+	if (arglist & CAM_ARG_ERR_RECOVER)
+		ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
 
-	if (ptr == NULL) {
-		cam_freeccb(ccb);
-		warnx("can't malloc memory for identify\n");
-		return(1);
+	if (cam_send_ccb(device, ccb) < 0) {
+		if (quiet != 1 || arglist & CAM_ARG_VERBOSE) {
+			warn("error sending ATA %s via pass_16",
+			     ata_op_string(&ata_cmd));
+		}
+
+		if (arglist & CAM_ARG_VERBOSE) {
+			cam_error_print(device, ccb, CAM_ESF_ALL,
+					CAM_EPF_ALL, stderr);
+		}
+
+		return (1);
 	}
-	bzero(ptr, sizeof(struct ata_params));
 
-	cam_fill_ataio(&ccb->ataio,
-		      retry_count,
-		      NULL,
-		      /*flags*/CAM_DIR_IN,
-		      MSG_SIMPLE_Q_TAG,
-		      /*data_ptr*/(u_int8_t *)ptr,
-		      /*dxfer_len*/sizeof(struct ata_params),
-		      timeout ? timeout : 30 * 1000);
-	if (cgd.protocol == PROTO_ATA)
-		ata_28bit_cmd(&ccb->ataio, ATA_ATA_IDENTIFY, 0, 0, 0);
-	else
-		ata_28bit_cmd(&ccb->ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0);
+	if (!(ata_pass_16->flags & AP_FLAG_CHK_COND) &&
+	    (ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
+		if (quiet != 1 || arglist & CAM_ARG_VERBOSE) {
+			warnx("ATA %s via pass_16 failed",
+			      ata_op_string(&ata_cmd));
+		}
+		if (arglist & CAM_ARG_VERBOSE) {
+			cam_error_print(device, ccb, CAM_ESF_ALL,
+					CAM_EPF_ALL, stderr);
+		}
+
+		return (1);
+	}
+
+	return (0);
+}
+
+
+static int
+ata_cam_send(struct cam_device *device, union ccb *ccb, int quiet)
+{
+	if (arglist & CAM_ARG_VERBOSE) {
+		warnx("sending ATA %s with timeout of %u msecs",
+		      ata_op_string(&(ccb->ataio.cmd)),
+		      ccb->ataio.ccb_h.timeout);
+	}
 
 	/* Disable freezing the device queue */
 	ccb->ccb_h.flags |= CAM_DEV_QFRZDIS;
@@ -1385,47 +1429,247 @@ ataidentify(struct cam_device *device, i
 		ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
 
 	if (cam_send_ccb(device, ccb) < 0) {
-		perror("error sending ATA identify");
+		if (quiet != 1 || arglist & CAM_ARG_VERBOSE) {
+			warn("error sending ATA %s",
+			     ata_op_string(&(ccb->ataio.cmd)));
+		}
 
 		if (arglist & CAM_ARG_VERBOSE) {
 			cam_error_print(device, ccb, CAM_ESF_ALL,
 					CAM_EPF_ALL, stderr);
 		}
 
-		free(ptr);
-		cam_freeccb(ccb);
-		return(1);
+		return (1);
 	}
 
 	if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
-		error = 1;
+		if (quiet != 1 || arglist & CAM_ARG_VERBOSE) {
+			warnx("ATA %s failed: %d",
+			      ata_op_string(&(ccb->ataio.cmd)), quiet);
+		}
 
 		if (arglist & CAM_ARG_VERBOSE) {
 			cam_error_print(device, ccb, CAM_ESF_ALL,
 					CAM_EPF_ALL, stderr);
 		}
+
+		return (1);
 	}
 
-	cam_freeccb(ccb);
+	return (0);
+}
+
+static int
+ata_do_pass_16(struct cam_device *device, union ccb *ccb, int retries,
+	       u_int32_t flags, u_int8_t protocol, u_int8_t ata_flags,
+	       u_int8_t tag_action, u_int8_t command, u_int8_t features,
+	       u_int64_t lba, u_int8_t sector_count, u_int8_t *data_ptr,
+	       u_int16_t dxfer_len, int timeout, int quiet)
+{
+	if (data_ptr != NULL) {
+		ata_flags |= AP_FLAG_BYT_BLOK_BYTES |
+			    AP_FLAG_TLEN_SECT_CNT;
+		if (flags & CAM_DIR_OUT)
+			ata_flags |= AP_FLAG_TDIR_TO_DEV;
+		else
+			ata_flags |= AP_FLAG_TDIR_FROM_DEV;
+	} else {
+		ata_flags |= AP_FLAG_TLEN_NO_DATA;
+	}
+
+	bzero(&(&ccb->ccb_h)[1],
+	      sizeof(struct ccb_scsiio) - sizeof(struct ccb_hdr));
+
+	scsi_ata_pass_16(&ccb->csio,
+			 retries,
+			 NULL,
+			 flags,
+			 tag_action,
+			 protocol,
+			 ata_flags,
+			 features,
+			 sector_count,
+			 lba,
+			 command,
+			 /*control*/0,
+			 data_ptr,
+			 dxfer_len,
+			 /*sense_len*/SSD_FULL_SIZE,
+			 timeout);
+
+	return scsi_cam_pass_16_send(device, ccb, quiet);
+}
+
+static int
+ata_try_pass_16(struct cam_device *device)
+{
+	struct ccb_pathinq cpi;
+
+	if (get_cpi(device, &cpi) != 0) {
+		warnx("couldn't get CPI");
+		return (-1);
+	}
+
+	if (cpi.protocol == PROTO_SCSI) {
+		/* possibly compatible with pass_16 */
+		return (1);
+	}
+
+	/* likely not compatible with pass_16 */
+	return (0);
+}
+
+static int
+ata_do_28bit_cmd(struct cam_device *device, union ccb *ccb, int retries,
+		 u_int32_t flags, u_int8_t protocol, u_int8_t tag_action,
+		 u_int8_t command, u_int8_t features, u_int32_t lba,
+		 u_int8_t sector_count, u_int8_t *data_ptr, u_int16_t dxfer_len,
+		 int timeout, int quiet)
+{
+
+
+	switch (ata_try_pass_16(device)) {
+	case -1:
+		return (1);
+	case 1:
+		/* Try using SCSI Passthrough */
+		return ata_do_pass_16(device, ccb, retries, flags, protocol,
+				      0, tag_action, command, features, lba,
+				      sector_count, data_ptr, dxfer_len,
+				      timeout, quiet);
+	}
+
+	bzero(&(&ccb->ccb_h)[1], sizeof(struct ccb_ataio) -
+	      sizeof(struct ccb_hdr));
+	cam_fill_ataio(&ccb->ataio,
+		       retries,
+		       NULL,
+		       flags,
+		       tag_action,
+		       data_ptr,
+		       dxfer_len,
+		       timeout);
+
+	ata_28bit_cmd(&ccb->ataio, command, features, lba, sector_count);
+	return ata_cam_send(device, ccb, quiet);
+}
+
+static void
+dump_data(uint16_t *ptr, uint32_t len)
+{
+	u_int i;
+
+	for (i = 0; i < len / 2; i++) {
+		if ((i % 8) == 0)
+			printf(" %3d: ", i);
+		printf("%04hx ", ptr[i]);
+		if ((i % 8) == 7)
+			printf("\n");
+	}
+	if ((i % 8) != 7)
+		printf("\n");
+}
+
+static int
+ata_do_identify(struct cam_device *device, int retry_count, int timeout,
+		union ccb *ccb, struct ata_params** ident_bufp)
+{
+	struct ata_params *ident_buf;
+	struct ccb_pathinq cpi;
+	struct ccb_getdev cgd;
+	u_int i, error;
+	int16_t *ptr;
+	u_int8_t command, retry_command;
+
+	if (get_cpi(device, &cpi) != 0) {
+		warnx("couldn't get CPI");
+		return (-1);
+	}
+
+	/* Neither PROTO_ATAPI or PROTO_SATAPM are used in cpi.protocol */
+	if (cpi.protocol == PROTO_ATA) {
+		if (get_cgd(device, &cgd) != 0) {
+			warnx("couldn't get CGD");
+			return (-1);
+		}
+
+		command = (cgd.protocol == PROTO_ATA) ?
+		    ATA_ATA_IDENTIFY : ATA_ATAPI_IDENTIFY;
+		retry_command = 0;
+	} else {
+		/* We don't know which for sure so try both */
+		command = ATA_ATA_IDENTIFY;
+		retry_command = ATA_ATAPI_IDENTIFY;
+	}
+
+	ptr = (uint16_t *)calloc(1, sizeof(struct ata_params));
+	if (ptr == NULL) {
+		warnx("can't calloc memory for identify\n");
+		return (1);
+	}
+
+	error = ata_do_28bit_cmd(device,
+				 ccb,
+				 /*retries*/retry_count,
+				 /*flags*/CAM_DIR_IN,
+				 /*protocol*/AP_PROTO_PIO_IN,
+				 /*tag_action*/MSG_SIMPLE_Q_TAG,
+				 /*command*/command,
+				 /*features*/0,
+				 /*lba*/0,
+				 /*sector_count*/(u_int8_t)sizeof(struct ata_params),
+				 /*data_ptr*/(u_int8_t *)ptr,
+				 /*dxfer_len*/sizeof(struct ata_params),
+				 /*timeout*/timeout ? timeout : 30 * 1000,
+				 /*quiet*/1);
 
 	if (error != 0) {
-		free(ptr);
-		return(error);
+		if (retry_command == 0) {
+			free(ptr);
+			return (1);
+		}
+		error = ata_do_28bit_cmd(device,
+					 ccb,
+					 /*retries*/retry_count,
+					 /*flags*/CAM_DIR_IN,
+					 /*protocol*/AP_PROTO_PIO_IN,
+					 /*tag_action*/MSG_SIMPLE_Q_TAG,
+					 /*command*/retry_command,
+					 /*features*/0,
+					 /*lba*/0,
+					 /*sector_count*/(u_int8_t)
+					     sizeof(struct ata_params),
+					 /*data_ptr*/(u_int8_t *)ptr,
+					 /*dxfer_len*/sizeof(struct ata_params),
+					 /*timeout*/timeout ? timeout : 30 * 1000,
+					 /*quiet*/0);
+
+		if (error != 0) {
+			free(ptr);
+			return (1);
+		}
 	}
 
-	for (i = 0; i < sizeof(struct ata_params) / 2; i++)
+	error = 1;
+	for (i = 0; i < sizeof(struct ata_params) / 2; i++) {
 		ptr[i] = le16toh(ptr[i]);
+		if (ptr[i] != 0)
+			error = 0;
+	}
+
 	if (arglist & CAM_ARG_VERBOSE) {
 		fprintf(stdout, "%s%d: Raw identify data:\n",
 		    device->device_name, device->dev_unit_num);
-		for (i = 0; i < sizeof(struct ata_params) / 2; i++) {
-			if ((i % 8) == 0)
-			    fprintf(stdout, " %3d: ", i);
-			fprintf(stdout, "%04x ", (uint16_t)ptr[i]);
-			if ((i % 8) == 7)
-			    fprintf(stdout, "\n");
-		}
+		dump_data(ptr, sizeof(struct ata_params));
 	}
+
+	/* check for invalid (all zero) response */
+	if (error != 0) {
+		warnx("Invalid identify response detected");
+		free(ptr);
+		return (error);
+	}
+
 	ident_buf = (struct ata_params *)ptr;
 	if (strncmp(ident_buf->model, "FX", 2) &&
 	    strncmp(ident_buf->model, "NEC", 3) &&
@@ -1446,15 +1690,636 @@ ataidentify(struct cam_device *device, i
 	ata_bpack(ident_buf->media_serial, ident_buf->media_serial,
 	    sizeof(ident_buf->media_serial));
 
-	fprintf(stdout, "%s%d: ", device->device_name,
-		device->dev_unit_num);
+	*ident_bufp = ident_buf;
+
+	return (0);
+}
+
+
+static int
+ataidentify(struct cam_device *device, int retry_count, int timeout)
+{
+	union ccb *ccb;
+	struct ata_params *ident_buf;
+
+	if ((ccb = cam_getccb(device)) == NULL) {
+		warnx("couldn't allocate CCB");
+		return (1);
+	}
+
+	if (ata_do_identify(device, retry_count, timeout, ccb, &ident_buf) != 0) {
+		cam_freeccb(ccb);
+		return (1);
+	}
+
+	printf("%s%d: ", device->device_name, device->dev_unit_num);
 	ata_print_ident(ident_buf);
 	camxferrate(device);
 	atacapprint(ident_buf);
 
 	free(ident_buf);
+	cam_freeccb(ccb);
 
-	return(0);
+	return (0);
+}
+#endif /* MINIMALISTIC */
+
+
+#ifndef MINIMALISTIC
+enum {
+	ATA_SECURITY_ACTION_PRINT,
+	ATA_SECURITY_ACTION_FREEZE,
+	ATA_SECURITY_ACTION_UNLOCK,
+	ATA_SECURITY_ACTION_DISABLE,
+	ATA_SECURITY_ACTION_ERASE,
+	ATA_SECURITY_ACTION_ERASE_ENHANCED,
+	ATA_SECURITY_ACTION_SET_PASSWORD
+} atasecurity_action;
+
+static void
+atasecurity_print_time(u_int16_t tw)
+{
+
+	if (tw == 0)
+		printf("unspecified");
+	else if (tw >= 255)
+		printf("> 508 min");
+	else
+		printf("%i min", 2 * tw);
+}
+
+static u_int32_t
+atasecurity_erase_timeout_msecs(u_int16_t timeout)
+{
+
+	if (timeout == 0)
+		return 2 * 3600 * 1000; /* default: two hours */
+	else if (timeout > 255)
+		return (508 + 60) * 60 * 1000; /* spec says > 508 minutes */
+
+	return ((2 * timeout) + 5) * 60 * 1000; /* add a 5min margin */
+}
+
+
+static void
+atasecurity_notify(u_int8_t command, struct ata_security_password *pwd)
+{
+	struct ata_cmd cmd;
+
+	bzero(&cmd, sizeof(cmd));
+	cmd.command = command;
+	printf("Issuing %s", ata_op_string(&cmd));
+
+	if (pwd != NULL) {
+		char pass[sizeof(pwd->password)+1];
+
+		/* pwd->password may not be null terminated */
+		pass[sizeof(pwd->password)] = '\0';
+		strncpy(pass, pwd->password, sizeof(pwd->password));
+		printf(" password='%s', user='%s'",
+			pass,
+			(pwd->ctrl & ATA_SECURITY_PASSWORD_MASTER) ?
+			"master" : "user");
+
+		if (command == ATA_SECURITY_SET_PASSWORD) {
+			printf(", mode='%s'",
+			       (pwd->ctrl & ATA_SECURITY_LEVEL_MAXIMUM) ?
+			       "maximum" : "high");
+		}
+	}
+
+	printf("\n");
+}
+
+static int
+atasecurity_freeze(struct cam_device *device, union ccb *ccb,
+		   int retry_count, u_int32_t timeout, int quiet)
+{
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_FREEZE_LOCK, NULL);
+
+	return ata_do_28bit_cmd(device,
+				ccb,
+				retry_count,
+				/*flags*/CAM_DIR_NONE,
+				/*protocol*/AP_PROTO_NON_DATA,
+				/*tag_action*/MSG_SIMPLE_Q_TAG,
+				/*command*/ATA_SECURITY_FREEZE_LOCK,
+				/*features*/0,
+				/*lba*/0,
+				/*sector_count*/0,
+				/*data_ptr*/NULL,
+				/*dxfer_len*/0,
+				/*timeout*/timeout,
+				/*quiet*/0);
+}
+
+static int
+atasecurity_unlock(struct cam_device *device, union ccb *ccb,
+		   int retry_count, u_int32_t timeout,
+		   struct ata_security_password *pwd, int quiet)
+{
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_UNLOCK, pwd);
+
+	return ata_do_28bit_cmd(device,
+				ccb,
+				retry_count,
+				/*flags*/CAM_DIR_OUT,
+				/*protocol*/AP_PROTO_PIO_OUT,
+				/*tag_action*/MSG_SIMPLE_Q_TAG,
+				/*command*/ATA_SECURITY_UNLOCK,
+				/*features*/0,
+				/*lba*/0,
+				/*sector_count*/0,
+				/*data_ptr*/(u_int8_t *)pwd,
+				/*dxfer_len*/sizeof(*pwd),
+				/*timeout*/timeout,
+				/*quiet*/0);
+}
+
+static int
+atasecurity_disable(struct cam_device *device, union ccb *ccb,
+		    int retry_count, u_int32_t timeout,
+		    struct ata_security_password *pwd, int quiet)
+{
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_DISABLE_PASSWORD, pwd);
+	return ata_do_28bit_cmd(device,
+				ccb,
+				retry_count,
+				/*flags*/CAM_DIR_OUT,
+				/*protocol*/AP_PROTO_PIO_OUT,
+				/*tag_action*/MSG_SIMPLE_Q_TAG,
+				/*command*/ATA_SECURITY_DISABLE_PASSWORD,
+				/*features*/0,
+				/*lba*/0,
+				/*sector_count*/0,
+				/*data_ptr*/(u_int8_t *)pwd,
+				/*dxfer_len*/sizeof(*pwd),
+				/*timeout*/timeout,
+				/*quiet*/0);
+}
+
+
+static int
+atasecurity_erase_confirm(struct cam_device *device,
+			  struct ata_params* ident_buf)
+{
+
+	printf("\nYou are about to ERASE ALL DATA from the following"
+	       " device:\n%s%d,%s%d: ", device->device_name,
+	       device->dev_unit_num, device->given_dev_name,
+	       device->given_unit_number);
+	ata_print_ident(ident_buf);
+
+	for(;;) {
+		char str[50];
+		printf("\nAre you SURE you want to ERASE ALL DATA? (yes/no) ");
+
+		if (fgets(str, sizeof(str), stdin) != NULL) {
+			if (strncasecmp(str, "yes", 3) == 0) {
+				return (1);
+			} else if (strncasecmp(str, "no", 2) == 0) {
+				return (0);
+			} else {
+				printf("Please answer \"yes\" or "
+				       "\"no\"\n");
+			}
+		}
+	}
+
+	/* NOTREACHED */
+	return (0);
+}
+
+static int
+atasecurity_erase(struct cam_device *device, union ccb *ccb,
+		  int retry_count, u_int32_t timeout,
+		  u_int32_t erase_timeout,
+		  struct ata_security_password *pwd, int quiet)
+{
+	int error;
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_ERASE_PREPARE, NULL);
+
+	error = ata_do_28bit_cmd(device,
+				 ccb,
+				 retry_count,
+				 /*flags*/CAM_DIR_NONE,
+				 /*protocol*/AP_PROTO_NON_DATA,
+				 /*tag_action*/MSG_SIMPLE_Q_TAG,
+				 /*command*/ATA_SECURITY_ERASE_PREPARE,
+				 /*features*/0,
+				 /*lba*/0,
+				 /*sector_count*/0,
+				 /*data_ptr*/NULL,
+				 /*dxfer_len*/0,
+				 /*timeout*/timeout,
+				 /*quiet*/0);
+
+	if (error != 0)
+		return error;
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_ERASE_UNIT, pwd);
+
+	error = ata_do_28bit_cmd(device,
+				 ccb,
+				 retry_count,
+				 /*flags*/CAM_DIR_OUT,
+				 /*protocol*/AP_PROTO_PIO_OUT,
+				 /*tag_action*/MSG_SIMPLE_Q_TAG,
+				 /*command*/ATA_SECURITY_ERASE_UNIT,
+				 /*features*/0,
+				 /*lba*/0,
+				 /*sector_count*/0,
+				 /*data_ptr*/(u_int8_t *)pwd,
+				 /*dxfer_len*/sizeof(*pwd),
+				 /*timeout*/erase_timeout,
+				 /*quiet*/0);
+
+	if (error == 0 && quiet == 0)
+		printf("\nErase Complete\n");
+
+	return error;
+}
+
+static int
+atasecurity_set_password(struct cam_device *device, union ccb *ccb,
+			 int retry_count, u_int32_t timeout,
+			 struct ata_security_password *pwd, int quiet)
+{
+
+	if (quiet == 0)
+		atasecurity_notify(ATA_SECURITY_SET_PASSWORD, pwd);
+
+	return ata_do_28bit_cmd(device,
+				 ccb,
+				 retry_count,
+				 /*flags*/CAM_DIR_OUT,
+				 /*protocol*/AP_PROTO_PIO_OUT,
+				 /*tag_action*/MSG_SIMPLE_Q_TAG,
+				 /*command*/ATA_SECURITY_SET_PASSWORD,
+				 /*features*/0,
+				 /*lba*/0,
+				 /*sector_count*/0,
+				 /*data_ptr*/(u_int8_t *)pwd,
+				 /*dxfer_len*/sizeof(*pwd),
+				 /*timeout*/timeout,
+				 /*quiet*/0);
+}
+
+static void
+atasecurity_print(struct ata_params *parm)
+{
+
+	printf("\nSecurity Option           Value\n");
+	if (arglist & CAM_ARG_VERBOSE) {
+		printf("status                    %04x\n",
+		       parm->security_status);
+	}
+	printf("supported                 %s\n",
+		parm->security_status & ATA_SECURITY_SUPPORTED ? "yes" : "no");
+	if (!(parm->security_status & ATA_SECURITY_SUPPORTED))
+		return;
+	printf("enabled                   %s\n",
+		parm->security_status & ATA_SECURITY_ENABLED ? "yes" : "no");
+	printf("drive locked              %s\n",
+		parm->security_status & ATA_SECURITY_LOCKED ? "yes" : "no");
+	printf("security config frozen    %s\n",
+		parm->security_status & ATA_SECURITY_FROZEN ? "yes" : "no");
+	printf("count expired             %s\n",
+		parm->security_status & ATA_SECURITY_COUNT_EXP ? "yes" : "no");
+	printf("security level            %s\n",
+		parm->security_status & ATA_SECURITY_LEVEL ? "maximum" : "high");
+	printf("enhanced erase supported  %s\n",
+		parm->security_status & ATA_SECURITY_ENH_SUPP ? "yes" : "no");
+	printf("erase time                ");
+	atasecurity_print_time(parm->erase_time);
+	printf("\n");
+	printf("enhanced erase time       ");
+	atasecurity_print_time(parm->enhanced_erase_time);
+	printf("\n");
+	printf("master password rev       %04x%s\n",
+		parm->master_passwd_revision,
+		parm->master_passwd_revision == 0x0000 ||
+		parm->master_passwd_revision == 0xFFFF ?  " (unsupported)" : "");
+}
+
+/*
+ * Validates and copies the password in optarg to the passed buffer.
+ * If the password in optarg is the same length as the buffer then
+ * the data will still be copied but no null termination will occur.
+ */
+static int
+ata_getpwd(u_int8_t *passwd, int max, char opt)
+{
+	int len;
+
+	len = strlen(optarg);
+	if (len > max) {
+		warnx("-%c password is too long", opt);
+		return (1);
+	} else if (len == 0) {
+		warnx("-%c password is missing", opt);
+		return (1);
+	} else if (optarg[0] == '-'){
+		warnx("-%c password starts with '-' (generic arg?)", opt);
+		return (1);
+	} else if (strlen(passwd) != 0 && strcmp(passwd, optarg) != 0) {
+		warnx("-%c password conflicts with existing password from -%c",
+		      opt, pwd_opt);
+		return (1);
+	}
+
+	/* Callers pass in a buffer which does NOT need to be terminated */
+	strncpy(passwd, optarg, max);
+	pwd_opt = opt;
+
+	return (0);
+}
+
+static int
+atasecurity(struct cam_device *device, int retry_count, int timeout,
+	    int argc, char **argv, char *combinedopt)
+{
+	union ccb *ccb;
+	struct ata_params *ident_buf;
+	int error, confirm, quiet, c, action, actions, setpwd;
+	int security_enabled, erase_timeout, pwdsize;
+	struct ata_security_password pwd;
+
+	actions = 0;
+	setpwd = 0;
+	erase_timeout = 0;
+	confirm = 0;
+	quiet = 0;
+
+	memset(&pwd, 0, sizeof(pwd));
+
+	/* default action is to print security information */
+	action = ATA_SECURITY_ACTION_PRINT;
+
+	/* user is master by default as its safer that way */
+	pwd.ctrl |= ATA_SECURITY_PASSWORD_MASTER;
+	pwdsize = sizeof(pwd.password);
+

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

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 07:10:55 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 6A6512D3;
 Sat,  6 Apr 2013 07:10:55 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 3F671275;
 Sat,  6 Apr 2013 07:10:55 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r367AsIj050157;
 Sat, 6 Apr 2013 07:10:54 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r367AstY050156;
 Sat, 6 Apr 2013 07:10:54 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304060710.r367AstY050156@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Sat, 6 Apr 2013 07:10:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249183 - projects/counters/share/man/man9
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 07:10:55 -0000

Author: glebius
Date: Sat Apr  6 07:10:54 2013
New Revision: 249183
URL: http://svnweb.freebsd.org/changeset/base/249183

Log:
  Wording.
  
  Submitted by:	bde

Modified:
  projects/counters/share/man/man9/counter.9

Modified: projects/counters/share/man/man9/counter.9
==============================================================================
--- projects/counters/share/man/man9/counter.9	Sat Apr  6 06:02:55 2013	(r249182)
+++ projects/counters/share/man/man9/counter.9	Sat Apr  6 07:10:54 2013	(r249183)
@@ -37,19 +37,19 @@
 .Ft counter_u64_t
 .Fn counter_u64_alloc "int wait"
 .Ft void
-.Fn counter_u64_free "counter_u64_t cnt"
+.Fn counter_u64_free "counter_u64_t c"
 .Ft void
-.Fn counter_u64_add "counter_u64_t cnt" "int64_t value"
+.Fn counter_u64_add "counter_u64_t c" "int64_t v"
 .Ft void
 .Fn counter_enter
 .Ft void
 .Fn counter_exit
 .Ft void
-.Fn counter_u64_add_protected "counter_u64_t cnt" "int64_t value"
+.Fn counter_u64_add_protected "counter_u64_t c" "int64_t v"
 .Ft uint64_t
-.Fn counter_u64_fetch "counter_u64_t cnt"
+.Fn counter_u64_fetch "counter_u64_t c"
 .Ft void
-.Fn counter_u64_zero "counter_u64_t cnt"
+.Fn counter_u64_zero "counter_u64_t c"
 .In sys/sysctl.h
 .Fn SYSCTL_COUNTER_U64 parent nbr name access ptr val descr
 .Fn SYSCTL_ADD_COUNTER_U64 ctx parent nbr name access ptr descr
@@ -92,17 +92,15 @@ or
 If
 .Va M_WAITOK
 is specified the operation may fail.
-.It Fn counter_u64_free cnt
-Free previously allocated
-.Nm
-.Fa cnt .
-.It Fn counter_u64_add cnt value
+.It Fn counter_u64_free c
+Free the previously allocated counter
+.Fa c .
+.It Fn counter_u64_add c v
 Add
-.Fa value
-to the
-.Nm
-.Fa cnt .
-The KPI does not guarantee any protection from underflow.
+.Fa v
+to
+.Fa c .
+The KPI does not guarantee any protection from wraparound.
 .It Fn counter_enter
 Enter mode that would allow to safely update several counters via
 .Fn counter_u64_add_protected .
@@ -113,22 +111,20 @@ See
 .Sx IMPLEMENTATION DETAILS .
 .It Fn counter_exit
 Exit mode for updating several counters.
-.It Fn counter_u64_add_protected cnt value
+.It Fn counter_u64_add_protected c v
 Same as
 .Fn counter_u64_add ,
 but should be preceded by
 .Fn counter_enter .
-.It Fn counter_u64_fetch cnt
-Obtain current snapshot of the data collected in
-.Nm
-.Fa cnt .
+.It Fn counter_u64_fetch c
+Take a snapshot of counter
+.Fa c .
 The data obtained is not guaranteed to reflect the real cumulative
 value for any moment.
-.It Fn counter_u64_zero cnt
-Clear data collected in
-.Nm
-.Fa cnt
-and set its value to zero.
+.It Fn counter_u64_zero c
+Clear the counter
+.Fa c
+and set it to zero.
 .It Fn SYSCTL_COUNTER_U64 parent nbr name access ptr val descr
 Declare a static
 .Xr sysctl

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 07:14:55 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 5C93A419;
 Sat,  6 Apr 2013 07:14:55 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4C75728C;
 Sat,  6 Apr 2013 07:14:55 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r367Etjf050768;
 Sat, 6 Apr 2013 07:14:55 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r367EpH0050741;
 Sat, 6 Apr 2013 07:14:51 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304060714.r367EpH0050741@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Sat, 6 Apr 2013 07:14:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249184 - in projects/counters: . bin/dd bin/sh
 contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests crypto/openssh
 etc/defaults etc/periodic/daily lib/libc/stdlib lib/libc/sys lib/l...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 07:14:55 -0000

Author: glebius
Date: Sat Apr  6 07:14:50 2013
New Revision: 249184
URL: http://svnweb.freebsd.org/changeset/base/249184

Log:
  Merge head r243428 through r249183.

Added:
  projects/counters/contrib/bmake/unit-tests/export-env
     - copied unchanged from r249183, head/contrib/bmake/unit-tests/export-env
     - copied from r249183, head/contrib/unbound/
  projects/counters/etc/periodic/daily/401.status-graid
     - copied unchanged from r249183, head/etc/periodic/daily/401.status-graid
  projects/counters/sys/contrib/dev/acpica/compiler/asllistsup.c
     - copied unchanged from r249183, head/sys/contrib/dev/acpica/compiler/asllistsup.c
  projects/counters/sys/contrib/dev/acpica/compiler/asloffset.c
     - copied unchanged from r249183, head/sys/contrib/dev/acpica/compiler/asloffset.c
  projects/counters/sys/contrib/dev/acpica/components/utilities/utpredef.c
     - copied unchanged from r249183, head/sys/contrib/dev/acpica/components/utilities/utpredef.c
  projects/counters/sys/dev/cfi/cfi_bus_nexus.c
     - copied unchanged from r249183, head/sys/dev/cfi/cfi_bus_nexus.c
Directory Properties:
  projects/counters/contrib/unbound/   (props changed)
Deleted:
  projects/counters/etc/periodic/daily/405.status-ata-raid
  projects/counters/sbin/atacontrol/
  projects/counters/share/man/man4/atapicam.4
  projects/counters/share/man/man4/ataraid.4
  projects/counters/sys/dev/ata/ata-disk.c
  projects/counters/sys/dev/ata/ata-disk.h
  projects/counters/sys/dev/ata/ata-raid-ddf.h
  projects/counters/sys/dev/ata/ata-raid.c
  projects/counters/sys/dev/ata/ata-raid.h
  projects/counters/sys/dev/ata/atapi-cam.c
  projects/counters/sys/dev/ata/atapi-cd.c
  projects/counters/sys/dev/ata/atapi-cd.h
  projects/counters/sys/dev/ata/atapi-fd.c
  projects/counters/sys/dev/ata/atapi-fd.h
  projects/counters/sys/dev/ata/atapi-tape.c
  projects/counters/sys/dev/ata/atapi-tape.h
  projects/counters/sys/modules/ata/atacam/
  projects/counters/sys/modules/ata/atadisk/
  projects/counters/sys/modules/ata/atapicam/
  projects/counters/sys/modules/ata/atapicd/
  projects/counters/sys/modules/ata/atapifd/
  projects/counters/sys/modules/ata/atapist/
  projects/counters/sys/modules/ata/ataraid/
  projects/counters/usr.sbin/bhyve/uart.c
  projects/counters/usr.sbin/burncd/
Modified:
  projects/counters/ObsoleteFiles.inc
  projects/counters/bin/dd/dd.c
  projects/counters/bin/sh/redir.c
  projects/counters/contrib/bmake/ChangeLog
  projects/counters/contrib/bmake/FILES
  projects/counters/contrib/bmake/Makefile
  projects/counters/contrib/bmake/bmake.1
  projects/counters/contrib/bmake/bmake.cat1
  projects/counters/contrib/bmake/boot-strap
  projects/counters/contrib/bmake/configure
  projects/counters/contrib/bmake/configure.in
  projects/counters/contrib/bmake/dir.c
  projects/counters/contrib/bmake/job.c
  projects/counters/contrib/bmake/job.h
  projects/counters/contrib/bmake/main.c
  projects/counters/contrib/bmake/make.1
  projects/counters/contrib/bmake/make.h
  projects/counters/contrib/bmake/meta.c
  projects/counters/contrib/bmake/meta.h
  projects/counters/contrib/bmake/mk/ChangeLog
  projects/counters/contrib/bmake/mk/dirdeps.mk
  projects/counters/contrib/bmake/mk/gendirdeps.mk
  projects/counters/contrib/bmake/mk/install-mk
  projects/counters/contrib/bmake/mk/meta.stage.mk
  projects/counters/contrib/bmake/mk/meta2deps.py
  projects/counters/contrib/bmake/mk/meta2deps.sh
  projects/counters/contrib/bmake/mk/sys.dependfile.mk
  projects/counters/contrib/bmake/parse.c
  projects/counters/contrib/bmake/unit-tests/Makefile.in
  projects/counters/contrib/bmake/unit-tests/test.exp
  projects/counters/contrib/bmake/var.c
  projects/counters/crypto/openssh/krl.c
  projects/counters/crypto/openssh/readconf.c
  projects/counters/crypto/openssh/readconf.h
  projects/counters/crypto/openssh/ssh.c
  projects/counters/crypto/openssh/sshconnect2.c
  projects/counters/etc/defaults/periodic.conf
  projects/counters/etc/periodic/daily/Makefile
  projects/counters/lib/libc/stdlib/rand.3
  projects/counters/lib/libc/stdlib/rand.c
  projects/counters/lib/libc/stdlib/random.3
  projects/counters/lib/libc/stdlib/random.c
  projects/counters/lib/libc/sys/getsockopt.2
  projects/counters/lib/libpam/modules/pam_unix/pam_unix.c
  projects/counters/rescue/rescue/Makefile
  projects/counters/sbin/Makefile
  projects/counters/sbin/camcontrol/camcontrol.8
  projects/counters/sbin/camcontrol/camcontrol.c
  projects/counters/sbin/geom/class/raid/graid.8
  projects/counters/sbin/geom/class/stripe/gstripe.8
  projects/counters/sbin/nvmecontrol/nvmecontrol.c
  projects/counters/share/man/man4/Makefile
  projects/counters/share/man/man4/ata.4
  projects/counters/share/man/man4/igb.4
  projects/counters/share/man/man5/devfs.conf.5
  projects/counters/share/man/man5/periodic.conf.5
  projects/counters/share/man/man5/rc.conf.5
  projects/counters/share/man/man7/hier.7
  projects/counters/share/misc/committers-ports.dot
  projects/counters/share/mk/sys.mk
  projects/counters/sys/amd64/conf/GENERIC
  projects/counters/sys/amd64/vmm/io/vlapic.c
  projects/counters/sys/arm/arm/machdep.c
  projects/counters/sys/arm/arm/vfp.c
  projects/counters/sys/arm/conf/AC100
  projects/counters/sys/arm/conf/ARMADAXP
  projects/counters/sys/arm/conf/AVILA
  projects/counters/sys/arm/conf/CAMBRIA
  projects/counters/sys/arm/conf/CRB
  projects/counters/sys/arm/conf/CUBIEBOARD
  projects/counters/sys/arm/conf/EFIKA_MX
  projects/counters/sys/arm/conf/EP80219
  projects/counters/sys/arm/conf/IQ31244
  projects/counters/sys/arm/conf/TS7800
  projects/counters/sys/arm/include/setjmp.h
  projects/counters/sys/arm/ti/aintc.c
  projects/counters/sys/boot/common/util.c
  projects/counters/sys/cam/ata/ata_da.c
  projects/counters/sys/cam/ata/ata_xpt.c
  projects/counters/sys/cam/cam_periph.c
  projects/counters/sys/cam/cam_sim.c
  projects/counters/sys/cam/cam_xpt.c
  projects/counters/sys/cam/cam_xpt_sim.h
  projects/counters/sys/cam/ctl/ctl.c
  projects/counters/sys/cam/ctl/ctl_backend_block.c
  projects/counters/sys/cam/ctl/scsi_ctl.c
  projects/counters/sys/cam/scsi/scsi_cd.c
  projects/counters/sys/cam/scsi/scsi_da.c
  projects/counters/sys/cam/scsi/scsi_pass.c
  projects/counters/sys/cam/scsi/scsi_xpt.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/counters/sys/conf/NOTES
  projects/counters/sys/conf/files
  projects/counters/sys/conf/files.sparc64
  projects/counters/sys/conf/options
  projects/counters/sys/contrib/dev/acpica/changes.txt   (contents, props changed)
  projects/counters/sys/contrib/dev/acpica/common/ahpredef.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslcompile.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslcompiler.h
  projects/counters/sys/contrib/dev/acpica/compiler/asldefine.h
  projects/counters/sys/contrib/dev/acpica/compiler/aslerror.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslfiles.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslglobal.h
  projects/counters/sys/contrib/dev/acpica/compiler/asllisting.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslmain.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslpredef.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslprepkg.c
  projects/counters/sys/contrib/dev/acpica/compiler/aslresource.c
  projects/counters/sys/contrib/dev/acpica/compiler/asltypes.h
  projects/counters/sys/contrib/dev/acpica/compiler/aslwalks.c
  projects/counters/sys/contrib/dev/acpica/components/debugger/dbmethod.c
  projects/counters/sys/contrib/dev/acpica/components/debugger/dbnames.c
  projects/counters/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
  projects/counters/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
  projects/counters/sys/contrib/dev/acpica/components/events/evevent.c
  projects/counters/sys/contrib/dev/acpica/components/executer/exoparg2.c
  projects/counters/sys/contrib/dev/acpica/components/namespace/nseval.c
  projects/counters/sys/contrib/dev/acpica/components/namespace/nspredef.c
  projects/counters/sys/contrib/dev/acpica/components/tables/tbfadt.c
  projects/counters/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/counters/sys/contrib/dev/acpica/components/utilities/utdelete.c
  projects/counters/sys/contrib/dev/acpica/components/utilities/utmutex.c
  projects/counters/sys/contrib/dev/acpica/components/utilities/utosi.c
  projects/counters/sys/contrib/dev/acpica/components/utilities/utxface.c
  projects/counters/sys/contrib/dev/acpica/include/acglobal.h
  projects/counters/sys/contrib/dev/acpica/include/aclocal.h
  projects/counters/sys/contrib/dev/acpica/include/acnamesp.h
  projects/counters/sys/contrib/dev/acpica/include/acpixf.h
  projects/counters/sys/contrib/dev/acpica/include/acpredef.h
  projects/counters/sys/contrib/dev/acpica/include/acutils.h
  projects/counters/sys/dev/ahci/ahciem.c
  projects/counters/sys/dev/ata/ata-all.c
  projects/counters/sys/dev/ata/ata-all.h
  projects/counters/sys/dev/ata/ata-cbus.c
  projects/counters/sys/dev/ata/ata-dma.c
  projects/counters/sys/dev/ata/ata-lowlevel.c
  projects/counters/sys/dev/ata/ata-pci.c
  projects/counters/sys/dev/ata/ata-pci.h
  projects/counters/sys/dev/ata/ata-queue.c
  projects/counters/sys/dev/ata/ata-sata.c
  projects/counters/sys/dev/ata/ata_if.m
  projects/counters/sys/dev/ata/chipsets/ata-acard.c
  projects/counters/sys/dev/ata/chipsets/ata-acerlabs.c
  projects/counters/sys/dev/ata/chipsets/ata-intel.c
  projects/counters/sys/dev/ata/chipsets/ata-ite.c
  projects/counters/sys/dev/ata/chipsets/ata-serverworks.c
  projects/counters/sys/dev/ata/chipsets/ata-siliconimage.c
  projects/counters/sys/dev/ath/ath_hal/ah.h
  projects/counters/sys/dev/ath/ath_hal/ah_debug.h
  projects/counters/sys/dev/ath/ath_hal/ah_internal.h
  projects/counters/sys/dev/ath/if_ath_rx.c
  projects/counters/sys/dev/ath/if_ath_rx.h
  projects/counters/sys/dev/ath/if_ath_rx_edma.c
  projects/counters/sys/dev/ciss/ciss.c
  projects/counters/sys/dev/drm2/drm_edid.c
  projects/counters/sys/dev/drm2/i915/intel_iic.c
  projects/counters/sys/dev/drm2/i915/intel_modes.c
  projects/counters/sys/dev/drm2/i915/intel_sdvo.c
  projects/counters/sys/dev/e1000/if_em.c
  projects/counters/sys/dev/e1000/if_igb.c
  projects/counters/sys/dev/e1000/if_lem.c
  projects/counters/sys/dev/hwpmc/hwpmc_core.c
  projects/counters/sys/dev/hwpmc/hwpmc_intel.c
  projects/counters/sys/dev/hwpmc/hwpmc_uncore.c
  projects/counters/sys/dev/hwpmc/pmc_events.h
  projects/counters/sys/dev/md/md.c
  projects/counters/sys/dev/usb/misc/udbp.c
  projects/counters/sys/dev/usb/usb_device.c
  projects/counters/sys/dev/usb/usbdevs
  projects/counters/sys/geom/geom_disk.c
  projects/counters/sys/i386/conf/GENERIC
  projects/counters/sys/i386/conf/XBOX
  projects/counters/sys/ia64/conf/GENERIC
  projects/counters/sys/kern/init_main.c
  projects/counters/sys/kern/kern_intr.c
  projects/counters/sys/kern/kern_sig.c
  projects/counters/sys/kern/subr_bus_dma.c
  projects/counters/sys/mips/atheros/apb.c
  projects/counters/sys/mips/atheros/ar71xx_ehci.c
  projects/counters/sys/mips/atheros/ar71xx_setup.c
  projects/counters/sys/mips/atheros/ar71xx_setup.h
  projects/counters/sys/mips/atheros/ar933x_chip.c
  projects/counters/sys/mips/atheros/ar933xreg.h
  projects/counters/sys/mips/atheros/if_arge.c
  projects/counters/sys/mips/atheros/uart_dev_ar933x.c
  projects/counters/sys/mips/conf/AP121
  projects/counters/sys/mips/conf/AP121.hints
  projects/counters/sys/mips/conf/OCTEON1
  projects/counters/sys/mips/conf/XLR
  projects/counters/sys/mips/conf/XLR64
  projects/counters/sys/mips/conf/XLRN32
  projects/counters/sys/mips/conf/std.SWARM
  projects/counters/sys/mips/conf/std.XLP
  projects/counters/sys/mips/malta/std.malta
  projects/counters/sys/modules/ata/Makefile
  projects/counters/sys/modules/ctl/Makefile
  projects/counters/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
  projects/counters/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
  projects/counters/sys/pc98/conf/GENERIC
  projects/counters/sys/pc98/conf/NOTES
  projects/counters/sys/powerpc/aim/trap.c
  projects/counters/sys/powerpc/conf/GENERIC
  projects/counters/sys/powerpc/conf/GENERIC64
  projects/counters/sys/powerpc/conf/MPC85XX
  projects/counters/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c
  projects/counters/sys/sparc64/conf/GENERIC
  projects/counters/sys/sys/ata.h
  projects/counters/sys/sys/bus.h
  projects/counters/sys/ufs/ffs/ffs_softdep.c
  projects/counters/sys/vm/vm_radix.c
  projects/counters/usr.bin/bmake/Makefile
  projects/counters/usr.bin/bmake/config.h
  projects/counters/usr.bin/bmake/unit-tests/Makefile
  projects/counters/usr.bin/calendar/calendars/calendar.freebsd
  projects/counters/usr.sbin/Makefile
  projects/counters/usr.sbin/acpi/acpidb/Makefile
  projects/counters/usr.sbin/acpi/iasl/Makefile
  projects/counters/usr.sbin/bhyve/Makefile
  projects/counters/usr.sbin/bhyve/mptbl.c
  projects/counters/usr.sbin/bluetooth/ath3kfw/ath3kfw.c
  projects/counters/usr.sbin/bsdconfig/share/device.subr
  projects/counters/usr.sbin/pc-sysinstall/backend-query/disk-list.sh
Directory Properties:
  projects/counters/   (props changed)
  projects/counters/contrib/bmake/   (props changed)
  projects/counters/crypto/openssh/   (props changed)
  projects/counters/lib/libc/   (props changed)
  projects/counters/sbin/   (props changed)
  projects/counters/share/man/man4/   (props changed)
  projects/counters/sys/   (props changed)
  projects/counters/sys/amd64/vmm/   (props changed)
  projects/counters/sys/boot/   (props changed)
  projects/counters/sys/cddl/contrib/opensolaris/   (props changed)
  projects/counters/sys/conf/   (props changed)
  projects/counters/sys/contrib/dev/acpica/   (props changed)
  projects/counters/sys/contrib/dev/acpica/common/   (props changed)
  projects/counters/sys/contrib/dev/acpica/compiler/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/debugger/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/dispatcher/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/events/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/executer/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/namespace/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/tables/   (props changed)
  projects/counters/sys/contrib/dev/acpica/components/utilities/   (props changed)
  projects/counters/sys/contrib/dev/acpica/include/   (props changed)
  projects/counters/usr.bin/calendar/   (props changed)
  projects/counters/usr.sbin/bhyve/   (props changed)

Modified: projects/counters/ObsoleteFiles.inc
==============================================================================
--- projects/counters/ObsoleteFiles.inc	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/ObsoleteFiles.inc	Sat Apr  6 07:14:50 2013	(r249184)
@@ -38,6 +38,13 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20130404: legacy ATA stack removed
+OLD_FILES+=sbin/atacontrol
+OLD_FILES+=usr/share/man/man8/atacontrol.8.gz
+OLD_FILES+=usr/share/man/man4/atapicam.4.gz
+OLD_FILES+=usr/share/man/man4/ataraid.4.gz
+OLD_FILES+=usr/sbin/burncd
+OLD_FILES+=usr/share/man/man8/burncd.8.gz
 # 20130316: vinum.4 removed
 OLD_FILES+=usr/share/man/man4/vinum.4.gz
 # 20130312: fortunes-o removed

Modified: projects/counters/bin/dd/dd.c
==============================================================================
--- projects/counters/bin/dd/dd.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/bin/dd/dd.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -98,6 +98,13 @@ main(int argc __unused, char *argv[])
 		dd_in();
 
 	dd_close();
+	/*
+	 * Some devices such as cfi(4) may perform significant amounts
+	 * of work when a write descriptor is closed.  Close the out
+	 * descriptor explicitly so that the summary handler (called
+	 * from an atexit() hook) includes this work.
+	 */
+	close(out.fd);
 	exit(0);
 }
 

Modified: projects/counters/bin/sh/redir.c
==============================================================================
--- projects/counters/bin/sh/redir.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/bin/sh/redir.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$");
 
 #define EMPTY -2		/* marks an unused slot in redirtab */
 #define CLOSED -1		/* fd was not open before redir */
-#define PIPESIZE 4096		/* amount of buffering in a pipe */
 
 
 MKINIT
@@ -253,7 +252,9 @@ openhere(union node *redir)
 {
 	char *p;
 	int pip[2];
-	int len = 0;
+	size_t len = 0;
+	int flags;
+	ssize_t written = 0;
 
 	if (pipe(pip) < 0)
 		error("Pipe call failed: %s", strerror(errno));
@@ -263,9 +264,16 @@ openhere(union node *redir)
 	else
 		p = redir->nhere.doc->narg.text;
 	len = strlen(p);
-	if (len <= PIPESIZE) {
-		xwrite(pip[1], p, len);
+	if (len == 0)
 		goto out;
+	flags = fcntl(pip[1], F_GETFL, 0);
+	if (flags != -1 && fcntl(pip[1], F_SETFL, flags | O_NONBLOCK) != -1) {
+		written = write(pip[1], p, len);
+		if (written < 0)
+			written = 0;
+		if ((size_t)written == len)
+			goto out;
+		fcntl(pip[1], F_SETFL, flags);
 	}
 
 	if (forkshell((struct job *)NULL, (union node *)NULL, FORK_NOJOB) == 0) {
@@ -275,7 +283,7 @@ openhere(union node *redir)
 		signal(SIGHUP, SIG_IGN);
 		signal(SIGTSTP, SIG_IGN);
 		signal(SIGPIPE, SIG_DFL);
-		xwrite(pip[1], p, len);
+		xwrite(pip[1], p + written, len - written);
 		_exit(0);
 	}
 out:

Modified: projects/counters/contrib/bmake/ChangeLog
==============================================================================
--- projects/counters/contrib/bmake/ChangeLog	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/ChangeLog	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,3 +1,47 @@
+2013-03-30  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130330
+	  Merge with NetBSD make, pick up
+	  o meta.c: refine the handling of .OODATE in commands.
+	    Rather than suppress command comparison for the entire script
+	    as though .NOMETA_CMP had been used, only suppress it for the
+	    one command line.
+	    This allows something like ${.OODATE:M.NOMETA_CMP} to be used to 
+	    suppress comparison of a command without otherwise affecting it.
+	  o make.1: document that
+
+2013-03-22  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130321
+	  yes, not quite right but its a cooler number.
+	  Merge with NetBSD make, pick up
+	  o parse.c: fix ParseGmakeExport to be portable 
+	    and add a unit-test.
+	* meta.c: call meta_init() before makefiles are read and if built
+	  with filemon support set .MAKE.PATH_FILEMON to _PATH_FILEMON
+	  this let's makefiles test for support.
+	  Call meta_mode_init() to process .MAKE.MODE.
+
+2013-03-13  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130305
+	  Merge with NetBSD make, pick up
+	  o run .STALE: target when a dependency from .depend is missing.
+	  o job.c: add Job_RunTarget() for the above and .BEGIN
+
+2013-03-03  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130303
+	  Merge with NetBSD make, pick up
+	  o main.c: set .MAKE.OS to utsname.sysname
+	  o job.c: more checks for read and poll errors
+	  o var.c: lose VarChangeCase() saves 4% time
+
+2013-03-02  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* boot-strap: remove MAKEOBJDIRPREFIX from environment since we
+	  want to use MAKEOBJDIR
+
 2013-01-27  Simon J. Gerraty  <sjg@bad.crufty.net>
 
 	* Merge with NetBSD make, pick up

Modified: projects/counters/contrib/bmake/FILES
==============================================================================
--- projects/counters/contrib/bmake/FILES	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/FILES	Sat Apr  6 07:14:50 2013	(r249184)
@@ -102,6 +102,7 @@ unit-tests/dotwait
 unit-tests/error
 unit-tests/export
 unit-tests/export-all
+unit-tests/export-env
 unit-tests/forloop
 unit-tests/forsubst
 unit-tests/hash

Modified: projects/counters/contrib/bmake/Makefile
==============================================================================
--- projects/counters/contrib/bmake/Makefile	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/Makefile	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,7 +1,7 @@
-#	$Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $
+#	$Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $
 
 # Base version on src date
-MAKE_VERSION= 20130123
+MAKE_VERSION= 20130330
 
 PROG=	bmake
 
@@ -187,14 +187,14 @@ MANDIR= ${SHAREDIR}/man
 .if !exists(.depend)
 ${OBJS}: config.h
 .endif
-.if ${MK_AUTOCONF_MK} == "yes"
-.include <autoconf.mk>
-.endif
 
 # make sure that MAKE_VERSION gets updated.
 main.o: ${SRCS} ${MAKEFILE}
 
 # start-delete2 for bsd.after-import.mk
+.if ${MK_AUTOCONF_MK} == "yes"
+.include <autoconf.mk>
+.endif
 SHARE_MK?=${SHAREDIR}/mk
 MKSRC=${srcdir}/mk
 INSTALL?=${srcdir}/install-sh

Modified: projects/counters/contrib/bmake/bmake.1
==============================================================================
--- projects/counters/contrib/bmake/bmake.1	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/bmake.1	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $
+.\"	$NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd January 23, 2013
+.Dd March 30, 2013
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -874,6 +874,13 @@ by appending their names to
 is re-exported whenever
 .Ql Va .MAKEOVERRIDES
 is modified.
+.It Va .MAKE.PATH_FILEMON
+If
+.Nm
+was built with 
+.Xr filemon 4
+support, this is set to the path of the device node.
+This allows makefiles to test for this support.
 .It Va .MAKE.PID
 The process-id of
 .Nm .
@@ -1757,6 +1764,20 @@ targets.
 Ignore differences in commands when deciding if target is out of date.
 This is useful if the command contains a value which always changes.
 If the number of commands change, though, the target will still be out of date.
+The same effect applies to any command line that uses the variable
+.Va .OODATE ,
+which can be used for that purpose even when not otherwise needed or desired:
+.Bd -literal -offset indent
+
+skip-compare-for-some:
+	@echo this will be compared
+	@echo this will not ${.OODATE:M.NOMETA_CMP}
+	@echo this will also be compared
+
+.Ed
+The
+.Cm \&:M
+pattern suppresses any expansion of the unwanted variable.
 .It Ic .NOPATH
 Do not search for the target in the directories specified by
 .Ic .PATH .
@@ -2008,6 +2029,10 @@ If no sources are specified, the
 .Ic .SILENT
 attribute is applied to every
 command in the file.
+.It Ic .STALE
+This target gets run when a dependency file contains stale entries, having
+.Va .ALLSRC
+set to the name of that dependency file.
 .It Ic .SUFFIXES
 Each source specifies a suffix to
 .Nm .

Modified: projects/counters/contrib/bmake/bmake.cat1
==============================================================================
--- projects/counters/contrib/bmake/bmake.cat1	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/bmake.cat1	Sat Apr  6 07:14:50 2013	(r249184)
@@ -565,6 +565,11 @@ VVAARRIIAABBLLEE AASSSSIIGG
                      `MAKEFLAGS' is re-exported whenever `_._M_A_K_E_O_V_E_R_R_I_D_E_S' is
                      modified.
 
+     _._M_A_K_E_._P_A_T_H___F_I_L_E_M_O_N
+                     If bbmmaakkee was built with filemon(4) support, this is set
+                     to the path of the device node.  This allows makefiles to
+                     test for this support.
+
      _._M_A_K_E_._P_I_D       The process-id of bbmmaakkee.
 
      _._M_A_K_E_._P_P_I_D      The parent process-id of bbmmaakkee.
@@ -1106,7 +1111,19 @@ SSPPEECCIIAALL SSOOUURRCCEE
                Ignore differences in commands when deciding if target is out
                of date.  This is useful if the command contains a value which
                always changes.  If the number of commands change, though, the
-               target will still be out of date.
+               target will still be out of date.  The same effect applies to
+               any command line that uses the variable _._O_O_D_A_T_E, which can be
+               used for that purpose even when not otherwise needed or
+               desired:
+
+
+                     skip-compare-for-some:
+                             @echo this will be compared
+                             @echo this will not ${.OODATE:M.NOMETA_CMP}
+                             @echo this will also be compared
+
+               The ::MM pattern suppresses any expansion of the unwanted vari-
+               able.
 
      ..NNOOPPAATTHH   Do not search for the target in the directories specified by
                ..PPAATTHH.
@@ -1278,6 +1295,9 @@ SSPPEECCIIAALL TTAARRGGEETT
               sources are specified, the ..SSIILLEENNTT attribute is applied to every
               command in the file.
 
+     ..SSTTAALLEE   This target gets run when a dependency file contains stale
+              entries, having _._A_L_L_S_R_C set to the name of that dependency file.
+
      ..SSUUFFFFIIXXEESS
               Each source specifies a suffix to bbmmaakkee.  If no sources are
               specified, any previously specified suffixes are deleted.  It
@@ -1340,4 +1360,4 @@ BBUUGGSS
 
      There is no way of escaping a space character in a filename.
 
-NetBSD 5.1                     January 23, 2013                     NetBSD 5.1
+NetBSD 5.1                      March 30, 2013                      NetBSD 5.1

Modified: projects/counters/contrib/bmake/boot-strap
==============================================================================
--- projects/counters/contrib/bmake/boot-strap	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/boot-strap	Sat Apr  6 07:14:50 2013	(r249184)
@@ -111,7 +111,7 @@
 #	Simon J. Gerraty <sjg@crufty.net>
 
 # RCSid:
-#	$Id: boot-strap,v 1.42 2013/01/25 20:20:33 sjg Exp $
+#	$Id: boot-strap,v 1.43 2013/03/02 18:55:23 sjg Exp $
 #
 #	@(#) Copyright (c) 2001 Simon J. Gerraty
 #
@@ -159,6 +159,9 @@ source_rc() {
 
 cmd_args="$@"
 
+# clear some things from the environment that we care about
+unset MAKEOBJDIR MAKEOBJDIRPREFIX
+
 # --install[-host-target] will set this
 INSTALL_PREFIX=
 # other things we pass to install step

Modified: projects/counters/contrib/bmake/configure
==============================================================================
Binary file (source and/or target). No diff available.

Modified: projects/counters/contrib/bmake/configure.in
==============================================================================
--- projects/counters/contrib/bmake/configure.in	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/configure.in	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,10 +1,10 @@
 dnl
 dnl RCSid:
-dnl	$Id: configure.in,v 1.46 2012/12/28 21:28:18 sjg Exp $
+dnl	$Id: configure.in,v 1.48 2013/03/04 21:25:57 sjg Exp $
 dnl
 dnl Process this file with autoconf to produce a configure script
 dnl
-AC_INIT([bmake], [20121212], [sjg@NetBSD.org])
+AC_INIT([bmake], [20130303], [sjg@NetBSD.org])
 AC_CONFIG_HEADER(config.h)
 
 dnl make srcdir absolute

Modified: projects/counters/contrib/bmake/dir.c
==============================================================================
--- projects/counters/contrib/bmake/dir.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/dir.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $	*/
+/*	$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c	8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.65 2012/06/12 19:21:50 joerg Exp $");
+__RCSID("$NetBSD: dir.c,v 1.67 2013/03/05 22:01:43 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -145,6 +145,7 @@ __RCSID("$NetBSD: dir.c,v 1.65 2012/06/1
 #include "make.h"
 #include "hash.h"
 #include "dir.h"
+#include "job.h"
 
 /*
  *	A search path consists of a Lst of Path structures. A Path structure
@@ -1463,9 +1464,11 @@ Dir_MTime(GNode *gn, Boolean recheck)
 			 * so that we give that to the compiler.
 			 */
 			gn->path = bmake_strdup(fullName);
-			fprintf(stdout,
-				"%s: ignoring stale %s for %s, found %s\n",
-				progname, makeDependfile, gn->name, fullName);
+			if (!Job_RunTarget(".STALE", gn->fname))
+			    fprintf(stdout,
+				"%s: %s, %d: ignoring stale %s for %s, "
+				"found %s\n", progname, gn->fname, gn->lineno,
+				makeDependfile, gn->name, fullName);
 		    }
 		}
 	    }

Modified: projects/counters/contrib/bmake/job.c
==============================================================================
--- projects/counters/contrib/bmake/job.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/job.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $	*/
+/*	$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: job.c,v 1.165 2013/01/26 15:52:59 christos Exp $");
+__RCSID("$NetBSD: job.c,v 1.172 2013/03/05 22:01:43 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -142,6 +142,7 @@ __RCSID("$NetBSD: job.c,v 1.165 2013/01/
 #include <sys/time.h>
 #include "wait.h"
 
+#include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
 #if !defined(USE_SELECT) && defined(HAVE_POLL_H)
@@ -1245,8 +1246,10 @@ Job_CheckCommands(GNode *gn, void (*abor
 	    static const char msg[] = ": don't know how to make";
 
 	    if (gn->flags & FROM_DEPEND) {
-		fprintf(stdout, "%s: ignoring stale %s for %s\n",
-			progname, makeDependfile, gn->name);
+		if (!Job_RunTarget(".STALE", gn->fname))
+		    fprintf(stdout, "%s: %s, %d: ignoring stale %s for %s\n",
+			progname, gn->fname, gn->lineno, makeDependfile,
+			gn->name);
 		return TRUE;
 	    }
 
@@ -2063,32 +2066,45 @@ Job_CatchOutput(void)
     (void)fflush(stdout);
 
     /* The first fd in the list is the job token pipe */
-    nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC);
+    do {
+	nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC);
+    } while (nready < 0 && errno == EINTR);
 
-    if (nready < 0 || readyfd(&childExitJob)) {
+    if (nready < 0)
+	Punt("poll: %s", strerror(errno));
+
+    if (nready > 0 && readyfd(&childExitJob)) {
 	char token = 0;
-	nready -= 1;
-	while (read(childExitJob.inPipe, &token, 1) == -1 && errno == EAGAIN)
-		continue;
-	if (token == DO_JOB_RESUME[0])
-	    /* Complete relay requested from our SIGCONT handler */
-	    JobRestartJobs();
-	Job_CatchChildren();
+	ssize_t count;
+	count = read(childExitJob.inPipe, &token, 1);
+	switch (count) {
+	case 0:
+	    Punt("unexpected eof on token pipe");
+	case -1:
+	    Punt("token pipe read: %s", strerror(errno));
+	case 1:
+	    if (token == DO_JOB_RESUME[0])
+		/* Complete relay requested from our SIGCONT handler */
+		JobRestartJobs();
+	    break;
+	default:
+	    abort();
+	}
+	--nready;
     }
 
-    if (nready <= 0)
-	return;
-
-    if (wantToken && readyfd(&tokenWaitJob))
-	nready--;
+    Job_CatchChildren();
+    if (nready == 0)
+	    return;
 
     for (i = 2; i < nfds; i++) {
 	if (!fds[i].revents)
 	    continue;
 	job = jobfds[i];
-	if (job->job_state != JOB_ST_RUNNING)
-	    continue;
-	JobDoOutput(job, FALSE);
+	if (job->job_state == JOB_ST_RUNNING)
+	    JobDoOutput(job, FALSE);
+	if (--nready == 0)
+		return;
     }
 }
 
@@ -2179,8 +2195,6 @@ Job_SetPrefix(void)
 void
 Job_Init(void)
 {
-    GNode         *begin;     /* node for commands to do at the very start */
-
     /* Allocate space for all the job info */
     job_table = bmake_malloc(maxJobs * sizeof *job_table);
     memset(job_table, 0, maxJobs * sizeof *job_table);
@@ -2256,15 +2270,7 @@ Job_Init(void)
     ADDSIG(SIGCONT, JobContinueSig)
 #undef ADDSIG
 
-    begin = Targ_FindNode(".BEGIN", TARG_NOCREATE);
-
-    if (begin != NULL) {
-	JobRun(begin);
-	if (begin->made == ERROR) {
-	    PrintOnError(begin, "\n\nStop.");
-	    exit(1);
-	}
-    }
+    (void)Job_RunTarget(".BEGIN", NULL);
     postCommands = Targ_FindNode(".END", TARG_CREATE);
 }
 
@@ -2930,6 +2936,38 @@ Job_TokenWithdraw(void)
     return TRUE;
 }
 
+/*-
+ *-----------------------------------------------------------------------
+ * Job_RunTarget --
+ *	Run the named target if found. If a filename is specified, then
+ *	set that to the sources.
+ *
+ * Results:
+ *	None
+ *
+ * Side Effects:
+ * 	exits if the target fails.
+ *
+ *-----------------------------------------------------------------------
+ */
+Boolean
+Job_RunTarget(const char *target, const char *fname) {
+    GNode *gn = Targ_FindNode(target, TARG_NOCREATE);
+
+    if (gn == NULL)
+	return FALSE;
+
+    if (fname)
+	Var_Set(ALLSRC, fname, gn, 0);
+
+    JobRun(gn);
+    if (gn->made == ERROR) {
+	PrintOnError(gn, "\n\nStop.");
+	exit(1);
+    }
+    return TRUE;
+}
+
 #ifdef USE_SELECT
 int
 emul_poll(struct pollfd *fd, int nfd, int timeout)

Modified: projects/counters/contrib/bmake/job.h
==============================================================================
--- projects/counters/contrib/bmake/job.h	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/job.h	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.h,v 1.40 2010/09/13 15:36:57 sjg Exp $	*/
+/*	$NetBSD: job.h,v 1.41 2013/03/05 22:01:44 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -268,5 +268,6 @@ void Job_TokenReturn(void);
 Boolean Job_TokenWithdraw(void);
 void Job_ServerStart(int, int, int);
 void Job_SetPrefix(void);
+Boolean Job_RunTarget(const char *, const char *);
 
 #endif /* _JOB_H_ */

Modified: projects/counters/contrib/bmake/main.c
==============================================================================
--- projects/counters/contrib/bmake/main.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/main.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $	*/
+/*	$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
@@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.205 2013/01/26 15:53:00 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.210 2013/03/23 05:31:29 sjg Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -119,9 +119,7 @@ __RCSID("$NetBSD: main.c,v 1.205 2013/01
 #include <sys/resource.h>
 #include <signal.h>
 #include <sys/stat.h>
-#ifdef MAKE_NATIVE
 #include <sys/utsname.h>
-#endif
 #include "wait.h"
 
 #include <errno.h>
@@ -768,7 +766,7 @@ MakeMode(const char *mode)
 	}
 #if USE_META
 	if (strstr(mode, "meta"))
-	    meta_init(mode);
+	    meta_mode_init(mode);
 #endif
     }
     if (mp)
@@ -813,9 +811,7 @@ main(int argc, char **argv)
 	static char defsyspath[] = _PATH_DEFSYSPATH;
 	char found_path[MAXPATHLEN + 1];	/* for searching for sys.mk */
 	struct timeval rightnow;		/* to initialize random seed */
-#ifdef MAKE_NATIVE
 	struct utsname utsname;
-#endif
 
 	/* default to writing debug to stderr */
 	debug_file = stderr;
@@ -834,7 +830,7 @@ main(int argc, char **argv)
 		progname++;
 	else
 		progname = argv[0];
-#ifdef RLIMIT_NOFILE
+#if defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE))
 	/*
 	 * get rid of resource limit on file descriptors
 	 */
@@ -848,6 +844,12 @@ main(int argc, char **argv)
 	}
 #endif
 
+	if (uname(&utsname) == -1) {
+	    (void)fprintf(stderr, "%s: uname failed (%s).\n", progname,
+		strerror(errno));
+	    exit(2);
+	}
+
 	/*
 	 * Get the name of this type of MACHINE from utsname
 	 * so we can share an executable for similar machines.
@@ -858,11 +860,6 @@ main(int argc, char **argv)
 	 */
 	if (!machine) {
 #ifdef MAKE_NATIVE
-	    if (uname(&utsname) == -1) {
-		(void)fprintf(stderr, "%s: uname failed (%s).\n", progname,
-		    strerror(errno));
-		exit(2);
-	    }
 	    machine = utsname.machine;
 #else
 #ifdef MAKE_MACHINE
@@ -892,6 +889,7 @@ main(int argc, char **argv)
 	 */
 	Var_Init();		/* Initialize the lists of variables for
 				 * parsing arguments */
+	Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL, 0);
 	Var_Set("MACHINE", machine, VAR_GLOBAL, 0);
 	Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0);
 #ifdef MAKE_VERSION
@@ -987,6 +985,9 @@ main(int argc, char **argv)
 	}
 	Job_SetPrefix();
 
+#ifdef USE_META
+	meta_init();
+#endif
 	/*
 	 * First snag any flags out of the MAKE environment variable.
 	 * (Note this is *not* MAKEFLAGS since /bin/make uses that and it's
@@ -1697,7 +1698,7 @@ Finish(int errors)
 }
 
 /*
- * enunlink --
+ * eunlink --
  *	Remove a file carefully, avoiding directories.
  */
 int

Modified: projects/counters/contrib/bmake/make.1
==============================================================================
--- projects/counters/contrib/bmake/make.1	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/make.1	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $
+.\"	$NetBSD: make.1,v 1.213 2013/03/31 05:49:51 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd January 23, 2013
+.Dd March 30, 2013
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -874,6 +874,13 @@ by appending their names to
 is re-exported whenever
 .Ql Va .MAKEOVERRIDES
 is modified.
+.It Va .MAKE.PATH_FILEMON
+If
+.Nm
+was built with 
+.Xr filemon 4
+support, this is set to the path of the device node.
+This allows makefiles to test for this support.
 .It Va .MAKE.PID
 The process-id of
 .Nm .
@@ -1757,6 +1764,20 @@ targets.
 Ignore differences in commands when deciding if target is out of date.
 This is useful if the command contains a value which always changes.
 If the number of commands change, though, the target will still be out of date.
+The same effect applies to any command line that uses the variable
+.Va .OODATE ,
+which can be used for that purpose even when not otherwise needed or desired:
+.Bd -literal -offset indent
+
+skip-compare-for-some:
+	@echo this will be compared
+	@echo this will not ${.OODATE:M.NOMETA_CMP}
+	@echo this will also be compared
+
+.Ed
+The
+.Cm \&:M
+pattern suppresses any expansion of the unwanted variable.
 .It Ic .NOPATH
 Do not search for the target in the directories specified by
 .Ic .PATH .
@@ -2008,6 +2029,10 @@ If no sources are specified, the
 .Ic .SILENT
 attribute is applied to every
 command in the file.
+.It Ic .STALE
+This target gets run when a dependency file contains stale entries, having
+.Va .ALLSRC
+set to the name of that dependency file.
 .It Ic .SUFFIXES
 Each source specifies a suffix to
 .Nm .

Modified: projects/counters/contrib/bmake/make.h
==============================================================================
--- projects/counters/contrib/bmake/make.h	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/make.h	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.h,v 1.89 2012/06/12 19:21:51 joerg Exp $	*/
+/*	$NetBSD: make.h,v 1.90 2013/02/25 01:57:14 dholland Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -103,7 +103,7 @@
 	((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||			\
 	 (__GNUC__ > (x)))
 #else /* defined(__GNUC__) */
-#define	MAKE_GNUC_PREREQx, y)	0
+#define	MAKE_GNUC_PREREQ(x, y)	0
 #endif /* defined(__GNUC__) */
 
 #if MAKE_GNUC_PREREQ(2, 7)

Modified: projects/counters/contrib/bmake/meta.c
==============================================================================
--- projects/counters/contrib/bmake/meta.c	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/meta.c	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.26 2013/01/19 04:23:37 sjg Exp $ */
+/*      $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -539,8 +539,24 @@ boolValue(char *s)
     return TRUE;
 }
 
+/*
+ * Initialization we need before reading makefiles.
+ */
+void
+meta_init()
+{
+#ifdef USE_FILEMON
+	/* this allows makefiles to test if we have filemon support */
+	Var_Set(".MAKE.PATH_FILEMON", _PATH_FILEMON, VAR_GLOBAL, 0);
+#endif
+}
+
+
+/*
+ * Initialization we need after reading makefiles.
+ */
 void
-meta_init(const char *make_mode)
+meta_mode_init(const char *make_mode)
 {
     static int once = 0;
     char *cp;
@@ -1037,6 +1053,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 			    char *tp = Lst_Datum(ln);
 			    Lst_Remove(missingFiles, ln);
 			    free(tp);
+			    ln = NULL;	/* we're done with it */
 			}
 		    }
 		    break;
@@ -1196,17 +1213,19 @@ meta_oodate(GNode *gn, Boolean oodate)
 		    oodate = TRUE;
 		} else {
 		    char *cmd = (char *)Lst_Datum(ln);
+		    Boolean hasOODATE = FALSE;
 
-		    if (!needOODATE) {
-			if (strstr(cmd, "$?"))
-			    needOODATE = TRUE;
-			else if ((cp = strstr(cmd, ".OODATE"))) {
-			    /* check for $[{(].OODATE[)}] */
-			    if (cp > cmd + 2 && cp[-2] == '$')
-				needOODATE = TRUE;
-			}
-			if (needOODATE && DEBUG(META))
-			    fprintf(debug_file, "%s: %d: cannot compare commands using .OODATE\n", fname, lineno);
+		    if (strstr(cmd, "$?"))
+			hasOODATE = TRUE;
+		    else if ((cp = strstr(cmd, ".OODATE"))) {
+			/* check for $[{(].OODATE[:)}] */
+			if (cp > cmd + 2 && cp[-2] == '$')
+			    hasOODATE = TRUE;
+		    }
+		    if (hasOODATE) {
+			needOODATE = TRUE;
+			if (DEBUG(META))
+			    fprintf(debug_file, "%s: %d: cannot compare command using .OODATE\n", fname, lineno);
 		    }
 		    cmd = Var_Subst(NULL, cmd, gn, TRUE);
 
@@ -1235,7 +1254,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 			if (buf[x - 1] == '\n')
 			    buf[x - 1] = '\0';
 		    }
-		    if (!needOODATE &&
+		    if (!hasOODATE &&
 			!(gn->type & OP_NOMETA_CMP) &&
 			strcmp(p, cmd) != 0) {
 			if (DEBUG(META))

Modified: projects/counters/contrib/bmake/meta.h
==============================================================================
--- projects/counters/contrib/bmake/meta.h	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/meta.h	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.h,v 1.2 2011/03/30 22:03:49 sjg Exp $ */
+/*      $NetBSD: meta.h,v 1.3 2013/03/23 05:31:29 sjg Exp $ */
 
 /*
  * Things needed for 'meta' mode.
@@ -41,7 +41,8 @@ typedef struct BuildMon {
 extern Boolean useMeta;
 
 struct Job;				/* not defined yet */
-void meta_init(const char *);
+void meta_init(void);
+void meta_mode_init(const char *);
 void meta_job_start(struct Job *, GNode *);
 void meta_job_child(struct Job *);
 void meta_job_error(struct Job *, GNode *, int, int);

Modified: projects/counters/contrib/bmake/mk/ChangeLog
==============================================================================
--- projects/counters/contrib/bmake/mk/ChangeLog	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/mk/ChangeLog	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,3 +1,71 @@
+2013-03-30  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized.
+	* install-mk (MK_VERSION): bump version
+
+2013-03-21  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version
+	* gendirdeps.mk: do not apply :tA to DPADD entries, since we lose
+	  any trailing /., rather apply :tA only when needed.
+	* gendirdeps.mk: better mimic meta2deps handling of .dirdep files.
+	* meta.stage.mk (LN_CP_SCRIPT): Add LnCp to do the ln||cp dance
+	  consistently.
+	* dirdeps.mk: better describe the dance in sys.mk for TARGET_SPEC.
+	
+2013-03-18  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* gendirdeps.mk: revert the dance around .MAKE.DEPENDFILE_DEFAULT
+	  it is simpler to just not update when say building for "host"
+	  (where we know we apply filters to DIRDEPS), and using a
+	  non-machine qualified dependfile.
+
+2013-03-16  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* dirdeps.mk: improve DIRDEPS filtering by allowing DEP_SKIP_DIR
+	  and DEP_DIRDEPS_FILTER to vary by DEP_MACHINE and DEP_TARGET_SPEC
+	* gendirdeps.mk: ensure _objroot has trailing / if it needs it.
+	* meta2deps.py: if machine is "host", then also trim
+	  self.host_target from any OBJROOTS.
+	
+
+2013-03-11  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* gendirdeps.mk: if .MAKE.DEPENDFILE_DEFAULT is not machine
+	  qualified but _DEPENDFILE is, and .MAKE.DEPENDFILE_DEFAULT exists
+	  but _DEPENDFILE does not, compare the new _DEPENDFILE against
+	  .MAKE.DEPENDFILE_DEFAULT and discard if the same.
+
+2013-03-08  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* meta.stage.mk: use STAGE_TARGETS to control .ORDER
+	  and hook to all: via staging:
+
+2013-03-07  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* sys.dependfile.mk (.MAKE.DEPENDFILE_DEFAULT): 
+	  use a separate variable for the default .MAKE.DEPENDFILE value
+	  so that it can be controlled independently of
+	  .MAKE.DEPENDFILE_PREFERENCE
+
+	* meta.stage.mk: throw error if cp fails etc.
+	  Stage*() return early if passed no args.
+	  .ORDER stage_*
+
+2013-03-03  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version
+	* gendirdeps.mk: handle multiple M2D_OBJROOTS better.
+
+2013-02-10  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* install-mk (MK_VERSION): bump version to 20130210
+	* import latest dirdeps.mk, gendirdeps.mk and meta2deps.py 
+	  from Juniper. 
+	  o dirdeps.mk now fully supports TARGET_SPEC consisting of more
+	    than just MACHINE.
+	  o no longer use DEP_MACHINE from Makefile.depend* so remove it.
+	
 2013-01-23  Simon J. Gerraty  <sjg@bad.crufty.net>
 
 	* install-mk (MK_VERSION): bump version to 20130123

Modified: projects/counters/contrib/bmake/mk/dirdeps.mk
==============================================================================
--- projects/counters/contrib/bmake/mk/dirdeps.mk	Sat Apr  6 07:10:54 2013	(r249183)
+++ projects/counters/contrib/bmake/mk/dirdeps.mk	Sat Apr  6 07:14:50 2013	(r249184)
@@ -1,6 +1,7 @@
-# $Id: dirdeps.mk,v 1.23 2012/11/06 05:44:03 sjg Exp $
+# $Id: dirdeps.mk,v 1.28 2013/03/25 21:11:43 sjg Exp $
 
-# Copyright (c) 2010-2012, Juniper Networks, Inc.
+# Copyright (c) 2010-2013, Juniper Networks, Inc.
+# All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions 
@@ -33,21 +34,31 @@
 # This is what we do with DIRDEPS
 
 # DIRDEPS:
-#	This is a list of directories - relative to SRCTOP, it is only
-#	of interest to .MAKE.LEVEL 0.
+#	This is a list of directories - relative to SRCTOP, it is
+#	normally only of interest to .MAKE.LEVEL 0.
 #	In some cases the entry may be qualified with a .<machine>
-#	suffix, for example to force building something for the pseudo
+#	or .<target_spec> suffix (see TARGET_SPEC_VARS below),
+#	for example to force building something for the pseudo
 #	machines "host" or "common" regardless of current ${MACHINE}.
-#	All unqualified entries end up being qualified with .${MACHINE}
-#	and _DIRDEPS_USE below, uses the suffix to set MACHINE
+#	
+#	All unqualified entries end up being qualified with .${TARGET_SPEC}
+#	and partially qualified (if TARGET_SPEC_VARS has multiple
+#	entries) are also expanded to a full .<target_spec>.
+#	The  _DIRDEPS_USE target uses the suffix to set TARGET_SPEC
 #	correctly when visiting each entry.
 #
-#	Each entry is also converted into a set of paths to look for
-#	Makefile.depend.<machine> to learn the dependencies of each.
-#	Each Makefile.depend.<machine> sets DEP_RELDIR to be the
+#	The fully qualified directory entries are used to construct a
+#	dependency graph that will drive the build later.
+#	
+#	Also, for each fully qualified directory target, we will search
+#	using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional
+#	dependencies.  We use Makefile.depend (default value for
+#	.MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to
+#	distinguish them from others.
+#	
+#	Each Makefile.depend file sets DEP_RELDIR to be the
 #	the RELDIR (path relative to SRCTOP) for its directory, and
-#	DEP_MACHINE to its suffix (<machine>), further since
-#	each Makefile.depend.<machine> includes dirdeps.mk, this
+#	since each Makefile.depend file includes dirdeps.mk, this
 #	processing is recursive and results in .MAKE.LEVEL 0 learning the
 #	dependencies of the tree wrt the initial directory (_DEP_RELDIR).
 #
@@ -55,38 +66,49 @@
 #	Indicates whether .MAKE.LEVEL 0 builds anything:
 #	if "no" sub-makes are used to build everything,
 #	if "yes" sub-makes are only used to build for other machines.
+#	It is best to use "no", but this can require fixing some
+#	makefiles to not do anything at .MAKE.LEVEL 0.
 #
 # TARGET_SPEC_VARS
-#	All the description above (and below) assumes <machine> is the
-#	only data needed to control the build.
-#	This is not always the case.  So in addition to setting
-#	MACHINE in the build environment we set TARGET_SPEC which is
-#	composed of the values of TARGET_SPEC_VARS separated by
-#	commas.  The default is just MACHINE.
+#	The default value is just MACHINE, and for most environments
+#	this is sufficient.  The _DIRDEPS_USE target actually sets
+#	both MACHINE and TARGET_SPEC to the suffix of the current
+#	target so that in the general case TARGET_SPEC can be ignored.
 #

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

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 08:36:27 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 73C991FC;
 Sat,  6 Apr 2013 08:36:27 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4BEF4659;
 Sat,  6 Apr 2013 08:36:27 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r368aR9t014598;
 Sat, 6 Apr 2013 08:36:27 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r368aQoJ014592;
 Sat, 6 Apr 2013 08:36:26 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304060836.r368aQoJ014592@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Sat, 6 Apr 2013 08:36:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249190 - in projects/counters/sys:
 cddl/contrib/opensolaris/uts/common/fs/zfs sys
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 08:36:27 -0000

Author: glebius
Date: Sat Apr  6 08:36:26 2013
New Revision: 249190
URL: http://svnweb.freebsd.org/changeset/base/249190

Log:
  Merge head r243428 through r249189.

Modified:
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/counters/sys/sys/proc.h
  projects/counters/sys/sys/systm.h
Directory Properties:
  projects/counters/   (props changed)
  projects/counters/sys/   (props changed)
  projects/counters/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sat Apr  6 08:23:38 2013	(r249189)
+++ projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sat Apr  6 08:36:26 2013	(r249190)
@@ -22,6 +22,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
  */
 
@@ -1525,7 +1526,8 @@ spa_check_removed(vdev_t *vd)
 	for (int c = 0; c < vd->vdev_children; c++)
 		spa_check_removed(vd->vdev_child[c]);
 
-	if (vd->vdev_ops->vdev_op_leaf && vdev_is_dead(vd)) {
+	if (vd->vdev_ops->vdev_op_leaf && vdev_is_dead(vd) &&
+	    !vd->vdev_ishole) {
 		zfs_post_autoreplace(vd->vdev_spa, vd);
 		spa_event_notify(vd->vdev_spa, vd, ESC_ZFS_VDEV_CHECK);
 	}

Modified: projects/counters/sys/sys/proc.h
==============================================================================
--- projects/counters/sys/sys/proc.h	Sat Apr  6 08:23:38 2013	(r249189)
+++ projects/counters/sys/sys/proc.h	Sat Apr  6 08:36:26 2013	(r249190)
@@ -341,9 +341,6 @@ do {									\
 #define	THREAD_LOCKPTR_ASSERT(td, lock)
 #endif
 
-#define	CRITICAL_ASSERT(td)						\
-    KASSERT((td)->td_critnest >= 1, ("Not in critical section"));
-
 /*
  * Flags kept in td_flags:
  * To change these you MUST have the scheduler lock.

Modified: projects/counters/sys/sys/systm.h
==============================================================================
--- projects/counters/sys/sys/systm.h	Sat Apr  6 08:23:38 2013	(r249189)
+++ projects/counters/sys/sys/systm.h	Sat Apr  6 08:36:26 2013	(r249190)
@@ -112,6 +112,12 @@ void	kassert_panic(const char *fmt, ...)
 	    ((uintptr_t)&(var) & (sizeof(void *) - 1)) == 0, msg)
 
 /*
+ * Assert that a thread is in critical(9) section.
+ */
+#define	CRITICAL_ASSERT(td)						\
+	KASSERT((td)->td_critnest >= 1, ("Not in critical section"));
+ 
+/*
  * If we have already panic'd and this is the thread that called
  * panic(), then don't block on any mutexes but silently succeed.
  * Otherwise, the kernel will deadlock since the scheduler isn't

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 08:49:46 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 7190038D;
 Sat,  6 Apr 2013 08:49:46 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 62994695;
 Sat,  6 Apr 2013 08:49:46 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r368nkq3017907;
 Sat, 6 Apr 2013 08:49:46 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r368njqw017899;
 Sat, 6 Apr 2013 08:49:45 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304060849.r368njqw017899@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Sat, 6 Apr 2013 08:49:45 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249191 - in projects/counters/sys: arm/include
 i386/include ia64/include mips/include powerpc/include sparc64/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 08:49:46 -0000

Author: glebius
Date: Sat Apr  6 08:49:44 2013
New Revision: 249191
URL: http://svnweb.freebsd.org/changeset/base/249191

Log:
  Pass curthread to CRITICAL_ASSERT().

Modified:
  projects/counters/sys/arm/include/counter.h
  projects/counters/sys/i386/include/counter.h
  projects/counters/sys/ia64/include/counter.h
  projects/counters/sys/mips/include/counter.h
  projects/counters/sys/powerpc/include/counter.h
  projects/counters/sys/sparc64/include/counter.h

Modified: projects/counters/sys/arm/include/counter.h
==============================================================================
--- projects/counters/sys/arm/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/arm/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -35,7 +35,7 @@
 #define	counter_exit()	critical_exit()
 
 #define	counter_u64_add_protected(c, inc)	do {	\
-	CRITICAL_ASSERT(td);				\
+	CRITICAL_ASSERT(curthread);			\
 	*(uint64_t *)zpcpu_get(c) += (inc);		\
 } while (0)
 

Modified: projects/counters/sys/i386/include/counter.h
==============================================================================
--- projects/counters/sys/i386/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/i386/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -64,7 +64,7 @@ counter_64_inc_8b(uint64_t *p, int64_t i
 
 #define	counter_u64_add_protected(c, inc)	do {	\
 	if ((cpu_feature & CPUID_CX8) == 0) {		\
-		CRITICAL_ASSERT(td);			\
+		CRITICAL_ASSERT(curthread);		\
 		*(uint64_t *)zpcpu_get(c) += (inc);	\
 	} else						\
 		counter_64_inc_8b((c), (inc));		\

Modified: projects/counters/sys/ia64/include/counter.h
==============================================================================
--- projects/counters/sys/ia64/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/ia64/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -35,7 +35,7 @@
 #define	counter_exit()	critical_exit()
 
 #define	counter_u64_add_protected(c, inc)	do {	\
-	CRITICAL_ASSERT(td);				\
+	CRITICAL_ASSERT(curthread);			\
 	*(uint64_t *)zpcpu_get(c) += (inc);		\
 } while (0)
 

Modified: projects/counters/sys/mips/include/counter.h
==============================================================================
--- projects/counters/sys/mips/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/mips/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -35,7 +35,7 @@
 #define	counter_exit()	critical_exit()
 
 #define	counter_u64_add_protected(c, inc)	do {	\
-	CRITICAL_ASSERT(td);				\
+	CRITICAL_ASSERT(curthread);			\
 	*(uint64_t *)zpcpu_get(c) += (inc);		\
 } while (0)
 

Modified: projects/counters/sys/powerpc/include/counter.h
==============================================================================
--- projects/counters/sys/powerpc/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/powerpc/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -61,7 +61,7 @@ counter_u64_add(counter_u64_t c, int64_t
 #define	counter_exit()	critical_exit()
 
 #define	counter_u64_add_protected(c, inc)	do {	\
-	CRITICAL_ASSERT(td);				\
+	CRITICAL_ASSERT(curthread);			\
 	*(uint64_t *)zpcpu_get(c) += (inc);		\
 } while (0)
 

Modified: projects/counters/sys/sparc64/include/counter.h
==============================================================================
--- projects/counters/sys/sparc64/include/counter.h	Sat Apr  6 08:36:26 2013	(r249190)
+++ projects/counters/sys/sparc64/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
@@ -35,7 +35,7 @@
 #define	counter_exit()	critical_exit()
 
 #define	counter_u64_add_protected(c, inc)	do {	\
-	CRITICAL_ASSERT(td);				\
+	CRITICAL_ASSERT(curthread);			\
 	*(uint64_t *)zpcpu_get(c) += (inc);		\
 } while (0)
 

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 09:57:30 2013
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:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id 0053C99E;
 Sat,  6 Apr 2013 09:57:29 +0000 (UTC)
 (envelope-from glebius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E67AE7ED;
 Sat,  6 Apr 2013 09:57:29 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r369vTbd037909;
 Sat, 6 Apr 2013 09:57:29 GMT (envelope-from glebius@svn.freebsd.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r369vS5o037900;
 Sat, 6 Apr 2013 09:57:28 GMT (envelope-from glebius@svn.freebsd.org)
Message-Id: <201304060957.r369vS5o037900@svn.freebsd.org>
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Sat, 6 Apr 2013 09:57:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249192 - in projects/counters/sys: arm/include
 i386/include ia64/include mips/include powerpc/include sparc64/include
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 09:57:30 -0000

Author: glebius
Date: Sat Apr  6 09:57:27 2013
New Revision: 249192
URL: http://svnweb.freebsd.org/changeset/base/249192

Log:
  Add dirty namespace pollution to make CRITICAL_ASSERT() work.

Modified:
  projects/counters/sys/arm/include/counter.h
  projects/counters/sys/i386/include/counter.h
  projects/counters/sys/ia64/include/counter.h
  projects/counters/sys/mips/include/counter.h
  projects/counters/sys/powerpc/include/counter.h
  projects/counters/sys/sparc64/include/counter.h

Modified: projects/counters/sys/arm/include/counter.h
==============================================================================
--- projects/counters/sys/arm/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/arm/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 
 #define	counter_enter()	critical_enter()
 #define	counter_exit()	critical_exit()

Modified: projects/counters/sys/i386/include/counter.h
==============================================================================
--- projects/counters/sys/i386/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/i386/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 #include <machine/md_var.h>
 #include <machine/specialreg.h>
 

Modified: projects/counters/sys/ia64/include/counter.h
==============================================================================
--- projects/counters/sys/ia64/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/ia64/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 
 #define	counter_enter()	critical_enter()
 #define	counter_exit()	critical_exit()

Modified: projects/counters/sys/mips/include/counter.h
==============================================================================
--- projects/counters/sys/mips/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/mips/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 
 #define	counter_enter()	critical_enter()
 #define	counter_exit()	critical_exit()

Modified: projects/counters/sys/powerpc/include/counter.h
==============================================================================
--- projects/counters/sys/powerpc/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/powerpc/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 
 #if defined(AIM) && defined(__powerpc64__)
 

Modified: projects/counters/sys/sparc64/include/counter.h
==============================================================================
--- projects/counters/sys/sparc64/include/counter.h	Sat Apr  6 08:49:44 2013	(r249191)
+++ projects/counters/sys/sparc64/include/counter.h	Sat Apr  6 09:57:27 2013	(r249192)
@@ -30,6 +30,9 @@
 #define __MACHINE_COUNTER_H__
 
 #include <sys/pcpu.h>
+#ifdef INVARIANTS
+#include <sys/proc.h>
+#endif
 
 #define	counter_enter()	critical_enter()
 #define	counter_exit()	critical_exit()

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 17:20:28 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 71BDE479;
 Sat,  6 Apr 2013 17:20:28 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 61811807;
 Sat,  6 Apr 2013 17:20:28 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r36HKSG6069535;
 Sat, 6 Apr 2013 17:20:28 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r36HKNtW069501;
 Sat, 6 Apr 2013 17:20:23 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304061720.r36HKNtW069501@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Sat, 6 Apr 2013 17:20:23 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249208 - in projects/camlock: .
 cddl/contrib/opensolaris/lib/libzpool/common
 cddl/contrib/opensolaris/lib/libzpool/common/sys lib/libc/sys
 lib/libpam/modules/pam_unix share/misc sys/am...
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 17:20:28 -0000

Author: mav
Date: Sat Apr  6 17:20:22 2013
New Revision: 249208
URL: http://svnweb.freebsd.org/changeset/base/249208

Log:
  MFC @ r249206

Added:
  projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
     - copied unchanged from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
Deleted:
  projects/camlock/sys/dev/ata/ata-queue.c
  projects/camlock/usr.sbin/bhyve/uart.c
Modified:
  projects/camlock/ObsoleteFiles.inc
  projects/camlock/UPDATING
  projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
  projects/camlock/lib/libc/sys/getsockopt.2
  projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c
  projects/camlock/share/misc/committers-ports.dot
  projects/camlock/sys/amd64/vmm/io/vlapic.c
  projects/camlock/sys/arm/arm/machdep.c
  projects/camlock/sys/arm/arm/vfp.c
  projects/camlock/sys/arm/include/setjmp.h
  projects/camlock/sys/arm/ti/aintc.c
  projects/camlock/sys/cam/ata/ata_all.h
  projects/camlock/sys/cam/ata/ata_da.c
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_ccb.h
  projects/camlock/sys/cam/ctl/ctl_backend_block.c
  projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/camlock/sys/conf/files
  projects/camlock/sys/dev/ata/ata-all.c
  projects/camlock/sys/dev/ata/ata-all.h
  projects/camlock/sys/dev/ata/ata-lowlevel.c
  projects/camlock/sys/dev/ciss/ciss.c
  projects/camlock/sys/dev/usb/serial/uftdi.c
  projects/camlock/sys/dev/usb/usbdevs
  projects/camlock/sys/geom/geom_dev.c
  projects/camlock/sys/kern/kern_intr.c
  projects/camlock/sys/kern/kern_sig.c
  projects/camlock/sys/modules/ata/atacore/Makefile
  projects/camlock/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
  projects/camlock/sys/sys/proc.h
  projects/camlock/sys/sys/systm.h
  projects/camlock/sys/vm/vm_radix.c
  projects/camlock/usr.bin/calendar/calendar.1
  projects/camlock/usr.sbin/bhyve/Makefile
  projects/camlock/usr.sbin/bhyve/mptbl.c
  projects/camlock/usr.sbin/bluetooth/ath3kfw/ath3kfw.c
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/cddl/   (props changed)
  projects/camlock/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/lib/libc/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/amd64/vmm/   (props changed)
  projects/camlock/sys/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/sys/conf/   (props changed)
  projects/camlock/usr.bin/calendar/   (props changed)
  projects/camlock/usr.sbin/bhyve/   (props changed)

Modified: projects/camlock/ObsoleteFiles.inc
==============================================================================
--- projects/camlock/ObsoleteFiles.inc	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/ObsoleteFiles.inc	Sat Apr  6 17:20:22 2013	(r249208)
@@ -43,7 +43,7 @@ OLD_FILES+=sbin/atacontrol
 OLD_FILES+=usr/share/man/man8/atacontrol.8.gz
 OLD_FILES+=usr/share/man/man4/atapicam.4.gz
 OLD_FILES+=usr/share/man/man4/ataraid.4.gz
-OLD_FILES+=usr.sbin/burncd
+OLD_FILES+=usr/sbin/burncd
 OLD_FILES+=usr/share/man/man8/burncd.8.gz
 # 20130316: vinum.4 removed
 OLD_FILES+=usr/share/man/man4/vinum.4.gz

Modified: projects/camlock/UPDATING
==============================================================================
--- projects/camlock/UPDATING	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/UPDATING	Sat Apr  6 17:20:22 2013	(r249208)
@@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20130404:
+	Legacy ATA stack, disabled and replaced by new CAM-based one since
+	FreeBSD 9.0, completely removed from the sources.  Kernel modules
+	atadisk and atapi*, user-level tools atacontrol and burncd are
+	removed.  Kernel option `options ATA_CAM` is now permanently enabled
+	and removed.
+
 20130308:
 	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
 	information, see the respective 20130304 entry).

Modified: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
==============================================================================
--- projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,6 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2012, Joyent, Inc. All rights reserved.
  */
 
@@ -86,6 +87,9 @@ extern "C" {
 #include <sys/sysevent/dev.h>
 #include <machine/atomic.h>
 #include <sys/debug.h>
+#ifdef illumos
+#include "zfs.h"
+#endif
 
 #define	ZFS_EXPORTS_PATH	"/etc/zfs/exports"
 
@@ -133,28 +137,64 @@ extern int aok;
 
 #ifdef DTRACE_PROBE
 #undef	DTRACE_PROBE
-#define	DTRACE_PROBE(a)	((void)0)
 #endif	/* DTRACE_PROBE */
+#ifdef illumos
+#define	DTRACE_PROBE(a) \
+	ZFS_PROBE0(#a)
+#endif
 
 #ifdef DTRACE_PROBE1
 #undef	DTRACE_PROBE1
-#define	DTRACE_PROBE1(a, b, c)	((void)0)
 #endif	/* DTRACE_PROBE1 */
+#ifdef illumos
+#define	DTRACE_PROBE1(a, b, c) \
+	ZFS_PROBE1(#a, (unsigned long)c)
+#endif
 
 #ifdef DTRACE_PROBE2
 #undef	DTRACE_PROBE2
-#define	DTRACE_PROBE2(a, b, c, d, e)	((void)0)
 #endif	/* DTRACE_PROBE2 */
+#ifdef illumos
+#define	DTRACE_PROBE2(a, b, c, d, e) \
+	ZFS_PROBE2(#a, (unsigned long)c, (unsigned long)e)
+#endif
 
 #ifdef DTRACE_PROBE3
 #undef	DTRACE_PROBE3
-#define	DTRACE_PROBE3(a, b, c, d, e, f, g)	((void)0)
 #endif	/* DTRACE_PROBE3 */
+#ifdef illumos
+#define	DTRACE_PROBE3(a, b, c, d, e, f, g) \
+	ZFS_PROBE3(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g)
+#endif
 
 #ifdef DTRACE_PROBE4
 #undef	DTRACE_PROBE4
-#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i)	((void)0)
 #endif	/* DTRACE_PROBE4 */
+#ifdef illumos
+#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) \
+	ZFS_PROBE4(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g, \
+	(unsigned long)i)
+#endif
+
+#ifdef illumos
+/*
+ * We use the comma operator so that this macro can be used without much
+ * additional code.  For example, "return (EINVAL);" becomes
+ * "return (SET_ERROR(EINVAL));".  Note that the argument will be evaluated
+ * twice, so it should not have side effects (e.g. something like:
+ * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice).
+ */
+#define	SET_ERROR(err)	(ZFS_SET_ERROR(err), err)
+#else	/* !illumos */
+
+#define	DTRACE_PROBE(a)	((void)0)
+#define	DTRACE_PROBE1(a, b, c)	((void)0)
+#define	DTRACE_PROBE2(a, b, c, d, e)	((void)0)
+#define	DTRACE_PROBE3(a, b, c, d, e, f, g)	((void)0)
+#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i)	((void)0)
+
+#define SET_ERROR(err) (err)
+#endif	/* !illumos */
 
 /*
  * Threads

Copied: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d (from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d	Sat Apr  6 17:20:22 2013	(r249208, copy of r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d)
@@ -0,0 +1,36 @@
+/*
+ * CDDL HEADER START
+ *
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source.  A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2013 by Delphix. All rights reserved.
+ */
+
+provider zfs {
+	probe probe0(char *probename);
+	probe probe1(char *probename, unsigned long arg1);
+	probe probe2(char *probename, unsigned long arg1, unsigned long arg2);
+	probe probe3(char *probename, unsigned long arg1, unsigned long arg2,
+	    unsigned long arg3);
+	probe probe4(char *probename, unsigned long arg1, unsigned long arg2,
+	    unsigned long arg3, unsigned long arg4);
+
+	probe set__error(int err);
+};
+
+#pragma D attributes Evolving/Evolving/ISA provider zfs provider
+#pragma D attributes Private/Private/Unknown provider zfs module
+#pragma D attributes Private/Private/Unknown provider zfs function
+#pragma D attributes Evolving/Evolving/ISA provider zfs name
+#pragma D attributes Evolving/Evolving/ISA provider zfs args

Modified: projects/camlock/lib/libc/sys/getsockopt.2
==============================================================================
--- projects/camlock/lib/libc/sys/getsockopt.2	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/lib/libc/sys/getsockopt.2	Sat Apr  6 17:20:22 2013	(r249208)
@@ -28,7 +28,7 @@
 .\"     @(#)getsockopt.2	8.4 (Berkeley) 5/2/95
 .\" $FreeBSD$
 .\"
-.Dd February 26, 2012
+.Dd April 5, 2013
 .Dt GETSOCKOPT 2
 .Os
 .Sh NAME
@@ -437,7 +437,7 @@ The
 .Vt cmsghdr
 fields have the following values for TIMESTAMP:
 .Bd -literal
-     cmsg_len = sizeof(struct timeval);
+     cmsg_len = CMSG_LEN(sizeof(struct timeval));
      cmsg_level = SOL_SOCKET;
      cmsg_type = SCM_TIMESTAMP;
 .Ed
@@ -445,7 +445,7 @@ fields have the following values for TIM
 and for
 .Dv SO_BINTIME :
 .Bd -literal
-     cmsg_len = sizeof(struct bintime);
+     cmsg_len = CMSG_LEN(sizeof(struct bintime));
      cmsg_level = SOL_SOCKET;
      cmsg_type = SCM_BINTIME;
 .Ed

Modified: projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c
==============================================================================
--- projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -460,14 +460,14 @@ to64(char *s, long v, int n)
 }
 
 /* Salt suitable for traditional DES and MD5 */
-void
-makesalt(char salt[SALTSIZE])
+static void
+makesalt(char salt[SALTSIZE + 1])
 {
 	int i;
 
 	/* These are not really random numbers, they are just
 	 * numbers that change to thwart construction of a
-	 * dictionary. This is exposed to the public.
+	 * dictionary.
 	 */
 	for (i = 0; i < SALTSIZE; i += 4)
 		to64(&salt[i], arc4random(), 4);

Modified: projects/camlock/share/misc/committers-ports.dot
==============================================================================
--- projects/camlock/share/misc/committers-ports.dot	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/share/misc/committers-ports.dot	Sat Apr  6 17:20:22 2013	(r249208)
@@ -51,6 +51,7 @@ alepulver [label="Alejandro Pulver\nalep
 alexbl [label="Alexander Botero-Lowry\nalexbl@FreeBSD.org\n2006/09/11"]
 amdmi3 [label="Dmitry Marakasov\namdmi3@FreeBSD.org\n2008/06/19"]
 anray [label="Andrey Slusar\nanray@FreeBSD.org\n2005/12/11"]
+antoine [label="Antoine Brodin\nantoine@FreeBSD.org\n2013/04/03"]
 araujo [label="Marcelo Araujo\naraujo@FreeBSD.org\n2007/04/26"]
 arved [label="Tilman Linneweh\narved@FreeBSD.org\n2002/10/15"]
 ashish [label="Ashish SHUKLA\nashish@FreeBSD.org\n2010/06/10"]
@@ -283,6 +284,7 @@ delphij -> rafan
 demon -> mat
 
 eadler -> ak
+eadler -> antoine
 eadler -> dbn
 eadler -> bdrewery
 eadler -> gjb
@@ -398,6 +400,7 @@ mat -> thierry
 mezz -> tmclaugh
 
 miwi -> amdmi3
+miwi -> antoine
 miwi -> avilla
 miwi -> beat
 miwi -> bf

Modified: projects/camlock/sys/amd64/vmm/io/vlapic.c
==============================================================================
--- projects/camlock/sys/amd64/vmm/io/vlapic.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/amd64/vmm/io/vlapic.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -128,6 +128,8 @@ static int
 vlapic_timer_divisor(uint32_t dcr)
 {
 	switch (dcr & 0xB) {
+	case APIC_TDCR_1:
+		return (1);
 	case APIC_TDCR_2:
 		return (2);
 	case APIC_TDCR_4:

Modified: projects/camlock/sys/arm/arm/machdep.c
==============================================================================
--- projects/camlock/sys/arm/arm/machdep.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/arm/machdep.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -183,6 +183,10 @@ SYSCTL_UINT(_hw_board, OID_AUTO, revisio
 SYSCTL_STRING(_hw_board, OID_AUTO, serial, CTLFLAG_RD,
     board_serial, 0, "Board serial");
 
+int vfp_exists;
+SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD,
+    &vfp_exists, 0, "Floating point support enabled");
+
 void
 board_set_serial(uint64_t serial)
 {

Modified: projects/camlock/sys/arm/arm/vfp.c
==============================================================================
--- projects/camlock/sys/arm/arm/vfp.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/arm/vfp.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -47,7 +47,7 @@ void	vfp_restore(struct vfp_state *);
 void	vfp_store(struct vfp_state *);
 void	set_coprocessorACR(u_int);
 
-boolean_t vfp_exists;
+extern int vfp_exists;
 static struct undefined_handler vfp10_uh, vfp11_uh;
 
 /* The VFMXR command using coprocessor commands */

Modified: projects/camlock/sys/arm/include/setjmp.h
==============================================================================
--- projects/camlock/sys/arm/include/setjmp.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/include/setjmp.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -87,10 +87,13 @@
 /* Only valid with the _JB_MAGIC_SETJMP magic */
 
 #define _JB_SIGMASK		25
+
+#ifndef __ASSEMBLER__
 #if __BSD_VISIBLE || __POSIX_VISIBLE || __XSI_VISIBLE
 typedef struct _sigjmp_buf { int _sjb[_JBLEN + 1]; } sigjmp_buf[1];
 #endif
 
 typedef struct _jmp_buf { int _jb[_JBLEN + 1]; } jmp_buf[1];
+#endif
 
 #endif /* !_MACHINE_SETJMP_H_ */

Modified: projects/camlock/sys/arm/ti/aintc.c
==============================================================================
--- projects/camlock/sys/arm/ti/aintc.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/ti/aintc.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -157,6 +157,7 @@ arm_get_next_irq(int last_irq)
 	if ((active_irq & 0xffffff80)) {
 		device_printf(ti_aintc_sc->sc_dev,
 			"Spurious interrupt detected (0x%08x)\n", active_irq);
+		aintc_write_4(INTC_SIR_IRQ, 0);
 		return -1;
 	}
 

Modified: projects/camlock/sys/cam/ata/ata_all.h
==============================================================================
--- projects/camlock/sys/cam/ata/ata_all.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_all.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -35,8 +35,9 @@ struct ccb_ataio;
 struct cam_periph;
 union  ccb;
 
-#define	SID_AEN		0x04	/* Abuse inq_flags bit to track enabled AEN. */
-#define	SID_DMA		0x10	/* Abuse inq_flags bit to track enabled DMA. */
+#define	SID_DMA48	0x01 /* Abuse inq_flags bit to track enabled DMA48. */
+#define	SID_AEN		0x04 /* Abuse inq_flags bit to track enabled AEN. */
+#define	SID_DMA		0x10 /* Abuse inq_flags bit to track enabled DMA. */
 
 struct ata_cmd {
 	u_int8_t	flags;		/* ATA command flags */

Modified: projects/camlock/sys/cam/ata/ata_da.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_da.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_da.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -75,18 +75,19 @@ typedef enum {
 } ada_state;
 
 typedef enum {
-	ADA_FLAG_PACK_INVALID	= 0x001,
-	ADA_FLAG_CAN_48BIT	= 0x002,
-	ADA_FLAG_CAN_FLUSHCACHE	= 0x004,
-	ADA_FLAG_CAN_NCQ	= 0x008,
-	ADA_FLAG_CAN_DMA	= 0x010,
-	ADA_FLAG_NEED_OTAG	= 0x020,
-	ADA_FLAG_WENT_IDLE	= 0x040,
-	ADA_FLAG_CAN_TRIM	= 0x080,
-	ADA_FLAG_OPEN		= 0x100,
-	ADA_FLAG_SCTX_INIT	= 0x200,
-	ADA_FLAG_CAN_CFA        = 0x400,
-	ADA_FLAG_CAN_POWERMGT   = 0x800
+	ADA_FLAG_PACK_INVALID	= 0x0001,
+	ADA_FLAG_CAN_48BIT	= 0x0002,
+	ADA_FLAG_CAN_FLUSHCACHE	= 0x0004,
+	ADA_FLAG_CAN_NCQ	= 0x0008,
+	ADA_FLAG_CAN_DMA	= 0x0010,
+	ADA_FLAG_NEED_OTAG	= 0x0020,
+	ADA_FLAG_WENT_IDLE	= 0x0040,
+	ADA_FLAG_CAN_TRIM	= 0x0080,
+	ADA_FLAG_OPEN		= 0x0100,
+	ADA_FLAG_SCTX_INIT	= 0x0200,
+	ADA_FLAG_CAN_CFA        = 0x0400,
+	ADA_FLAG_CAN_POWERMGT   = 0x0800,
+	ADA_FLAG_CAN_DMA48	= 0x1000
 } ada_flags;
 
 typedef enum {
@@ -613,6 +614,9 @@ adaschedule(struct cam_periph *periph)
 	struct ada_softc *softc = (struct ada_softc *)periph->softc;
 	uint32_t prio;
 
+	if (softc->state != ADA_STATE_NORMAL)
+		return;
+
 	/* Check if cam_periph_getccb() was called. */
 	prio = periph->immediate_priority;
 
@@ -899,6 +903,15 @@ adaasync(void *callback_arg, u_int32_t c
 			softc->flags |= ADA_FLAG_CAN_DMA;
 		else
 			softc->flags &= ~ADA_FLAG_CAN_DMA;
+		if (cgd.ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) {
+			softc->flags |= ADA_FLAG_CAN_48BIT;
+			if (cgd.inq_flags & SID_DMA48)
+				softc->flags |= ADA_FLAG_CAN_DMA48;
+			else
+				softc->flags &= ~ADA_FLAG_CAN_DMA48;
+		} else
+			softc->flags &= ~(ADA_FLAG_CAN_48BIT |
+			    ADA_FLAG_CAN_DMA48);
 		if ((cgd.ident_data.satacapabilities & ATA_SUPPORT_NCQ) &&
 		    (cgd.inq_flags & SID_DMA) && (cgd.inq_flags & SID_CmdQue))
 			softc->flags |= ADA_FLAG_CAN_NCQ;
@@ -1065,8 +1078,11 @@ adaregister(struct cam_periph *periph, v
 	if ((cgd->ident_data.capabilities1 & ATA_SUPPORT_DMA) &&
 	    (cgd->inq_flags & SID_DMA))
 		softc->flags |= ADA_FLAG_CAN_DMA;
-	if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48)
+	if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) {
 		softc->flags |= ADA_FLAG_CAN_48BIT;
+		if (cgd->inq_flags & SID_DMA48)
+			softc->flags |= ADA_FLAG_CAN_DMA48;
+	}
 	if (cgd->ident_data.support.command2 & ATA_SUPPORT_FLUSHCACHE)
 		softc->flags |= ADA_FLAG_CAN_FLUSHCACHE;
 	if (cgd->ident_data.support.command1 & ATA_SUPPORT_POWERMGT)
@@ -1449,7 +1465,7 @@ adastart(struct cam_periph *periph, unio
 			} else if ((softc->flags & ADA_FLAG_CAN_48BIT) &&
 			    (lba + count >= ATA_MAX_28BIT_LBA ||
 			    count > 256)) {
-				if (softc->flags & ADA_FLAG_CAN_DMA) {
+				if (softc->flags & ADA_FLAG_CAN_DMA48) {
 					if (bp->bio_cmd == BIO_READ) {
 						ata_48bit_cmd(ataio, ATA_READ_DMA48,
 						    0, lba, count);

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -963,19 +963,22 @@ noerror:
 		xpt_schedule(periph, priority);
 		goto out;
 	case PROBE_SETMODE:
-		if (path->device->transport != XPORT_SATA)
-			goto notsata;
 		/* Set supported bits. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
 		cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_CURRENT_SETTINGS;
 		xpt_action((union ccb *)&cts);
-		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
+		if (path->device->transport == XPORT_SATA &&
+		    cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps = cts.xport_specific.sata.caps & CTS_SATA_CAPS_H;
+		else if (path->device->transport == XPORT_ATA &&
+		    cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS)
+			caps = cts.xport_specific.ata.caps & CTS_ATA_CAPS_H;
 		else
 			caps = 0;
-		if (ident_buf->satacapabilities != 0xffff) {
+		if (path->device->transport == XPORT_SATA &&
+		    ident_buf->satacapabilities != 0xffff) {
 			if (ident_buf->satacapabilities & ATA_SUPPORT_IFPWRMNGTRCV)
 				caps |= CTS_SATA_CAPS_D_PMREQ;
 			if (ident_buf->satacapabilities & ATA_SUPPORT_HAPST)
@@ -987,19 +990,42 @@ noerror:
 		cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_USER_SETTINGS;
 		xpt_action((union ccb *)&cts);
-		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
+		if (path->device->transport == XPORT_SATA &&
+		    cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps &= cts.xport_specific.sata.caps;
+		else if (path->device->transport == XPORT_ATA &&
+		    cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS)
+			caps &= cts.xport_specific.ata.caps;
 		else
 			caps = 0;
+		/*
+		 * Remember what transport thinks about 48-bit DMA.  If
+		 * capability information is not provided or transport is
+		 * SATA, we take support for granted.
+		 */
+		if (!(path->device->inq_flags & SID_DMA) ||
+		    (path->device->transport == XPORT_ATA &&
+		    (cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) &&
+		    !(caps & CTS_ATA_CAPS_H_DMA48)))
+			path->device->inq_flags &= ~SID_DMA48;
+		else
+			path->device->inq_flags |= SID_DMA48;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
 		cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_CURRENT_SETTINGS;
-		cts.xport_specific.sata.caps = caps;
-		cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
+		if (path->device->transport == XPORT_SATA) {
+			cts.xport_specific.sata.caps = caps;
+			cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
+		} else {
+			cts.xport_specific.ata.caps = caps;
+			cts.xport_specific.ata.valid = CTS_ATA_VALID_CAPS;
+		}
 		xpt_action((union ccb *)&cts);
 		softc->caps = caps;
+		if (path->device->transport != XPORT_SATA)
+			goto notsata;
 		if ((ident_buf->satasupport & ATA_SUPPORT_IFPWRMNGT) &&
 		    (!(softc->caps & CTS_SATA_CAPS_H_PMREQ)) !=
 		    (!(ident_buf->sataenabled & ATA_SUPPORT_IFPWRMNGT))) {
@@ -1151,6 +1177,11 @@ notsata:
 			caps &= cts.xport_specific.sata.caps;
 		else
 			caps = 0;
+		/* Remember what transport thinks about AEN. */
+		if (caps & CTS_SATA_CAPS_H_AN)
+			path->device->inq_flags |= SID_AEN;
+		else
+			path->device->inq_flags &= ~SID_AEN;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
@@ -1160,11 +1191,6 @@ notsata:
 		cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
 		xpt_action((union ccb *)&cts);
 		softc->caps = caps;
-		/* Remember what transport thinks about AEN. */
-		if (softc->caps & CTS_SATA_CAPS_H_AN)
-			path->device->inq_flags |= SID_AEN;
-		else
-			path->device->inq_flags &= ~SID_AEN;
 		xpt_async(AC_GETDEV_CHANGED, path, NULL);
 		if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) {
 			path->device->flags &= ~CAM_DEV_UNCONFIGURED;
@@ -2067,4 +2093,3 @@ ata_announce_periph(struct cam_periph *p
 	}
 	printf("\n");
 }
-

Modified: projects/camlock/sys/cam/cam_ccb.h
==============================================================================
--- projects/camlock/sys/cam/cam_ccb.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/cam_ccb.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -893,9 +893,14 @@ struct ccb_trans_settings_pata {
 #define	CTS_ATA_VALID_MODE		0x01
 #define	CTS_ATA_VALID_BYTECOUNT		0x02
 #define	CTS_ATA_VALID_ATAPI		0x20
+#define	CTS_ATA_VALID_CAPS		0x40
 	int		mode;		/* Mode */
 	u_int 		bytecount;	/* Length of PIO transaction */
 	u_int 		atapi;		/* Length of ATAPI CDB */
+	u_int 		caps;		/* Device and host SATA caps. */
+#define	CTS_ATA_CAPS_H			0x0000ffff
+#define	CTS_ATA_CAPS_H_DMA48		0x00000001 /* 48-bit DMA */
+#define	CTS_ATA_CAPS_D			0xffff0000
 };
 
 struct ccb_trans_settings_sata {

Modified: projects/camlock/sys/cam/ctl/ctl_backend_block.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl_backend_block.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ctl/ctl_backend_block.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -950,6 +950,7 @@ ctl_be_block_cw_dispatch(struct ctl_be_b
 	switch (io->scsiio.cdb[0]) {
 	case SYNCHRONIZE_CACHE:
 	case SYNCHRONIZE_CACHE_16:
+		beio->bio_cmd = BIO_FLUSH;
 		beio->ds_trans_type = DEVSTAT_NO_DATA;
 		beio->ds_tag_type = DEVSTAT_TAG_ORDERED;
 		beio->io_len = 0;

Modified: projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h
==============================================================================
--- projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -41,6 +41,8 @@
 #define	DTRACE_PROBE1(name, type1, arg1)
 #define	DTRACE_PROBE2(name, type1, arg1, type2, arg2)
 #define	DTRACE_PROBE3(name, type1, arg1, type2, arg2, type3, arg3)
-#define	DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) 
+#define	DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4)
+
+#define	SET_ERROR(err)	(err)
 
 #endif	/* _OPENSOLARIS_SYS_SDT_H_ */

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2011 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 /*
@@ -3738,14 +3738,14 @@ arc_memory_throttle(uint64_t reserve, ui
 	 */
 	if (curproc == pageproc) {
 		if (page_load > available_memory / 4)
-			return (ERESTART);
+			return (SET_ERROR(ERESTART));
 		/* Note: reserve is inflated, so we deflate */
 		page_load += reserve / 8;
 		return (0);
 	} else if (page_load > 0 && arc_reclaim_needed()) {
 		/* memory is low, delay before restarting */
 		ARCSTAT_INCR(arcstat_memory_throttle_count, 1);
-		return (EAGAIN);
+		return (SET_ERROR(EAGAIN));
 	}
 	page_load = 0;
 
@@ -3760,7 +3760,7 @@ arc_memory_throttle(uint64_t reserve, ui
 
 	if (inflight_data > available_memory / 4) {
 		ARCSTAT_INCR(arcstat_memory_throttle_count, 1);
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 #endif
 	return (0);
@@ -3785,13 +3785,13 @@ arc_tempreserve_space(uint64_t reserve, 
 	 */
 	if (spa_get_random(10000) == 0) {
 		dprintf("forcing random failure\n");
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 #endif
 	if (reserve > arc_c/4 && !arc_no_grow)
 		arc_c = MIN(arc_c_max, reserve * 4);
 	if (reserve > arc_c)
-		return (ENOMEM);
+		return (SET_ERROR(ENOMEM));
 
 	/*
 	 * Don't count loaned bufs as in flight dirty data to prevent long
@@ -3824,7 +3824,7 @@ arc_tempreserve_space(uint64_t reserve, 
 		    arc_anon->arcs_lsize[ARC_BUFC_METADATA]>>10,
 		    arc_anon->arcs_lsize[ARC_BUFC_DATA]>>10,
 		    reserve>>10, arc_c>>10);
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 	atomic_add_64(&arc_tempreserve, reserve);
 	return (0);
@@ -4518,7 +4518,7 @@ l2arc_read_done(zio_t *zio)
 		if (zio->io_error != 0) {
 			ARCSTAT_BUMP(arcstat_l2_io_error);
 		} else {
-			zio->io_error = EIO;
+			zio->io_error = SET_ERROR(EIO);
 		}
 		if (!equal)
 			ARCSTAT_BUMP(arcstat_l2_cksum_bad);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -598,7 +598,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio
 	ASSERT(!refcount_is_zero(&db->db_holds));
 
 	if (db->db_state == DB_NOFILL)
-		return (EIO);
+		return (SET_ERROR(EIO));
 
 	DB_DNODE_ENTER(db);
 	dn = DB_DNODE(db);
@@ -655,7 +655,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio
 				cv_wait(&db->db_changed, &db->db_mtx);
 			}
 			if (db->db_state == DB_UNCACHED)
-				err = EIO;
+				err = SET_ERROR(EIO);
 		}
 		mutex_exit(&db->db_mtx);
 	}
@@ -1593,7 +1593,7 @@ dbuf_findbp(dnode_t *dn, int level, uint
 	if (level >= nlevels ||
 	    (blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs)))) {
 		/* the buffer has no parent yet */
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 	} else if (level < nlevels-1) {
 		/* this block is referenced from an indirect block */
 		int err = dbuf_hold_impl(dn, level+1,
@@ -1844,7 +1844,7 @@ top:
 		err = dbuf_findbp(dn, level, blkid, fail_sparse, &parent, &bp);
 		if (fail_sparse) {
 			if (err == 0 && bp && BP_IS_HOLE(bp))
-				err = ENOENT;
+				err = SET_ERROR(ENOENT);
 			if (err) {
 				if (parent)
 					dbuf_rele(parent, NULL);
@@ -1941,7 +1941,7 @@ dbuf_spill_set_blksz(dmu_buf_t *db_fake,
 	dnode_t *dn;
 
 	if (db->db_blkid != DMU_SPILL_BLKID)
-		return (ENOTSUP);
+		return (SET_ERROR(ENOTSUP));
 	if (blksz == 0)
 		blksz = SPA_MINBLOCKSIZE;
 	if (blksz > SPA_MAXBLOCKSIZE)

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -174,7 +174,7 @@ ddt_object_lookup(ddt_t *ddt, enum ddt_t
     ddt_entry_t *dde)
 {
 	if (!ddt_object_exists(ddt, type, class))
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 
 	return (ddt_ops[type]->ddt_op_lookup(ddt->ddt_os,
 	    ddt->ddt_object[type][class], dde));
@@ -235,7 +235,7 @@ ddt_object_info(ddt_t *ddt, enum ddt_typ
     dmu_object_info_t *doi)
 {
 	if (!ddt_object_exists(ddt, type, class))
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 
 	return (dmu_object_info(ddt->ddt_os, ddt->ddt_object[type][class],
 	    doi));
@@ -1157,5 +1157,5 @@ ddt_walk(spa_t *spa, ddt_bookmark_t *ddb
 		ddb->ddb_type = 0;
 	} while (++ddb->ddb_class < DDT_CLASSES);
 
-	return (ENOENT);
+	return (SET_ERROR(ENOENT));
 }

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -146,7 +146,7 @@ dmu_buf_hold(objset_t *os, uint64_t obje
 	db = dbuf_hold(dn, blkid, tag);
 	rw_exit(&dn->dn_struct_rwlock);
 	if (db == NULL) {
-		err = EIO;
+		err = SET_ERROR(EIO);
 	} else {
 		err = dbuf_read(db, NULL, db_flags);
 		if (err) {
@@ -177,9 +177,9 @@ dmu_set_bonus(dmu_buf_t *db_fake, int ne
 	dn = DB_DNODE(db);
 
 	if (dn->dn_bonus != db) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else if (newsize < 0 || newsize > db_fake->db_size) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else {
 		dnode_setbonuslen(dn, newsize, tx);
 		error = 0;
@@ -200,9 +200,9 @@ dmu_set_bonustype(dmu_buf_t *db_fake, dm
 	dn = DB_DNODE(db);
 
 	if (!DMU_OT_IS_VALID(type)) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else if (dn->dn_bonus != db) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else {
 		dnode_setbonus_type(dn, type, tx);
 		error = 0;
@@ -329,12 +329,12 @@ dmu_spill_hold_existing(dmu_buf_t *bonus
 	dn = DB_DNODE(db);
 
 	if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) {
-		err = EINVAL;
+		err = SET_ERROR(EINVAL);
 	} else {
 		rw_enter(&dn->dn_struct_rwlock, RW_READER);
 
 		if (!dn->dn_have_spill) {
-			err = ENOENT;
+			err = SET_ERROR(ENOENT);
 		} else {
 			err = dmu_spill_hold_by_dnode(dn,
 			    DB_RF_HAVESTRUCT | DB_RF_CANFAIL, tag, dbp);
@@ -400,7 +400,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			    (longlong_t)dn->dn_object, dn->dn_datablksz,
 			    (longlong_t)offset, (longlong_t)length);
 			rw_exit(&dn->dn_struct_rwlock);
-			return (EIO);
+			return (SET_ERROR(EIO));
 		}
 		nblks = 1;
 	}
@@ -417,7 +417,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			rw_exit(&dn->dn_struct_rwlock);
 			dmu_buf_rele_array(dbp, nblks, tag);
 			zio_nowait(zio);
-			return (EIO);
+			return (SET_ERROR(EIO));
 		}
 		/* initiate async i/o */
 		if (read)
@@ -449,7 +449,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			    db->db_state == DB_FILL)
 				cv_wait(&db->db_changed, &db->db_mtx);
 			if (db->db_state == DB_UNCACHED)
-				err = EIO;
+				err = SET_ERROR(EIO);
 			mutex_exit(&db->db_mtx);
 			if (err) {
 				dmu_buf_rele_array(dbp, nblks, tag);
@@ -1363,7 +1363,8 @@ dmu_sync_late_arrival(zio_t *pio, objset
 	dmu_tx_hold_space(tx, zgd->zgd_db->db_size);
 	if (dmu_tx_assign(tx, TXG_WAIT) != 0) {
 		dmu_tx_abort(tx);
-		return (EIO);	/* Make zl_get_data do txg_waited_synced() */
+		/* Make zl_get_data do txg_waited_synced() */
+		return (SET_ERROR(EIO));
 	}
 
 	dsa = kmem_alloc(sizeof (dmu_sync_arg_t), KM_SLEEP);
@@ -1448,7 +1449,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * This txg has already synced.  There's nothing to do.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 
 	if (txg <= spa_syncing_txg(os->os_spa)) {
@@ -1470,7 +1471,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * There's no need to log writes to freed blocks, so we're done.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 	}
 
 	ASSERT(dr->dr_next == NULL || dr->dr_next->dr_txg < txg);
@@ -1499,7 +1500,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * have been dirtied since, or we would have cleared the state.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (EALREADY);
+		return (SET_ERROR(EALREADY));
 	}
 
 	ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -136,7 +136,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons
 	int err = 0;
 
 	if (issig(JUSTLOOKING) && issig(FORREAL))
-		return (EINTR);
+		return (SET_ERROR(EINTR));
 
 	if (zb->zb_object != DMU_META_DNODE_OBJECT)
 		return (0);
@@ -159,7 +159,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons
 		if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf,
 		    ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL,
 		    &aflags, zb) != 0)
-			return (EIO);
+			return (SET_ERROR(EIO));
 
 		blk = abuf->b_data;
 		for (i = 0; i < blksz >> DNODE_SHIFT; i++) {
@@ -195,7 +195,7 @@ dmu_diff(const char *tosnap_name, const 
 
 	if (strchr(tosnap_name, '@') == NULL ||
 	    strchr(fromsnap_name, '@') == NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_pool_hold(tosnap_name, FTAG, &dp);
 	if (error != 0)
@@ -218,7 +218,7 @@ dmu_diff(const char *tosnap_name, const 
 		dsl_dataset_rele(fromsnap, FTAG);
 		dsl_dataset_rele(tosnap, FTAG);
 		dsl_pool_rele(dp, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 
 	fromtxg = fromsnap->ds_phys->ds_creation_txg;

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,6 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -90,7 +91,7 @@ dmu_object_claim(objset_t *os, uint64_t 
 	int err;
 
 	if (object == DMU_META_DNODE_OBJECT && !dmu_tx_private_ok(tx))
-		return (EBADF);
+		return (SET_ERROR(EBADF));
 
 	err = dnode_hold_impl(os, object, DNODE_MUST_BE_FREE, FTAG, &dn);
 	if (err)
@@ -112,7 +113,7 @@ dmu_object_reclaim(objset_t *os, uint64_
 	int err;
 
 	if (object == DMU_META_DNODE_OBJECT)
-		return (EBADF);
+		return (SET_ERROR(EBADF));
 
 	err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED,
 	    FTAG, &dn);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 /* Portions Copyright 2010 Robert Milkowski */
@@ -285,7 +285,7 @@ dmu_objset_open_impl(spa_t *spa, dsl_dat
 			kmem_free(os, sizeof (objset_t));
 			/* convert checksum errors into IO errors */
 			if (err == ECKSUM)
-				err = EIO;
+				err = SET_ERROR(EIO);
 			return (err);
 		}
 
@@ -498,10 +498,10 @@ dmu_objset_own(const char *name, dmu_obj
 		dsl_dataset_disown(ds, tag);
 	} else if (type != DMU_OST_ANY && type != (*osp)->os_phys->os_type) {
 		dsl_dataset_disown(ds, tag);
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 	} else if (!readonly && dsl_dataset_is_snapshot(ds)) {
 		dsl_dataset_disown(ds, tag);
-		return (EROFS);
+		return (SET_ERROR(EROFS));
 	}
 	return (err);
 }
@@ -714,14 +714,14 @@ dmu_objset_create_check(void *arg, dmu_t
 	int error;
 
 	if (strchr(doca->doca_name, '@') != NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail);
 	if (error != 0)
 		return (error);
 	if (tail == NULL) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 	dsl_dir_rele(pdd, FTAG);
 
@@ -795,19 +795,19 @@ dmu_objset_clone_check(void *arg, dmu_tx
 	dsl_pool_t *dp = dmu_tx_pool(tx);
 
 	if (strchr(doca->doca_clone, '@') != NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail);
 	if (error != 0)
 		return (error);
 	if (tail == NULL) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 	/* You can't clone across pools. */
 	if (pdd->dd_pool != dp) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 	dsl_dir_rele(pdd, FTAG);
 
@@ -818,13 +818,13 @@ dmu_objset_clone_check(void *arg, dmu_tx
 	/* You can't clone across pools. */
 	if (origin->ds_dir->dd_pool != dp) {
 		dsl_dataset_rele(origin, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 
 	/* You can only clone snapshots, not the head datasets. */
 	if (!dsl_dataset_is_snapshot(origin)) {
 		dsl_dataset_rele(origin, FTAG);
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 	}
 	dsl_dataset_rele(origin, FTAG);
 
@@ -1302,9 +1302,9 @@ dmu_objset_userspace_upgrade(objset_t *o
 	if (dmu_objset_userspace_present(os))
 		return (0);
 	if (!dmu_objset_userused_enabled(os))
-		return (ENOTSUP);
+		return (SET_ERROR(ENOTSUP));
 	if (dmu_objset_is_snapshot(os))
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	/*
 	 * We simply need to mark every object dirty, so that it will be
@@ -1320,7 +1320,7 @@ dmu_objset_userspace_upgrade(objset_t *o
 		int objerr;
 
 		if (issig(JUSTLOOKING) && issig(FORREAL))
-			return (EINTR);
+			return (SET_ERROR(EINTR));
 

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

From owner-svn-src-projects@FreeBSD.ORG  Sat Apr  6 19:11:14 2013
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 521EAC5D;
 Sat,  6 Apr 2013 19:11:14 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 335DACB2;
 Sat,  6 Apr 2013 19:11:14 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r36JBDc9002080;
 Sat, 6 Apr 2013 19:11:13 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r36JBCwU002067;
 Sat, 6 Apr 2013 19:11:12 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201304061911.r36JBCwU002067@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Sat, 6 Apr 2013 19:11:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r249212 - projects/camlock/sys/cam
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.14
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/options/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, 06 Apr 2013 19:11:14 -0000

Author: mav
Date: Sat Apr  6 19:11:12 2013
New Revision: 249212
URL: http://svnweb.freebsd.org/changeset/base/249212

Log:
  Introduce queue mutex to serialize access to CCB, device and periph queues.
  That should allow periphs to avoid taking heavily congested SIM lock up to
  the moment of actually submitting CCB to the SIM.
  
  Also as side effect it should allow different SIMs sharing same queue to
  have separate locks.  I am not sure such hardware really exists now, but
  seems it was planned in existing CAM design.

Modified:
  projects/camlock/sys/cam/cam_periph.c
  projects/camlock/sys/cam/cam_periph.h
  projects/camlock/sys/cam/cam_queue.c
  projects/camlock/sys/cam/cam_queue.h
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/cam_xpt_internal.h

Modified: projects/camlock/sys/cam/cam_periph.c
==============================================================================
--- projects/camlock/sys/cam/cam_periph.c	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_periph.c	Sat Apr  6 19:11:12 2013	(r249212)
@@ -205,6 +205,7 @@ cam_periph_alloc(periph_ctor_t *periph_c
 	periph->immediate_priority = CAM_PRIORITY_NONE;
 	periph->refcount = 0;
 	periph->sim = sim;
+	mtx_init(&periph->periph_mtx, "CAM periph lock", NULL, MTX_DEF);
 	SLIST_INIT(&periph->ccb_list);
 	status = xpt_create_path(&path, periph, path_id, target_id, lun_id);
 	if (status != CAM_REQ_CMP)
@@ -680,6 +681,7 @@ camperiphfree(struct cam_periph *periph)
 					  periph->path, arg);
 	}
 	xpt_free_path(periph->path);
+	mtx_destroy(&periph->periph_mtx);
 	free(periph, M_CAMPERIPH);
 	xpt_lock_buses();
 }

Modified: projects/camlock/sys/cam/cam_periph.h
==============================================================================
--- projects/camlock/sys/cam/cam_periph.h	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_periph.h	Sat Apr  6 19:11:12 2013	(r249212)
@@ -128,6 +128,7 @@ struct cam_periph {
 	TAILQ_ENTRY(cam_periph)  unit_links;
 	ac_callback_t		*deferred_callback; 
 	ac_code			 deferred_ac;
+	struct mtx		 periph_mtx;
 };
 
 #define CAM_PERIPH_MAXMAPS	2

Modified: projects/camlock/sys/cam/cam_queue.c
==============================================================================
--- projects/camlock/sys/cam/cam_queue.c	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_queue.c	Sat Apr  6 19:11:12 2013	(r249212)
@@ -220,27 +220,30 @@ cam_devq_alloc(int devices, int openings
 	}
 	if (cam_devq_init(devq, devices, openings) != 0) {
 		free(devq, M_CAMDEVQ);
-		return (NULL);		
+		return (NULL);
 	}
-	
 	return (devq);
 }
 
 int
 cam_devq_init(struct cam_devq *devq, int devices, int openings)
 {
+
 	bzero(devq, sizeof(*devq));
+	mtx_init(&devq->send_mtx, "CAM queue lock", NULL, MTX_DEF);
 	if (camq_init(&devq->send_queue, devices) != 0)
 		return (1);
 	devq->send_openings = openings;
-	devq->send_active = 0;	
-	return (0);	
+	devq->send_active = 0;
+	return (0);
 }
 
 void
 cam_devq_free(struct cam_devq *devq)
 {
+
 	camq_fini(&devq->send_queue);
+	mtx_destroy(&devq->send_mtx);
 	free(devq, M_CAMDEVQ);
 }
 

Modified: projects/camlock/sys/cam/cam_queue.h
==============================================================================
--- projects/camlock/sys/cam/cam_queue.h	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_queue.h	Sat Apr  6 19:11:12 2013	(r249212)
@@ -33,6 +33,8 @@
 
 #ifdef _KERNEL
 
+#include <sys/lock.h>
+#include <sys/mutex.h>
 #include <sys/queue.h>
 #include <cam/cam.h>
 
@@ -67,9 +69,10 @@ struct cam_ccbq {
 struct cam_ed;
 
 struct cam_devq {
-	struct	camq send_queue;
-	int	send_openings;
-	int	send_active;
+	struct mtx	 send_mtx;
+	struct camq	 send_queue;
+	int		 send_openings;
+	int		 send_active;
 };
 
 

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_xpt.c	Sat Apr  6 19:11:12 2013	(r249212)
@@ -228,7 +228,7 @@ static void	 xpt_run_devq(struct cam_dev
 static timeout_t xpt_release_devq_timeout;
 static void	 xpt_release_simq_timeout(void *arg) __unused;
 static void	 xpt_release_bus(struct cam_eb *bus);
-static void	 xpt_release_devq_device(struct cam_ed *dev, u_int count,
+static int	 xpt_release_devq_device(struct cam_ed *dev, u_int count,
 		    int run_queue);
 static struct cam_et*
 		 xpt_alloc_target(struct cam_eb *bus, target_id_t target_id);
@@ -240,6 +240,8 @@ static struct cam_et*
 static struct cam_ed*
 		 xpt_find_device(struct cam_et *target, lun_id_t lun_id);
 static void	 xpt_config(void *arg);
+static int	 xpt_schedule_dev(struct camq *queue, cam_pinfo *dev_pinfo,
+				 u_int32_t new_priority);
 static xpt_devicefunc_t xptpassannouncefunc;
 static void	 xptaction(struct cam_sim *sim, union ccb *work_ccb);
 static void	 xptpoll(struct cam_sim *sim);
@@ -303,6 +305,7 @@ xpt_schedule_devq(struct cam_devq *devq,
 {
 	int	retval;
 
+	mtx_assert(&devq->send_mtx, MA_OWNED);
 	if ((dev->ccbq.queue.entries > 0) &&
 	    (dev->ccbq.dev_openings > 0) &&
 	    (dev->ccbq.queue.qfrozen_cnt == 0)) {
@@ -2456,10 +2459,19 @@ xpt_action_default(union ccb *start_ccb)
 	case XPT_RESET_DEV:
 	case XPT_ENG_EXEC:
 	case XPT_SMP_IO:
+	{
+		struct cam_devq *devq;
+		int run;
+
+		devq = path->bus->sim->devq;
+		mtx_lock(&devq->send_mtx);
 		cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb);
-		if (xpt_schedule_devq(path->bus->sim->devq, path->device))
-			xpt_run_devq(path->bus->sim->devq);
+		run = xpt_schedule_devq(devq, path->device);
+		mtx_unlock(&devq->send_mtx);
+		if (run)
+			xpt_run_devq(devq);
 		break;
+	}
 	case XPT_CALC_GEOMETRY:
 	{
 		struct cam_sim *sim;
@@ -3029,12 +3041,13 @@ void
 xpt_schedule(struct cam_periph *perph, u_int32_t new_priority)
 {
 	struct cam_ed *device;
+	struct cam_devq *devq;
 	int runq = 0;
 
-	mtx_assert(perph->sim->mtx, MA_OWNED);
-
 	CAM_DEBUG(perph->path, CAM_DEBUG_TRACE, ("xpt_schedule\n"));
 	device = perph->path->device;
+	devq = device->sim->devq;
+	mtx_lock(&devq->send_mtx);
 	if (periph_is_queued(perph)) {
 		/* Simply reorder based on new priority */
 		CAM_DEBUG(perph->path, CAM_DEBUG_SUBTRACE,
@@ -3059,6 +3072,7 @@ xpt_schedule(struct cam_periph *perph, u
 			  ("   calling xpt_run_dev_allocq\n"));
 		xpt_run_dev_allocq(device);
 	}
+	mtx_unlock(&devq->send_mtx);
 }
 
 
@@ -3070,7 +3084,7 @@ xpt_schedule(struct cam_periph *perph, u
  * started the queue, return 0 so the caller doesn't attempt
  * to run the queue.
  */
-int
+static int
 xpt_schedule_dev(struct camq *queue, cam_pinfo *pinfo,
 		 u_int32_t new_priority)
 {
@@ -3112,8 +3126,11 @@ xpt_schedule_dev(struct camq *queue, cam
 static void
 xpt_run_dev_allocq(struct cam_ed *device)
 {
+	struct cam_devq	*devq;
 	struct camq	*drvq;
 
+	devq = device->sim->devq;
+	mtx_assert(&devq->send_mtx, MA_OWNED);
 	if (device->ccbq.devq_allocating)
 		return;
 	device->ccbq.devq_allocating = 1;
@@ -3121,8 +3138,7 @@ xpt_run_dev_allocq(struct cam_ed *device
 	drvq = &device->drvq;
 	while ((drvq->entries > 0) &&
 	    (device->ccbq.devq_openings > 0 ||
-	     CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB) &&
-	    (device->ccbq.queue.qfrozen_cnt == 0)) {
+	     CAMQ_GET_PRIO(drvq) <= CAM_PRIORITY_OOB)) {
 		union	ccb *work_ccb;
 		struct	cam_periph *drv;
 
@@ -3134,7 +3150,9 @@ xpt_run_dev_allocq(struct cam_ed *device
 				      drv->pinfo.priority);
 			CAM_DEBUG_PRINT(CAM_DEBUG_XPT,
 					("calling periph start\n"));
+			mtx_unlock(&devq->send_mtx);
 			drv->periph_start(drv, work_ccb);
+			mtx_lock(&devq->send_mtx);
 		} else {
 			/*
 			 * Malloc failure in alloc_ccb
@@ -3155,9 +3173,11 @@ static void
 xpt_run_devq(struct cam_devq *devq)
 {
 	char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1];
+	int lock;
 
 	CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_devq\n"));
 
+	mtx_lock(&devq->send_mtx);
 	devq->send_queue.qfrozen_cnt++;
 	while ((devq->send_queue.entries > 0)
 	    && (devq->send_openings > 0)
@@ -3207,11 +3227,10 @@ xpt_run_devq(struct cam_devq *devq)
 		}
 		cam_ccbq_remove_ccb(&device->ccbq, work_ccb);
 		cam_ccbq_send_ccb(&device->ccbq, work_ccb);
-
 		devq->send_openings--;
 		devq->send_active++;
-
 		xpt_schedule_devq(devq, device);
+		mtx_unlock(&devq->send_mtx);
 
 		if ((work_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0) {
 			/*
@@ -3261,9 +3280,16 @@ xpt_run_devq(struct cam_devq *devq)
 		 * into this function.
 		 */
 		sim = work_ccb->ccb_h.path->bus->sim;
+		lock = (mtx_owned(sim->mtx) == 0);
+		if (lock)
+			CAM_SIM_LOCK(sim);
 		(*(sim->sim_action))(sim, work_ccb);
+		if (lock)
+			CAM_SIM_UNLOCK(sim);
+		mtx_lock(&devq->send_mtx);
 	}
 	devq->send_queue.qfrozen_cnt--;
+	mtx_unlock(&devq->send_mtx);
 }
 
 /*
@@ -3700,27 +3726,23 @@ xpt_path_legacy_ata_id(struct cam_path *
 void
 xpt_release_ccb(union ccb *free_ccb)
 {
-	struct	 cam_path *path;
 	struct	 cam_ed *device;
-	struct	 cam_eb *bus;
-	struct   cam_sim *sim;
+	struct cam_devq *devq;
 
 	CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_release_ccb\n"));
-	path = free_ccb->ccb_h.path;
-	device = path->device;
-	bus = path->bus;
-	sim = bus->sim;
-
-	mtx_assert(sim->mtx, MA_OWNED);
+	device = free_ccb->ccb_h.path->device;
+	devq = device->sim->devq;
 
+	mtx_lock(&devq->send_mtx);
 	cam_ccbq_release_opening(&device->ccbq);
 	if (device->flags & CAM_DEV_RESIZE_QUEUE_NEEDED) {
 		device->flags &= ~CAM_DEV_RESIZE_QUEUE_NEEDED;
 		cam_ccbq_resize(&device->ccbq,
 		    device->ccbq.dev_openings + device->ccbq.dev_active);
 	}
-	xpt_free_ccb(free_ccb);
 	xpt_run_dev_allocq(device);
+	mtx_unlock(&devq->send_mtx);
+	xpt_free_ccb(free_ccb);
 }
 
 /* Functions accessed by SIM drivers */
@@ -4069,48 +4091,69 @@ xpt_dev_async_default(u_int32_t async_co
 u_int32_t
 xpt_freeze_devq(struct cam_path *path, u_int count)
 {
-	struct cam_ed *dev = path->device;
+	struct cam_ed	*dev = path->device;
+	struct cam_devq	*devq;
+	uint32_t	 freeze;
 
-	mtx_assert(path->bus->sim->mtx, MA_OWNED);
-	dev->ccbq.queue.qfrozen_cnt += count;
+	devq = dev->sim->devq;
+	mtx_lock(&devq->send_mtx);
+	freeze = (dev->ccbq.queue.qfrozen_cnt += count);
 	/* Remove frozen device from sendq. */
-	if (device_is_queued(dev)) {
-		camq_remove(&dev->sim->devq->send_queue,
-		    dev->devq_entry.pinfo.index);
-	}
-	return (dev->ccbq.queue.qfrozen_cnt);
+	if (device_is_queued(dev))
+		camq_remove(&devq->send_queue, dev->devq_entry.pinfo.index);
+	mtx_unlock(&devq->send_mtx);
+	return (freeze);
 }
 
 u_int32_t
 xpt_freeze_simq(struct cam_sim *sim, u_int count)
 {
+	struct cam_devq	*devq;
+	uint32_t	 freeze;
 
-	mtx_assert(sim->mtx, MA_OWNED);
-	sim->devq->send_queue.qfrozen_cnt += count;
-	return (sim->devq->send_queue.qfrozen_cnt);
+	devq = sim->devq;
+	mtx_lock(&devq->send_mtx);
+	freeze = (devq->send_queue.qfrozen_cnt += count);
+	mtx_unlock(&devq->send_mtx);
+	return (freeze);
 }
 
 static void
 xpt_release_devq_timeout(void *arg)
 {
-	struct cam_ed *device;
+	struct cam_ed *dev;
+	struct cam_devq *devq;
+	int run;
 
-	device = (struct cam_ed *)arg;
-	xpt_release_devq_device(device, /*count*/1, /*run_queue*/TRUE);
+	dev = (struct cam_ed *)arg;
+	devq = dev->sim->devq;
+	mtx_lock(&devq->send_mtx);
+	run = xpt_release_devq_device(dev, /*count*/1, /*run_queue*/TRUE);
+	mtx_unlock(&devq->send_mtx);
+	if (run)
+		xpt_run_devq(dev->sim->devq);
 }
 
 void
 xpt_release_devq(struct cam_path *path, u_int count, int run_queue)
 {
+	struct cam_ed *dev;
+	struct cam_devq *devq;
 
-	mtx_assert(path->bus->sim->mtx, MA_OWNED);
-	xpt_release_devq_device(path->device, count, run_queue);
+	dev = path->device;
+	devq = dev->sim->devq;
+	mtx_lock(&devq->send_mtx);
+	run_queue = xpt_release_devq_device(dev, count, run_queue);
+	mtx_unlock(&devq->send_mtx);
+	if (run_queue)
+		xpt_run_devq(dev->sim->devq);
 }
 
-void
+static int
 xpt_release_devq_device(struct cam_ed *dev, u_int count, int run_queue)
 {
 
+	mtx_assert(&dev->sim->devq->send_mtx, MA_OWNED);
 	if (count > dev->ccbq.queue.qfrozen_cnt) {
 #ifdef INVARIANTS
 		printf("xpt_release_devq(): requested %u > present %u\n",
@@ -4133,34 +4176,35 @@ xpt_release_devq_device(struct cam_ed *d
 			callout_stop(&dev->callout);
 			dev->flags &= ~CAM_DEV_REL_TIMEOUT_PENDING;
 		}
-		xpt_run_dev_allocq(dev);
-		if (run_queue == 0)
-			return;
 		/*
 		 * Now that we are unfrozen schedule the
 		 * device so any pending transactions are
 		 * run.
 		 */
-		if (xpt_schedule_devq(dev->sim->devq, dev))
-			xpt_run_devq(dev->sim->devq);
-	}
+		xpt_schedule_devq(dev->sim->devq, dev);
+	} else
+		run_queue = 0;
+	return (run_queue);
 }
 
 void
 xpt_release_simq(struct cam_sim *sim, int run_queue)
 {
-	struct	camq *sendq;
+	struct cam_devq	*devq;
+	uint32_t	 freeze;
 
-	mtx_assert(sim->mtx, MA_OWNED);
-	sendq = &(sim->devq->send_queue);
-	if (sendq->qfrozen_cnt <= 0) {
+	devq = sim->devq;
+	mtx_lock(&devq->send_mtx);
+	if (devq->send_queue.qfrozen_cnt <= 0) {
 #ifdef INVARIANTS
 		printf("xpt_release_simq: requested 1 > present %u\n",
-		    sendq->qfrozen_cnt);
+		    devq->send_queue.qfrozen_cnt);
 #endif
 	} else
-		sendq->qfrozen_cnt--;
-	if (sendq->qfrozen_cnt == 0) {
+		devq->send_queue.qfrozen_cnt--;
+	freeze = devq->send_queue.qfrozen_cnt;
+	mtx_unlock(&devq->send_mtx);
+	if (freeze == 0) {
 		/*
 		 * If there is a timeout scheduled to release this
 		 * sim queue, remove it.  The queue frozen count is
@@ -4402,7 +4446,9 @@ xpt_alloc_device(struct cam_eb *bus, str
 	mtx_assert(target->bus->sim->mtx, MA_OWNED);
 	/* Make space for us in the device queue on our bus */
 	devq = bus->sim->devq;
+	mtx_lock(&devq->send_mtx);
 	status = cam_devq_resize(devq, devq->send_queue.array_size + 1);
+	mtx_unlock(&devq->send_mtx);
 	if (status != CAM_REQ_CMP)
 		return (NULL);
 
@@ -4477,7 +4523,9 @@ xpt_release_device(struct cam_ed *device
 	device->target->generation++;
 	/* Release our slot in the devq */
 	devq = device->target->bus->sim->devq;
+	mtx_lock(&devq->send_mtx);
 	cam_devq_resize(devq, devq->send_queue.array_size - 1);
+	mtx_unlock(&devq->send_mtx);
 	camq_fini(&device->drvq);
 	cam_ccbq_fini(&device->ccbq);
 	/*
@@ -4870,20 +4918,16 @@ static void
 camisr_runqueue(struct cam_sim *sim)
 {
 	struct	ccb_hdr *ccb_h;
-	int	runq;
 
 	mtx_lock(&sim->sim_doneq_mtx);
 	while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) {
 		TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe);
 		mtx_unlock(&sim->sim_doneq_mtx);
-		CAM_SIM_LOCK(sim);
 		ccb_h->pinfo.index = CAM_UNQUEUED_INDEX;
 
 		CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE,
 			  ("camisr\n"));
 
-		runq = FALSE;
-
 		if (ccb_h->flags & CAM_HIGH_POWER) {
 			struct highpowerlist	*hphead;
 			union ccb		*send_ccb;
@@ -4915,55 +4959,58 @@ camisr_runqueue(struct cam_sim *sim)
 		if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) {
 			struct cam_ed *dev;
 
-			dev = ccb_h->path->device;
-
-			cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h);
+			mtx_lock(&sim->devq->send_mtx);
 			sim->devq->send_active--;
 			sim->devq->send_openings++;
-			runq = TRUE;
+
+			dev = ccb_h->path->device;
+			cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h);
 
 			if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0
 			  && (dev->ccbq.dev_active == 0))) {
 				dev->flags &= ~CAM_DEV_REL_ON_QUEUE_EMPTY;
-				xpt_release_devq(ccb_h->path, /*count*/1,
+				xpt_release_devq_device(dev, /*count*/1,
 						 /*run_queue*/FALSE);
 			}
 
 			if (((dev->flags & CAM_DEV_REL_ON_COMPLETE) != 0
 			  && (ccb_h->status&CAM_STATUS_MASK) != CAM_REQUEUE_REQ)) {
 				dev->flags &= ~CAM_DEV_REL_ON_COMPLETE;
-				xpt_release_devq(ccb_h->path, /*count*/1,
+				xpt_release_devq_device(dev, /*count*/1,
 						 /*run_queue*/FALSE);
 			}
 
+			if (!device_is_queued(dev))
+				(void)xpt_schedule_devq(sim->devq, dev);
+			mtx_unlock(&sim->devq->send_mtx);
+
 			if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0
-			 && (--dev->tag_delay_count == 0))
+			 && (--dev->tag_delay_count == 0)) {
+				CAM_SIM_LOCK(sim);
 				xpt_start_tags(ccb_h->path);
-			if (!device_is_queued(dev)) {
-				(void)xpt_schedule_devq(sim->devq, dev);
+				CAM_SIM_UNLOCK(sim);
 			}
 		}
 
 		if (ccb_h->status & CAM_RELEASE_SIMQ) {
-			xpt_release_simq(sim, /*run_queue*/TRUE);
+			xpt_release_simq(sim, /*run_queue*/FALSE);
 			ccb_h->status &= ~CAM_RELEASE_SIMQ;
-			runq = FALSE;
 		}
 
 		if ((ccb_h->flags & CAM_DEV_QFRZDIS)
 		 && (ccb_h->status & CAM_DEV_QFRZN)) {
 			xpt_release_devq(ccb_h->path, /*count*/1,
-					 /*run_queue*/TRUE);
+					 /*run_queue*/FALSE);
 			ccb_h->status &= ~CAM_DEV_QFRZN;
-		} else if (runq) {
-			xpt_run_devq(sim->devq);
 		}
 
 		/* Call the peripheral driver's callback */
+		CAM_SIM_LOCK(sim);
 		(*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h);
 		CAM_SIM_UNLOCK(sim);
 		mtx_lock(&sim->sim_doneq_mtx);
 	}
 	sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ;
 	mtx_unlock(&sim->sim_doneq_mtx);
+	xpt_run_devq(sim->devq);
 }

Modified: projects/camlock/sys/cam/cam_xpt_internal.h
==============================================================================
--- projects/camlock/sys/cam/cam_xpt_internal.h	Sat Apr  6 18:04:35 2013	(r249211)
+++ projects/camlock/sys/cam/cam_xpt_internal.h	Sat Apr  6 19:11:12 2013	(r249212)
@@ -75,7 +75,6 @@ struct cam_ed {
 	struct	cam_et	 *target;
 	struct	cam_sim  *sim;
 	lun_id_t	 lun_id;
-	struct mtx	 mtx;
 	struct	camq drvq;		/*
 					 * Queue of type drivers wanting to do
 					 * work on this device.
@@ -180,8 +179,6 @@ struct cam_ed *		xpt_alloc_device(struct
 					 lun_id_t lun_id);
 void			xpt_acquire_device(struct cam_ed *device);
 void			xpt_release_device(struct cam_ed *device);
-int			xpt_schedule_dev(struct camq *queue, cam_pinfo *dev_pinfo,
-					 u_int32_t new_priority);
 u_int32_t		xpt_dev_ccbq_resize(struct cam_path *path, int newopenings);
 void			xpt_start_tags(struct cam_path *path);
 void			xpt_stop_tags(struct cam_path *path);