Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Apr 2013 08:38:55 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r249250 - in projects/counters: . bin/sh cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys etc/devd sbin/cam...
Message-ID:  <201304080838.r388ctHQ097478@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Mon Apr  8 08:38:55 2013
New Revision: 249250
URL: http://svnweb.freebsd.org/changeset/base/249250

Log:
  Merge head r243428 through r249248.

Added:
  projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
     - copied unchanged from r249248, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
  projects/counters/tools/regression/bin/sh/builtins/eval6.0
     - copied unchanged from r249248, head/tools/regression/bin/sh/builtins/eval6.0
Deleted:
  projects/counters/sys/dev/ata/ata-queue.c
  projects/counters/sys/modules/ata/atadevel/
Modified:
  projects/counters/UPDATING
  projects/counters/bin/sh/nodes.c.pat
  projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c
  projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
  projects/counters/etc/devd/usb.conf
  projects/counters/sbin/camcontrol/camcontrol.8
  projects/counters/sbin/camcontrol/camcontrol.c
  projects/counters/share/man/man9/sbuf.9
  projects/counters/sys/arm/at91/at91_pio.c
  projects/counters/sys/arm/at91/at91_piovar.h
  projects/counters/sys/boot/ficl/arm/sysdep.h
  projects/counters/sys/boot/ficl/tools.c
  projects/counters/sys/cam/ata/ata_all.h
  projects/counters/sys/cam/ata/ata_da.c
  projects/counters/sys/cam/ata/ata_xpt.c
  projects/counters/sys/cam/cam_ccb.h
  projects/counters/sys/cam/cam_sim.h
  projects/counters/sys/cam/ctl/ctl_backend_block.c
  projects/counters/sys/cddl/compat/opensolaris/sys/sdt.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.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_onexit.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/counters/sys/conf/files
  projects/counters/sys/conf/options
  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-isa.c
  projects/counters/sys/dev/ata/ata-lowlevel.c
  projects/counters/sys/dev/ata/ata-pci.c
  projects/counters/sys/dev/ata/ata-sata.c
  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-adaptec.c
  projects/counters/sys/dev/ata/chipsets/ata-ahci.c
  projects/counters/sys/dev/ata/chipsets/ata-amd.c
  projects/counters/sys/dev/ata/chipsets/ata-ati.c
  projects/counters/sys/dev/ata/chipsets/ata-cenatek.c
  projects/counters/sys/dev/ata/chipsets/ata-cypress.c
  projects/counters/sys/dev/ata/chipsets/ata-cyrix.c
  projects/counters/sys/dev/ata/chipsets/ata-fsl.c
  projects/counters/sys/dev/ata/chipsets/ata-highpoint.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-jmicron.c
  projects/counters/sys/dev/ata/chipsets/ata-marvell.c
  projects/counters/sys/dev/ata/chipsets/ata-micron.c
  projects/counters/sys/dev/ata/chipsets/ata-national.c
  projects/counters/sys/dev/ata/chipsets/ata-netcell.c
  projects/counters/sys/dev/ata/chipsets/ata-nvidia.c
  projects/counters/sys/dev/ata/chipsets/ata-promise.c
  projects/counters/sys/dev/ata/chipsets/ata-serverworks.c
  projects/counters/sys/dev/ata/chipsets/ata-siliconimage.c
  projects/counters/sys/dev/ata/chipsets/ata-sis.c
  projects/counters/sys/dev/ata/chipsets/ata-via.c
  projects/counters/sys/dev/usb/controller/at91dci_atmelarm.c
  projects/counters/sys/dev/usb/serial/uftdi.c
  projects/counters/sys/dev/usb/usbdevs
  projects/counters/sys/fs/ext2fs/ext2_alloc.c
  projects/counters/sys/geom/geom_dev.c
  projects/counters/sys/kern/imgact_elf.c
  projects/counters/sys/kern/kern_descrip.c
  projects/counters/sys/kern/uipc_mqueue.c
  projects/counters/sys/kern/uipc_sem.c
  projects/counters/sys/kern/uipc_shm.c
  projects/counters/sys/kern/vfs_subr.c
  projects/counters/sys/modules/ata/atacard/Makefile
  projects/counters/sys/modules/ata/atacbus/Makefile
  projects/counters/sys/modules/ata/atacore/Makefile
  projects/counters/sys/modules/ata/ataisa/Makefile
  projects/counters/sys/modules/ata/atapci/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataacard/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataacerlabs/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataadaptec/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataahci/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataamd/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataati/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atacenatek/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atacypress/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atacyrix/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atahighpoint/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataintel/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataite/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atajmicron/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atamarvell/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atamicron/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atanational/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atanetcell/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atanvidia/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atapromise/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/ataserverworks/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atasiliconimage/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atasis/Makefile
  projects/counters/sys/modules/ata/atapci/chipsets/atavia/Makefile
  projects/counters/sys/modules/cam/Makefile
  projects/counters/sys/modules/usb/umass/Makefile
  projects/counters/sys/modules/usb/urio/Makefile
  projects/counters/sys/modules/usb/usfs/Makefile
  projects/counters/sys/powerpc/powermac/ata_dbdma.c
  projects/counters/sys/powerpc/powermac/ata_kauai.c
  projects/counters/sys/powerpc/powermac/ata_macio.c
  projects/counters/sys/powerpc/psim/ata_iobus.c
  projects/counters/sys/ufs/ffs/ffs_softdep.c
  projects/counters/sys/ufs/ffs/ffs_vfsops.c
  projects/counters/sys/vm/vm_pager.c
  projects/counters/sys/vm/vm_radix.c
  projects/counters/usr.bin/calendar/calendar.1
  projects/counters/usr.sbin/rarpd/rarpd.c
  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/sbin/   (props changed)
  projects/counters/sys/   (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.bin/calendar/   (props changed)

Modified: projects/counters/UPDATING
==============================================================================
--- projects/counters/UPDATING	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/UPDATING	Mon Apr  8 08:38:55 2013	(r249250)
@@ -26,6 +26,19 @@ 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.
+
+20130319:
+	SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
+	and socketpair(2). Software, in particular Kerberos, may
+	automatically detect and use these during building. The resulting
+	binaries will not work on older kernels.
+
 20130308:
 	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
 	information, see the respective 20130304 entry).

Modified: projects/counters/bin/sh/nodes.c.pat
==============================================================================
--- projects/counters/bin/sh/nodes.c.pat	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/bin/sh/nodes.c.pat	Mon Apr  8 08:38:55 2013	(r249250)
@@ -58,7 +58,7 @@ static void calcsize(union node *);
 static void sizenodelist(struct nodelist *);
 static union node *copynode(union node *);
 static struct nodelist *copynodelist(struct nodelist *);
-static char *nodesavestr(char *);
+static char *nodesavestr(const char *);
 
 
 struct funcdef {
@@ -147,9 +147,9 @@ copynodelist(struct nodelist *lp)
 
 
 static char *
-nodesavestr(char *s)
+nodesavestr(const char *s)
 {
-	char *p = s;
+	const char *p = s;
 	char *q = funcstring;
 	char   *rtn = funcstring;
 

Modified: projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -21,10 +21,11 @@
 
 /*
  * 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 <stdio.h>
+#include <unistd.h>
 #include <stdio_ext.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -237,18 +238,18 @@ zdb_nicenum(uint64_t num, char *buf)
 		nicenum(num, buf);
 }
 
-const char dump_zap_stars[] = "****************************************";
-const int dump_zap_width = sizeof (dump_zap_stars) - 1;
+const char histo_stars[] = "****************************************";
+const int histo_width = sizeof (histo_stars) - 1;
 
 static void
-dump_zap_histogram(uint64_t histo[ZAP_HISTOGRAM_SIZE])
+dump_histogram(const uint64_t *histo, int size)
 {
 	int i;
-	int minidx = ZAP_HISTOGRAM_SIZE - 1;
+	int minidx = size - 1;
 	int maxidx = 0;
 	uint64_t max = 0;
 
-	for (i = 0; i < ZAP_HISTOGRAM_SIZE; i++) {
+	for (i = 0; i < size; i++) {
 		if (histo[i] > max)
 			max = histo[i];
 		if (histo[i] > 0 && i > maxidx)
@@ -257,12 +258,14 @@ dump_zap_histogram(uint64_t histo[ZAP_HI
 			minidx = i;
 	}
 
-	if (max < dump_zap_width)
-		max = dump_zap_width;
+	if (max < histo_width)
+		max = histo_width;
 
-	for (i = minidx; i <= maxidx; i++)
-		(void) printf("\t\t\t%u: %6llu %s\n", i, (u_longlong_t)histo[i],
-		    &dump_zap_stars[(max - histo[i]) * dump_zap_width / max]);
+	for (i = minidx; i <= maxidx; i++) {
+		(void) printf("\t\t\t%3u: %6llu %s\n",
+		    i, (u_longlong_t)histo[i],
+		    &histo_stars[(max - histo[i]) * histo_width / max]);
+	}
 }
 
 static void
@@ -313,19 +316,19 @@ dump_zap_stats(objset_t *os, uint64_t ob
 	    (u_longlong_t)zs.zs_salt);
 
 	(void) printf("\t\tLeafs with 2^n pointers:\n");
-	dump_zap_histogram(zs.zs_leafs_with_2n_pointers);
+	dump_histogram(zs.zs_leafs_with_2n_pointers, ZAP_HISTOGRAM_SIZE);
 
 	(void) printf("\t\tBlocks with n*5 entries:\n");
-	dump_zap_histogram(zs.zs_blocks_with_n5_entries);
+	dump_histogram(zs.zs_blocks_with_n5_entries, ZAP_HISTOGRAM_SIZE);
 
 	(void) printf("\t\tBlocks n/10 full:\n");
-	dump_zap_histogram(zs.zs_blocks_n_tenths_full);
+	dump_histogram(zs.zs_blocks_n_tenths_full, ZAP_HISTOGRAM_SIZE);
 
 	(void) printf("\t\tEntries with n chunks:\n");
-	dump_zap_histogram(zs.zs_entries_using_n_chunks);
+	dump_histogram(zs.zs_entries_using_n_chunks, ZAP_HISTOGRAM_SIZE);
 
 	(void) printf("\t\tBuckets with n entries:\n");
-	dump_zap_histogram(zs.zs_buckets_with_n_entries);
+	dump_histogram(zs.zs_buckets_with_n_entries, ZAP_HISTOGRAM_SIZE);
 }
 
 /*ARGSUSED*/
@@ -947,7 +950,7 @@ sprintf_blkptr_compact(char *blkbuf, con
 	const dva_t *dva = bp->blk_dva;
 	int ndvas = dump_opt['d'] > 5 ? BP_GET_NDVAS(bp) : 1;
 
-	if (dump_opt['b'] >= 5) {
+	if (dump_opt['b'] >= 6) {
 		sprintf_blkptr(blkbuf, bp);
 		return;
 	}
@@ -1986,11 +1989,13 @@ dump_one_dir(const char *dsname, void *a
 /*
  * Block statistics.
  */
+#define	PSIZE_HISTO_SIZE (SPA_MAXBLOCKSIZE / SPA_MINBLOCKSIZE + 1)
 typedef struct zdb_blkstats {
-	uint64_t	zb_asize;
-	uint64_t	zb_lsize;
-	uint64_t	zb_psize;
-	uint64_t	zb_count;
+	uint64_t zb_asize;
+	uint64_t zb_lsize;
+	uint64_t zb_psize;
+	uint64_t zb_count;
+	uint64_t zb_psize_histogram[PSIZE_HISTO_SIZE];
 } zdb_blkstats_t;
 
 /*
@@ -2014,6 +2019,9 @@ typedef struct zdb_cb {
 	zdb_blkstats_t	zcb_type[ZB_TOTAL + 1][ZDB_OT_TOTAL + 1];
 	uint64_t	zcb_dedup_asize;
 	uint64_t	zcb_dedup_blocks;
+	uint64_t	zcb_start;
+	uint64_t	zcb_lastprint;
+	uint64_t	zcb_totalasize;
 	uint64_t	zcb_errors[256];
 	int		zcb_readfails;
 	int		zcb_haderrors;
@@ -2040,6 +2048,7 @@ zdb_count_block(zdb_cb_t *zcb, zilog_t *
 		zb->zb_lsize += BP_GET_LSIZE(bp);
 		zb->zb_psize += BP_GET_PSIZE(bp);
 		zb->zb_count++;
+		zb->zb_psize_histogram[BP_GET_PSIZE(bp) >> SPA_MINBLOCKSHIFT]++;
 	}
 
 	if (dump_opt['L'])
@@ -2126,7 +2135,7 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog
 
 	zcb->zcb_readfails = 0;
 
-	if (dump_opt['b'] >= 4) {
+	if (dump_opt['b'] >= 5) {
 		sprintf_blkptr(blkbuf, bp);
 		(void) printf("objset %llu object %llu "
 		    "level %lld offset 0x%llx %s\n",
@@ -2137,6 +2146,28 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog
 		    blkbuf);
 	}
 
+	if (dump_opt['b'] < 5 && isatty(STDERR_FILENO) &&
+	    gethrtime() > zcb->zcb_lastprint + NANOSEC) {
+		uint64_t now = gethrtime();
+		char buf[10];
+		uint64_t bytes = zcb->zcb_type[ZB_TOTAL][ZDB_OT_TOTAL].zb_asize;
+		int kb_per_sec =
+		    1 + bytes / (1 + ((now - zcb->zcb_start) / 1000 / 1000));
+		int sec_remaining =
+		    (zcb->zcb_totalasize - bytes) / 1024 / kb_per_sec;
+
+		zfs_nicenum(bytes, buf, sizeof (buf));
+		(void) fprintf(stderr,
+		    "\r%5s completed (%4dMB/s) "
+		    "estimated time remaining: %uhr %02umin %02usec        ",
+		    buf, kb_per_sec / 1024,
+		    sec_remaining / 60 / 60,
+		    sec_remaining / 60 % 60,
+		    sec_remaining % 60);
+
+		zcb->zcb_lastprint = now;
+	}
+
 	return (0);
 }
 
@@ -2268,7 +2299,7 @@ count_block_cb(void *arg, const blkptr_t
 {
 	zdb_cb_t *zcb = arg;
 
-	if (dump_opt['b'] >= 4) {
+	if (dump_opt['b'] >= 5) {
 		char blkbuf[BP_SPRINTF_LEN];
 		sprintf_blkptr(blkbuf, bp);
 		(void) printf("[%s] %s\n",
@@ -2287,7 +2318,7 @@ dump_block_stats(spa_t *spa)
 	int flags = TRAVERSE_PRE | TRAVERSE_PREFETCH_METADATA | TRAVERSE_HARD;
 	int leaks = 0;
 
-	(void) printf("\nTraversing all blocks %s%s%s%s%s...\n",
+	(void) printf("\nTraversing all blocks %s%s%s%s%s...\n\n",
 	    (dump_opt['c'] || !dump_opt['L']) ? "to verify " : "",
 	    (dump_opt['c'] == 1) ? "metadata " : "",
 	    dump_opt['c'] ? "checksums " : "",
@@ -2323,6 +2354,8 @@ dump_block_stats(spa_t *spa)
 	if (dump_opt['c'] > 1)
 		flags |= TRAVERSE_PREFETCH_DATA;
 
+	zcb.zcb_totalasize = metaslab_class_get_alloc(spa_normal_class(spa));
+	zcb.zcb_start = zcb.zcb_lastprint = gethrtime();
 	zcb.zcb_haderrors |= traverse_pool(spa, 0, flags, zdb_blkptr_cb, &zcb);
 
 	if (zcb.zcb_haderrors) {
@@ -2450,6 +2483,14 @@ dump_block_stats(spa_t *spa)
 				else
 					(void) printf("    L%d %s\n",
 					    level, typename);
+
+				if (dump_opt['b'] >= 4) {
+					(void) printf("psize "
+					    "(in 512-byte sectors): "
+					    "number of blocks\n");
+					dump_histogram(zb->zb_psize_histogram,
+					    PSIZE_HISTO_SIZE);
+				}
 			}
 		}
 	}

Modified: projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Mon Apr  8 08:38:55 2013	(r249250)
@@ -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/counters/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d (from r249248, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d	Mon Apr  8 08:38:55 2013	(r249250, copy of r249248, 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/counters/etc/devd/usb.conf
==============================================================================
--- projects/counters/etc/devd/usb.conf	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/etc/devd/usb.conf	Mon Apr  8 08:38:55 2013	(r249250)
@@ -120,7 +120,23 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x03f0";
-	match "product" "(0x2016|0x2116|0x2216|0x3016|0x3116|0x3216)";
+	match "product" "(0x2016|0x2116|0x2216|0x3016|0x3116)";
+	action "kldload -n uipaq";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x03f0";
+	match "product" "0x311d";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x03f0";
+	match "product" "0x3216";
 	action "kldload -n uipaq";
 };
 
@@ -168,7 +184,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0403";
-	match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeee
 b|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
+	match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee
 9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
 	action "kldload -n uftdi";
 };
 
@@ -280,7 +296,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0411";
-	match "product" "(0x0116|0x0119)";
+	match "product" "(0x00f4|0x0116|0x0119)";
 	action "kldload -n if_rum";
 };
 
@@ -423,6 +439,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0489";
+	match "product" "(0xe027|0xe02c|0xe036|0xe03c|0xe03d|0xe04e|0xe056|0xe057)";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0499";
 	match "product" "(0x1000|0x1001|0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012|0x1013|0x1014|0x1015|0x1016|0x1017|0x1018|0x1019|0x101a|0x101b|0x101c|0x101d|0x101e|0x101f|0x1020|0x1021|0x1022|0x1023|0x1024|0x1025|0x1026|0x1027|0x1028|0x1029|0x102a|0x102b|0x102e|0x1030|0x1031|0x1032|0x1033|0x1034|0x1035|0x1036|0x1037|0x1038|0x1039|0x103a|0x103b|0x103c|0x103d|0x103e|0x103f|0x1040|0x1041|0x1042|0x1043|0x1044|0x1045|0x104e|0x104f|0x1050|0x1051|0x1052|0x1053|0x1054|0x1055|0x1056|0x1057|0x1058|0x1059|0x105a|0x105b|0x105c|0x105d|0x1503|0x2000|0x2001|0x2002|0x2003|0x5000|0x5001|0x5002|0x5003|0x5004|0x5005|0x5006|0x5007|0x5008|0x5009|0x500a|0x500b|0x500c|0x500d|0x500e|0x500f|0x7000|0x7010)";
 	action "kldload -n snd_uaudio";
@@ -559,6 +583,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x04ca";
+	match "product" "(0x3005|0x3006|0x3008)";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x04da";
 	match "product" "0x2500";
 	action "kldload -n uipaq";
@@ -800,7 +832,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0525";
-	match "product" "0x1080";
+	match "product" "(0x1080|0xa4a0)";
 	action "kldload -n udbp";
 };
 
@@ -1103,6 +1135,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x065a";
+	match "product" "(0xc000|0xc001)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x066b";
 	match "product" "(0x200c|0x2202)";
 	action "kldload -n if_aue";
@@ -1344,7 +1384,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0789";
-	match "product" "(0x0162|0x0163|0x0164|0x0166|0x0168)";
+	match "product" "(0x0162|0x0163|0x0164|0x0166|0x0168|0x0169)";
 	action "kldload -n if_run";
 };
 
@@ -1800,6 +1840,14 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0930";
+	match "product" "(0x0215|0x0219)";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0930";
 	match "product" "(0x0700|0x0705|0x0706|0x0707|0x0708|0x0709|0x070a|0x070b)";
 	action "kldload -n uipaq";
 };
@@ -2375,6 +2423,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0cf3";
+	match "product" "(0x3002|0x3004|0x311d|0xe004|0xe019)";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0d3a";
 	match "product" "0x0300";
 	action "kldload -n uftdi";
@@ -3224,15 +3280,39 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x13d3";
-	match "product" "(0x3247|0x3262|0x3273|0x3284|0x3305)";
+	match "product" "(0x3247|0x3262|0x3273|0x3284)";
+	action "kldload -n if_run";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x13d3";
+	match "product" "0x3304";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x13d3";
+	match "product" "0x3305";
 	action "kldload -n if_run";
 };
 
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x13d3";
+	match "product" "(0x3362|0x3375|0x3393)";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1410";
-	match "product" "(0x1100|0x1110|0x1120|0x1130|0x1400|0x1410|0x1420|0x1430|0x1450|0x2100|0x2110|0x2120|0x2130|0x2400|0x2410|0x2420|0x4100|0x4400|0x5010|0x5100|0x6000|0x6002|0x7042)";
+	match "product" "(0x1100|0x1110|0x1120|0x1130|0x1400|0x1410|0x1420|0x1430|0x1450|0x2100|0x2110|0x2120|0x2130|0x2400|0x2410|0x2420|0x4100|0x4400|0x5010|0x5041|0x5100|0x6000|0x6002|0x7042)";
 	action "kldload -n u3g";
 };
 
@@ -4040,7 +4120,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x2001";
-	match "product" "0x1a00";
+	match "product" "(0x1a00|0x1a02)";
 	action "kldload -n if_axe";
 };
 
@@ -4096,7 +4176,23 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x2001";
-	match "product" "(0x4001|0x4002|0x4003|0x400b|0x4102|0xabc1)";
+	match "product" "(0x4001|0x4002|0x4003|0x400b|0x4102)";
+	action "kldload -n if_aue";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x2001";
+	match "product" "(0x7e12|0xa805)";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x2001";
+	match "product" "0xabc1";
 	action "kldload -n if_aue";
 };
 
@@ -4215,6 +4311,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x22b8";
+	match "product" "0x710f";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x22de";
 	match "product" "0x6801";
 	action "kldload -n u3g";
@@ -4495,6 +4599,16 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0a5c";
+	match "intclass" "0xff";
+	match "intsubclass" "0x01";
+	match "intprotocol" "0x01";
+	action "kldload -n ng_ubt";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "intclass" "0x02";
 	match "intsubclass" "0x02";
 	match "intprotocol" "0x01";
@@ -4635,5 +4749,5 @@ nomatch 32 {
 	action "kldload -n umass";
 };
 
-# 2386 USB entries processed
+# 2422 USB entries processed
 

Modified: projects/counters/sbin/camcontrol/camcontrol.8
==============================================================================
--- projects/counters/sbin/camcontrol/camcontrol.8	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sbin/camcontrol/camcontrol.8	Mon Apr  8 08:38:55 2013	(r249250)
@@ -1118,14 +1118,15 @@ usually takes just a few seconds.
 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. 
+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 
+Issuing an enhanced secure erase will
 .Em ERASE ALL
 user data on the device and may take several hours to complete.
 .Pp
@@ -1378,7 +1379,7 @@ camcontrol security ada0
 .Pp
 Report security support and settings for ada0
 .Bd -literal -offset indent
-camcontrol security ada0 -u user -s MyPass 
+camcontrol security ada0 -u user -s MyPass
 .Ed
 .Pp
 Enable security on device ada0 with the password MyPass

Modified: projects/counters/sbin/camcontrol/camcontrol.c
==============================================================================
--- projects/counters/sbin/camcontrol/camcontrol.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sbin/camcontrol/camcontrol.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -1734,7 +1734,7 @@ enum {
 	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)

Modified: projects/counters/share/man/man9/sbuf.9
==============================================================================
--- projects/counters/share/man/man9/sbuf.9	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/share/man/man9/sbuf.9	Mon Apr  8 08:38:55 2013	(r249250)
@@ -94,7 +94,7 @@
 .Fn sbuf_finish "struct sbuf *s"
 .Ft char *
 .Fn sbuf_data "struct sbuf *s"
-.Ft int
+.Ft ssize_t
 .Fn sbuf_len "struct sbuf *s"
 .Ft int
 .Fn sbuf_done "struct sbuf *s"

Modified: projects/counters/sys/arm/at91/at91_pio.c
==============================================================================
--- projects/counters/sys/arm/at91/at91_pio.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/arm/at91/at91_pio.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -554,12 +554,12 @@ at91_pio_gpio_clear(uint32_t pio, uint32
 	PIO[PIO_CODR / 4] = data_mask;
 }
 
-uint8_t
+uint32_t
 at91_pio_gpio_get(uint32_t pio, uint32_t data_mask)
 {
 	uint32_t *PIO = (uint32_t *)(AT91_BASE + pio);
 
-	return ((PIO[PIO_PDSR / 4] & data_mask));
+	return (PIO[PIO_PDSR / 4] & data_mask);
 }
 
 void

Modified: projects/counters/sys/arm/at91/at91_piovar.h
==============================================================================
--- projects/counters/sys/arm/at91/at91_piovar.h	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/arm/at91/at91_piovar.h	Mon Apr  8 08:38:55 2013	(r249250)
@@ -39,7 +39,7 @@ void at91_pio_gpio_output(uint32_t pio, 
 void at91_pio_gpio_high_z(uint32_t pio, uint32_t high_z_mask, int enable);
 void at91_pio_gpio_set(uint32_t pio, uint32_t data_mask);
 void at91_pio_gpio_clear(uint32_t pio, uint32_t data_mask);
-uint8_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
+uint32_t at91_pio_gpio_get(uint32_t pio, uint32_t data_mask);
 void at91_pio_gpio_set_deglitch(uint32_t pio, uint32_t data_mask,
     int use_deglitch);
 void at91_pio_gpio_set_interrupt(uint32_t pio, uint32_t data_mask,

Modified: projects/counters/sys/boot/ficl/arm/sysdep.h
==============================================================================
--- projects/counters/sys/boot/ficl/arm/sysdep.h	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/boot/ficl/arm/sysdep.h	Mon Apr  8 08:38:55 2013	(r249250)
@@ -59,7 +59,7 @@
 #include <assert.h>
 
 #if !defined IGNORE		/* Macro to silence unused param warnings */
-#define IGNORE(x) &x
+#define IGNORE(x) (void)(x)
 #endif
 
 /*
@@ -406,7 +406,7 @@ void *ficlRealloc(void *p, size_t size);
 #if FICL_MULTITHREAD
 int ficlLockDictionary(short fLock);
 #else
-#define ficlLockDictionary(x) 0 /* ignore */
+#define ficlLockDictionary(x) /* ignore */
 #endif
 
 /*

Modified: projects/counters/sys/boot/ficl/tools.c
==============================================================================
--- projects/counters/sys/boot/ficl/tools.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/boot/ficl/tools.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -216,10 +216,11 @@ static void seeColon(FICL_VM *pVM, CELL 
                 {
                     FICL_WORD *pLit = (FICL_WORD *)c.p;
                     sprintf(cp, "%.*s ( %#lx literal )", 
-                        pLit->nName, pLit->name, c.u);
+                        pLit->nName, pLit->name, (unsigned long)c.u);
                 }
                 else
-                    sprintf(cp, "literal %ld (%#lx)", c.i, c.u);
+                    sprintf(cp, "literal %ld (%#lx)",
+                        (long)c.i, (unsigned long)c.u);
                 break;
             case STRINGLIT:
                 {
@@ -281,7 +282,7 @@ static void seeColon(FICL_VM *pVM, CELL 
         }
         else /* probably not a word - punt and print value */
         {
-            sprintf(cp, "%ld ( %#lx )", pc->i, pc->u);
+            sprintf(cp, "%ld ( %#lx )", (long)pc->i, (unsigned long)pc->u);
         }
 
 		vmTextOut(pVM, pVM->pad, 1);
@@ -324,19 +325,22 @@ static void seeXT(FICL_VM *pVM)
         break;
 
     case VARIABLE:
-        sprintf(pVM->pad, "variable = %ld (%#lx)", pFW->param->i, pFW->param->u);
+        sprintf(pVM->pad, "variable = %ld (%#lx)",
+            (long)pFW->param->i, (unsigned long)pFW->param->u);
         vmTextOut(pVM, pVM->pad, 1);
         break;
 
 #if FICL_WANT_USER
     case USER:
-        sprintf(pVM->pad, "user variable %ld (%#lx)", pFW->param->i, pFW->param->u);
+        sprintf(pVM->pad, "user variable %ld (%#lx)",
+            (long)pFW->param->i, (unsigned long)pFW->param->u);
         vmTextOut(pVM, pVM->pad, 1);
         break;
 #endif
 
     case CONSTANT:
-        sprintf(pVM->pad, "constant = %ld (%#lx)", pFW->param->i, pFW->param->u);
+        sprintf(pVM->pad, "constant = %ld (%#lx)",
+            (long)pFW->param->i, (unsigned long)pFW->param->u);
         vmTextOut(pVM, pVM->pad, 1);
 
     default:

Modified: projects/counters/sys/cam/ata/ata_all.h
==============================================================================
--- projects/counters/sys/cam/ata/ata_all.h	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/cam/ata/ata_all.h	Mon Apr  8 08:38:55 2013	(r249250)
@@ -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/counters/sys/cam/ata/ata_da.c
==============================================================================
--- projects/counters/sys/cam/ata/ata_da.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/cam/ata/ata_da.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -28,7 +28,6 @@
 __FBSDID("$FreeBSD$");
 
 #include "opt_ada.h"
-#include "opt_ata.h"
 
 #include <sys/param.h>
 
@@ -75,18 +74,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 +613,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 +902,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;
@@ -1067,8 +1079,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)
@@ -1455,7 +1470,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/counters/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/counters/sys/cam/ata/ata_xpt.c	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/cam/ata/ata_xpt.c	Mon Apr  8 08:38:55 2013	(r249250)
@@ -965,19 +965,22 @@ noerror:
 		xpt_schedule(periph, priority);
 		return;
 	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)
@@ -989,19 +992,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))) {
@@ -1154,6 +1180,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);
@@ -1163,11 +1194,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;
@@ -2077,4 +2103,3 @@ ata_announce_periph(struct cam_periph *p
 	}
 	printf("\n");
 }
-

Modified: projects/counters/sys/cam/cam_ccb.h
==============================================================================
--- projects/counters/sys/cam/cam_ccb.h	Mon Apr  8 08:37:57 2013	(r249249)
+++ projects/counters/sys/cam/cam_ccb.h	Mon Apr  8 08:38:55 2013	(r249250)
@@ -896,9 +896,14 @@ struct ccb_trans_settings_pata {
 #define	CTS_ATA_VALID_MODE		0x01
 #define	CTS_ATA_VALID_BYTECOUNT		0x02
 #define	CTS_ATA_VALID_ATAPI		0x20

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304080838.r388ctHQ097478>