author | ek110237 |
Tue, 24 Jul 2007 09:34:17 -0700 | |
changeset 4715 | e8d212dda064 |
parent 4597 | cd30043e9dc2 |
child 5094 | 71a3e95fb9e2 |
permissions | -rw-r--r-- |
789 | 1 |
/* |
2 |
* CDDL HEADER START |
|
3 |
* |
|
4 |
* The contents of this file are subject to the terms of the |
|
1544 | 5 |
* Common Development and Distribution License (the "License"). |
6 |
* You may not use this file except in compliance with the License. |
|
789 | 7 |
* |
8 |
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
|
9 |
* or http://www.opensolaris.org/os/licensing. |
|
10 |
* See the License for the specific language governing permissions |
|
11 |
* and limitations under the License. |
|
12 |
* |
|
13 |
* When distributing Covered Code, include this CDDL HEADER in each |
|
14 |
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
|
15 |
* If applicable, add the following below this CDDL HEADER, with the |
|
16 |
* fields enclosed by brackets "[]" replaced with your own identifying |
|
17 |
* information: Portions Copyright [yyyy] [name of copyright owner] |
|
18 |
* |
|
19 |
* CDDL HEADER END |
|
20 |
*/ |
|
3126 | 21 |
|
789 | 22 |
/* |
3444
dc160a70a50d
6410433 'zpool status -v' would be more useful with filenames
ek110237
parents:
3237
diff
changeset
|
23 |
* Copyright 2007 Sun Microsystems, Inc. All rights reserved. |
789 | 24 |
* Use is subject to license terms. |
25 |
*/ |
|
26 |
||
27 |
#ifndef _LIBFS_IMPL_H |
|
28 |
#define _LIBFS_IMPL_H |
|
29 |
||
30 |
#pragma ident "%Z%%M% %I% %E% SMI" |
|
31 |
||
32 |
#include <sys/dmu.h> |
|
33 |
#include <sys/fs/zfs.h> |
|
34 |
#include <sys/zfs_ioctl.h> |
|
35 |
#include <sys/zfs_acl.h> |
|
4543 | 36 |
#include <sys/spa.h> |
789 | 37 |
#include <sys/nvpair.h> |
38 |
||
2082 | 39 |
#include <libuutil.h> |
789 | 40 |
#include <libzfs.h> |
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
41 |
#include <libshare.h> |
789 | 42 |
|
43 |
#ifdef __cplusplus |
|
44 |
extern "C" { |
|
45 |
#endif |
|
46 |
||
2082 | 47 |
struct libzfs_handle { |
48 |
int libzfs_error; |
|
49 |
int libzfs_fd; |
|
50 |
FILE *libzfs_mnttab; |
|
51 |
FILE *libzfs_sharetab; |
|
52 |
uu_avl_pool_t *libzfs_ns_avlpool; |
|
53 |
uu_avl_t *libzfs_ns_avl; |
|
54 |
uint64_t libzfs_ns_gen; |
|
55 |
int libzfs_desc_active; |
|
56 |
char libzfs_action[1024]; |
|
57 |
char libzfs_desc[1024]; |
|
4543 | 58 |
char *libzfs_log_str; |
2082 | 59 |
int libzfs_printerr; |
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
60 |
void *libzfs_sharehdl; /* libshare handle */ |
2082 | 61 |
}; |
62 |
||
789 | 63 |
struct zfs_handle { |
2082 | 64 |
libzfs_handle_t *zfs_hdl; |
789 | 65 |
char zfs_name[ZFS_MAXNAMELEN]; |
2885 | 66 |
zfs_type_t zfs_type; /* type including snapshot */ |
67 |
zfs_type_t zfs_head_type; /* type excluding snapshot */ |
|
789 | 68 |
dmu_objset_stats_t zfs_dmustats; |
1356
e021b5e4aa0e
6377671 zfs mount -a shouldn't bother checking snapshots
eschrock
parents:
1294
diff
changeset
|
69 |
nvlist_t *zfs_props; |
2676 | 70 |
nvlist_t *zfs_user_props; |
2474
c001ad7e0c25
6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents:
2142
diff
changeset
|
71 |
boolean_t zfs_mntcheck; |
789 | 72 |
char *zfs_mntopts; |
1544 | 73 |
char zfs_root[MAXPATHLEN]; |
789 | 74 |
}; |
75 |
||
2676 | 76 |
/* |
77 |
* This is different from checking zfs_type, because it will also catch |
|
78 |
* snapshots of volumes. |
|
79 |
*/ |
|
2885 | 80 |
#define ZFS_IS_VOLUME(zhp) ((zhp)->zfs_head_type == ZFS_TYPE_VOLUME) |
2676 | 81 |
|
789 | 82 |
struct zpool_handle { |
2082 | 83 |
libzfs_handle_t *zpool_hdl; |
789 | 84 |
char zpool_name[ZPOOL_MAXNAMELEN]; |
85 |
int zpool_state; |
|
86 |
size_t zpool_config_size; |
|
87 |
nvlist_t *zpool_config; |
|
952
12ec54aa046e
6344502 placeholder bug for the remaining Makefile cleanup work for ZFS
eschrock
parents:
789
diff
changeset
|
88 |
nvlist_t *zpool_old_config; |
3912 | 89 |
nvlist_t *zpool_props; |
4276
c42d49ffb16f
6385547 zpool create of a mirror using a device and a slice of a device (of same size) reports an error
taylor
parents:
4180
diff
changeset
|
90 |
diskaddr_t zpool_start_block; |
789 | 91 |
}; |
92 |
||
3237
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
93 |
int zfs_error(libzfs_handle_t *, int, const char *); |
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
94 |
int zfs_error_fmt(libzfs_handle_t *, int, const char *, ...); |
2082 | 95 |
void zfs_error_aux(libzfs_handle_t *, const char *, ...); |
96 |
void *zfs_alloc(libzfs_handle_t *, size_t); |
|
2676 | 97 |
void *zfs_realloc(libzfs_handle_t *, void *, size_t, size_t); |
2082 | 98 |
char *zfs_strdup(libzfs_handle_t *, const char *); |
99 |
int no_memory(libzfs_handle_t *); |
|
789 | 100 |
|
3237
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
101 |
int zfs_standard_error(libzfs_handle_t *, int, const char *); |
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
102 |
int zfs_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); |
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
103 |
int zpool_standard_error(libzfs_handle_t *, int, const char *); |
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
104 |
int zpool_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); |
789 | 105 |
|
2474
c001ad7e0c25
6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents:
2142
diff
changeset
|
106 |
int get_dependents(libzfs_handle_t *, boolean_t, const char *, char ***, |
c001ad7e0c25
6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents:
2142
diff
changeset
|
107 |
size_t *); |
789 | 108 |
|
3912 | 109 |
int zfs_expand_proplist_common(libzfs_handle_t *, zfs_proplist_t **, |
110 |
zfs_type_t); |
|
111 |
int zfs_get_proplist_common(libzfs_handle_t *, char *, zfs_proplist_t **, |
|
112 |
zfs_type_t); |
|
4597
cd30043e9dc2
6509186 "zfs set" should list properties in alphabetical order
timf
parents:
4543
diff
changeset
|
113 |
zfs_prop_t zfs_prop_iter_common(zfs_prop_f, void *, zfs_type_t, boolean_t, |
cd30043e9dc2
6509186 "zfs set" should list properties in alphabetical order
timf
parents:
4543
diff
changeset
|
114 |
boolean_t); |
3912 | 115 |
zfs_prop_t zfs_name_to_prop_common(const char *, zfs_type_t); |
116 |
||
117 |
nvlist_t *zfs_validate_properties(libzfs_handle_t *, zfs_type_t, char *, |
|
118 |
nvlist_t *, uint64_t, zfs_handle_t *zhp, const char *errbuf); |
|
119 |
||
789 | 120 |
typedef struct prop_changelist prop_changelist_t; |
121 |
||
2676 | 122 |
int zcmd_alloc_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, size_t); |
123 |
int zcmd_write_src_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *, size_t *); |
|
124 |
int zcmd_expand_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *); |
|
125 |
int zcmd_read_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t **); |
|
126 |
void zcmd_free_nvlists(zfs_cmd_t *); |
|
127 |
||
789 | 128 |
int changelist_prefix(prop_changelist_t *); |
129 |
int changelist_postfix(prop_changelist_t *); |
|
130 |
void changelist_rename(prop_changelist_t *, const char *, const char *); |
|
1294
87b43e5de5ee
6364129 need to unmount any child datasets before doing the rollback
lling
parents:
952
diff
changeset
|
131 |
void changelist_remove(zfs_handle_t *, prop_changelist_t *); |
789 | 132 |
void changelist_free(prop_changelist_t *); |
133 |
prop_changelist_t *changelist_gather(zfs_handle_t *, zfs_prop_t, int); |
|
134 |
int changelist_unshare(prop_changelist_t *); |
|
135 |
int changelist_haszonedchild(prop_changelist_t *); |
|
136 |
||
137 |
void remove_mountpoint(zfs_handle_t *); |
|
138 |
||
2082 | 139 |
zfs_handle_t *make_dataset_handle(libzfs_handle_t *, const char *); |
1544 | 140 |
|
2142
f6e0487aa9a3
6433264 crash when adding spare: nvlist_lookup_string(cnv, "path", &path) == 0
eschrock
parents:
2082
diff
changeset
|
141 |
int zpool_open_silent(libzfs_handle_t *, const char *, zpool_handle_t **); |
789 | 142 |
|
2082 | 143 |
int zvol_create_link(libzfs_handle_t *, const char *); |
144 |
int zvol_remove_link(libzfs_handle_t *, const char *); |
|
3126 | 145 |
int zpool_iter_zvol(zpool_handle_t *, int (*)(const char *, void *), void *); |
789 | 146 |
|
2082 | 147 |
void namespace_clear(libzfs_handle_t *); |
789 | 148 |
|
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
149 |
/* |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
150 |
* libshare (sharemgr) interfaces used internally. |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
151 |
*/ |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
152 |
|
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
153 |
extern int zfs_init_libshare(libzfs_handle_t *, int); |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
154 |
extern void zfs_uninit_libshare(libzfs_handle_t *); |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
155 |
extern int zfs_parse_options(char *, char *); |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
156 |
|
789 | 157 |
#ifdef __cplusplus |
158 |
} |
|
159 |
#endif |
|
160 |
||
161 |
#endif /* _LIBFS_IMPL_H */ |