]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC 246619,247187,247265,247348,247398,247540,247585,248265,248267,248571,
authormm <mm@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 14 Jun 2013 19:26:32 +0000 (19:26 +0000)
committermm <mm@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 14 Jun 2013 19:26:32 +0000 (19:26 +0000)
commita3a90d4eebc489f5c9d705bee995378a34128336
tree35c38fc502fd696f3df488f914b1e78709cc9451
parent4cba48bf1e822cc61b550d3eeec5cf52eb488142
MFC 246619,247187,247265,247348,247398,247540,247585,248265,248267,248571,
    248976,249004,249042,249047,249188,249195,249196,249206,249207,249319,
    249326,249356,249357,249787,249883,249858

Merge libzfs_core, zfs deadman thread and other ZFS bugfixes and improvements.

MFC r246619:
  Correct spelling of "daemon".  No .Dd bump.
  Noticed by: Nathan Rich <Nathan.Rich dynastysystems com>

MFC r247187:
  Import vendor change to avoid "unitialized variable" warnings.

  Illumos ZFS issues:
  3522 zfs module should not allow uninitialized variables

MFC r247265:
  Merge the ZFS I/O deadman thread from vendor (illumos).
  This feature panics the system on hanging ZFS I/O, helps debugging
  and resumes failed service.

  The panic behavior can be controlled with the loader-only tunables:
  vfs.zfs.deadman_enabled (enable or disable panic on stalled ZFS I/O)
  vfs.zfs.deadman_synctime (expiration time for stalled ZFS I/O)

  By default, ZFS I/O deadman is enabled by default on amd64 and i386
  excluding virtual guest machines.

MFC r247348:
  Be more verbose on ZFS deadman I/O panic
  Patch suggested upstream.

MFC r247398:
  Import metaslab_sync() speedup from vendor (illumos).

  Illumos ZFS issues:
  3552 condensing one space map burns 3 seconds of CPU in spa_sync() thread
  3564 spa_sync() spends 5-10% of its time in metaslab_sync() (when not
condensing)
  3578 transferring the freed map to the defer map should be constant time
  3579 ztest trips assertion in metaslab_weight()

MFC r247540:
  Fix the zfs_ioctl compat layer to support zfs_cmd size change introduced
  in r247265 (ZFS deadman thread). Both new utilities now support the old
  kernel and new kernel properly detects old utilities.

  For future backwards compatibility, the vfs.zfs.version.ioctl read-only
  sysctl has been introduced. With this sysctl zfs utilities will be able
  to detect the ioctl interface version of the currently loaded zfs module.

MFC r247585:
  Merge new read-only zfs properties from vendor (illumos)

  Illumos ZFS issues:
  3588 provide zfs properties for logical (uncompressed) space used and
       referenced

MFC r248265:
  Update zfs.8 manpage date (missing in r247585)

MFC r248267:
  Import minor ZFS changes from vendor

  Illumos ZFS issues:
  3604 zdb should print bpobjs more verbosely (fix zdb hang)
  3606 zpool status -x shouldn't warn about old on-disk format

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 r249047 (avg):
  spa_open_common: fix argument to zvol_create_minors

  Prior to r248571 spa_open was always called with a bare pool name,
  but now it is called with a dataset name instead (spa_lookup handles
  that).
  So, when a ZFS root is mounted spa_open is called with a name of a root
  dataset, which can very well be different from the pool name.
  But zvol_create_minors should be called with the pool name, because it
  performs a recursive traversal of all datasets under the name to find
  all those that are volumes.

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

MFC r249787:
  The zfs synctask code restructuring introduced a new bug that makes it
  impossible to set quota and reservation on pools lower than version 22.
  Problem has been reported and a solution discussed with vendor.

  Illumos ZFS issues:
    3739 cannot set zfs quota or reservation on pool version < 22

MFC r249883:
  Respect the enoent_ok flag if reporting error for holding an non-existing
  snapshot.

  Related illumos ZFS issue:
    3699 zfs hold or release of a non-existent snapshot does not output error

MFC r249858:
  Merge vendor bugfix for a possible deadlock related to async destroy
  and improve write performance by introducing a new lock protecting
  tx_open_txg.

  Illumos ZFS issues:
    3642 dsl_scan_active() should not issue I/O to determine if async
         destroying is active
    3643 txg_delay should not hold the tc_lock

git-svn-id: svn://svn.freebsd.org/base/stable/8@251757 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
150 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/compat/opensolaris/sys/time.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/zfs_prop.c
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/lzjb.c
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_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_scan.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/metaslab_impl.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/spa_boot.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.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/txg_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.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_context.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_byteswap.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_fuid.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.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_rlock.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