svn commit: r260168 - in projects/altix2: . bin/ps bin/sh cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zhack cddl/contrib/opensolaris/cmd/zpool cdd...
Marcel Moolenaar
marcel at FreeBSD.org
Wed Jan 1 21:25:16 UTC 2014
Author: marcel
Date: Wed Jan 1 21:25:13 2014
New Revision: 260168
URL: http://svnweb.freebsd.org/changeset/base/260168
Log:
Merge ^/head at 260167.
Added:
projects/altix2/contrib/gcc/ChangeLog.apple
- copied unchanged from r260166, head/contrib/gcc/ChangeLog.apple
projects/altix2/contrib/gcc/cp/ChangeLog.apple
- copied unchanged from r260166, head/contrib/gcc/cp/ChangeLog.apple
projects/altix2/lib/libc/sys/aio_fsync.2
- copied unchanged from r260166, head/lib/libc/sys/aio_fsync.2
projects/altix2/lib/msun/ld128/k_expl.h
- copied unchanged from r260166, head/lib/msun/ld128/k_expl.h
projects/altix2/lib/msun/ld80/k_expl.h
- copied unchanged from r260166, head/lib/msun/ld80/k_expl.h
projects/altix2/lib/msun/src/e_coshl.c
- copied unchanged from r260166, head/lib/msun/src/e_coshl.c
projects/altix2/lib/msun/src/e_sinhl.c
- copied unchanged from r260166, head/lib/msun/src/e_sinhl.c
projects/altix2/lib/msun/src/s_tanhl.c
- copied unchanged from r260166, head/lib/msun/src/s_tanhl.c
projects/altix2/sbin/fsck_ffs/globs.c
- copied unchanged from r260166, head/sbin/fsck_ffs/globs.c
Modified:
projects/altix2/COPYRIGHT
projects/altix2/bin/ps/ps.1
projects/altix2/bin/sh/input.c
projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.8
projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.c
projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c
projects/altix2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
projects/altix2/cddl/contrib/opensolaris/cmd/zhack/zhack.c
projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7
projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool.8
projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1
projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c
projects/altix2/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
projects/altix2/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
projects/altix2/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
projects/altix2/contrib/binutils/gas/config/tc-ia64.c
projects/altix2/contrib/binutils/opcodes/ia64-asmtab.c
projects/altix2/contrib/gcc/ChangeLog.gcc43
projects/altix2/contrib/gcc/c-common.c
projects/altix2/contrib/gcc/c-decl.c
projects/altix2/contrib/gcc/c-opts.c
projects/altix2/contrib/gcc/c-parser.c
projects/altix2/contrib/gcc/c-tree.h
projects/altix2/contrib/gcc/c-typeck.c
projects/altix2/contrib/gcc/c.opt
projects/altix2/contrib/gcc/cp/ChangeLog
projects/altix2/contrib/gcc/cp/cp-gimplify.c
projects/altix2/contrib/gcc/cp/cp-tree.def
projects/altix2/contrib/gcc/cp/cp-tree.h
projects/altix2/contrib/gcc/cp/decl.c
projects/altix2/contrib/gcc/cp/dump.c
projects/altix2/contrib/gcc/cp/g++spec.c
projects/altix2/contrib/gcc/cp/init.c
projects/altix2/contrib/gcc/cp/parser.c
projects/altix2/contrib/gcc/cp/pt.c
projects/altix2/contrib/gcc/cp/semantics.c
projects/altix2/contrib/gcc/doc/extend.texi
projects/altix2/contrib/gcc/doc/invoke.texi
projects/altix2/contrib/gcc/dwarf2out.c
projects/altix2/contrib/gcc/emit-rtl.c
projects/altix2/contrib/gcc/final.c
projects/altix2/contrib/gcc/libgcc2.c
projects/altix2/contrib/gcc/libgcc2.h
projects/altix2/contrib/gcc/loop-init.c
projects/altix2/contrib/gcc/print-rtl.c
projects/altix2/contrib/gcc/print-tree.c
projects/altix2/contrib/gcc/reload1.c
projects/altix2/contrib/gcc/rtl.def
projects/altix2/contrib/gcc/rtl.h
projects/altix2/contrib/gcc/stmt.c
projects/altix2/contrib/gcc/toplev.c
projects/altix2/contrib/gcc/toplev.h
projects/altix2/contrib/gcc/tree-cfg.c
projects/altix2/contrib/gcc/tree-ssa-address.c
projects/altix2/contrib/gcc/tree.h
projects/altix2/contrib/libc++/include/type_traits
projects/altix2/etc/devd/usb.conf
projects/altix2/etc/ntp.conf
projects/altix2/gnu/usr.bin/gdb/kgdb/Makefile
projects/altix2/gnu/usr.bin/gdb/kgdb/main.c
projects/altix2/lib/libc/sys/Makefile.inc
projects/altix2/lib/libc/sys/aio_mlock.2
projects/altix2/lib/libiconv_modules/BIG5/citrus_big5.c
projects/altix2/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c
projects/altix2/lib/libiconv_modules/EUC/citrus_euc.c
projects/altix2/lib/libiconv_modules/EUCTW/citrus_euctw.c
projects/altix2/lib/libiconv_modules/GBK2K/citrus_gbk2k.c
projects/altix2/lib/libiconv_modules/HZ/citrus_hz.c
projects/altix2/lib/libiconv_modules/ISO2022/citrus_iso2022.c
projects/altix2/lib/libiconv_modules/JOHAB/citrus_johab.c
projects/altix2/lib/libiconv_modules/MSKanji/citrus_mskanji.c
projects/altix2/lib/libiconv_modules/UES/citrus_ues.c
projects/altix2/lib/libiconv_modules/UTF7/citrus_utf7.c
projects/altix2/lib/libiconv_modules/UTF8/citrus_utf8.c
projects/altix2/lib/libiconv_modules/VIQR/citrus_viqr.c
projects/altix2/lib/libiconv_modules/ZW/citrus_zw.c
projects/altix2/lib/libkvm/kvm.c
projects/altix2/lib/libkvm/kvm_ia64.c
projects/altix2/lib/libprocstat/zfs/Makefile
projects/altix2/lib/libstand/Makefile
projects/altix2/lib/msun/Makefile
projects/altix2/lib/msun/Symbol.map
projects/altix2/lib/msun/ld128/s_expl.c
projects/altix2/lib/msun/ld80/s_expl.c
projects/altix2/lib/msun/man/cosh.3
projects/altix2/lib/msun/man/sinh.3
projects/altix2/lib/msun/man/tanh.3
projects/altix2/lib/msun/src/e_cosh.c
projects/altix2/lib/msun/src/e_sinh.c
projects/altix2/lib/msun/src/imprecise.c
projects/altix2/lib/msun/src/math.h
projects/altix2/lib/msun/src/s_tanh.c
projects/altix2/release/release.sh
projects/altix2/sbin/camcontrol/camcontrol.8
projects/altix2/sbin/camcontrol/camcontrol.c
projects/altix2/sbin/fsck_ffs/Makefile
projects/altix2/sbin/fsck_ffs/dir.c
projects/altix2/sbin/fsck_ffs/fsck.h
projects/altix2/sbin/fsck_ffs/fsck_ffs.8
projects/altix2/sbin/fsck_ffs/fsutil.c
projects/altix2/sbin/fsck_ffs/main.c
projects/altix2/sbin/fsck_ffs/pass1.c
projects/altix2/sbin/fsck_ffs/pass1b.c
projects/altix2/sbin/fsck_ffs/suj.c
projects/altix2/sbin/fsck_ffs/utilities.c
projects/altix2/sbin/fsdb/Makefile
projects/altix2/sbin/geom/class/mirror/geom_mirror.c
projects/altix2/sbin/geom/class/mirror/gmirror.8
projects/altix2/sbin/pfctl/Makefile
projects/altix2/sbin/pfctl/pfctl_altq.c
projects/altix2/sbin/pfctl/pfctl_parser.c
projects/altix2/sbin/pfctl/pfctl_parser.h
projects/altix2/share/man/man4/run.4
projects/altix2/sys/Makefile
projects/altix2/sys/amd64/amd64/pmap.c
projects/altix2/sys/amd64/include/vmm.h (contents, props changed)
projects/altix2/sys/amd64/vmm/intel/vmx.c
projects/altix2/sys/amd64/vmm/intel/vmx.h
projects/altix2/sys/amd64/vmm/intel/vmx_genassym.c
projects/altix2/sys/amd64/vmm/intel/vmx_support.S
projects/altix2/sys/amd64/vmm/io/vlapic.c
projects/altix2/sys/amd64/vmm/io/vlapic.h
projects/altix2/sys/amd64/vmm/io/vlapic_priv.h
projects/altix2/sys/arm/arm/gic.c
projects/altix2/sys/arm/arm/intr.c
projects/altix2/sys/arm/arm/nexus.c
projects/altix2/sys/arm/arm/pmap-v6.c
projects/altix2/sys/arm/at91/at91.c
projects/altix2/sys/arm/include/intr.h
projects/altix2/sys/arm/versatile/sp804.c
projects/altix2/sys/boot/ficl/Makefile
projects/altix2/sys/boot/i386/Makefile.inc
projects/altix2/sys/boot/i386/boot2/Makefile
projects/altix2/sys/boot/i386/gptboot/Makefile
projects/altix2/sys/boot/i386/gptzfsboot/Makefile
projects/altix2/sys/boot/i386/zfsboot/Makefile
projects/altix2/sys/boot/pc98/Makefile.inc
projects/altix2/sys/boot/pc98/boot2/Makefile
projects/altix2/sys/boot/usb/Makefile
projects/altix2/sys/boot/usb/Makefile.test
projects/altix2/sys/boot/userboot/ficl/Makefile
projects/altix2/sys/boot/userboot/libstand/Makefile
projects/altix2/sys/boot/zfs/Makefile
projects/altix2/sys/boot/zfs/zfsimpl.c
projects/altix2/sys/cddl/boot/zfs/zfsimpl.h
projects/altix2/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c
projects/altix2/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_disk.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
projects/altix2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
projects/altix2/sys/cddl/dev/dtrace/dtrace_load.c
projects/altix2/sys/conf/files
projects/altix2/sys/conf/kern.pre.mk
projects/altix2/sys/conf/options.arm
projects/altix2/sys/dev/aac/aac.c
projects/altix2/sys/dev/ahci/ahci.c
projects/altix2/sys/dev/bge/if_bge.c
projects/altix2/sys/dev/bxe/bxe.c
projects/altix2/sys/dev/bxe/ecore_sp.c
projects/altix2/sys/dev/ed/if_ed.c
projects/altix2/sys/dev/ed/if_ed_3c503.c
projects/altix2/sys/dev/ed/if_ed_pccard.c
projects/altix2/sys/dev/ed/if_ed_rtl80x9.c
projects/altix2/sys/dev/ed/if_edreg.h
projects/altix2/sys/dev/ed/if_edvar.h
projects/altix2/sys/dev/ed/tc5299jreg.h
projects/altix2/sys/dev/en/midway.c
projects/altix2/sys/dev/fb/boot_font.c
projects/altix2/sys/dev/fb/gallant12x22.c
projects/altix2/sys/dev/ipw/if_ipw.c
projects/altix2/sys/dev/ipw/if_ipwvar.h
projects/altix2/sys/dev/iscsi/icl.c
projects/altix2/sys/dev/iwi/if_iwi.c
projects/altix2/sys/dev/iwi/if_iwivar.h
projects/altix2/sys/dev/iwn/if_iwn.c
projects/altix2/sys/dev/iwn/if_iwn_chip_cfg.h
projects/altix2/sys/dev/iwn/if_iwnvar.h
projects/altix2/sys/dev/mcd/mcd.c
projects/altix2/sys/dev/mpt/mpt.h
projects/altix2/sys/dev/mpt/mpt_cam.c
projects/altix2/sys/dev/mpt/mpt_pci.c
projects/altix2/sys/dev/mpt/mpt_raid.c
projects/altix2/sys/dev/my/if_my.c
projects/altix2/sys/dev/nand/nand_id.c
projects/altix2/sys/dev/oce/oce_if.c
projects/altix2/sys/dev/ral/if_ral_pci.c
projects/altix2/sys/dev/scc/scc_dev_z8530.c
projects/altix2/sys/dev/sk/if_sk.c
projects/altix2/sys/dev/sound/pci/maestro.c
projects/altix2/sys/dev/tpm/tpm.c
projects/altix2/sys/dev/usb/usbdevs
projects/altix2/sys/dev/usb/wlan/if_run.c
projects/altix2/sys/dev/usb/wlan/if_urtw.c
projects/altix2/sys/dev/vt/vt_core.c
projects/altix2/sys/dev/vt/vt_font.c
projects/altix2/sys/dev/vxge/vxgehal/vxgehal-ring.c
projects/altix2/sys/dev/wpi/if_wpi.c
projects/altix2/sys/dev/wpi/if_wpivar.h
projects/altix2/sys/geom/mirror/g_mirror.c
projects/altix2/sys/geom/mirror/g_mirror.h
projects/altix2/sys/geom/mirror/g_mirror_ctl.c
projects/altix2/sys/geom/part/g_part.c
projects/altix2/sys/geom/part/g_part.h
projects/altix2/sys/geom/part/g_part_gpt.c
projects/altix2/sys/ia64/ia64/dump_machdep.c
projects/altix2/sys/kern/kern_cons.c
projects/altix2/sys/kern/sched_4bsd.c
projects/altix2/sys/kern/vfs_bio.c
projects/altix2/sys/kern/vfs_cache.c
projects/altix2/sys/modules/ath/Makefile
projects/altix2/sys/modules/drm2/i915kms/Makefile
projects/altix2/sys/modules/drm2/radeonkms/Makefile
projects/altix2/sys/modules/ibcore/Makefile
projects/altix2/sys/modules/ipfilter/Makefile
projects/altix2/sys/modules/ipoib/Makefile
projects/altix2/sys/modules/mlx4/Makefile
projects/altix2/sys/modules/mlx4ib/Makefile
projects/altix2/sys/modules/mlxen/Makefile
projects/altix2/sys/modules/mthca/Makefile
projects/altix2/sys/modules/wlan/Makefile
projects/altix2/sys/net/ieee8023ad_lacp.c
projects/altix2/sys/net/if_lagg.c
projects/altix2/sys/net/if_lagg.h
projects/altix2/sys/netgraph/netflow/netflow.c
projects/altix2/sys/netgraph/netflow/netflow_v9.c
projects/altix2/sys/netgraph/netflow/ng_netflow.c
projects/altix2/sys/netgraph/ng_base.c
projects/altix2/sys/netinet/in.c
projects/altix2/sys/netinet/sctp_usrreq.c
projects/altix2/sys/netinet/sctputil.c
projects/altix2/sys/netinet6/nd6.c
projects/altix2/sys/nfs/nfs_fha.c
projects/altix2/sys/nfs/nfs_fha.h
projects/altix2/sys/ofed/drivers/infiniband/hw/mlx4/Makefile
projects/altix2/sys/ofed/drivers/net/mlx4/Makefile
projects/altix2/sys/powerpc/powerpc/bus_machdep.c
projects/altix2/sys/rpc/svc.c
projects/altix2/sys/rpc/svc.h
projects/altix2/sys/rpc/svc_dg.c
projects/altix2/sys/rpc/svc_vc.c
projects/altix2/sys/sys/copyright.h
projects/altix2/sys/sys/gpt.h
projects/altix2/sys/sys/param.h
projects/altix2/sys/sys/pctrie.h
projects/altix2/sys/ufs/ffs/ffs_alloc.c
projects/altix2/sys/ufs/ufs/ufs_quota.c
projects/altix2/sys/vm/vm_map.c
projects/altix2/sys/vm/vm_page.c
projects/altix2/sys/vm/vm_page.h
projects/altix2/sys/vm/vm_phys.c
projects/altix2/sys/vm/vm_reserv.c
projects/altix2/tools/test/dtrace/Makefile
projects/altix2/usr.bin/iscsictl/iscsictl.8
projects/altix2/usr.bin/netstat/if.c
projects/altix2/usr.bin/netstat/route.c
projects/altix2/usr.bin/rpcgen/rpc_main.c
projects/altix2/usr.sbin/bhyve/acpi.c
projects/altix2/usr.sbin/bhyve/acpi.h
projects/altix2/usr.sbin/bhyve/bhyverun.c
projects/altix2/usr.sbin/bhyve/mevent.c
projects/altix2/usr.sbin/bhyve/mevent.h
projects/altix2/usr.sbin/bhyve/mptbl.c
projects/altix2/usr.sbin/bhyve/pm.c
projects/altix2/usr.sbin/bhyve/pmtmr.c
projects/altix2/usr.sbin/bhyvectl/bhyvectl.c
projects/altix2/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt
projects/altix2/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c
projects/altix2/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def
projects/altix2/usr.sbin/makefs/cd9660/iso9660_rrip.c
projects/altix2/usr.sbin/makefs/cd9660/iso9660_rrip.h
Directory Properties:
projects/altix2/ (props changed)
projects/altix2/cddl/ (props changed)
projects/altix2/cddl/contrib/opensolaris/ (props changed)
projects/altix2/cddl/contrib/opensolaris/cmd/zfs/ (props changed)
projects/altix2/contrib/binutils/ (props changed)
projects/altix2/contrib/gcc/ (props changed)
projects/altix2/contrib/libc++/ (props changed)
projects/altix2/etc/ (props changed)
projects/altix2/gnu/usr.bin/gdb/ (props changed)
projects/altix2/lib/libc/ (props changed)
projects/altix2/sbin/ (props changed)
projects/altix2/share/man/man4/ (props changed)
projects/altix2/sys/ (props changed)
projects/altix2/sys/amd64/vmm/ (props changed)
projects/altix2/sys/boot/ (props changed)
projects/altix2/sys/cddl/contrib/opensolaris/ (props changed)
projects/altix2/sys/conf/ (props changed)
projects/altix2/usr.sbin/bhyve/ (props changed)
projects/altix2/usr.sbin/bhyvectl/ (props changed)
Modified: projects/altix2/COPYRIGHT
==============================================================================
--- projects/altix2/COPYRIGHT Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/COPYRIGHT Wed Jan 1 21:25:13 2014 (r260168)
@@ -4,7 +4,7 @@
The compilation of software known as FreeBSD is distributed under the
following terms:
-Copyright (c) 1992-2013 The FreeBSD Project. All rights reserved.
+Copyright (c) 1992-2014 The FreeBSD Project. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
Modified: projects/altix2/bin/ps/ps.1
==============================================================================
--- projects/altix2/bin/ps/ps.1 Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/bin/ps/ps.1 Wed Jan 1 21:25:13 2014 (r260168)
@@ -29,7 +29,7 @@
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94
.\" $FreeBSD$
.\"
-.Dd March 15, 2013
+.Dd December 27, 2013
.Dt PS 1
.Os
.Sh NAME
@@ -416,8 +416,9 @@ The process has reduced CPU scheduling p
.It Li s
The process is a session leader.
.It Li V
-The process is suspended during a
-.Xr vfork 2 .
+The process' parent is suspended during a
+.Xr vfork 2 ,
+waiting for the process to exec or exit.
.It Li W
The process is swapped out.
.It Li X
Modified: projects/altix2/bin/sh/input.c
==============================================================================
--- projects/altix2/bin/sh/input.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/bin/sh/input.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -228,7 +228,6 @@ preadbuffer(void)
{
char *p, *q;
int more;
- int something;
char savec;
if (parsefile->strpush) {
@@ -252,24 +251,18 @@ again:
q = p = parsefile->buf + (parsenextc - parsefile->buf);
/* delete nul characters */
- something = 0;
for (more = 1; more;) {
switch (*p) {
case '\0':
p++; /* Skip nul */
goto check;
- case '\t':
- case ' ':
- break;
-
case '\n':
parsenleft = q - parsenextc;
more = 0; /* Stop processing here */
break;
default:
- something = 1;
break;
}
@@ -288,7 +281,8 @@ check:
*q = '\0';
#ifndef NO_HISTORY
- if (parsefile->fd == 0 && hist && something) {
+ if (parsefile->fd == 0 && hist &&
+ parsenextc[strspn(parsenextc, " \t\n")] != '\0') {
HistEvent he;
INTOFF;
history(hist, &he, whichprompt == 1 ? H_ENTER : H_ADD,
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.8
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.8 Wed Jan 1 21:25:13 2014 (r260168)
@@ -14,11 +14,12 @@
.\"
.\" Copyright 2012, Richard Lowe.
.\" Copyright (c) 2012, Marcelo Araujo <araujo at FreeBSD.org>.
+.\" Copyright (c) 2012 by Delphix. All rights reserved.
.\" All Rights Reserved.
.\"
.\" $FreeBSD$
.\"
-.Dd May 10, 2012
+.Dd December 31, 2013
.Dt ZDB 8
.Os
.Sh NAME
@@ -29,27 +30,35 @@
.Op Fl CumdibcsDvhLXFPA
.Op Fl e Op Fl p Ar path...
.Op Fl t Ar txg
+.Op Fl U Ar cache
+.Op Fl M Ar inflight I/Os
.Ar poolname
.Op Ar object ...
.Nm
.Op Fl divPA
.Op Fl e Op Fl p Ar path...
+.Op Fl U Ar cache
.Ar dataset
.Op Ar object ...
.Nm
.Fl m Op Fl LXFPA
.Op Fl t Ar txg
.Op Fl e Op Fl p Ar path...
+.Op Fl U Ar cache
.Ar poolname
.Nm
.Fl R Op Fl A
.Op Fl e Op Fl p Ar path...
+.Op Fl U Ar cache
+.Ar poolname
.Ar poolname
.Ar vdev Ns : Ns Ar offset Ns : Ns Ar size Ns Op Ns : Ns Ar flags
.Nm
.Fl S
.Op Fl AP
.Op Fl e Op Fl p Ar path...
+.Op Fl U Ar cache
+.Ar poolname
.Ar poolname
.Nm
.Fl l
@@ -205,6 +214,11 @@ flag specifies the path under which devi
.It Fl F
Attempt to make an unreadable pool readable by trying progressively older
transactions.
+.It Fl M Ar inflight I/Os
+Limit the number of outstanding checksum I/Os to the specified value.
+The default value is 200. This option affects the performance of the
+.Fl c
+option.
.It Fl P
Print numbers in an unscaled form more amenable to parsing, eg. 1000000 rather
than 1M.
@@ -218,9 +232,7 @@ options for a means to see the available
transaction numbers.
.It Fl U Ar cachefile
Use a cache file other than
-.Pa /etc/zfs/zpool.cache .
-This option is only valid with
-.Fl C
+.Pa /boot/zfs/zpool.cache .
.It Fl v
Enable verbosity.
Specify multiple times for increased verbosity.
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -89,6 +89,7 @@ extern void dump_intent_log(zilog_t *);
uint64_t *zopt_object = NULL;
int zopt_objects = 0;
libzfs_handle_t *g_zfs;
+uint64_t max_inflight = 200;
/*
* These libumem hooks provide a reasonable set of defaults for the allocator's
@@ -110,16 +111,17 @@ static void
usage(void)
{
(void) fprintf(stderr,
- "Usage: %s [-CumdibcsDvhLXFPA] [-t txg] [-e [-p path...]]"
- "poolname [object...]\n"
- " %s [-divPA] [-e -p path...] dataset [object...]\n"
- " %s -m [-LXFPA] [-t txg] [-e [-p path...]]"
- "poolname [vdev [metaslab...]]\n"
- " %s -R [-A] [-e [-p path...]] poolname "
- "vdev:offset:size[:flags]\n"
- " %s -S [-PA] [-e [-p path...]] poolname\n"
- " %s -l [-uA] device\n"
- " %s -C [-A] [-U config]\n\n",
+ "Usage: %s [-CumdibcsDvhLXFPA] [-t txg] [-e [-p path...]] "
+ "[-U config] [-M inflight I/Os] poolname [object...]\n"
+ " %s [-divPA] [-e -p path...] [-U config] dataset "
+ "[object...]\n"
+ " %s -m [-LXFPA] [-t txg] [-e [-p path...]] [-U config] "
+ "poolname [vdev [metaslab...]]\n"
+ " %s -R [-A] [-e [-p path...]] poolname "
+ "vdev:offset:size[:flags]\n"
+ " %s -S [-PA] [-e [-p path...]] [-U config] poolname\n"
+ " %s -l [-uA] device\n"
+ " %s -C [-A] [-U config]\n\n",
cmdname, cmdname, cmdname, cmdname, cmdname, cmdname, cmdname);
(void) fprintf(stderr, " Dataset name must include at least one "
@@ -164,6 +166,8 @@ usage(void)
(void) fprintf(stderr, " -P print numbers in parseable form\n");
(void) fprintf(stderr, " -t <txg> -- highest txg to use when "
"searching for uberblocks\n");
+ (void) fprintf(stderr, " -M <number of inflight I/Os> -- "
+ "specify the maximum number of checksumming I/Os [default is 200]");
(void) fprintf(stderr, "Specify an option more than once (e.g. -bb) "
"to make only that option verbose\n");
(void) fprintf(stderr, "Default is to dump everything non-verbosely\n");
@@ -760,7 +764,7 @@ dump_dde(const ddt_t *ddt, const ddt_ent
if (ddp->ddp_phys_birth == 0)
continue;
ddt_bp_create(ddt->ddt_checksum, ddk, ddp, &blk);
- sprintf_blkptr(blkbuf, &blk);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), &blk);
(void) printf("index %llx refcnt %llu %s %s\n",
(u_longlong_t)index, (u_longlong_t)ddp->ddp_refcnt,
types[p], blkbuf);
@@ -1020,31 +1024,39 @@ blkid2offset(const dnode_phys_t *dnp, co
}
static void
-sprintf_blkptr_compact(char *blkbuf, const blkptr_t *bp)
+snprintf_blkptr_compact(char *blkbuf, size_t buflen, const blkptr_t *bp)
{
const dva_t *dva = bp->blk_dva;
int ndvas = dump_opt['d'] > 5 ? BP_GET_NDVAS(bp) : 1;
if (dump_opt['b'] >= 6) {
- sprintf_blkptr(blkbuf, bp);
+ snprintf_blkptr(blkbuf, buflen, bp);
return;
}
blkbuf[0] = '\0';
for (int i = 0; i < ndvas; i++)
- (void) sprintf(blkbuf + strlen(blkbuf), "%llu:%llx:%llx ",
+ (void) snprintf(blkbuf + strlen(blkbuf),
+ buflen - strlen(blkbuf), "%llu:%llx:%llx ",
(u_longlong_t)DVA_GET_VDEV(&dva[i]),
(u_longlong_t)DVA_GET_OFFSET(&dva[i]),
(u_longlong_t)DVA_GET_ASIZE(&dva[i]));
- (void) sprintf(blkbuf + strlen(blkbuf),
- "%llxL/%llxP F=%llu B=%llu/%llu",
- (u_longlong_t)BP_GET_LSIZE(bp),
- (u_longlong_t)BP_GET_PSIZE(bp),
- (u_longlong_t)bp->blk_fill,
- (u_longlong_t)bp->blk_birth,
- (u_longlong_t)BP_PHYSICAL_BIRTH(bp));
+ if (BP_IS_HOLE(bp)) {
+ (void) snprintf(blkbuf + strlen(blkbuf),
+ buflen - strlen(blkbuf), "B=%llu",
+ (u_longlong_t)bp->blk_birth);
+ } else {
+ (void) snprintf(blkbuf + strlen(blkbuf),
+ buflen - strlen(blkbuf),
+ "%llxL/%llxP F=%llu B=%llu/%llu",
+ (u_longlong_t)BP_GET_LSIZE(bp),
+ (u_longlong_t)BP_GET_PSIZE(bp),
+ (u_longlong_t)bp->blk_fill,
+ (u_longlong_t)bp->blk_birth,
+ (u_longlong_t)BP_PHYSICAL_BIRTH(bp));
+ }
}
static void
@@ -1069,7 +1081,7 @@ print_indirect(blkptr_t *bp, const zbook
}
}
- sprintf_blkptr_compact(blkbuf, bp);
+ snprintf_blkptr_compact(blkbuf, sizeof (blkbuf), bp);
(void) printf("%s\n", blkbuf);
}
@@ -1084,7 +1096,7 @@ visit_indirect(spa_t *spa, const dnode_p
print_indirect(bp, zb, dnp);
- if (BP_GET_LEVEL(bp) > 0) {
+ if (BP_GET_LEVEL(bp) > 0 && !BP_IS_HOLE(bp)) {
uint32_t flags = ARC_WAIT;
int i;
blkptr_t *cbp;
@@ -1209,7 +1221,7 @@ dump_dsl_dataset(objset_t *os, uint64_t
zdb_nicenum(ds->ds_compressed_bytes, compressed);
zdb_nicenum(ds->ds_uncompressed_bytes, uncompressed);
zdb_nicenum(ds->ds_unique_bytes, unique);
- sprintf_blkptr(blkbuf, &ds->ds_bp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), &ds->ds_bp);
(void) printf("\t\tdir_obj = %llu\n",
(u_longlong_t)ds->ds_dir_obj);
@@ -1254,7 +1266,7 @@ dump_bptree_cb(void *arg, const blkptr_t
char blkbuf[BP_SPRINTF_LEN];
if (bp->blk_birth != 0) {
- sprintf_blkptr(blkbuf, bp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
(void) printf("\t%s\n", blkbuf);
}
return (0);
@@ -1292,7 +1304,7 @@ dump_bpobj_cb(void *arg, const blkptr_t
char blkbuf[BP_SPRINTF_LEN];
ASSERT(bp->blk_birth != 0);
- sprintf_blkptr_compact(blkbuf, bp);
+ snprintf_blkptr_compact(blkbuf, sizeof (blkbuf), bp);
(void) printf("\t%s\n", blkbuf);
return (0);
}
@@ -1791,8 +1803,9 @@ dump_dir(objset_t *os)
zdb_nicenum(refdbytes, numbuf);
if (verbosity >= 4) {
- (void) sprintf(blkbuf, ", rootbp ");
- (void) sprintf_blkptr(blkbuf + strlen(blkbuf), os->os_rootbp);
+ (void) snprintf(blkbuf, sizeof (blkbuf), ", rootbp ");
+ (void) snprintf_blkptr(blkbuf + strlen(blkbuf),
+ sizeof (blkbuf) - strlen(blkbuf), os->os_rootbp);
} else {
blkbuf[0] = '\0';
}
@@ -1822,7 +1835,7 @@ dump_dir(objset_t *os)
if (verbosity < 2)
return;
- if (os->os_rootbp->blk_birth == 0)
+ if (BP_IS_HOLE(os->os_rootbp))
return;
dump_object(os, 0, verbosity, &print_header);
@@ -1863,7 +1876,7 @@ dump_uberblock(uberblock_t *ub, const ch
(u_longlong_t)ub->ub_timestamp, asctime(localtime(×tamp)));
if (dump_opt['u'] >= 3) {
char blkbuf[BP_SPRINTF_LEN];
- sprintf_blkptr(blkbuf, &ub->ub_rootbp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), &ub->ub_rootbp);
(void) printf("\trootbp = %s\n", blkbuf);
}
(void) printf(footer ? footer : "");
@@ -2154,16 +2167,68 @@ zdb_count_block(zdb_cb_t *zcb, zilog_t *
bp, NULL, NULL, ZIO_FLAG_CANFAIL)), ==, 0);
}
+/* ARGSUSED */
+static void
+zdb_blkptr_done(zio_t *zio)
+{
+ spa_t *spa = zio->io_spa;
+ blkptr_t *bp = zio->io_bp;
+ int ioerr = zio->io_error;
+ zdb_cb_t *zcb = zio->io_private;
+ zbookmark_t *zb = &zio->io_bookmark;
+
+ zio_data_buf_free(zio->io_data, zio->io_size);
+
+ mutex_enter(&spa->spa_scrub_lock);
+ spa->spa_scrub_inflight--;
+ cv_broadcast(&spa->spa_scrub_io_cv);
+
+ if (ioerr && !(zio->io_flags & ZIO_FLAG_SPECULATIVE)) {
+ char blkbuf[BP_SPRINTF_LEN];
+
+ zcb->zcb_haderrors = 1;
+ zcb->zcb_errors[ioerr]++;
+
+ if (dump_opt['b'] >= 2)
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
+ else
+ blkbuf[0] = '\0';
+
+ (void) printf("zdb_blkptr_cb: "
+ "Got error %d reading "
+ "<%llu, %llu, %lld, %llx> %s -- skipping\n",
+ ioerr,
+ (u_longlong_t)zb->zb_objset,
+ (u_longlong_t)zb->zb_object,
+ (u_longlong_t)zb->zb_level,
+ (u_longlong_t)zb->zb_blkid,
+ blkbuf);
+ }
+ mutex_exit(&spa->spa_scrub_lock);
+}
+
+/* ARGSUSED */
static int
zdb_blkptr_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp,
const zbookmark_t *zb, const dnode_phys_t *dnp, void *arg)
{
zdb_cb_t *zcb = arg;
- char blkbuf[BP_SPRINTF_LEN];
dmu_object_type_t type;
boolean_t is_metadata;
- if (bp == NULL)
+ if (dump_opt['b'] >= 5 && bp->blk_birth > 0) {
+ char blkbuf[BP_SPRINTF_LEN];
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
+ (void) printf("objset %llu object %llu "
+ "level %lld offset 0x%llx %s\n",
+ (u_longlong_t)zb->zb_objset,
+ (u_longlong_t)zb->zb_object,
+ (longlong_t)zb->zb_level,
+ (u_longlong_t)blkid2offset(dnp, bp, zb),
+ blkbuf);
+ }
+
+ if (BP_IS_HOLE(bp))
return (0);
type = BP_GET_TYPE(bp);
@@ -2174,53 +2239,26 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog
is_metadata = (BP_GET_LEVEL(bp) != 0 || DMU_OT_IS_METADATA(type));
if (dump_opt['c'] > 1 || (dump_opt['c'] && is_metadata)) {
- int ioerr;
size_t size = BP_GET_PSIZE(bp);
- void *data = malloc(size);
+ void *data = zio_data_buf_alloc(size);
int flags = ZIO_FLAG_CANFAIL | ZIO_FLAG_SCRUB | ZIO_FLAG_RAW;
/* If it's an intent log block, failure is expected. */
if (zb->zb_level == ZB_ZIL_LEVEL)
flags |= ZIO_FLAG_SPECULATIVE;
- ioerr = zio_wait(zio_read(NULL, spa, bp, data, size,
- NULL, NULL, ZIO_PRIORITY_ASYNC_READ, flags, zb));
-
- free(data);
- if (ioerr && !(flags & ZIO_FLAG_SPECULATIVE)) {
- zcb->zcb_haderrors = 1;
- zcb->zcb_errors[ioerr]++;
+ mutex_enter(&spa->spa_scrub_lock);
+ while (spa->spa_scrub_inflight > max_inflight)
+ cv_wait(&spa->spa_scrub_io_cv, &spa->spa_scrub_lock);
+ spa->spa_scrub_inflight++;
+ mutex_exit(&spa->spa_scrub_lock);
- if (dump_opt['b'] >= 2)
- sprintf_blkptr(blkbuf, bp);
- else
- blkbuf[0] = '\0';
-
- (void) printf("zdb_blkptr_cb: "
- "Got error %d reading "
- "<%llu, %llu, %lld, %llx> %s -- skipping\n",
- ioerr,
- (u_longlong_t)zb->zb_objset,
- (u_longlong_t)zb->zb_object,
- (u_longlong_t)zb->zb_level,
- (u_longlong_t)zb->zb_blkid,
- blkbuf);
- }
+ zio_nowait(zio_read(NULL, spa, bp, data, size,
+ zdb_blkptr_done, zcb, ZIO_PRIORITY_ASYNC_READ, flags, zb));
}
zcb->zcb_readfails = 0;
- if (dump_opt['b'] >= 5) {
- sprintf_blkptr(blkbuf, bp);
- (void) printf("objset %llu object %llu "
- "level %lld offset 0x%llx %s\n",
- (u_longlong_t)zb->zb_objset,
- (u_longlong_t)zb->zb_object,
- (longlong_t)zb->zb_level,
- (u_longlong_t)blkid2offset(dnp, bp, zb),
- blkbuf);
- }
-
if (dump_opt['b'] < 5 && isatty(STDERR_FILENO) &&
gethrtime() > zcb->zcb_lastprint + NANOSEC) {
uint64_t now = gethrtime();
@@ -2377,7 +2415,7 @@ count_block_cb(void *arg, const blkptr_t
if (dump_opt['b'] >= 5) {
char blkbuf[BP_SPRINTF_LEN];
- sprintf_blkptr(blkbuf, bp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
(void) printf("[%s] %s\n",
"deferred free", blkbuf);
}
@@ -2433,6 +2471,18 @@ dump_block_stats(spa_t *spa)
zcb.zcb_start = zcb.zcb_lastprint = gethrtime();
zcb.zcb_haderrors |= traverse_pool(spa, 0, flags, zdb_blkptr_cb, &zcb);
+ /*
+ * If we've traversed the data blocks then we need to wait for those
+ * I/Os to complete. We leverage "The Godfather" zio to wait on
+ * all async I/Os to complete.
+ */
+ if (dump_opt['c']) {
+ (void) zio_wait(spa->spa_async_zio_root);
+ spa->spa_async_zio_root = zio_root(spa, NULL, NULL,
+ ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE |
+ ZIO_FLAG_GODFATHER);
+ }
+
if (zcb.zcb_haderrors) {
(void) printf("\nError counts:\n\n");
(void) printf("\t%5s %s\n", "errno", "count");
@@ -2599,7 +2649,7 @@ zdb_ddt_add_cb(spa_t *spa, zilog_t *zilo
avl_index_t where;
zdb_ddt_entry_t *zdde, zdde_search;
- if (bp == NULL)
+ if (BP_IS_HOLE(bp))
return (0);
if (dump_opt['S'] > 1 && zb->zb_level == ZB_ROOT_LEVEL) {
@@ -2766,7 +2816,7 @@ zdb_print_blkptr(blkptr_t *bp, int flags
if (flags & ZDB_FLAG_BSWAP)
byteswap_uint64_array((void *)bp, sizeof (blkptr_t));
- sprintf_blkptr(blkbuf, bp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
(void) printf("%s\n", blkbuf);
}
@@ -3202,7 +3252,7 @@ main(int argc, char **argv)
dprintf_setup(&argc, argv);
- while ((c = getopt(argc, argv, "bcdhilmsuCDRSAFLXevp:t:U:P")) != -1) {
+ while ((c = getopt(argc, argv, "bcdhilmM:suCDRSAFLXevp:t:U:P")) != -1) {
switch (c) {
case 'b':
case 'c':
@@ -3231,6 +3281,15 @@ main(int argc, char **argv)
case 'v':
verbose++;
break;
+ case 'M':
+ max_inflight = strtoull(optarg, NULL, 0);
+ if (max_inflight == 0) {
+ (void) fprintf(stderr, "maximum number "
+ "of inflight I/Os must be greater "
+ "than 0\n");
+ usage();
+ }
+ break;
case 'p':
if (searchdirs == NULL) {
searchdirs = umem_alloc(sizeof (char *),
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -24,6 +24,10 @@
*/
/*
+ * Copyright (c) 2013 by Delphix. All rights reserved.
+ */
+
+/*
* Print intent log header and statistics.
*/
@@ -47,7 +51,7 @@ print_log_bp(const blkptr_t *bp, const c
{
char blkbuf[BP_SPRINTF_LEN];
- sprintf_blkptr(blkbuf, bp);
+ snprintf_blkptr(blkbuf, sizeof (blkbuf), bp);
(void) printf("%s%s\n", prefix, blkbuf);
}
@@ -132,6 +136,7 @@ zil_prt_rec_write(zilog_t *zilog, int tx
if (lr->lr_common.lrc_reclen == sizeof (lr_write_t)) {
(void) printf("%shas blkptr, %s\n", prefix,
+ !BP_IS_HOLE(bp) &&
bp->blk_birth >= spa_first_txg(zilog->zl_spa) ?
"will claim" : "won't claim");
print_log_bp(bp, prefix);
@@ -139,8 +144,6 @@ zil_prt_rec_write(zilog_t *zilog, int tx
if (BP_IS_HOLE(bp)) {
(void) printf("\t\t\tLSIZE 0x%llx\n",
(u_longlong_t)BP_GET_LSIZE(bp));
- }
- if (bp->blk_birth == 0) {
bzero(buf, sizeof (buf));
(void) printf("%s<hole>\n", prefix);
return;
@@ -313,7 +316,8 @@ print_log_block(zilog_t *zilog, blkptr_t
if (verbose >= 5) {
(void) strcpy(blkbuf, ", ");
- sprintf_blkptr(blkbuf + strlen(blkbuf), bp);
+ snprintf_blkptr(blkbuf + strlen(blkbuf),
+ sizeof (blkbuf) - strlen(blkbuf), bp);
} else {
blkbuf[0] = '\0';
}
@@ -361,7 +365,7 @@ dump_intent_log(zilog_t *zilog)
int verbose = MAX(dump_opt['d'], dump_opt['i']);
int i;
- if (zh->zh_log.blk_birth == 0 || verbose < 1)
+ if (BP_IS_HOLE(&zh->zh_log) || verbose < 1)
return;
(void) printf("\n ZIL header: claim_txg %llu, "
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright 2012 Milan Jurik. All rights reserved.
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
* Copyright (c) 2011-2012 Pawel Jakub Dawidek <pawel at dawidek.net>.
@@ -2157,7 +2157,7 @@ static int us_type_bits[] = {
USTYPE_SMB_USR,
USTYPE_ALL
};
-static char *us_type_names[] = { "posixgroup", "posxiuser", "smbgroup",
+static char *us_type_names[] = { "posixgroup", "posixuser", "smbgroup",
"smbuser", "all" };
typedef struct us_node {
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zhack/zhack.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zhack/zhack.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zhack/zhack.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -277,6 +277,9 @@ zhack_do_feature_stat(int argc, char **a
dump_obj(os, spa->spa_feat_for_read_obj, "for_read");
dump_obj(os, spa->spa_feat_for_write_obj, "for_write");
dump_obj(os, spa->spa_feat_desc_obj, "descriptions");
+ if (spa_feature_is_active(spa, SPA_FEATURE_ENABLED_TXG)) {
+ dump_obj(os, spa->spa_feat_enabled_txg_obj, "enabled_txg");
+ }
dump_mos(spa);
spa_close(spa, FTAG);
@@ -313,7 +316,9 @@ zhack_do_feature_enable(int argc, char *
feature.fi_uname = "zhack";
feature.fi_mos = B_FALSE;
feature.fi_can_readonly = B_FALSE;
+ feature.fi_activate_on_enable = B_FALSE;
feature.fi_depends = nodeps;
+ feature.fi_feature = SPA_FEATURE_NONE;
optind = 1;
while ((c = getopt(argc, argv, "rmd:")) != -1) {
@@ -371,7 +376,7 @@ feature_incr_sync(void *arg, dmu_tx_t *t
zfeature_info_t *feature = arg;
uint64_t refcount;
- VERIFY0(feature_get_refcount(spa, feature, &refcount));
+ VERIFY0(feature_get_refcount_from_disk(spa, feature, &refcount));
feature_sync(spa, feature, refcount + 1, tx);
spa_history_log_internal(spa, "zhack feature incr", tx,
"name=%s", feature->fi_guid);
@@ -384,7 +389,7 @@ feature_decr_sync(void *arg, dmu_tx_t *t
zfeature_info_t *feature = arg;
uint64_t refcount;
- VERIFY0(feature_get_refcount(spa, feature, &refcount));
+ VERIFY0(feature_get_refcount_from_disk(spa, feature, &refcount));
feature_sync(spa, feature, refcount - 1, tx);
spa_history_log_internal(spa, "zhack feature decr", tx,
"name=%s", feature->fi_guid);
@@ -411,6 +416,7 @@ zhack_do_feature_ref(int argc, char **ar
feature.fi_mos = B_FALSE;
feature.fi_desc = NULL;
feature.fi_depends = nodeps;
+ feature.fi_feature = SPA_FEATURE_NONE;
optind = 1;
while ((c = getopt(argc, argv, "md")) != -1) {
@@ -459,8 +465,8 @@ zhack_do_feature_ref(int argc, char **ar
if (decr) {
uint64_t count;
- if (feature_get_refcount(spa, &feature, &count) == 0 &&
- count != 0) {
+ if (feature_get_refcount_from_disk(spa, &feature,
+ &count) == 0 && count != 0) {
fatal(spa, FTAG, "feature refcount already 0: %s",
feature.fi_guid);
}
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 Wed Jan 1 21:25:13 2014 (r260168)
@@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd October 08, 2013
+.Dd December 31, 2013
.Dt ZPOOL-FEATURES 7
.Os
.Sh NAME
@@ -286,6 +286,76 @@ and will be returned to the
.Sy enabled
state when all datasets that use
this feature are destroyed.
+.It Sy enabled_txg
+.Bl -column "READ\-ONLY COMPATIBLE" "com.delphix:enabled_txg"
+.It GUID Ta com.delphix:enabled_txg
+.It READ\-ONLY COMPATIBLE Ta yes
+.It DEPENDENCIES Ta none
+.El
+.Pp
+Once this feature is enabled ZFS records the transaction group number
+in which new features are enabled. This has no user-visible impact,
+but other features may depend on this feature.
+.Pp
+This feature becomes
+.Sy active
+as soon as it is enabled and will
+never return to being
+.Sy enabled .
+.It Sy hole_birth
+.Bl -column "READ\-ONLY COMPATIBLE" "com.delphix:hole_birth"
+.It GUID Ta com.delphix:hole_birth
+.It READ\-ONLY COMPATIBLE Ta no
+.It DEPENDENCIES Ta enabled_txg
+.El
+.Pp
+This feature improves performance of incremental sends
+.Pq Dq zfs send -i
+and receives for objects with many holes.
+The most common case of
+hole-filled objects is zvols.
+.Pp
+An incremental send stream from snapshot
+.Sy A
+to snapshot
+.Sy B
+contains information about every block that changed between
+.Sy A
+and
+.Sy B .
+Blocks which did not change between those snapshots can be
+identified and omitted from the stream using a piece of metadata called
+the 'block birth time', but birth times are not recorded for holes
+.Pq blocks filled only with zeroes .
+Since holes created after
+.Sy A
+cannot be
+distinguished from holes created before
+.Sy A ,
+information about every
+hole in the entire filesystem or zvol is included in the send stream.
+.Pp
+For workloads where holes are rare this is not a problem.
+However, when
+incrementally replicating filesystems or zvols with many holes
+.Pq for example a zvol formatted with another filesystem
+a lot of time will
+be spent sending and receiving unnecessary information about holes that
+already exist on the receiving side.
+.Pp
+Once the
+.Sy hole_birth
+feature has been enabled the block birth times
+of all new holes will be recorded.
+Incremental sends between snapshots
+created after this feature is enabled will use this new metadata to avoid
+sending information about holes that already exist on the receiving side.
+.Pp
+This feature becomes
+.Sy active
+as soon as it is enabled and will
+never return to being
+.Sy enabled .
.El
.Sh SEE ALSO
.Xr zpool 8
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool.8
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Wed Jan 1 21:25:13 2014 (r260168)
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 14, 2013
+.Dd December 31, 2013
.Dt ZPOOL 8
.Os
.Sh NAME
@@ -141,6 +141,9 @@
.Cm remove
.Ar pool device ...
.Nm
+.Cm reopen
+.Ar pool
+.Nm
.Cm replace
.Op Fl f
.Ar pool device
@@ -1431,6 +1434,13 @@ command. Non-redundant and
devices cannot be removed from a pool.
.It Xo
.Nm
+.Cm reopen
+.Ar pool
+.Xc
+.Pp
+Reopen all the vdevs associated with the pool.
+.It Xo
+.Nm
.Cm replace
.Op Fl f
.Ar pool device
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -248,7 +248,7 @@ get_usage(zpool_help_t idx) {
case HELP_REMOVE:
return (gettext("\tremove <pool> <device> ...\n"));
case HELP_REOPEN:
- return (""); /* Undocumented command */
+ return (gettext("\treopen <pool>\n"));
case HELP_SCRUB:
return (gettext("\tscrub [-s] <pool> ...\n"));
case HELP_STATUS:
@@ -3720,22 +3720,37 @@ zpool_do_reguid(int argc, char **argv)
* zpool reopen <pool>
*
* Reopen the pool so that the kernel can update the sizes of all vdevs.
- *
- * NOTE: This command is currently undocumented. If the command is ever
- * exposed then the appropriate usage() messages will need to be made.
*/
int
zpool_do_reopen(int argc, char **argv)
{
+ int c;
int ret = 0;
zpool_handle_t *zhp;
char *pool;
+ /* check options */
+ while ((c = getopt(argc, argv, "")) != -1) {
+ switch (c) {
+ case '?':
+ (void) fprintf(stderr, gettext("invalid option '%c'\n"),
+ optopt);
+ usage(B_FALSE);
+ }
+ }
+
argc--;
argv++;
- if (argc != 1)
- return (2);
+ if (argc < 1) {
+ (void) fprintf(stderr, gettext("missing pool name\n"));
+ usage(B_FALSE);
+ }
+
+ if (argc > 1) {
+ (void) fprintf(stderr, gettext("too many arguments\n"));
+ usage(B_FALSE);
+ }
pool = argv[0];
if ((zhp = zpool_open_canfail(g_zfs, pool)) == NULL)
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.1 Wed Jan 1 21:25:13 2014 (r260168)
@@ -18,10 +18,11 @@
.\" information: Portions Copyright [yyyy] [name of copyright owner]
.\"
.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2013, Delphix. All Rights Reserved.
.\"
.\" $FreeBSD$
.\"
-.Dd November 26, 2011
+.Dd December 31, 2013
.Dt ZSTREAMDUMP 8
.Os
.Sh NAME
@@ -30,6 +31,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl C
+.Op Fl d
.Op Fl v
.Sh DESCRIPTION
The
@@ -43,6 +45,8 @@ The following options are supported:
.Bl -tag -width indent
.It Fl C
Suppress the validation of checksums.
+.It Fl d
+Dump contents of blocks modified, implies verbose.
.It Fl v
Verbose. Dump all headers, not only begin and end headers.
.El
Modified: projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c
==============================================================================
--- projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c Wed Jan 1 21:17:08 2014 (r260167)
+++ projects/altix2/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c Wed Jan 1 21:25:13 2014 (r260168)
@@ -24,6 +24,11 @@
* Use is subject to license terms.
*/
+/*
+ * Copyright (c) 2013 by Delphix. All rights reserved.
+ */
+
+#include <ctype.h>
#include <libnvpair.h>
#include <stdio.h>
#include <stdlib.h>
@@ -34,6 +39,16 @@
#include <sys/zfs_ioctl.h>
#include <zfs_fletcher.h>
+/*
+ * If dump mode is enabled, the number of bytes to print per line
+ */
+#define BYTES_PER_LINE 16
+/*
+ * If dump mode is enabled, the number of bytes to group together, separated
+ * by newlines or spaces
+ */
+#define DUMP_GROUPING 4
+
uint64_t drr_record_count[DRR_NUMTYPES];
uint64_t total_write_size = 0;
uint64_t total_stream_len = 0;
@@ -45,9 +60,11 @@ boolean_t do_cksum = B_TRUE;
static void
usage(void)
{
- (void) fprintf(stderr, "usage: zstreamdump [-v] [-C] < file\n");
+ (void) fprintf(stderr, "usage: zstreamdump [-v] [-C] [-d] < file\n");
(void) fprintf(stderr, "\t -v -- verbose\n");
(void) fprintf(stderr, "\t -C -- suppress checksum verification\n");
+ (void) fprintf(stderr, "\t -d -- dump contents of blocks modified, "
+ "implies verbose\n");
exit(1);
}
@@ -75,6 +92,70 @@ ssread(void *buf, size_t len, zio_cksum_
return (outlen);
}
+/*
+ * Print part of a block in ASCII characters
+ */
+static void
+print_ascii_block(char *subbuf, int length)
+{
+ int i;
+
+ for (i = 0; i < length; i++) {
+ char char_print = isprint(subbuf[i]) ? subbuf[i] : '.';
+ if (i != 0 && i % DUMP_GROUPING == 0) {
+ (void) printf(" ");
+ }
+ (void) printf("%c", char_print);
+ }
+ (void) printf("\n");
+}
+
+/*
+ * print_block - Dump the contents of a modified block to STDOUT
+ *
+ * Assume that buf has capacity evenly divisible by BYTES_PER_LINE
+ */
+static void
+print_block(char *buf, int length)
+{
+ int i;
+ /*
+ * Start printing ASCII characters at a constant offset, after
+ * the hex prints. Leave 3 characters per byte on a line (2 digit
+ * hex number plus 1 space) plus spaces between characters and
+ * groupings
+ */
+ int ascii_start = BYTES_PER_LINE * 3 +
+ BYTES_PER_LINE / DUMP_GROUPING + 2;
+
+ for (i = 0; i < length; i += BYTES_PER_LINE) {
+ int j;
+ int this_line_length = MIN(BYTES_PER_LINE, length - i);
+ int print_offset = 0;
+
+ for (j = 0; j < this_line_length; j++) {
+ int buf_offset = i + j;
+
+ /*
+ * Separate every DUMP_GROUPING bytes by a space.
+ */
+ if (buf_offset % DUMP_GROUPING == 0) {
+ print_offset += printf(" ");
+ }
+
+ /*
+ * Print the two-digit hex value for this byte.
+ */
+ unsigned char hex_print = buf[buf_offset];
+ print_offset += printf("%02x ", hex_print);
+ }
+
+ (void) printf("%*s", ascii_start - print_offset, " ");
+
+ print_ascii_block(buf + i, this_line_length);
+ }
+}
+
int
main(int argc, char *argv[])
{
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list