]>
Commit | Line | Data |
---|---|---|
70e083d2 TG |
1 | /* |
2 | * CDDL HEADER START | |
3 | * | |
4 | * The contents of this file are subject to the terms of the | |
5 | * Common Development and Distribution License (the "License"). | |
6 | * You may not use this file except in compliance with the License. | |
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 | */ | |
21 | ||
22 | /* | |
86e3c28a CIK |
23 | * Copyright (c) 2012, 2014 by Delphix. All rights reserved. |
24 | * Copyright (c) 2017 Datto Inc. | |
25 | * Copyright 2017 RackTop Systems. | |
70e083d2 TG |
26 | */ |
27 | ||
28 | #ifndef _LIBZFS_CORE_H | |
29 | #define _LIBZFS_CORE_H | |
30 | ||
31 | #include <libnvpair.h> | |
32 | #include <sys/param.h> | |
33 | #include <sys/types.h> | |
34 | #include <sys/fs/zfs.h> | |
35 | ||
36 | #ifdef __cplusplus | |
37 | extern "C" { | |
38 | #endif | |
39 | ||
40 | int libzfs_core_init(void); | |
41 | void libzfs_core_fini(void); | |
42 | ||
86e3c28a CIK |
43 | /* |
44 | * NB: this type should be kept binary compatible with dmu_objset_type_t. | |
45 | */ | |
46 | enum lzc_dataset_type { | |
47 | LZC_DATSET_TYPE_ZFS = 2, | |
48 | LZC_DATSET_TYPE_ZVOL | |
49 | }; | |
50 | ||
70e083d2 | 51 | int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **); |
86e3c28a | 52 | int lzc_create(const char *, enum lzc_dataset_type, nvlist_t *); |
70e083d2 | 53 | int lzc_clone(const char *, const char *, nvlist_t *); |
86e3c28a | 54 | int lzc_promote(const char *, char *, int); |
70e083d2 TG |
55 | int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **); |
56 | int lzc_bookmark(nvlist_t *, nvlist_t **); | |
57 | int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **); | |
58 | int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **); | |
59 | ||
60 | int lzc_snaprange_space(const char *, const char *, uint64_t *); | |
61 | ||
62 | int lzc_hold(nvlist_t *, int, nvlist_t **); | |
63 | int lzc_release(nvlist_t *, nvlist_t **); | |
64 | int lzc_get_holds(const char *, nvlist_t **); | |
65 | ||
66 | enum lzc_send_flags { | |
67 | LZC_SEND_FLAG_EMBED_DATA = 1 << 0, | |
86e3c28a CIK |
68 | LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1, |
69 | LZC_SEND_FLAG_COMPRESS = 1 << 2 | |
70e083d2 TG |
70 | }; |
71 | ||
72 | int lzc_send(const char *, const char *, int, enum lzc_send_flags); | |
86e3c28a CIK |
73 | int lzc_send_resume(const char *, const char *, int, |
74 | enum lzc_send_flags, uint64_t, uint64_t); | |
75 | int lzc_send_space(const char *, const char *, enum lzc_send_flags, uint64_t *); | |
76 | ||
77 | struct dmu_replay_record; | |
78 | ||
70e083d2 | 79 | int lzc_receive(const char *, nvlist_t *, const char *, boolean_t, int); |
86e3c28a CIK |
80 | int lzc_receive_resumable(const char *, nvlist_t *, const char *, |
81 | boolean_t, int); | |
82 | int lzc_receive_with_header(const char *, nvlist_t *, const char *, boolean_t, | |
83 | boolean_t, int, const struct dmu_replay_record *); | |
84 | int lzc_receive_one(const char *, nvlist_t *, const char *, boolean_t, | |
85 | boolean_t, int, const struct dmu_replay_record *, int, uint64_t *, | |
86 | uint64_t *, uint64_t *, nvlist_t **); | |
87 | int lzc_receive_with_cmdprops(const char *, nvlist_t *, nvlist_t *, | |
88 | const char *, boolean_t, boolean_t, int, const struct dmu_replay_record *, | |
89 | int, uint64_t *, uint64_t *, uint64_t *, nvlist_t **); | |
70e083d2 TG |
90 | |
91 | boolean_t lzc_exists(const char *); | |
92 | ||
93 | int lzc_rollback(const char *, char *, int); | |
86e3c28a CIK |
94 | int lzc_rollback_to(const char *, const char *); |
95 | ||
96 | int lzc_sync(const char *, nvlist_t *, nvlist_t **); | |
70e083d2 TG |
97 | |
98 | #ifdef __cplusplus | |
99 | } | |
100 | #endif | |
101 | ||
102 | #endif /* _LIBZFS_CORE_H */ |