From owner-svn-src-projects@FreeBSD.ORG Mon Apr 8 08:38:59 2013 Return-Path: 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 3A266E72; Mon, 8 Apr 2013 08:38:59 +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 2B2EDAC4; Mon, 8 Apr 2013 08:38:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r388cx1C097499; Mon, 8 Apr 2013 08:38:59 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r388ctHQ097478; Mon, 8 Apr 2013 08:38:55 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201304080838.r388ctHQ097478@svn.freebsd.org> From: Gleb Smirnoff Date: Mon, 8 Apr 2013 08:38:55 +0000 (UTC) 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... 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Apr 2013 08:38:59 -0000 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 +#include #include #include #include @@ -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 #include #include +#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 #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 @@ -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 ***