]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/commit
MFC 248571,248976,249004,249042,249188,249195-249196,249206,249207,249319,
authormm <mm@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 19 Apr 2013 09:19:10 +0000 (09:19 +0000)
committermm <mm@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 19 Apr 2013 09:19:10 +0000 (09:19 +0000)
commit2094ce50e11c2838cd73ab107971259af40195f3
treebc82aaa941f673c62319e214dc6aa53b8fd90210
parent928d8f60a744c312b35923b0f1d4db407bdba076
MFC 248571,248976,249004,249042,249188,249195-249196,249206,249207,249319,
    249326,249356-249357

Merge libzfs_core and other ZFS bugfixes and improvements.

MFC r248571:
  MFV 238590, 238592:
  In the first zfs ioctl restructuring phase, the libzfs_core library was
  introduced. It is a new thin library that wraps around kernel ioctl's.
  The idea is to provide a forward-compatible way of dealing with new
  features. Arguments are passed in nvlists and not random zfs_cmd fields,
  new-style ioctls are logged to pool history using a new method of
  history logging.

  http://blog.delphix.com/matt/2012/01/17/the-future-of-libzfs/

  MFV 247580 [1]:
  To address issues of several deadlocks and race conditions the locking
  code around dsl_dataset was rewritten and the interface to synctasks
  was changed.

  User-Visible Changes:
  "zfs snapshot" can create more arbitrary snapshots at once (atomically)
  "zfs destroy" destroys multiple snapshots at once
  "zfs recv" has improved performance

  Backward Compatibility:
  I have extended the compatibility layer to support full backward
  compatibility by remapping or rewriting the responsible ioctl arguments.
  Old utilities are fully supported by the new kernel module.

  Forward Compatibility:
  New utilities work with old kernels with the following restrictions:
    - creating, destroying, holding and releasing of multiple snapshots
      at once is not supported, this includes recursive (-r) commands

  Illumos ZFS issues:
    2882 implement libzfs_core
    2900 "zfs snapshot" should be able to create multiple,
         arbitrary snapshots at once
    3464 zfs synctask code needs restructuring

MFC r248976:
  Call dmu_snapshot_list_next() in zvol.c with dsl_pool_config lock held

MFC r249004:
  Do not check against uninitialized rc and comment out vendor code

MFC r249042:
  Fix possible pool hold leak in dmu_send_impl()

  Illumos ZFS issues:
    3645 dmu_send_impl: possibilty of pool hold leak

MFC r249188:
  Import vendor change to reduce diff, no effect on FreeBSD.

  Illumos ZFS issues:
    3517 importing pool with autoreplace=on and "hole" vdevs crashes
 syseventd

MFC r249195:
  Merge change from vendor to reduce diff only.
  ZFS dtrace probes are not supported on FreeBSD yet.

  Illumos ZFS issues:
    3598 want to dtrace when errors are generated in zfs

MFC r249196:
  Provide a fix for kernel panic if receiving recursive deduplicated
  streams. Problem reported to vendor.

  Illumos ZFS issues:
    3692 Panic on zfs receive of a recursive deduplicated stream

MFC r249206:
  Merge vendor change - modify time processing in deadman thread.

  Illumos ZFS issues:
    3618 ::zio dcmd does not show timestamp data

MFC r249207:
  Allow zdb to output a histogram of compressed block sizes.

  Illumos ZFS issues:
    3641 want a histogram of compressed block sizes

MFC r249319:
  ZFS expects a copyout of zfs_cmd_t on an ioctl error. Our sys_ioctl()
  doesn't copyout in this case.

  To solve this a new struct zfs_iocparm_t is introduced consisting of:
  - zfs_ioctl_version (future backwards compatibility purposes)
  - user space pointer to zfs_cmd_t (copyin and copyout)
  - size of zfs_cmd_t (verification purposes)

  The copyin and copyout of zfs_cmd_t is now done the illumos (vendor) way
  what makes porting of new changes easier and ensures correct behavior if
  returning an error.

MFC r249326:
  Cast (void *)(uintptr_t) on copyout and copyin of zfs_iocparm_t.zfs_cmd

MFC r249356:
  Merge bugfixes accepted and integrated by vendor. Underlying problems
  have been reported by us and fixed in r240942 and r249196.

  Illumos ZFS issues:
    3645 dmu_send_impl: possibilty of pool hold leak
    3692 Panic on zfs receive of a recursive deduplicated stream

MFC r249357:
  Fix libzfs to report error instead of returning zero if trying to hold or
  release a non-existing snapshot of a existing dataset. In recursive case
  error is reported if no snapshots with the requested name have been found.

  Illumos ZFS issues:
    3699 zfs hold or release of a non-existent snapshot does not output
 error

git-svn-id: svn://svn.freebsd.org/base/stable/9@249643 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
137 files changed:
Makefile.inc1
cddl/contrib/opensolaris/cmd/zdb/zdb.c
cddl/contrib/opensolaris/cmd/zfs/zfs.8
cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
cddl/contrib/opensolaris/cmd/zhack/zhack.c
cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
cddl/contrib/opensolaris/cmd/ztest/ztest.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.h [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core_compat.c [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core_compat.h [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
cddl/contrib/opensolaris/lib/libzpool/common/zfs.d [new file with mode: 0644]
cddl/lib/Makefile
cddl/lib/libzfs/Makefile
cddl/lib/libzfs_core/Makefile [new file with mode: 0644]
cddl/sbin/zfs/Makefile
cddl/sbin/zpool/Makefile
cddl/usr.bin/zinject/Makefile
cddl/usr.bin/ztest/Makefile
cddl/usr.sbin/zdb/Makefile
cddl/usr.sbin/zhack/Makefile
rescue/rescue/Makefile
share/mk/bsd.libnames.mk
sys/cddl/compat/opensolaris/sys/cred.h
sys/cddl/compat/opensolaris/sys/sdt.h
sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c
sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c
sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h
sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c
sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h
sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c
sys/cddl/contrib/opensolaris/uts/common/Makefile.files
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_prop.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_userhold.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
sys/cddl/contrib/opensolaris/uts/common/sys/feature_tests.h
sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
sys/cddl/contrib/opensolaris/uts/common/sys/nvpair.h