Oups! Put it (last GIT commit date) in Release, not Version!
Merge branch 'master' of git://github.com/zfsonlinux/zfs
Merge branch 'master' of git://github.com/zfsonlinux/zfs
Merge branch 'master' of git://github.com/zfsonlinux/zfs
Merge branch 'master' of git://github.com/zfsonlinux/zfs
Add ddt_object_count() error handling

The interface for the ddt_zap_count() function assumes it can
never fail.  However, internally ddt_zap_count() is implemented
with zap_count() which can potentially fail.  Now because there
was no way to return the error to the caller a VERIFY was used
to ensure this case never happens.

Unfortunately, it has been observed that pools can be damaged in
such a way that zap_count() fails.  The result is that the pool can
not be imported without hitting the VERIFY and crashing the system.

This patch reworks ddt_object_count() so the error can be safely
caught and returned to the caller.  This allows a pool which has
be damaged in this way to be safely rewound for import.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #910
Add txgs-<pool> kstat file

Create a kstat file which contains useful statistics about the
last N txgs processed.  This can be helpful when analyzing pool
performance.  The new KSTAT_TYPE_TXG type was added for this
purpose and it tracks the following statistics per-txg.

  txg          - Unique txg number
  state        - State (O)pen/(Q)uiescing/(S)yncing/(C)ommitted
  birth;       - Creation time
  nread        - Bytes read
  nwritten;    - Bytes written
  reads        - IOPs read
  writes       - IOPs write
  open_time;   - Length in nanoseconds the txg was open
  quiesce_time - Length in nanoseconds the txg was quiescing
  sync_time;   - Length in nanoseconds the txg was syncing

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Log I/Os longer than zio_delay_max (30s default)

There have been reports of ZFS deadlocking due to what appears to
be a lost IO.  This patch addes some debugging to determine the
exact state of the IO which neither 1) completed, 2) failed, or
3) timed out after zio_delay_max (30) seconds.

This information will be logged using the ZFS FMA infrastructure
as a 'delay' event and posted to the internal zevent log.  By
default the last 64 events will be kept in the log but the limit
is configurable via the zfs_zevent_len_max module option.

To dump the contents of the log use the 'zpool events -v' command
and look for the resource.fs.zfs.delay event.  It will include
various information about the pool, vdev, and zio which may shed
some light on the issue.

In the context of this change the 120 second kernel blocked thread
watchdog has been disabled for synchronous IOs.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #930
Merge remote branch 'eris/stats'

Bring in support for the new KSTAT_TYPE_TXG type.  This allows for
additional visibility in to the txg handling.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Fix zvol+btrfs hang

When using a zvol to back a btrfs filesystem the btrfs mount
would hang.  This was due to the bio completion callback used
in btrfs assuming that lower level drivers would never modify
the bio->bi_io_vecs after they were submitted via bio_submit().
If they are modified btrfs will miscalculate which pages need
to be unlocked resulting in a hang.

It's worth mentioning that other file systems such as ext[234]
and xfs work fine because they do not make the same assumption
in the bio completion callback.

The most straight forward way to fix the issue is to present
the semantics expected by btrfs.  This is done by cloning the
bios attached to each request and then using the clones bvecs
to perform the required accounting.  The clones are freed after
each read/write and the original unmodified bios are linked back
in to the request.

Signed-off-by: Chris Wedgwood <cw@f00f.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #469
Fix "allocating allocated segment" panic

Gunnar Beutner did all the hard work on this one by correctly
identifying that this issue is a race between dmu_sync() and
dbuf_dirty().

Now in all cases the caller is responsible for preventing this
race by making sure the zfs_range_lock() is held when dirtying
a buffer which may be referenced in a log record.  The mmap
case which relies on zfs_putpage() was not taking the range
lock.  This code was accidentally dropped when the function
was rewritten for the Linux VFS.

This patch adds the required range locking to zfs_putpage().

It also adds the missing ZFS_ENTER()/ZFS_EXIT() macros which
aren't strictly required due to the VFS holding a reference.
However, this makes the code more consistent with the upsteam
code and there's no harm in being extra careful here.

Original-patch-by: Gunnar Beutner <gunnar@beutner.name>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #541
Merge branch 'master' of git://github.com/zfsonlinux/zfs
SMBFS sharing for ZoL.
Sixth official patch attempt. Previous ones was/is lost
in my inability with GIT.
* Fix issues after review by behlendorf.
  = Move comments etc from the README to the code and to the manpage.
  = Adhere to the 80 char line limit.
  = Cast constants when setting argv[x].
  = More defines, concentrated at the top.
  = Move smb_retrieve_shares() to the top, to avoid forward declaration.
  = Make private functions static.
  = Remove all debugging.
  = Whitespace fixes.
  = Return SA_OK instead of 0 where needed.
  = Remove some fprintf(stderr, "ERROR: ...") strings. Not needed really,
    they where mostly for debugging any way.
  = Bump release.
  = Add missing locale.h include.
  = Add file_is_executable().
  = Remove file_is_executable() per request from Brian.

* Some minor SMBFS fixes, comments from Richard Laager:
  = Remove redundant variable = NULL check.
  = Rewrite static 'net' command options define's
  = Remove commented out/redundant line parsing code.
  = Add Samba host options to net command in smb_disable_share_one()
    as well.

* Fixes after second review by behlendorf.
  = Putting back things that wasn't mine that I removed or
    changed..
  = Remove the file_is_executable() declaration that came
    back some how.
  = Reword, rewrite and indent information about how to
    setup Samba.
  = Implement smb_validate_shareopts().

* Fixes after third review by Prakash-Surya.
  = Removed missplaced space.
Add iSCSI sharing to ZoL.
Sixth official patch attempt. Previous ones was/is lost
in my inability with GIT.
* Script to run through some tests to test share/unsharing...
* Debugging output added.
* Retabbing
* Fix faulty nfs|smb check (setting ZFS_TYPE_FILESYSTEM). Now possible to
  use 'share -a [nfs|smb|iscsi] as command line suggests. Not documented
  in man page though...
  + In unshare_unmount(), 'if(do_all)', 'continue' instead of 'break' after
    checking 'sharenfs=off' (so that we can continue checking for shareiscsi
    and sharesmb).
* Process iscsi shares early in update_zfs_shares_cb().
* Fix problem with assertion fail when running 'zfs unshare -a'.
* Call process_share() early of update_zfs_shares_cb() if iSCSI.
* Add shell script (test_zfs.sh) to test some functionality of SMB/iSCSI
  patch(es).
+ Remove file_is_executable() from iSCSI per request from Brian.

Fix some stuff that I know Brian will nag about :)
* 80 char line
* Move content of README to code + man page.
* Remove all debugging.
* Return SA_OK instead of 0 where needed.
* Cast to char* when setting argv with constant string(s).
* C9x compliance
* Make private functions static.

Some minor iSCSI fixes, comments from Richard Laager:
* Remove redundant variable = NULL check.
* Rename the custom iSCSI share script (remove .sh suffix).
  + Reword manual

Some more iSCSI fixes.
* Since iscsi_retrieve_targets() is now static, move it
  up to the top of iscsi.c and remove from iscsi.h.
* In update_zfs_shares_cb(), do the iSCSI parts later
  and skip the if type != FS check etc.
* Implement iscsi_validate_shareopts().
* Distinguish between FS and VOL when updating
  share information.
  + Support adding a VOL to list.
* Uncomment some stuff in process_share() that is/was supposed
  to possibly fix the 'shareicsi=on' auto sharing but didn't.
  Only made it to not compile...
* Update copyright note and year(s).

Fixes after second review by behlendorf and comments by Richard Yao.
* Check for getdomainname() - set HAVE_GETDOMAINNAME=1 if so - in
  ./configure.
  + Only try to get domain name with getdomainname() if
    we have it (HAVE_GETDOMAINNAME). If we don't, use the
    file /etc/domainname (configurable with DOMAINNAME_FILE).
* s/if\(/if \(/.
* Init iscsi_volumes_fp in iscsi_retrieve_targets() to NULL.
* Make sure tid_s is only 11 chars long.
* Remove one level of indentation from test binary.
* Don't malloc temp - memleak in test binary.
* Retabbing.
* s/share/tank/g in comments etc.

More fixes after review by Richard Yao, Richard Laager and Prakash Surya:
* Spelling errors fixed.
* ietadm is in man section '8', not '8M' (to much cut-and-past :).
* Remove (rewrite) some redundant strlen() usage.
* Replace a non-working sizeof with strlen.
Misc personal changes
Commits:
  * Add some ignores (among them pkg files).
  * Indicate full 'path' (latest git commit date
    and all patches) in the Release tag.
  * Remove duplicate (empty) 'rpm-modules' target.
  * Add --keep-version to alien run (so that the packages won't
    be named 'VERSION-1' every single time!).
  * Compile zvol_id without CFLAGS to avoid strange behaviour.
    Quick, dirty fix.
  * Add locale.h include to be able to compile.
  * Update release version.
Merge with master.
* Remove hard-coded 80 column output
  When stdout is detected to be a tty use the number of columns
  specified by the terminal.  If that fails fall back to a default
  80 column width.  In the non-tty case allow for 999 column lines.
* Properly expose the mfu ghost list kstats
  Due to a typo the mru ghost lists stats were accidentally being
  exposed as the mfu ghost list stats.  This was harmless but
  confusing since memory usage could be over reported.
* Print human readable error message for ENOENT
  A cryptic error code is printed when mounting a legacy dataset to a
  non-existent mountpoint. This patch changes this behavior to print
  "mount point '%s' does not exist", which is similar to the error
  message printed when mounting procfs.
  The single quotes were added to be consistent with the existing EBUSY
  error message, which is the only difference between this error message
  and the one that is printed when the same condition occurs when mounting
  procfs.
  Closes #633
* Make Gentoo initscript use modinfo
  The -l parameter to modprobe has been removed from the latest upstream
  code and this change has entered Gentoo. Using modinfo as a substitute
  addresses this.
  Closes #636
* Fixed a NULL pointer dereference bug in zfs_preumount
  When zpl_fill_super -> zfs_domount fails (e.g. because the dataset
  was destroyed before it could be successfully mounted) the subsequent
  call to zpl_kill_sb -> zfs_preumount would derefence a NULL pointer.

  This bug can be reproduced using this shell script:

   #!/bin/sh
   (
   while true; do
   	zfs create -o mountpoint=legacz tank/bar
   	zfs destroy tank/bar
   done
   ) &

   (
   while true; do
   	mount -t zfs tank/bar /mnt
   	umount /mnt
   done
   ) &

  Closes #639
* Export additional dsl symbols
  Principly these symbols were exported to get access to the
  dsl_prop_register/dsl_prop_unregister functions.  They allow
  us to cleanly register a callback which is called when a
  dataset property is modified.
* Document the zle compression algorithm
* Improve error message consistency
* Illumos #1680: zfs vdev_file_io_start: validate vdev before using vdev_tsd
  vdev_tsd can be NULL for certain vdev states.
  At least in userland testing with ztest.
  References to Illumos issue:
    https://www.illumos.org/issues/1680
  Closes #655
* OS-926: zfs panic in zfs_fill_zplprops_impl()
  This change appears to be exclusive to SmartOS. It is not present in
  illumos-gate but it just adds some needed error handling.  This is
  clearly preferable to simply ASSERTING which is what would occur
  prior to the patch.
  Closes #652
* Illumos #1951: leaking a vdev when removing an l2cache device
  1952 memory leak when adding a file-based l2arc device
  1954 leak in ZFS from metaslab_group_create and zfs_ereport_checksum
  References to Illumos issues:
    https://www.illumos.org/issues/1951
    https://www.illumos.org/issues/1952
    https://www.illumos.org/issues/1954
  Closes #650
* Illumos #1475: zfs spill block hold can access invalid spill blkptr
  References to Illumos issue:
    https://www.illumos.org/issues/1475
  Closes #648
* Illumos #1346: zfs incremental receive may leave behind temporary clones
  1356 zfs dataset prefetch code not working
  References to Illumos issue:
    https://www.illumos.org/issues/1346
    https://www.illumos.org/issues/1356
  Closes #647
* ZFS snapshot alias
  For consistency, and because it's handy, add the 'zfs snap' alias which
  was introduced by Oracle Solaris 11.  This includes an update to the
  man page to reflect all the available alias (snap, umount, and recv).
  Closes #640
* ZFS list snapshot property alias
  Add support for the `zfs list -t snap` alias which is available under
  Oracle Solaris 11.
  Closes #640
* Use KM_PUSHPAGE in l2arc_write_buffers
  There is potential for deadlock in the l2arc_feed thread if KM_PUSHPAGE
  is not used for the allocations made in l2arc_write_buffers.
  Specifically, if KM_PUSHPAGE is not used for these allocations, it is
  possible for reclaim to be triggered which can cause the l2arc_feed
  thread to deadlock itself on the ARC_mru mutex. An example of this is
  demonstrated in the following backtrace of the l2arc_feed thread:

      crash> bt 4123
      PID: 4123   TASK: ffff88062f8c1500  CPU: 6   COMMAND: "l2arc_feed"
        0 [ffff88062511d610] schedule at ffffffff814eeee0
        1 [ffff88062511d6d8] __mutex_lock_slowpath at ffffffff814f057e
        2 [ffff88062511d748] mutex_lock at ffffffff814f041b
        3 [ffff88062511d768] arc_evict at ffffffffa05130ca [zfs]
        4 [ffff88062511d858] arc_adjust at ffffffffa05139a9 [zfs]
        5 [ffff88062511d878] arc_shrink at ffffffffa0513a95 [zfs]
        6 [ffff88062511d898] arc_kmem_reap_now at ffffffffa0513be8 [zfs]
        7 [ffff88062511d8c8] arc_shrinker_func at ffffffffa0513ccc [zfs]
        8 [ffff88062511d8f8] shrink_slab at ffffffff8112a17a
        9 [ffff88062511d958] do_try_to_free_pages at ffffffff8112bfdf
       10 [ffff88062511d9e8] try_to_free_pages at ffffffff8112c3ed
       11 [ffff88062511da98] __alloc_pages_nodemask at ffffffff8112431d
       12 [ffff88062511dbb8] kmem_getpages at ffffffff8115e632
       13 [ffff88062511dbe8] fallback_alloc at ffffffff8115f24a
       14 [ffff88062511dc68] ____cache_alloc_node at ffffffff8115efc9
       15 [ffff88062511dcc8] __kmalloc at ffffffff8115fbf9
       16 [ffff88062511dd18] kmem_alloc_debug at ffffffffa047b8cb [spl]
       17 [ffff88062511dda8] l2arc_feed_thread at ffffffffa0511e71 [zfs]
       18 [ffff88062511dea8] thread_generic_wrapper at ffffffffa047d1a1 [spl]
       19 [ffff88062511dee8] kthread at ffffffff81090a86
       20 [ffff88062511df48] kernel_thread at ffffffff8100c14a
* Illumos #1909: disk sync write perf regression when slog is used post oi_148
  Refererces to Illumos issue:
    https://www.illumos.org/issues/1909
  Closes #680
* Illumos #952: separate intent logs should be obvious in 'zpool iostat' output
  Refererce to Illumos issue:
    https://www.illumos.org/issues/952
  Closes #607
* Illumos #1946: incorrect formatting when listing output of multiple pools with zpool iostat -v
  Reference to Illumos issue:
    https://www.illumos.org/issues/1946
* Illumos #2067: uninitialized variables in zfs(1M) may make snapshots undestroyable
  References:
  	https://www.illumos.org/issues/2067
* Add zfs_mdcomp_disable module option
  Expose the zfs_mdcomp_disable variable as a module option.  This
  can be used to disable compression of zfs meta data which is
  enabled by default.  This shouldn't need to be tuned but for
  most workloads, however there may be very specific instances
  where it makes sense to trade disk capacity for extra cpu cycles.
* Integrate ARC more tightly with Linux
  Under Solaris the ARC was designed to stay one step ahead of the
  VM subsystem.  It would attempt to recognize low memory situtions
  before they occured and evict data from the cache.  It would also
  make assessments about if there was enough free memory to perform
  a specific operation.

  This was all possible because Solaris exposes a fairly decent
  view of the memory state of the system to other kernel threads.
  Linux on the other hand does not make this information easily
  available.  To avoid extensive modifications to the ARC the SPL
  attempts to provide these same interfaces.  While this works it
  is not ideal and problems can arise when the ARC and Linux have
  different ideas about when your out of memory.  This has manifested
  itself in the past as a spinning arc_reclaim_thread.

  This patch abandons the emulated Solaris interfaces in favor of
  the prefered Linux interface.  That means moving the bulk of the
  memory reclaim logic out of the arc_reclaim_thread and in to the
  evict driven shrinker callback.  The Linux VM will call this
  function when it needs memory.  The ARC is then responsible for
  attempting to free the requested amount of memory if possible.

  Several interfaces have been modified to accomidate this approach,
  however the basic user space implementation remains the same.
  The following changes almost exclusively just apply to the kernel
  implementation.

  * Removed the hdr_recl() reclaim callback which is redundant
    with the broader arc_shrinker_func().

  * Reduced arc_grow_retry to 5 seconds from 60.  This is now used
    internally in the ARC with arc_no_grow to indicate that direct
    reclaim was recently performed.  This typically indicates a
    rapid change in memory demands which the kswapd threads were
    unable to keep ahead of.  As long as direct reclaim is happening
    once every 5 seconds arc growth will be paused to avoid further
    contributing to the existing memory pressure.  The more common
    indirect reclaim paths will not set arc_no_grow.

  * arc_shrink() has been extended to take the number of bytes by
    which arc_c should be reduced.  This allows for a more granual
    reduction of the arc target.  Since the kernel provides a
    reclaim value to the arc_shrinker_func() this value is used
    instead of 1<<arc_shrink_shift.

  * arc_reclaim_needed() has been removed.  It was used to determine
    if the system was under memory pressure and relied extensively
    on Solaris specific VM interfaces.  In most case the new code
    just checks arc_no_grow which indicates that within the last
    arc_grow_retry seconds direct memory reclaim occurred.

  * arc_memory_throttle() has been updated to always include the
    amount of evictable memory (arc and page cache) in its free
    space calculations.  This space is largely available in most
    call paths due to direct memory reclaim.

  * The Solaris pageout code was also removed to avoid confusion.
    It has always been disabled due to proc_pageout being defined
    as NULL in the Linux port.
* Update ARC memory limits to account for SLUB internal fragmentation
  23bdb07d4e4c435205d25d3efdb5fef2d089ce5e updated the ARC memory limits
  to be 1/2 of memory or all but 4GB. Unfortunately, these values assume
  zero internal fragmentation in the SLUB allocator, when in reality, the
  internal fragmentation could be as high as 50%, effectively doubling
  memory usage. This poses clear safety issues, because it permits the
  size of ARC to exceed system memory.

  This patch changes this so that the default value of arc_c_max is always
  1/2 of system memory. This effectively limits the ARC to the memory that
  the system has physically installed.
  Closes #660
* Disable direct reclaim on zvols
  Previously, it was possible for the direct reclaim path to be invoked
  when a write to a zvol was made. When a zvol is used as a swap device,
  this often causes swap requests to depend on additional swap requests,
  which deadlocks. We address this by disabling the direct reclaim path
  on zvols.
  Closes #342
* Linux 3.3 compat, iops->create()/mkdir()/mknod()
  The mode argument of iops->create()/mkdir()/mknod() was changed from
  an 'int' to a 'umode_t'.  To prevent a compiler warning an autoconf
  check was added to detect the API change and then correctly set a
  zpl_umode_t typedef.  There is no functional change.
  Closes #701
* Add mdadm and bc dependencies
  The zfs-test package additionally depends on mdadm and bc to
  run the zfault.sh tests.
  Closes #690
* Revert "Disable direct reclaim on zvols"
  This reverts commit ce90208cf9e04df966429f115d8831371ea9afce.  This
  change was observed to cause problems when using a zvol to back a VM
  under 2.6.32.59 kernels.  This issue was filed as #710.
  Issue #342
  Issue #710
* Rebuild with autoconf 2.67.