* 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
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.
  * Compile zvol_id without CFLAGS to avoid strange behaviour.
    Quick, dirty fix.
  * Add locale.h include to be able to compile.
  * Update release version.