libzfs.h revision 24e697d414a4df0377b91a2875f029e7b5f97247
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER START
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The contents of this file are subject to the terms of the
441d80aa4f613b6298fc8bd3151f4be02dbf84fclling * Common Development and Distribution License (the "License").
441d80aa4f613b6298fc8bd3151f4be02dbf84fclling * You may not use this file except in compliance with the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fa9e4066f08beec538e775443c5be79dd423fcabahrens * See the License for the specific language governing permissions
fa9e4066f08beec538e775443c5be79dd423fcabahrens * and limitations under the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * When distributing Covered Code, include this CDDL HEADER in each
fa9e4066f08beec538e775443c5be79dd423fcabahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * If applicable, add the following below this CDDL HEADER, with the
fa9e4066f08beec538e775443c5be79dd423fcabahrens * fields enclosed by brackets "[]" replaced with your own identifying
fa9e4066f08beec538e775443c5be79dd423fcabahrens * information: Portions Copyright [yyyy] [name of copyright owner]
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER END
6949a980ded6490cd1bcf4a93a1d074d46d9a6c1marks * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Use is subject to license terms.
fa9e4066f08beec538e775443c5be79dd423fcabahrens#pragma ident "%Z%%M% %I% %E% SMI"
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern "C" {
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Miscellaneous ZFS constants
99653d4ee642c6528e88224f12409a5f23060994eschrock * libzfs errors
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_PROPREADONLY, /* cannot set readonly property */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_PROPTYPE, /* property does not apply to dataset type */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_PROPNONINHERIT, /* property is not inheritable */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_BADTYPE, /* dataset is not of appropriate type */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_VOLTOOBIG, /* volume is too large for 32-bit system */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_VOLHASDATA, /* volume already contains data */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_BADRESTORE, /* unable to restore to destination */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_BADTARGET, /* bad attach/detach/replace target */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_POOLUNAVAIL, /* pool is currently unavailable */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_DEVOVERFLOW, /* too many devices in one vdev */
99653d4ee642c6528e88224f12409a5f23060994eschrock EZFS_CROSSTARGET, /* rename or clone across pool or dataset */
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahl EZFS_UNSHAREISCSIFAILED, /* iscsitgtd failed request to unshare */
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahl EZFS_SHAREISCSIFAILED, /* iscsitgtd failed request to share */
b1b8ab34de515a5e83206da22c3d7e563241b021lling EZFS_POOL_NOTSUP, /* ops not supported for this type of pool */
b1b8ab34de515a5e83206da22c3d7e563241b021lling EZFS_POOL_INVALARG, /* invalid argument for this pool operation */
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks EZFS_NODELEGATION, /* delegated administration is disabled */
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * The following data structures are all part
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * of the zfs_allow_t data structure which is
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * used for printing 'allow' permissions.
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * It is a linked list of zfs_allow_t's which
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * then contain avl tree's for user/group/sets/...
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * and each one of the entries in those trees have
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * avl tree's for the permissions they belong to and
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * whether they are local,descendent or local+descendent
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * permissions. The AVL trees are used primarily for
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * sorting purposes, but also so that we can quickly find
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * a given user and or permission.
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarkstypedef struct zfs_perm_node {
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarkstypedef struct zfs_allow_node {
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks avl_tree_t z_localdescend; /* local+descendent perms */
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarkstypedef struct zfs_allow {
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Basic handle types
99653d4ee642c6528e88224f12409a5f23060994eschrock * Library initialization
99653d4ee642c6528e88224f12409a5f23060994eschrockextern libzfs_handle_t *zpool_get_handle(zpool_handle_t *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern libzfs_handle_t *zfs_get_handle(zfs_handle_t *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern void libzfs_print_on_error(libzfs_handle_t *, boolean_t);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern const char *libzfs_error_action(libzfs_handle_t *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern const char *libzfs_error_description(libzfs_handle_t *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Basic handle functions
99653d4ee642c6528e88224f12409a5f23060994eschrockextern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *);
990b4856d0eaada6f8140335733a1b1771ed2746llingextern char *zpool_state_to_name(vdev_state_t, vdev_aux_t);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Iterate over all active pools in the system.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef int (*zpool_iter_f)(zpool_handle_t *, void *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Functions to create and destroy pools
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Functions to manipulate pool and vdev state
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern int zpool_scrub(zpool_handle_t *, pool_scrub_type_t);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_clear(zpool_handle_t *, const char *);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_online(zpool_handle_t *, const char *, int,
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_attach(zpool_handle_t *, const char *,
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock const char *, nvlist_t *, int);
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern int zpool_vdev_detach(zpool_handle_t *, const char *);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zpool_vdev_remove(zpool_handle_t *, const char *);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_fault(zpool_handle_t *, uint64_t);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_degrade(zpool_handle_t *, uint64_t);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_vdev_clear(zpool_handle_t *, uint64_t);
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendanextern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *,
8488aeb5df27784d479c16cde06a9e25cd9a1152taylorextern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *);
b1b8ab34de515a5e83206da22c3d7e563241b021lling * Functions to manage pool properties
b1b8ab34de515a5e83206da22c3d7e563241b021llingextern int zpool_set_prop(zpool_handle_t *, const char *, const char *);
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrockextern int zpool_get_prop(zpool_handle_t *, zpool_prop_t, char *,
990b4856d0eaada6f8140335733a1b1771ed2746llingextern uint64_t zpool_get_prop_int(zpool_handle_t *, zpool_prop_t,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Pool health statistics.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum {
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The following correspond to faults as defined in the (fault.fs.zfs.*)
b81d61a68b235e0529ebadc18e14d9d1dd52a258lling * event namespace. Each is associated with a corresponding message ID.
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_CORRUPT_CACHE, /* corrupt /kernel/drv/zpool.cache */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_MISSING_DEV_R, /* missing device with replicas */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_MISSING_DEV_NR, /* missing device with no replicas */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_CORRUPT_LABEL_R, /* bad device label with replicas */
b81d61a68b235e0529ebadc18e14d9d1dd52a258lling ZPOOL_STATUS_CORRUPT_LABEL_NR, /* bad device label with no replicas */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_BAD_GUID_SUM, /* sum of device guids didn't match */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_CORRUPT_POOL, /* pool metadata is corrupted */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_CORRUPT_DATA, /* data errors in user (meta)data */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_FAILING_DEV, /* device experiencing errors */
eaca9bbd5f5d1e4e554da4c7108e8a03c8c33481eschrock ZPOOL_STATUS_VERSION_NEWER, /* newer on-disk version */
95173954d2b811ceb583a9012c3b16e1d0dd6438ek ZPOOL_STATUS_HOSTID_MISMATCH, /* last accessed by another system */
32b87932f3ef0887d873b7f6d2d1943799b2afc0ek ZPOOL_STATUS_IO_FAILURE_WAIT, /* failed I/O, failmode 'wait' */
32b87932f3ef0887d873b7f6d2d1943799b2afc0ek ZPOOL_STATUS_IO_FAILURE_CONTINUE, /* failed I/O, failmode 'continue' */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock ZPOOL_STATUS_FAULTED_DEV_R, /* faulted device with replicas */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock ZPOOL_STATUS_FAULTED_DEV_NR, /* faulted device with no replicas */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The following are not faults per se, but still an error possibly
b81d61a68b235e0529ebadc18e14d9d1dd52a258lling * requiring administrative attention. There is no corresponding
fa9e4066f08beec538e775443c5be79dd423fcabahrens * message ID.
eaca9bbd5f5d1e4e554da4c7108e8a03c8c33481eschrock ZPOOL_STATUS_VERSION_OLDER, /* older on-disk version */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ZPOOL_STATUS_RESILVERING, /* device being resilvered */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Finally, the following indicates a healthy pool.
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrockextern zpool_status_t zpool_get_status(zpool_handle_t *, char **);
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrockextern zpool_status_t zpool_import_status(nvlist_t *, char **);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Statistics and configuration functions.
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrockextern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **);
94de1d4cf6ec0a3bf040dcc4b8df107c4ed36b51eschrockextern int zpool_refresh_stats(zpool_handle_t *, boolean_t *);
55434c770c89aa1b84474f2559a106803511aba0ekextern int zpool_get_errlog(zpool_handle_t *, nvlist_t **);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Import and export functions
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *,
990b4856d0eaada6f8140335733a1b1771ed2746llingextern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Search for pools to import
24e697d414a4df0377b91a2875f029e7b5f97247ckextern nvlist_t *zpool_find_import(libzfs_handle_t *, int, char **);
3a57275a335306e90136ebd00a4689fe0ee72519ckextern nvlist_t *zpool_find_import_cached(libzfs_handle_t *, const char *,
24e697d414a4df0377b91a2875f029e7b5f97247ckextern nvlist_t *zpool_find_import_byname(libzfs_handle_t *, int, char **,
24e697d414a4df0377b91a2875f029e7b5f97247ckextern nvlist_t *zpool_find_import_byguid(libzfs_handle_t *, int, char **,
24e697d414a4df0377b91a2875f029e7b5f97247ckextern nvlist_t *zpool_find_import_activeok(libzfs_handle_t *, int, char **);
c67d9675bbc8392fe45f3a7dfbda1ad4daa1eb07eschrock * Miscellaneous pool functions
99653d4ee642c6528e88224f12409a5f23060994eschrockextern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *);
06eeb2ad640ce72d394ac521094bed7681044408ekextern int zpool_get_history(zpool_handle_t *, nvlist_t **);
2a6b87f07ac0c0b819179c84afe5a60afa04cfa5ekextern void zpool_set_history_str(const char *subcommand, int argc,
2a6b87f07ac0c0b819179c84afe5a60afa04cfa5ekextern int zpool_stage_history(libzfs_handle_t *, const char *);
55434c770c89aa1b84474f2559a106803511aba0ekextern void zpool_obj_to_path(zpool_handle_t *, uint64_t, uint64_t, char *,
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Basic handle manipulations. These functions do not create or destroy the
fa9e4066f08beec538e775443c5be79dd423fcabahrens * underlying datasets, only the references to them.
99653d4ee642c6528e88224f12409a5f23060994eschrockextern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int);
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern const char *zfs_get_name(const zfs_handle_t *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Property management functions. Some functions are shared with the kernel,
b81d61a68b235e0529ebadc18e14d9d1dd52a258lling * and are found in sys/fs/zfs.h.
990b4856d0eaada6f8140335733a1b1771ed2746lling * zfs dataset property management
990b4856d0eaada6f8140335733a1b1771ed2746llingextern const char *zfs_prop_default_string(zfs_prop_t);
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_prop_set(zfs_handle_t *, const char *, const char *);
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t,
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *,
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t);
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_prop_inherit(zfs_handle_t *, const char *);
990b4856d0eaada6f8140335733a1b1771ed2746llingtypedef struct zprop_list {
990b4856d0eaada6f8140335733a1b1771ed2746llingextern int zfs_expand_proplist(zfs_handle_t *, zprop_list_t **);
990b4856d0eaada6f8140335733a1b1771ed2746lling * zpool property management
990b4856d0eaada6f8140335733a1b1771ed2746llingextern int zpool_expand_proplist(zpool_handle_t *, zprop_list_t **);
990b4856d0eaada6f8140335733a1b1771ed2746llingextern const char *zpool_prop_default_string(zpool_prop_t);
990b4856d0eaada6f8140335733a1b1771ed2746llingextern uint64_t zpool_prop_default_numeric(zpool_prop_t);
990b4856d0eaada6f8140335733a1b1771ed2746llingextern const char *zpool_prop_column_name(zpool_prop_t);
990b4856d0eaada6f8140335733a1b1771ed2746lling * Functions shared by zfs and zpool property management.
990b4856d0eaada6f8140335733a1b1771ed2746llingextern int zprop_iter(zprop_func func, void *cb, boolean_t show_all,
990b4856d0eaada6f8140335733a1b1771ed2746llingextern int zprop_get_list(libzfs_handle_t *, char *, zprop_list_t **,
990b4856d0eaada6f8140335733a1b1771ed2746lling * Functions for printing zfs or zpool properties
990b4856d0eaada6f8140335733a1b1771ed2746llingtypedef struct zprop_get_cbdata {
990b4856d0eaada6f8140335733a1b1771ed2746llingvoid zprop_print_one_property(const char *, zprop_get_cbdata_t *,
990b4856d0eaada6f8140335733a1b1771ed2746lling const char *, const char *, zprop_source_t, const char *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Iterator functions.
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *);
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *);
3bb79bece53191f2cf27aa61a72ea1784a7ce700eschrockextern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *);
7f7322febbcfe774b7270abc3b191c094bfcc517eschrockextern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *);
7f7322febbcfe774b7270abc3b191c094bfcc517eschrockextern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Functions to create and destroy datasets.
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zfs_create(libzfs_handle_t *, const char *, zfs_type_t,
7f1f55ea3af0e6153a8ee9316c7f0b8b4f1ba773vbextern int zfs_create_ancestors(libzfs_handle_t *, const char *);
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *);
1d452cf5123cb6ac0a013a4dbd4dcceeb0da314dahrensextern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t);
c391e322108d10533bc61ba3ef7099b302214341ahrensextern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t);
7f1f55ea3af0e6153a8ee9316c7f0b8b4f1ba773vbextern int zfs_rename(zfs_handle_t *, const char *, boolean_t);
3cb34c601f3ef3016f638574f5982e80c3735c71ahrensextern int zfs_send(zfs_handle_t *, const char *, const char *,
3cb34c601f3ef3016f638574f5982e80c3735c71ahrenstypedef struct recvflags {
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* print informational messages (ie, -v was specified) */
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* the destination is a prefix, not the exact fs (ie, -d) */
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* do not actually do the recv, just check if it would work (ie, -n) */
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* rollback/destroy filesystems as necessary (eg, -F) */
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* set "canmount=off" on all modified filesystems */
4ccbb6e737373468bb9dc1709618384cce4c9f92ahrens /* byteswap flag is used internally; callers need not specify */
3cb34c601f3ef3016f638574f5982e80c3735c71ahrensextern int zfs_receive(libzfs_handle_t *, const char *, recvflags_t,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Miscellaneous functions.
5aba80db367b061758a29154d304977d00d8e4f4ckextern zfs_handle_t *zfs_path_to_zhandle(libzfs_handle_t *, char *, zfs_type_t);
7f1f55ea3af0e6153a8ee9316c7f0b8b4f1ba773vbextern boolean_t zfs_dataset_exists(libzfs_handle_t *, const char *,
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * dataset permission functions.
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_perm_remove(zfs_handle_t *, nvlist_t *);
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_build_perms(zfs_handle_t *, char *, char *,
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks zfs_deleg_who_type_t, zfs_deleg_inherit_t, nvlist_t **nvlist_t);
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_perm_get(zfs_handle_t *, zfs_allow_t **);
6949a980ded6490cd1bcf4a93a1d074d46d9a6c1marksextern void zfs_deleg_permissions(void);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Mount support functions.
55434c770c89aa1b84474f2559a106803511aba0ekextern boolean_t is_mounted(libzfs_handle_t *, const char *special, char **);
99653d4ee642c6528e88224f12409a5f23060994eschrockextern boolean_t zfs_is_mounted(zfs_handle_t *, char **);
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern int zfs_mount(zfs_handle_t *, const char *, int);
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern int zfs_unmount(zfs_handle_t *, const char *, int);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Share support functions.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Protocol-specific share support functions.
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahlextern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwextern boolean_t zfs_is_shared_smb(zfs_handle_t *, char **);
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahlextern int zfs_unshare_nfs(zfs_handle_t *, const char *);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwextern int zfs_unshare_smb(zfs_handle_t *, const char *);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwextern int zfs_unshareall_bypath(zfs_handle_t *, const char *);
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_iscsi_perm_check(libzfs_handle_t *, char *, ucred_t *);
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarksextern int zfs_deleg_share_nfs(libzfs_handle_t *, char *, char *,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw void *, void *, int, zfs_share_op_t);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * When dealing with nvlists, verify() is extremely useful
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Utility function to convert a number to a human-readable form.
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrockextern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Given a device or file, determine if it is part of a pool.
99653d4ee642c6528e88224f12409a5f23060994eschrockextern int zpool_in_use(libzfs_handle_t *, int, pool_state_t *, char **,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * ftyp special. Read the label from a given device.
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahl * Create and remove zvol /dev links.
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gw/* is this zvol valid for use as a dump device? */
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gwextern int zvol_check_dump_config(char *);
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahl * Enable and disable datasets within a pool by mounting/unmounting and
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahlextern int zpool_enable_datasets(zpool_handle_t *, const char *, int);
f3861e1a2ceec23a5b699c24d814b7775a9e0b52ahlextern int zpool_disable_datasets(zpool_handle_t *, boolean_t);
fa9e4066f08beec538e775443c5be79dd423fcabahrens#endif /* _LIBZFS_H */