Date: Thu, 21 Mar 2013 16:29:09 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248589 - in projects/counters: . cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zhack cddl/contrib/opensolaris/cmd/zpool cddl/contrib/op... Message-ID: <201303211629.r2LGT9Yd041742@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Thu Mar 21 16:29:08 2013 New Revision: 248589 URL: http://svnweb.freebsd.org/changeset/base/248589 Log: Merge head r243428 through r248588. Added: projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c - copied unchanged from r248588, head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h - copied unchanged from r248588, head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h projects/counters/cddl/contrib/opensolaris/lib/libzfs_core/ - copied from r248588, head/cddl/contrib/opensolaris/lib/libzfs_core/ projects/counters/cddl/lib/libzfs_core/ - copied from r248588, head/cddl/lib/libzfs_core/ projects/counters/share/examples/bhyve/ - copied from r248588, head/share/examples/bhyve/ projects/counters/sys/arm/conf/EFIKA_MX - copied unchanged from r248588, head/sys/arm/conf/EFIKA_MX projects/counters/sys/arm/freescale/ - copied from r248588, head/sys/arm/freescale/ projects/counters/sys/boot/fdt/dts/efikamx.dts - copied unchanged from r248588, head/sys/boot/fdt/dts/efikamx.dts projects/counters/sys/boot/fdt/dts/imx51x.dtsi - copied unchanged from r248588, head/sys/boot/fdt/dts/imx51x.dtsi projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c - copied unchanged from r248588, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c - copied unchanged from r248588, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h - copied unchanged from r248588, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h - copied unchanged from r248588, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_userhold.h - copied unchanged from r248588, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_userhold.h projects/counters/sys/cddl/dev/fbt/fbt_powerpc.c - copied unchanged from r248588, head/sys/cddl/dev/fbt/fbt_powerpc.c projects/counters/sys/dev/ata/chipsets/ata-fsl.c - copied unchanged from r248588, head/sys/dev/ata/chipsets/ata-fsl.c projects/counters/sys/dev/uart/uart_dev_imx.c - copied unchanged from r248588, head/sys/dev/uart/uart_dev_imx.c projects/counters/sys/dev/uart/uart_dev_imx5xx.h - copied unchanged from r248588, head/sys/dev/uart/uart_dev_imx5xx.h projects/counters/sys/dev/usb/controller/ehci_imx.c - copied unchanged from r248588, head/sys/dev/usb/controller/ehci_imx.c projects/counters/sys/libkern/arm/memset.S - copied unchanged from r248588, head/sys/libkern/arm/memset.S projects/counters/sys/vm/_vm_radix.h - copied unchanged from r248588, head/sys/vm/_vm_radix.h projects/counters/sys/vm/vm_radix.c - copied unchanged from r248588, head/sys/vm/vm_radix.c projects/counters/sys/vm/vm_radix.h - copied unchanged from r248588, head/sys/vm/vm_radix.h Modified: projects/counters/Makefile.inc1 projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/counters/cddl/contrib/opensolaris/cmd/zhack/zhack.c projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/counters/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/counters/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c projects/counters/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/counters/cddl/lib/Makefile projects/counters/cddl/lib/libzfs/Makefile projects/counters/cddl/sbin/zfs/Makefile projects/counters/cddl/sbin/zpool/Makefile projects/counters/cddl/usr.bin/zinject/Makefile projects/counters/cddl/usr.bin/ztest/Makefile projects/counters/cddl/usr.sbin/zdb/Makefile projects/counters/cddl/usr.sbin/zhack/Makefile projects/counters/contrib/binutils/gas/config/tc-arm.c projects/counters/contrib/llvm/tools/clang/lib/Driver/Tools.cpp projects/counters/crypto/openssh/sshd_config projects/counters/etc/mtree/BSD.usr.dist projects/counters/etc/rc.d/savecore projects/counters/games/fortune/datfiles/freebsd-tips projects/counters/gnu/lib/libgcc/Makefile projects/counters/lib/libc/stdlib/realpath.3 projects/counters/lib/libc/sys/chflags.2 projects/counters/lib/libc/sys/mlock.2 projects/counters/lib/libc/sys/recv.2 projects/counters/lib/libc/sys/socket.2 projects/counters/lib/libc/sys/socketpair.2 projects/counters/lib/libvmmapi/vmmapi.c projects/counters/lib/libvmmapi/vmmapi.h projects/counters/rescue/rescue/Makefile projects/counters/sbin/ccdconfig/ccdconfig.8 projects/counters/sbin/ffsinfo/ffsinfo.8 projects/counters/sbin/geom/class/concat/gconcat.8 projects/counters/sbin/geom/class/eli/geom_eli.c projects/counters/sbin/geom/class/mirror/gmirror.8 projects/counters/sbin/geom/class/raid/graid.8 projects/counters/sbin/geom/class/stripe/gstripe.8 projects/counters/sbin/gvinum/gvinum.8 projects/counters/sbin/ipfw/ipfw.8 projects/counters/sbin/ipfw/ipfw2.c projects/counters/sbin/ipfw/ipfw2.h projects/counters/sbin/ldconfig/ldconfig.8 projects/counters/sbin/ldconfig/ldconfig.c projects/counters/sbin/shutdown/shutdown.8 projects/counters/share/examples/Makefile projects/counters/share/man/man4/ccd.4 projects/counters/share/man/man4/iwn.4 projects/counters/share/man/man4/ng_nat.4 projects/counters/share/man/man4/psm.4 projects/counters/share/man/man4/unix.4 projects/counters/share/man/man9/zone.9 projects/counters/share/mk/bsd.libnames.mk projects/counters/sys/amd64/amd64/pmap.c projects/counters/sys/amd64/include/pmap.h projects/counters/sys/amd64/vmm/intel/vmx.c projects/counters/sys/amd64/vmm/vmm.c projects/counters/sys/amd64/vmm/vmm_stat.c projects/counters/sys/amd64/vmm/vmm_stat.h projects/counters/sys/arm/arm/pmap-v6.c projects/counters/sys/arm/arm/pmap.c projects/counters/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/counters/sys/arm/broadcom/bcm2835/bcm2835_systimer.c projects/counters/sys/arm/include/bus.h projects/counters/sys/arm/ti/cpsw/if_cpsw.c projects/counters/sys/arm/ti/ti_mmchs.c projects/counters/sys/cam/ata/ata_da.c projects/counters/sys/cam/cam_ccb.h projects/counters/sys/cam/cam_periph.c projects/counters/sys/cam/scsi/scsi_all.c projects/counters/sys/cam/scsi/scsi_all.h projects/counters/sys/cam/scsi/scsi_cd.c projects/counters/sys/cam/scsi/scsi_da.c projects/counters/sys/cddl/compat/opensolaris/sys/cred.h projects/counters/sys/cddl/compat/opensolaris/sys/sig.h projects/counters/sys/cddl/compat/opensolaris/sys/time.h projects/counters/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/Makefile.files projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.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_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/dnode_sync.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_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/metaslab.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.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_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/space_map.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_prop.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/trim_map.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.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_ioctl.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/feature_tests.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/counters/sys/cddl/contrib/opensolaris/uts/common/sys/nvpair.h projects/counters/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S projects/counters/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c projects/counters/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c projects/counters/sys/conf/Makefile.arm projects/counters/sys/conf/files projects/counters/sys/conf/files.arm projects/counters/sys/dev/acpica/acpi_powerres.c projects/counters/sys/dev/ahci/ahci.c projects/counters/sys/dev/ath/if_ath.c projects/counters/sys/dev/ath/if_ath_beacon.c projects/counters/sys/dev/ath/if_ath_rx.c projects/counters/sys/dev/ath/if_ath_rx_edma.c projects/counters/sys/dev/ath/if_ath_sysctl.c projects/counters/sys/dev/ath/if_ath_tx.c projects/counters/sys/dev/ath/if_ath_tx_edma.c projects/counters/sys/dev/ath/if_athvar.h projects/counters/sys/dev/atkbdc/psm.c projects/counters/sys/dev/fdt/fdt_common.c projects/counters/sys/dev/fdt/fdtbus.c projects/counters/sys/dev/fdt/simplebus.c projects/counters/sys/dev/md/md.c projects/counters/sys/dev/mii/rgephy.c projects/counters/sys/dev/mii/rgephyreg.h projects/counters/sys/dev/puc/pucdata.c projects/counters/sys/dev/siis/siis.c projects/counters/sys/dev/sis/if_sis.c projects/counters/sys/dev/sis/if_sisreg.h projects/counters/sys/dev/sound/pcm/sndstat.c projects/counters/sys/dev/twa/tw_osl_cam.c projects/counters/sys/dev/twa/tw_osl_freebsd.c projects/counters/sys/dev/uart/uart.h projects/counters/sys/dev/uart/uart_bus_fdt.c projects/counters/sys/dev/usb/controller/xhci.c projects/counters/sys/dev/usb/serial/u3g.c projects/counters/sys/dev/usb/usbdevs projects/counters/sys/dev/usb/wlan/if_rum.c projects/counters/sys/dev/usb/wlan/if_run.c projects/counters/sys/fs/nfsclient/nfs_clbio.c projects/counters/sys/fs/nfsclient/nfs_clport.c projects/counters/sys/fs/tmpfs/tmpfs_vnops.c projects/counters/sys/geom/geom.h projects/counters/sys/geom/geom_disk.c projects/counters/sys/geom/geom_disk.h projects/counters/sys/geom/geom_io.c projects/counters/sys/geom/geom_vfs.c projects/counters/sys/geom/part/g_part.c projects/counters/sys/i386/i386/pmap.c projects/counters/sys/i386/include/pmap.h projects/counters/sys/i386/xen/pmap.c projects/counters/sys/ia64/ia64/pmap.c projects/counters/sys/kern/kern_physio.c projects/counters/sys/kern/kern_sig.c projects/counters/sys/kern/kern_synch.c projects/counters/sys/kern/kern_thread.c projects/counters/sys/kern/subr_bus_dma.c projects/counters/sys/kern/subr_param.c projects/counters/sys/kern/subr_sleepqueue.c projects/counters/sys/kern/subr_trap.c projects/counters/sys/kern/uipc_mbuf.c projects/counters/sys/kern/uipc_socket.c projects/counters/sys/kern/uipc_syscalls.c projects/counters/sys/kern/uipc_usrreq.c projects/counters/sys/kern/vfs_aio.c projects/counters/sys/kern/vfs_bio.c projects/counters/sys/kern/vfs_cache.c projects/counters/sys/kern/vfs_cluster.c projects/counters/sys/kern/vfs_mount.c projects/counters/sys/kern/vfs_syscalls.c projects/counters/sys/mips/mips/pmap.c projects/counters/sys/modules/dtrace/Makefile projects/counters/sys/modules/dtrace/dtraceall/dtraceall.c projects/counters/sys/modules/dtrace/fbt/Makefile projects/counters/sys/modules/uart/Makefile projects/counters/sys/net/pfil.c projects/counters/sys/net/pfil.h projects/counters/sys/net80211/ieee80211_freebsd.c projects/counters/sys/netgraph/ng_nat.c projects/counters/sys/netgraph/ng_nat.h projects/counters/sys/netinet/ip_fw.h projects/counters/sys/netinet/libalias/alias.c projects/counters/sys/netpfil/ipfw/ip_fw2.c projects/counters/sys/netpfil/ipfw/ip_fw_log.c projects/counters/sys/netpfil/ipfw/ip_fw_private.h projects/counters/sys/netpfil/ipfw/ip_fw_sockopt.c projects/counters/sys/nfsclient/nfs_bio.c projects/counters/sys/powerpc/aim/mmu_oea64.c projects/counters/sys/powerpc/aim/trap.c projects/counters/sys/powerpc/aim/trap_subr32.S projects/counters/sys/powerpc/aim/trap_subr64.S projects/counters/sys/powerpc/powerpc/pmap_dispatch.c projects/counters/sys/sparc64/sparc64/pmap.c projects/counters/sys/sys/bio.h projects/counters/sys/sys/buf.h projects/counters/sys/sys/domain.h projects/counters/sys/sys/mbuf.h projects/counters/sys/sys/mount.h projects/counters/sys/sys/mouse.h projects/counters/sys/sys/param.h projects/counters/sys/sys/signalvar.h projects/counters/sys/sys/sleepqueue.h projects/counters/sys/sys/socket.h projects/counters/sys/sys/systm.h projects/counters/sys/sys/vnode.h projects/counters/sys/ufs/ffs/ffs_alloc.c projects/counters/sys/ufs/ffs/ffs_balloc.c projects/counters/sys/ufs/ffs/ffs_rawread.c projects/counters/sys/ufs/ffs/ffs_vfsops.c projects/counters/sys/ufs/ffs/ffs_vnops.c projects/counters/sys/ufs/ufs/ufs_extern.h projects/counters/sys/ufs/ufs/ufs_lookup.c projects/counters/sys/ufs/ufs/ufs_vnops.c projects/counters/sys/vm/swap_pager.c projects/counters/sys/vm/swap_pager.h projects/counters/sys/vm/vm.h projects/counters/sys/vm/vm_init.c projects/counters/sys/vm/vm_kern.c projects/counters/sys/vm/vm_object.c projects/counters/sys/vm/vm_object.h projects/counters/sys/vm/vm_page.c projects/counters/sys/vm/vm_page.h projects/counters/sys/vm/vm_reserv.c projects/counters/sys/vm/vnode_pager.c projects/counters/tools/regression/security/cap_test/cap_test_capabilities.c projects/counters/tools/tools/netrate/netreceive/Makefile projects/counters/usr.bin/find/find.h projects/counters/usr.bin/find/function.c projects/counters/usr.bin/head/head.1 projects/counters/usr.bin/renice/renice.8 projects/counters/usr.bin/script/script.1 projects/counters/usr.bin/tail/tail.1 projects/counters/usr.sbin/ac/ac.8 projects/counters/usr.sbin/bhyve/acpi.c projects/counters/usr.sbin/bhyve/bhyverun.c projects/counters/usr.sbin/bhyve/bhyverun.h projects/counters/usr.sbin/bhyve/mptbl.c projects/counters/usr.sbin/bhyve/pci_emul.c projects/counters/usr.sbin/bhyve/pci_virtio_block.c projects/counters/usr.sbin/bhyve/pci_virtio_net.c projects/counters/usr.sbin/bhyvectl/bhyvectl.c projects/counters/usr.sbin/bhyveload/bhyveload.8 projects/counters/usr.sbin/bhyveload/bhyveload.c projects/counters/usr.sbin/moused/moused.c Directory Properties: projects/counters/ (props changed) projects/counters/cddl/ (props changed) projects/counters/cddl/contrib/opensolaris/ (props changed) projects/counters/cddl/contrib/opensolaris/cmd/zfs/ (props changed) projects/counters/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/counters/contrib/binutils/ (props changed) projects/counters/contrib/llvm/ (props changed) projects/counters/contrib/llvm/tools/clang/ (props changed) projects/counters/crypto/openssh/ (props changed) projects/counters/gnu/lib/ (props changed) projects/counters/lib/libc/ (props changed) projects/counters/lib/libvmmapi/ (props changed) projects/counters/sbin/ (props changed) projects/counters/sbin/ipfw/ (props changed) projects/counters/share/man/man4/ (props changed) projects/counters/sys/ (props changed) projects/counters/sys/amd64/vmm/ (props changed) projects/counters/sys/boot/ (props changed) projects/counters/sys/cddl/contrib/opensolaris/ (props changed) projects/counters/sys/conf/ (props changed) projects/counters/usr.sbin/bhyve/ (props changed) projects/counters/usr.sbin/bhyvectl/ (props changed) projects/counters/usr.sbin/bhyveload/ (props changed) Modified: projects/counters/Makefile.inc1 ============================================================================== --- projects/counters/Makefile.inc1 Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/Makefile.inc1 Thu Mar 21 16:29:08 2013 (r248589) @@ -1389,6 +1389,7 @@ _prebuild_libs= ${_kerberos5_lib_libasn1 lib/libopie lib/libpam ${_lib_libthr} \ lib/libradius lib/libsbuf lib/libtacplus \ ${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \ + ${_cddl_lib_libzfs_core} \ lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ ${_secure_lib_libssl} @@ -1417,7 +1418,9 @@ lib/libopie__L lib/libtacplus__L: lib/li .if ${MK_CDDL} != "no" _cddl_lib_libumem= cddl/lib/libumem _cddl_lib_libnvpair= cddl/lib/libnvpair +_cddl_lib_libzfs_core= cddl/lib/libzfs_core _cddl_lib= cddl/lib +cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L .endif .if ${MK_CRYPT} != "no" Modified: projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Mar 21 16:29:08 2013 (r248589) @@ -57,6 +57,7 @@ #include <sys/arc.h> #include <sys/ddt.h> #include <sys/zfeature.h> +#include <zfs_comutil.h> #undef ZFS_MAXNAMELEN #undef verify #include <libzfs.h> @@ -206,6 +207,27 @@ dump_packed_nvlist(objset_t *os, uint64_ nvlist_free(nv); } +/* ARGSUSED */ +static void +dump_history_offsets(objset_t *os, uint64_t object, void *data, size_t size) +{ + spa_history_phys_t *shp = data; + + if (shp == NULL) + return; + + (void) printf("\t\tpool_create_len = %llu\n", + (u_longlong_t)shp->sh_pool_create_len); + (void) printf("\t\tphys_max_off = %llu\n", + (u_longlong_t)shp->sh_phys_max_off); + (void) printf("\t\tbof = %llu\n", + (u_longlong_t)shp->sh_bof); + (void) printf("\t\teof = %llu\n", + (u_longlong_t)shp->sh_eof); + (void) printf("\t\trecords_lost = %llu\n", + (u_longlong_t)shp->sh_records_lost); +} + static void zdb_nicenum(uint64_t num, char *buf) { @@ -857,21 +879,22 @@ dump_history(spa_t *spa) for (int i = 0; i < num; i++) { uint64_t time, txg, ievent; char *cmd, *intstr; + boolean_t printed = B_FALSE; if (nvlist_lookup_uint64(events[i], ZPOOL_HIST_TIME, &time) != 0) - continue; + goto next; if (nvlist_lookup_string(events[i], ZPOOL_HIST_CMD, &cmd) != 0) { if (nvlist_lookup_uint64(events[i], ZPOOL_HIST_INT_EVENT, &ievent) != 0) - continue; + goto next; verify(nvlist_lookup_uint64(events[i], ZPOOL_HIST_TXG, &txg) == 0); verify(nvlist_lookup_string(events[i], ZPOOL_HIST_INT_STR, &intstr) == 0); - if (ievent >= LOG_END) - continue; + if (ievent >= ZFS_NUM_LEGACY_HISTORY_EVENTS) + goto next; (void) snprintf(internalstr, sizeof (internalstr), @@ -884,6 +907,14 @@ dump_history(spa_t *spa) (void) localtime_r(&tsec, &t); (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); (void) printf("%s %s\n", tbuf, cmd); + printed = B_TRUE; + +next: + if (dump_opt['h'] > 1) { + if (!printed) + (void) printf("unrecognized record:\n"); + dump_nvlist(events[i], 2); + } } } @@ -1496,7 +1527,7 @@ static object_viewer_t *object_viewer[DM dump_zap, /* other ZAP */ dump_zap, /* persistent error log */ dump_uint8, /* SPA history */ - dump_uint64, /* SPA history offsets */ + dump_history_offsets, /* SPA history offsets */ dump_zap, /* Pool properties */ dump_zap, /* DSL permissions */ dump_acl, /* ZFS ACL */ @@ -1661,7 +1692,9 @@ dump_dir(objset_t *os) int print_header = 1; int i, error; + dsl_pool_config_enter(dmu_objset_pool(os), FTAG); dmu_objset_fast_stat(os, &dds); + dsl_pool_config_exit(dmu_objset_pool(os), FTAG); if (dds.dds_type < DMU_OST_NUMTYPES) type = objset_types[dds.dds_type]; @@ -2070,7 +2103,6 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog NULL, NULL, ZIO_PRIORITY_ASYNC_READ, flags, zb)); free(data); - if (ioerr && !(flags & ZIO_FLAG_SPECULATIVE)) { zcb->zcb_haderrors = 1; zcb->zcb_errors[ioerr]++; Modified: projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Mar 21 16:29:08 2013 (r248589) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 1, 2013 +.Dd March 21, 2013 .Dt ZFS 8 .Os .Sh NAME @@ -65,6 +65,7 @@ .Op Fl r .Oo Fl o Ar property Ns = Ns Ar value Oc Ns ... .Ar filesystem@snapname Ns | Ns Ar volume@snapname +.Ar filesystem@snapname Ns | Ns Ar volume@snapname Ns ... .Nm .Cm rollback .Op Fl rRf @@ -1617,7 +1618,11 @@ multiple snapshots. Destroy (or mark for deferred deletion) all snapshots with this name in descendent file systems. .It Fl R -Recursively destroy all dependents. +Recursively destroy all clones of these snapshots, including the clones, +snapshots, and children. +If this flag is specified, the +.Op fl d +flag will have no effect. .It Fl n Do a dry-run ("No-op") deletion. No data will be deleted. This is useful in conjunction with the @@ -1645,17 +1650,18 @@ behavior for mounted file systems in use .Op Fl r .Oo Fl o Ar property Ns = Ns Ar value Oc Ns ... .Ar filesystem@snapname Ns | Ns volume@snapname +.Ar filesystem@snapname Ns | Ns volume@snapname Ns ... .Xc .Pp -Creates a snapshot with the given name. All previous modifications by -successful system calls to the file system are part of the snapshot. See the +Creates snapshots with the given names. All previous modifications by +successful system calls to the file system are part of the snapshots. +Snapshots are taken atomically, so that all snapshots correspond to the same +moment in time. See the .Qq Sx Snapshots section for details. .Bl -tag -width indent .It Fl r -Recursively create snapshots of all descendent datasets. Snapshots are taken -atomically, so that all recursive snapshots correspond to the same moment in -time. +Recursively create snapshots of all descendent datasets .It Fl o Ar property Ns = Ns Ar value Sets the specified property; see .Qq Nm Cm create Modified: projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Thu Mar 21 16:29:08 2013 (r248589) @@ -58,6 +58,7 @@ #include <time.h> #include <libzfs.h> +#include <libzfs_core.h> #include <zfs_prop.h> #include <zfs_deleg.h> #include <libuutil.h> @@ -74,6 +75,7 @@ libzfs_handle_t *g_zfs; static FILE *mnttab_file; static char history_str[HIS_MAX_RECORD_LEN]; +static boolean_t log_history = B_TRUE; static int zfs_do_clone(int argc, char **argv); static int zfs_do_create(int argc, char **argv); @@ -276,7 +278,7 @@ get_usage(zfs_help_t idx) return (gettext("\tshare <-a | filesystem>\n")); case HELP_SNAPSHOT: return (gettext("\tsnapshot [-r] [-o property=value] ... " - "<filesystem@snapname|volume@snapname>\n")); + "<filesystem@snapname|volume@snapname> ...\n")); case HELP_UNMOUNT: return (gettext("\tunmount [-f] " "<-a | filesystem|mountpoint>\n")); @@ -914,11 +916,12 @@ typedef struct destroy_cbdata { boolean_t cb_parsable; boolean_t cb_dryrun; nvlist_t *cb_nvl; + nvlist_t *cb_batchedsnaps; /* first snap in contiguous run */ - zfs_handle_t *cb_firstsnap; + char *cb_firstsnap; /* previous snap in contiguous run */ - zfs_handle_t *cb_prevsnap; + char *cb_prevsnap; int64_t cb_snapused; char *cb_snapspec; } destroy_cbdata_t; @@ -1010,9 +1013,27 @@ destroy_callback(zfs_handle_t *zhp, void zfs_close(zhp); return (0); } + if (cb->cb_dryrun) { + zfs_close(zhp); + return (0); + } + + /* + * We batch up all contiguous snapshots (even of different + * filesystems) and destroy them with one ioctl. We can't + * simply do all snap deletions and then all fs deletions, + * because we must delete a clone before its origin. + */ + if (zfs_get_type(zhp) == ZFS_TYPE_SNAPSHOT) { + fnvlist_add_boolean(cb->cb_batchedsnaps, name); + } else { + int error = zfs_destroy_snaps_nvl(g_zfs, + cb->cb_batchedsnaps, B_FALSE); + fnvlist_free(cb->cb_batchedsnaps); + cb->cb_batchedsnaps = fnvlist_alloc(); - if (!cb->cb_dryrun) { - if (zfs_unmount(zhp, NULL, cb->cb_force ? MS_FORCE : 0) != 0 || + if (error != 0 || + zfs_unmount(zhp, NULL, cb->cb_force ? MS_FORCE : 0) != 0 || zfs_destroy(zhp, cb->cb_defer_destroy) != 0) { zfs_close(zhp); return (-1); @@ -1032,11 +1053,13 @@ destroy_print_cb(zfs_handle_t *zhp, void if (nvlist_exists(cb->cb_nvl, name)) { if (cb->cb_firstsnap == NULL) - cb->cb_firstsnap = zfs_handle_dup(zhp); + cb->cb_firstsnap = strdup(name); if (cb->cb_prevsnap != NULL) - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); /* this snap continues the current range */ - cb->cb_prevsnap = zfs_handle_dup(zhp); + cb->cb_prevsnap = strdup(name); + if (cb->cb_firstsnap == NULL || cb->cb_prevsnap == NULL) + nomem(); if (cb->cb_verbose) { if (cb->cb_parsable) { (void) printf("destroy\t%s\n", name); @@ -1051,12 +1074,12 @@ destroy_print_cb(zfs_handle_t *zhp, void } else if (cb->cb_firstsnap != NULL) { /* end of this range */ uint64_t used = 0; - err = zfs_get_snapused_int(cb->cb_firstsnap, + err = lzc_snaprange_space(cb->cb_firstsnap, cb->cb_prevsnap, &used); cb->cb_snapused += used; - zfs_close(cb->cb_firstsnap); + free(cb->cb_firstsnap); cb->cb_firstsnap = NULL; - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); cb->cb_prevsnap = NULL; } zfs_close(zhp); @@ -1073,13 +1096,13 @@ destroy_print_snapshots(zfs_handle_t *fs if (cb->cb_firstsnap != NULL) { uint64_t used = 0; if (err == 0) { - err = zfs_get_snapused_int(cb->cb_firstsnap, + err = lzc_snaprange_space(cb->cb_firstsnap, cb->cb_prevsnap, &used); } cb->cb_snapused += used; - zfs_close(cb->cb_firstsnap); + free(cb->cb_firstsnap); cb->cb_firstsnap = NULL; - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); cb->cb_prevsnap = NULL; } return (err); @@ -1166,8 +1189,10 @@ static int zfs_do_destroy(int argc, char **argv) { destroy_cbdata_t cb = { 0 }; + int rv = 0; + int err = 0; int c; - zfs_handle_t *zhp; + zfs_handle_t *zhp = NULL; char *at; zfs_type_t type = ZFS_TYPE_DATASET; @@ -1221,11 +1246,9 @@ zfs_do_destroy(int argc, char **argv) at = strchr(argv[0], '@'); if (at != NULL) { - int err = 0; /* Build the list of snaps to destroy in cb_nvl. */ - if (nvlist_alloc(&cb.cb_nvl, NV_UNIQUE_NAME, 0) != 0) - nomem(); + cb.cb_nvl = fnvlist_alloc(); *at = '\0'; zhp = zfs_open(g_zfs, argv[0], @@ -1236,17 +1259,15 @@ zfs_do_destroy(int argc, char **argv) cb.cb_snapspec = at + 1; if (gather_snapshots(zfs_handle_dup(zhp), &cb) != 0 || cb.cb_error) { - zfs_close(zhp); - nvlist_free(cb.cb_nvl); - return (1); + rv = 1; + goto out; } if (nvlist_empty(cb.cb_nvl)) { (void) fprintf(stderr, gettext("could not find any " "snapshots to destroy; check snapshot names.\n")); - zfs_close(zhp); - nvlist_free(cb.cb_nvl); - return (1); + rv = 1; + goto out; } if (cb.cb_verbose) { @@ -1265,18 +1286,26 @@ zfs_do_destroy(int argc, char **argv) } if (!cb.cb_dryrun) { - if (cb.cb_doclones) + if (cb.cb_doclones) { + cb.cb_batchedsnaps = fnvlist_alloc(); err = destroy_clones(&cb); + if (err == 0) { + err = zfs_destroy_snaps_nvl(g_zfs, + cb.cb_batchedsnaps, B_FALSE); + } + if (err != 0) { + rv = 1; + goto out; + } + } if (err == 0) { - err = zfs_destroy_snaps_nvl(zhp, cb.cb_nvl, + err = zfs_destroy_snaps_nvl(g_zfs, cb.cb_nvl, cb.cb_defer_destroy); } } - zfs_close(zhp); - nvlist_free(cb.cb_nvl); if (err != 0) - return (1); + rv = 1; } else { /* Open the given dataset */ if ((zhp = zfs_open(g_zfs, argv[0], type)) == NULL) @@ -1297,8 +1326,8 @@ zfs_do_destroy(int argc, char **argv) zfs_get_name(zhp)); (void) fprintf(stderr, gettext("use 'zpool destroy %s' " "to destroy the pool itself\n"), zfs_get_name(zhp)); - zfs_close(zhp); - return (1); + rv = 1; + goto out; } /* @@ -1308,30 +1337,42 @@ zfs_do_destroy(int argc, char **argv) if (!cb.cb_doclones && zfs_iter_dependents(zhp, B_TRUE, destroy_check_dependent, &cb) != 0) { - zfs_close(zhp); - return (1); + rv = 1; + goto out; } if (cb.cb_error) { - zfs_close(zhp); - return (1); + rv = 1; + goto out; } + cb.cb_batchedsnaps = fnvlist_alloc(); if (zfs_iter_dependents(zhp, B_FALSE, destroy_callback, &cb) != 0) { - zfs_close(zhp); - return (1); + rv = 1; + goto out; } /* * Do the real thing. The callback will close the * handle regardless of whether it succeeds or not. */ - if (destroy_callback(zhp, &cb) != 0) - return (1); + err = destroy_callback(zhp, &cb); + zhp = NULL; + if (err == 0) { + err = zfs_destroy_snaps_nvl(g_zfs, + cb.cb_batchedsnaps, cb.cb_defer_destroy); + } + if (err != 0) + rv = 1; } - return (0); +out: + fnvlist_free(cb.cb_batchedsnaps); + fnvlist_free(cb.cb_nvl); + if (zhp != NULL) + zfs_close(zhp); + return (rv); } static boolean_t @@ -1932,9 +1973,11 @@ upgrade_set_callback(zfs_handle_t *zhp, /* * If they did "zfs upgrade -a", then we could * be doing ioctls to different pools. We need - * to log this history once to each pool. + * to log this history once to each pool, and bypass + * the normal history logging that happens in main(). */ - verify(zpool_stage_history(g_zfs, history_str) == 0); + (void) zpool_log_history(g_zfs, history_str); + log_history = B_FALSE; } if (zfs_prop_set(zhp, "version", verstr) == 0) cb->cb_numupgraded++; @@ -3472,6 +3515,32 @@ zfs_do_set(int argc, char **argv) return (ret); } +typedef struct snap_cbdata { + nvlist_t *sd_nvl; + boolean_t sd_recursive; + const char *sd_snapname; +} snap_cbdata_t; + +static int +zfs_snapshot_cb(zfs_handle_t *zhp, void *arg) +{ + snap_cbdata_t *sd = arg; + char *name; + int rv = 0; + int error; + + error = asprintf(&name, "%s@%s", zfs_get_name(zhp), sd->sd_snapname); + if (error == -1) + nomem(); + fnvlist_add_boolean(sd->sd_nvl, name); + free(name); + + if (sd->sd_recursive) + rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); + zfs_close(zhp); + return (rv); +} + /* * zfs snapshot [-r] [-o prop=value] ... <fs@snap> * @@ -3481,13 +3550,16 @@ zfs_do_set(int argc, char **argv) static int zfs_do_snapshot(int argc, char **argv) { - boolean_t recursive = B_FALSE; int ret = 0; char c; nvlist_t *props; + snap_cbdata_t sd = { 0 }; + boolean_t multiple_snaps = B_FALSE; if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0) nomem(); + if (nvlist_alloc(&sd.sd_nvl, NV_UNIQUE_NAME, 0) != 0) + nomem(); /* check options */ while ((c = getopt(argc, argv, "ro:")) != -1) { @@ -3497,7 +3569,8 @@ zfs_do_snapshot(int argc, char **argv) return (1); break; case 'r': - recursive = B_TRUE; + sd.sd_recursive = B_TRUE; + multiple_snaps = B_TRUE; break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), @@ -3514,18 +3587,35 @@ zfs_do_snapshot(int argc, char **argv) (void) fprintf(stderr, gettext("missing snapshot argument\n")); goto usage; } - if (argc > 1) { - (void) fprintf(stderr, gettext("too many arguments\n")); - goto usage; + + if (argc > 1) + multiple_snaps = B_TRUE; + for (; argc > 0; argc--, argv++) { + char *atp; + zfs_handle_t *zhp; + + atp = strchr(argv[0], '@'); + if (atp == NULL) + goto usage; + *atp = '\0'; + sd.sd_snapname = atp + 1; + zhp = zfs_open(g_zfs, argv[0], + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); + if (zhp == NULL) + goto usage; + if (zfs_snapshot_cb(zhp, &sd) != 0) + goto usage; } - ret = zfs_snapshot(g_zfs, argv[0], recursive, props); + ret = zfs_snapshot_nvl(g_zfs, sd.sd_nvl, props); + nvlist_free(sd.sd_nvl); nvlist_free(props); - if (ret && recursive) + if (ret != 0 && multiple_snaps) (void) fprintf(stderr, gettext("no snapshots were created\n")); return (ret != 0); usage: + nvlist_free(sd.sd_nvl); nvlist_free(props); usage(B_FALSE); return (-1); @@ -5068,28 +5158,12 @@ cleanup2: return (error); } -/* - * zfs allow [-r] [-t] <tag> <snap> ... - * - * -r Recursively hold - * -t Temporary hold (hidden option) - * - * Apply a user-hold with the given tag to the list of snapshots. - */ static int zfs_do_allow(int argc, char **argv) { return (zfs_do_allow_unallow_impl(argc, argv, B_FALSE)); } -/* - * zfs unallow [-r] [-t] <tag> <snap> ... - * - * -r Recursively hold - * -t Temporary hold (hidden option) - * - * Apply a user-hold with the given tag to the list of snapshots. - */ static int zfs_do_unallow(int argc, char **argv) { @@ -5103,7 +5177,6 @@ zfs_do_hold_rele_impl(int argc, char **a int i; const char *tag; boolean_t recursive = B_FALSE; - boolean_t temphold = B_FALSE; const char *opts = holding ? "rt" : "r"; int c; @@ -5113,9 +5186,6 @@ zfs_do_hold_rele_impl(int argc, char **a case 'r': recursive = B_TRUE; break; - case 't': - temphold = B_TRUE; - break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), optopt); @@ -5164,7 +5234,7 @@ zfs_do_hold_rele_impl(int argc, char **a } if (holding) { if (zfs_hold(zhp, delim+1, tag, recursive, - temphold, B_FALSE, -1, 0, 0) != 0) + B_FALSE, -1) != 0) ++errors; } else { if (zfs_release(zhp, delim+1, tag, recursive) != 0) @@ -5180,7 +5250,6 @@ zfs_do_hold_rele_impl(int argc, char **a * zfs hold [-r] [-t] <tag> <snap> ... * * -r Recursively hold - * -t Temporary hold (hidden option) * * Apply a user-hold with the given tag to the list of snapshots. */ @@ -6602,8 +6671,7 @@ main(int argc, char **argv) return (1); } - zpool_set_history_str("zfs", argc, argv, history_str); - verify(zpool_stage_history(g_zfs, history_str) == 0); + zfs_save_arguments(argc, argv, history_str, sizeof (history_str)); libzfs_print_on_error(g_zfs, B_TRUE); @@ -6672,6 +6740,9 @@ main(int argc, char **argv) (void) fclose(mnttab_file); + if (ret == 0 && log_history) + (void) zpool_log_history(g_zfs, history_str); + libzfs_fini(g_zfs); /* Modified: projects/counters/cddl/contrib/opensolaris/cmd/zhack/zhack.c ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/zhack/zhack.c Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/cddl/contrib/opensolaris/cmd/zhack/zhack.c Thu Mar 21 16:29:08 2013 (r248589) @@ -46,6 +46,7 @@ #include <sys/zio_checksum.h> #include <sys/zio_compress.h> #include <sys/zfeature.h> +#include <sys/dmu_tx.h> #undef ZFS_MAXNAMELEN #undef verify #include <libzfs.h> @@ -273,12 +274,15 @@ zhack_do_feature_stat(int argc, char **a } static void -feature_enable_sync(void *arg1, void *arg2, dmu_tx_t *tx) +feature_enable_sync(void *arg, dmu_tx_t *tx) { - spa_t *spa = arg1; - zfeature_info_t *feature = arg2; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + zfeature_info_t *feature = arg; spa_feature_enable(spa, feature, tx); + spa_history_log_internal(spa, "zhack enable feature", tx, + "name=%s can_readonly=%u", + feature->fi_guid, feature->fi_can_readonly); } static void @@ -341,8 +345,8 @@ zhack_do_feature_enable(int argc, char * if (0 == zap_contains(mos, spa->spa_feat_desc_obj, feature.fi_guid)) fatal("feature already enabled: %s", feature.fi_guid); - VERIFY3U(0, ==, dsl_sync_task_do(spa->spa_dsl_pool, NULL, - feature_enable_sync, spa, &feature, 5)); + VERIFY0(dsl_sync_task(spa_name(spa), NULL, + feature_enable_sync, &feature, 5)); spa_close(spa, FTAG); @@ -350,21 +354,25 @@ zhack_do_feature_enable(int argc, char * } static void -feature_incr_sync(void *arg1, void *arg2, dmu_tx_t *tx) +feature_incr_sync(void *arg, dmu_tx_t *tx) { - spa_t *spa = arg1; - zfeature_info_t *feature = arg2; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + zfeature_info_t *feature = arg; spa_feature_incr(spa, feature, tx); + spa_history_log_internal(spa, "zhack feature incr", tx, + "name=%s", feature->fi_guid); } static void -feature_decr_sync(void *arg1, void *arg2, dmu_tx_t *tx) +feature_decr_sync(void *arg, dmu_tx_t *tx) { - spa_t *spa = arg1; - zfeature_info_t *feature = arg2; + spa_t *spa = dmu_tx_pool(tx)->dp_spa; + zfeature_info_t *feature = arg; spa_feature_decr(spa, feature, tx); + spa_history_log_internal(spa, "zhack feature decr", tx, + "name=%s", feature->fi_guid); } static void @@ -435,8 +443,8 @@ zhack_do_feature_ref(int argc, char **ar if (decr && !spa_feature_is_active(spa, &feature)) fatal("feature refcount already 0: %s", feature.fi_guid); - VERIFY3U(0, ==, dsl_sync_task_do(spa->spa_dsl_pool, NULL, - decr ? feature_decr_sync : feature_incr_sync, spa, &feature, 5)); + VERIFY0(dsl_sync_task(spa_name(spa), NULL, + decr ? feature_decr_sync : feature_incr_sync, &feature, 5)); spa_close(spa, FTAG); } Modified: projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu Mar 21 16:19:46 2013 (r248588) +++ projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu Mar 21 16:29:08 2013 (r248589) @@ -192,9 +192,9 @@ static zpool_command_t command_table[] = #define NCOMMAND (sizeof (command_table) / sizeof (command_table[0])) -zpool_command_t *current_command; +static zpool_command_t *current_command; static char history_str[HIS_MAX_RECORD_LEN]; - +static boolean_t log_history = B_TRUE; static uint_t timestamp_fmt = NODATE; static const char * @@ -1093,7 +1093,10 @@ zpool_do_destroy(int argc, char **argv) return (1); } - ret = (zpool_destroy(zhp) != 0); + /* The history must be logged as part of the export */ + log_history = B_FALSE; + + ret = (zpool_destroy(zhp, history_str) != 0); zpool_close(zhp); @@ -1157,10 +1160,13 @@ zpool_do_export(int argc, char **argv) continue; } + /* The history must be logged as part of the export */ + log_history = B_FALSE; + if (hardforce) { - if (zpool_export_force(zhp) != 0) + if (zpool_export_force(zhp, history_str) != 0) ret = 1; - } else if (zpool_export(zhp, force) != 0) { + } else if (zpool_export(zhp, force, history_str) != 0) { ret = 1; } @@ -4563,6 +4569,14 @@ upgrade_cb(zpool_handle_t *zhp, void *ar if (count > 0) { cbp->cb_first = B_FALSE; printnl = B_TRUE; + /* + * If they did "zpool upgrade -a", then we could + * be doing ioctls to different pools. We need + * to log this history once to each pool, and bypass + * the normal history logging that happens in main(). + */ + (void) zpool_log_history(g_zfs, history_str); + log_history = B_FALSE; } } @@ -4924,8 +4938,8 @@ zpool_do_upgrade(int argc, char **argv) typedef struct hist_cbdata { boolean_t first; - int longfmt; - int internal; + boolean_t longfmt; + boolean_t internal; } hist_cbdata_t; /* @@ -4937,21 +4951,8 @@ get_history_one(zpool_handle_t *zhp, voi nvlist_t *nvhis; nvlist_t **records; uint_t numrecords; - char *cmdstr; - char *pathstr; - uint64_t dst_time; - time_t tsec; - struct tm t; - char tbuf[30]; int ret, i; - uint64_t who; - struct passwd *pwd; - char *hostname; - char *zonename; - char internalstr[MAXPATHLEN]; hist_cbdata_t *cb = (hist_cbdata_t *)data; - uint64_t txg; - uint64_t ievent; cb->first = B_FALSE; @@ -4963,64 +4964,94 @@ get_history_one(zpool_handle_t *zhp, voi verify(nvlist_lookup_nvlist_array(nvhis, ZPOOL_HIST_RECORD, &records, &numrecords) == 0); for (i = 0; i < numrecords; i++) { - if (nvlist_lookup_uint64(records[i], ZPOOL_HIST_TIME, - &dst_time) != 0) - continue; + nvlist_t *rec = records[i]; + char tbuf[30] = ""; - /* is it an internal event or a standard event? */ - if (nvlist_lookup_string(records[i], ZPOOL_HIST_CMD, - &cmdstr) != 0) { - if (cb->internal == 0) + if (nvlist_exists(rec, ZPOOL_HIST_TIME)) { + time_t tsec; + struct tm t; + + tsec = fnvlist_lookup_uint64(records[i], + ZPOOL_HIST_TIME); + (void) localtime_r(&tsec, &t); + (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); + } + + if (nvlist_exists(rec, ZPOOL_HIST_CMD)) { + (void) printf("%s %s", tbuf, + fnvlist_lookup_string(rec, ZPOOL_HIST_CMD)); + } else if (nvlist_exists(rec, ZPOOL_HIST_INT_EVENT)) { + int ievent = + fnvlist_lookup_uint64(rec, ZPOOL_HIST_INT_EVENT); + if (!cb->internal) continue; - - if (nvlist_lookup_uint64(records[i], - ZPOOL_HIST_INT_EVENT, &ievent) != 0) + if (ievent >= ZFS_NUM_LEGACY_HISTORY_EVENTS) { + (void) printf("%s unrecognized record:\n", + tbuf); + dump_nvlist(rec, 4); + continue; + } + (void) printf("%s [internal %s txg:%lld] %s", tbuf, + zfs_history_event_names[ievent], + fnvlist_lookup_uint64(rec, ZPOOL_HIST_TXG), + fnvlist_lookup_string(rec, ZPOOL_HIST_INT_STR)); + } else if (nvlist_exists(rec, ZPOOL_HIST_INT_NAME)) { + if (!cb->internal) continue; - verify(nvlist_lookup_uint64(records[i], - ZPOOL_HIST_TXG, &txg) == 0); - verify(nvlist_lookup_string(records[i], - ZPOOL_HIST_INT_STR, &pathstr) == 0); - if (ievent >= LOG_END) + (void) printf("%s [txg:%lld] %s", tbuf, + fnvlist_lookup_uint64(rec, ZPOOL_HIST_TXG), + fnvlist_lookup_string(rec, ZPOOL_HIST_INT_NAME)); + if (nvlist_exists(rec, ZPOOL_HIST_DSNAME)) { + (void) printf(" %s (%llu)", + fnvlist_lookup_string(rec, + ZPOOL_HIST_DSNAME), + fnvlist_lookup_uint64(rec, + ZPOOL_HIST_DSID)); + } + (void) printf(" %s", fnvlist_lookup_string(rec, + ZPOOL_HIST_INT_STR)); + } else if (nvlist_exists(rec, ZPOOL_HIST_IOCTL)) { + if (!cb->internal) continue; - (void) snprintf(internalstr, - sizeof (internalstr), - "[internal %s txg:%lld] %s", - zfs_history_event_names[ievent], txg, - pathstr); - cmdstr = internalstr; - } - tsec = dst_time; - (void) localtime_r(&tsec, &t); - (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); - (void) printf("%s %s", tbuf, cmdstr); + (void) printf("%s ioctl %s\n", tbuf, + fnvlist_lookup_string(rec, ZPOOL_HIST_IOCTL)); + if (nvlist_exists(rec, ZPOOL_HIST_INPUT_NVL)) { + (void) printf(" input:\n"); + dump_nvlist(fnvlist_lookup_nvlist(rec, + ZPOOL_HIST_INPUT_NVL), 8); + } + if (nvlist_exists(rec, ZPOOL_HIST_OUTPUT_NVL)) { + (void) printf(" output:\n"); + dump_nvlist(fnvlist_lookup_nvlist(rec, + ZPOOL_HIST_OUTPUT_NVL), 8); + } + } else { + if (!cb->internal) + continue; + (void) printf("%s unrecognized record:\n", tbuf); + dump_nvlist(rec, 4); + } if (!cb->longfmt) { (void) printf("\n"); continue; } (void) printf(" ["); - if (nvlist_lookup_uint64(records[i], - ZPOOL_HIST_WHO, &who) == 0) { - pwd = getpwuid((uid_t)who); - if (pwd) - (void) printf("user %s on", - pwd->pw_name); - else - (void) printf("user %d on", - (int)who); - } else { - (void) printf(gettext("no info]\n")); - continue; + if (nvlist_exists(rec, ZPOOL_HIST_WHO)) { + uid_t who = fnvlist_lookup_uint64(rec, ZPOOL_HIST_WHO); + struct passwd *pwd = getpwuid(who); + (void) printf("user %d ", (int)who); + if (pwd != NULL) + (void) printf("(%s) ", pwd->pw_name); + } + if (nvlist_exists(rec, ZPOOL_HIST_HOST)) { + (void) printf("on %s", + fnvlist_lookup_string(rec, ZPOOL_HIST_HOST)); + } + if (nvlist_exists(rec, ZPOOL_HIST_ZONE)) { + (void) printf(":%s", + fnvlist_lookup_string(rec, ZPOOL_HIST_ZONE)); } - if (nvlist_lookup_string(records[i], - ZPOOL_HIST_HOST, &hostname) == 0) { - (void) printf(" %s", hostname); - } - if (nvlist_lookup_string(records[i], - ZPOOL_HIST_ZONE, &zonename) == 0) { - (void) printf(":%s", zonename); - } - (void) printf("]"); (void) printf("\n"); } @@ -5035,8 +5066,6 @@ get_history_one(zpool_handle_t *zhp, voi * * Displays the history of commands that modified pools. */ - - int zpool_do_history(int argc, char **argv) { @@ -5049,10 +5078,10 @@ zpool_do_history(int argc, char **argv) while ((c = getopt(argc, argv, "li")) != -1) { switch (c) { case 'l': - cbdata.longfmt = 1; + cbdata.longfmt = B_TRUE; break; case 'i': - cbdata.internal = 1; + cbdata.internal = B_TRUE; break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), @@ -5277,8 +5306,7 @@ main(int argc, char **argv) if (strcmp(cmdname, "-?") == 0) usage(B_TRUE); - zpool_set_history_str("zpool", argc, argv, history_str); - verify(zpool_stage_history(g_zfs, history_str) == 0); + zfs_save_arguments(argc, argv, history_str, sizeof (history_str)); /* * Run the appropriate command. @@ -5305,6 +5333,9 @@ main(int argc, char **argv) usage(B_FALSE); } + if (ret == 0 && log_history) + (void) zpool_log_history(g_zfs, history_str); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303211629.r2LGT9Yd041742>