1*789Sahrens /*
2*789Sahrens  * CDDL HEADER START
3*789Sahrens  *
4*789Sahrens  * The contents of this file are subject to the terms of the
5*789Sahrens  * Common Development and Distribution License, Version 1.0 only
6*789Sahrens  * (the "License").  You may not use this file except in compliance
7*789Sahrens  * with the License.
8*789Sahrens  *
9*789Sahrens  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*789Sahrens  * or http://www.opensolaris.org/os/licensing.
11*789Sahrens  * See the License for the specific language governing permissions
12*789Sahrens  * and limitations under the License.
13*789Sahrens  *
14*789Sahrens  * When distributing Covered Code, include this CDDL HEADER in each
15*789Sahrens  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*789Sahrens  * If applicable, add the following below this CDDL HEADER, with the
17*789Sahrens  * fields enclosed by brackets "[]" replaced with your own identifying
18*789Sahrens  * information: Portions Copyright [yyyy] [name of copyright owner]
19*789Sahrens  *
20*789Sahrens  * CDDL HEADER END
21*789Sahrens  */
22*789Sahrens /*
23*789Sahrens  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*789Sahrens  * Use is subject to license terms.
25*789Sahrens  */
26*789Sahrens 
27*789Sahrens #ifndef	_LIBFS_IMPL_H
28*789Sahrens #define	_LIBFS_IMPL_H
29*789Sahrens 
30*789Sahrens #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*789Sahrens 
32*789Sahrens #include <sys/dmu.h>
33*789Sahrens #include <sys/fs/zfs.h>
34*789Sahrens #include <sys/zfs_ioctl.h>
35*789Sahrens #include <sys/zfs_acl.h>
36*789Sahrens #include <sys/nvpair.h>
37*789Sahrens 
38*789Sahrens #include <libzfs.h>
39*789Sahrens 
40*789Sahrens #ifdef	__cplusplus
41*789Sahrens extern "C" {
42*789Sahrens #endif
43*789Sahrens 
44*789Sahrens struct zfs_handle {
45*789Sahrens 	char zfs_name[ZFS_MAXNAMELEN];
46*789Sahrens 	zfs_type_t zfs_type;
47*789Sahrens 	dmu_objset_stats_t zfs_dmustats;
48*789Sahrens 	zfs_stats_t zfs_zplstats;
49*789Sahrens 	uint64_t zfs_volsize;
50*789Sahrens 	uint64_t zfs_volblocksize;
51*789Sahrens 	char *zfs_mntopts;
52*789Sahrens };
53*789Sahrens 
54*789Sahrens struct zpool_handle {
55*789Sahrens 	char zpool_name[ZPOOL_MAXNAMELEN];
56*789Sahrens 	int zpool_state;
57*789Sahrens 	size_t zpool_config_size;
58*789Sahrens 	nvlist_t *zpool_config;
59*789Sahrens };
60*789Sahrens 
61*789Sahrens void zfs_error(const char *, ...);
62*789Sahrens void zfs_fatal(const char *, ...);
63*789Sahrens void *zfs_malloc(size_t);
64*789Sahrens char *zfs_strdup(const char *);
65*789Sahrens void no_memory(void);
66*789Sahrens 
67*789Sahrens #define	zfs_baderror(err)						\
68*789Sahrens 	(zfs_fatal(dgettext(TEXT_DOMAIN,				\
69*789Sahrens 	"internal error: unexpected error %d at line %d of %s"),	\
70*789Sahrens 	(err), (__LINE__), (__FILE__)))
71*789Sahrens 
72*789Sahrens int zfs_fd;
73*789Sahrens 
74*789Sahrens char **get_dependents(const char *, size_t *);
75*789Sahrens 
76*789Sahrens FILE *mnttab_file;
77*789Sahrens FILE *sharetab_file;
78*789Sahrens 
79*789Sahrens typedef struct prop_changelist prop_changelist_t;
80*789Sahrens 
81*789Sahrens int changelist_prefix(prop_changelist_t *);
82*789Sahrens int changelist_postfix(prop_changelist_t *);
83*789Sahrens void changelist_rename(prop_changelist_t *, const char *, const char *);
84*789Sahrens void changelist_free(prop_changelist_t *);
85*789Sahrens prop_changelist_t *changelist_gather(zfs_handle_t *, zfs_prop_t, int);
86*789Sahrens int changelist_unshare(prop_changelist_t *);
87*789Sahrens int changelist_haszonedchild(prop_changelist_t *);
88*789Sahrens 
89*789Sahrens void remove_mountpoint(zfs_handle_t *);
90*789Sahrens 
91*789Sahrens zfs_handle_t *make_dataset_handle(const char *);
92*789Sahrens void set_pool_health(nvlist_t *config);
93*789Sahrens 
94*789Sahrens zpool_handle_t *zpool_open_silent(const char *pool);
95*789Sahrens 
96*789Sahrens int zvol_create_link(const char *dataset);
97*789Sahrens int zvol_remove_link(const char *dataset);
98*789Sahrens 
99*789Sahrens #ifdef	__cplusplus
100*789Sahrens }
101*789Sahrens #endif
102*789Sahrens 
103*789Sahrens #endif	/* _LIBFS_IMPL_H */
104