author | timh |
Thu, 24 Jul 2008 15:04:31 -0700 | |
changeset 7184 | 9508660f9c27 |
parent 6865 | 176d18c623cc |
child 7366 | 33de5956afbb |
permissions | -rw-r--r-- |
789 | 1 |
/* |
5951
c597da46efd6
6558321 zfs_share_nfs() fails the second time through
dougm
parents:
5367
diff
changeset
|
2 |
* CDDL HEADER SART |
789 | 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 |
/* |
5951
c597da46efd6
6558321 zfs_share_nfs() fails the second time through
dougm
parents:
5367
diff
changeset
|
23 |
* Copyright 2008 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 |
||
6442
b629b4fb30ca
6662212 libzfs should have a #define for VERIFY to assist backporting
gw25295
parents:
6423
diff
changeset
|
47 |
#ifdef VERIFY |
b629b4fb30ca
6662212 libzfs should have a #define for VERIFY to assist backporting
gw25295
parents:
6423
diff
changeset
|
48 |
#undef VERIFY |
b629b4fb30ca
6662212 libzfs should have a #define for VERIFY to assist backporting
gw25295
parents:
6423
diff
changeset
|
49 |
#endif |
b629b4fb30ca
6662212 libzfs should have a #define for VERIFY to assist backporting
gw25295
parents:
6423
diff
changeset
|
50 |
#define VERIFY verify |
b629b4fb30ca
6662212 libzfs should have a #define for VERIFY to assist backporting
gw25295
parents:
6423
diff
changeset
|
51 |
|
2082 | 52 |
struct libzfs_handle { |
53 |
int libzfs_error; |
|
54 |
int libzfs_fd; |
|
55 |
FILE *libzfs_mnttab; |
|
56 |
FILE *libzfs_sharetab; |
|
6865 | 57 |
zpool_handle_t *libzfs_pool_handles; |
2082 | 58 |
uu_avl_pool_t *libzfs_ns_avlpool; |
59 |
uu_avl_t *libzfs_ns_avl; |
|
60 |
uint64_t libzfs_ns_gen; |
|
61 |
int libzfs_desc_active; |
|
62 |
char libzfs_action[1024]; |
|
63 |
char libzfs_desc[1024]; |
|
4543 | 64 |
char *libzfs_log_str; |
2082 | 65 |
int libzfs_printerr; |
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
66 |
void *libzfs_sharehdl; /* libshare handle */ |
5951
c597da46efd6
6558321 zfs_share_nfs() fails the second time through
dougm
parents:
5367
diff
changeset
|
67 |
uint_t libzfs_shareflags; |
2082 | 68 |
}; |
5951
c597da46efd6
6558321 zfs_share_nfs() fails the second time through
dougm
parents:
5367
diff
changeset
|
69 |
#define ZFSSHARE_MISS 0x01 /* Didn't find entry in cache */ |
2082 | 70 |
|
789 | 71 |
struct zfs_handle { |
2082 | 72 |
libzfs_handle_t *zfs_hdl; |
6865 | 73 |
zpool_handle_t *zpool_hdl; |
789 | 74 |
char zfs_name[ZFS_MAXNAMELEN]; |
2885 | 75 |
zfs_type_t zfs_type; /* type including snapshot */ |
76 |
zfs_type_t zfs_head_type; /* type excluding snapshot */ |
|
789 | 77 |
dmu_objset_stats_t zfs_dmustats; |
1356
e021b5e4aa0e
6377671 zfs mount -a shouldn't bother checking snapshots
eschrock
parents:
1294
diff
changeset
|
78 |
nvlist_t *zfs_props; |
2676 | 79 |
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
|
80 |
boolean_t zfs_mntcheck; |
789 | 81 |
char *zfs_mntopts; |
82 |
}; |
|
83 |
||
2676 | 84 |
/* |
85 |
* This is different from checking zfs_type, because it will also catch |
|
86 |
* snapshots of volumes. |
|
87 |
*/ |
|
2885 | 88 |
#define ZFS_IS_VOLUME(zhp) ((zhp)->zfs_head_type == ZFS_TYPE_VOLUME) |
2676 | 89 |
|
789 | 90 |
struct zpool_handle { |
2082 | 91 |
libzfs_handle_t *zpool_hdl; |
6865 | 92 |
zpool_handle_t *zpool_next; |
789 | 93 |
char zpool_name[ZPOOL_MAXNAMELEN]; |
94 |
int zpool_state; |
|
95 |
size_t zpool_config_size; |
|
96 |
nvlist_t *zpool_config; |
|
952
12ec54aa046e
6344502 placeholder bug for the remaining Makefile cleanup work for ZFS
eschrock
parents:
789
diff
changeset
|
97 |
nvlist_t *zpool_old_config; |
3912 | 98 |
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
|
99 |
diskaddr_t zpool_start_block; |
789 | 100 |
}; |
101 |
||
5331 | 102 |
typedef enum { |
103 |
PROTO_NFS = 0, |
|
104 |
PROTO_SMB = 1, |
|
105 |
PROTO_END = 2 |
|
106 |
} zfs_share_proto_t; |
|
107 |
||
108 |
/* |
|
109 |
* The following can be used as a bitmask and any new values |
|
110 |
* added must preserve that capability. |
|
111 |
*/ |
|
112 |
typedef enum { |
|
113 |
SHARED_NOT_SHARED = 0x0, |
|
114 |
SHARED_ISCSI = 0x1, |
|
115 |
SHARED_NFS = 0x2, |
|
116 |
SHARED_SMB = 0x4 |
|
117 |
} zfs_share_type_t; |
|
118 |
||
3237
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
119 |
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
|
120 |
int zfs_error_fmt(libzfs_handle_t *, int, const char *, ...); |
2082 | 121 |
void zfs_error_aux(libzfs_handle_t *, const char *, ...); |
122 |
void *zfs_alloc(libzfs_handle_t *, size_t); |
|
2676 | 123 |
void *zfs_realloc(libzfs_handle_t *, void *, size_t, size_t); |
2082 | 124 |
char *zfs_strdup(libzfs_handle_t *, const char *); |
125 |
int no_memory(libzfs_handle_t *); |
|
789 | 126 |
|
3237
98d0c28f2f5e
6480245 renaming a dataset to something with '%s' will cause segfault
lling
parents:
3126
diff
changeset
|
127 |
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
|
128 |
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
|
129 |
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
|
130 |
int zpool_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); |
789 | 131 |
|
2474
c001ad7e0c25
6368751 libzfs interface for mount/umounting all the file systems for a given pool
eschrock
parents:
2142
diff
changeset
|
132 |
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
|
133 |
size_t *); |
789 | 134 |
|
3912 | 135 |
|
5094 | 136 |
int zprop_parse_value(libzfs_handle_t *, nvpair_t *, int, zfs_type_t, |
137 |
nvlist_t *, char **, uint64_t *, const char *); |
|
138 |
int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, |
|
139 |
zfs_type_t type); |
|
3912 | 140 |
|
789 | 141 |
typedef struct prop_changelist prop_changelist_t; |
142 |
||
2676 | 143 |
int zcmd_alloc_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, size_t); |
5094 | 144 |
int zcmd_write_src_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); |
145 |
int zcmd_write_conf_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); |
|
2676 | 146 |
int zcmd_expand_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *); |
147 |
int zcmd_read_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t **); |
|
148 |
void zcmd_free_nvlists(zfs_cmd_t *); |
|
149 |
||
789 | 150 |
int changelist_prefix(prop_changelist_t *); |
151 |
int changelist_postfix(prop_changelist_t *); |
|
152 |
void changelist_rename(prop_changelist_t *, const char *, const char *); |
|
5367 | 153 |
void changelist_remove(prop_changelist_t *, const char *); |
789 | 154 |
void changelist_free(prop_changelist_t *); |
155 |
prop_changelist_t *changelist_gather(zfs_handle_t *, zfs_prop_t, int); |
|
5331 | 156 |
int changelist_unshare(prop_changelist_t *, zfs_share_proto_t *); |
789 | 157 |
int changelist_haszonedchild(prop_changelist_t *); |
158 |
||
159 |
void remove_mountpoint(zfs_handle_t *); |
|
5367 | 160 |
int create_parents(libzfs_handle_t *, char *, int); |
6027
68b03551f113
6609196 'zfs destroy -r' can needlessly iterate over all filesystems in pool
rm160521
parents:
5951
diff
changeset
|
161 |
boolean_t isa_child_of(const char *dataset, const char *parent); |
789 | 162 |
|
2082 | 163 |
zfs_handle_t *make_dataset_handle(libzfs_handle_t *, const char *); |
1544 | 164 |
|
2142
f6e0487aa9a3
6433264 crash when adding spare: nvlist_lookup_string(cnv, "path", &path) == 0
eschrock
parents:
2082
diff
changeset
|
165 |
int zpool_open_silent(libzfs_handle_t *, const char *, zpool_handle_t **); |
789 | 166 |
|
2082 | 167 |
int zvol_create_link(libzfs_handle_t *, const char *); |
168 |
int zvol_remove_link(libzfs_handle_t *, const char *); |
|
3126 | 169 |
int zpool_iter_zvol(zpool_handle_t *, int (*)(const char *, void *), void *); |
6423 | 170 |
boolean_t zpool_name_valid(libzfs_handle_t *, boolean_t, const char *); |
789 | 171 |
|
2082 | 172 |
void namespace_clear(libzfs_handle_t *); |
789 | 173 |
|
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
174 |
/* |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
175 |
* libshare (sharemgr) interfaces used internally. |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
176 |
*/ |
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
177 |
|
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
178 |
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
|
179 |
extern void zfs_uninit_libshare(libzfs_handle_t *); |
5331 | 180 |
extern int zfs_parse_options(char *, zfs_share_proto_t); |
4180
30b15f0bd3c9
6491973 sharemgr: zfs set sharenfs=on is slow with lots of zfs filesystems
dougm
parents:
3912
diff
changeset
|
181 |
|
5331 | 182 |
extern int zfs_unshare_proto(zfs_handle_t *zhp, |
183 |
const char *, zfs_share_proto_t *); |
|
789 | 184 |
#ifdef __cplusplus |
185 |
} |
|
186 |
#endif |
|
187 |
||
188 |
#endif /* _LIBFS_IMPL_H */ |