Linux 3.10 compat: bops->release() now returns void.

torvalds/linux@db2a144b

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Illumos #2882, #2883, #2900

2882 implement libzfs_core
2883 changing "canmount" property to "on" should not always remount dataset
2900 "zfs snapshot" should be able to create multiple, arbitrary snapshots at once

Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Chris Siden <christopher.siden@delphix.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Bill Pijewski <wdp@joyent.com>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>
Approved by: Eric Schrock <Eric.Schrock@delphix.com>

References:
  illumos/illumos-gate@4445fffbbb1ea25fd0e9ea68b9380dd7a6709025

Ported-by: Tim Chase <tim@chase2k.com>
Closes #1293

Porting notes:

Add "nosleep" versions of the fnvlist_dup, fnvlist_merge, fnvlist_alloc
and fnvlist_pack functions with a suffix of "_nosleep".  They simply
perform their allocations with the KM_NOSLEEP flag.

Add zvol minor device creation to the new zfs_snapshot_nvl function.

Remove the logging of the "release" operation in
dsl_dataset_user_release_sync().  The logging caused a null dereference
because ds->ds_dir is zeroed in dsl_dataset_destroy_sync() and the
logging functions try to get the ds name via the dsl_dataset_name()
function. I've got no idea why this particular code would have worked
in Illumos.  This code has subsequently been completely reworked in
Illumos commit 3b2aab1 (3464 zfs synctask code needs restructuring).

Squash some "may be used uninitialized" warning/erorrs.

Fix some printf format warnings for %lld and %llu.
Illumos #3098 zfs userspace/groupspace fail without saying why when run as non-root

ZFSOnLinux currently We do not actually need this change because we lack
delegation support and therefore only permit root commands to be run as
root, but Illumos #3464 depends on this change and it would not hurt to
have it in the code for when delegation support is implemented.

Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Ported-by: Richard Yao <ryao@gentoo.org>
Illumos #3557, #3558, #3559, #3560 import

This was a single commit in upstream Illumos:

3557 dumpvp_size is not updated correctly when a dump zvol's size is changed
3558 setting the volsize on a dump device does not return back ENOSPC
3559 setting a volsize larger than the space available sometimes succeeds
3560 dumpadm should be able to remove a dump device

Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Approved by: Albert Lee <trisk@nexenta.com>

ZFSOnLinux has an almoste completely rewritten zvol.c and Linux lack
dump devices, so many of the changes made in this upstream Illumos
commit are not relevant to us. However, a few changes do apply and they
areare relevant in that they should make future code imports easier to
do, so we import them.

Signed-off-by: Richard Yao <ryao@gentoo.org>