| # |
| # Copyright 2015 ClusterHQ |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| """ |
| Python bindings for ``libzfs_core``. |
| """ |
| from __future__ import absolute_import, division, print_function |
| |
| CDEF = """ |
| |
| enum lzc_send_flags { |
| LZC_SEND_FLAG_EMBED_DATA = 1, |
| LZC_SEND_FLAG_LARGE_BLOCK = 2, |
| LZC_SEND_FLAG_COMPRESS = 4, |
| LZC_SEND_FLAG_RAW = 8 |
| }; |
| |
| typedef enum { |
| DMU_OST_NONE, |
| DMU_OST_META, |
| DMU_OST_ZFS, |
| DMU_OST_ZVOL, |
| DMU_OST_OTHER, |
| DMU_OST_ANY, |
| DMU_OST_NUMTYPES |
| } dmu_objset_type_t; |
| |
| #define MAXNAMELEN 256 |
| |
| struct drr_begin { |
| uint64_t drr_magic; |
| uint64_t drr_versioninfo; /* was drr_version */ |
| uint64_t drr_creation_time; |
| dmu_objset_type_t drr_type; |
| uint32_t drr_flags; |
| uint64_t drr_toguid; |
| uint64_t drr_fromguid; |
| char drr_toname[MAXNAMELEN]; |
| }; |
| |
| typedef struct zio_cksum { |
| uint64_t zc_word[4]; |
| } zio_cksum_t; |
| |
| typedef struct dmu_replay_record { |
| enum { |
| DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, |
| DRR_WRITE, DRR_FREE, DRR_END, DRR_WRITE_BYREF, |
| DRR_SPILL, DRR_WRITE_EMBEDDED, DRR_NUMTYPES |
| } drr_type; |
| uint32_t drr_payloadlen; |
| union { |
| struct drr_begin drr_begin; |
| /* ... */ |
| struct drr_checksum { |
| uint64_t drr_pad[34]; |
| zio_cksum_t drr_checksum; |
| } drr_checksum; |
| } drr_u; |
| } dmu_replay_record_t; |
| |
| typedef enum { |
| DCP_CMD_NONE, |
| DCP_CMD_RAW_RECV, |
| DCP_CMD_NEW_KEY, |
| DCP_CMD_INHERIT, |
| DCP_CMD_FORCE_NEW_KEY, |
| DCP_CMD_FORCE_INHERIT |
| } dcp_cmd_t; |
| |
| int libzfs_core_init(void); |
| void libzfs_core_fini(void); |
| |
| int lzc_bookmark(nvlist_t *, nvlist_t **); |
| int lzc_change_key(const char *, uint64_t, nvlist_t *, uint8_t *, uint_t); |
| int lzc_channel_program(const char *, const char *, uint64_t, uint64_t, |
| nvlist_t *, nvlist_t **); |
| int lzc_channel_program_nosync(const char *, const char *, uint64_t, |
| uint64_t, nvlist_t *, nvlist_t **); |
| int lzc_clone(const char *, const char *, nvlist_t *); |
| int lzc_create(const char *, dmu_objset_type_t, nvlist_t *, uint8_t *, |
| uint_t); |
| int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **); |
| int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **); |
| boolean_t lzc_exists(const char *); |
| int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **); |
| int lzc_get_holds(const char *, nvlist_t **); |
| int lzc_hold(nvlist_t *, int, nvlist_t **); |
| int lzc_load_key(const char *, boolean_t, uint8_t *, uint_t); |
| int lzc_promote(const char *, nvlist_t *, nvlist_t **); |
| int lzc_receive(const char *, nvlist_t *, const char *, boolean_t, |
| boolean_t, int); |
| int lzc_receive_one(const char *, nvlist_t *, const char *, boolean_t, |
| boolean_t, boolean_t, int, const dmu_replay_record_t *, int, |
| uint64_t *, uint64_t *, uint64_t *, nvlist_t **); |
| int lzc_receive_resumable(const char *, nvlist_t *, const char *, |
| boolean_t, boolean_t, int); |
| int lzc_receive_with_cmdprops(const char *, nvlist_t *, nvlist_t *, |
| uint8_t *, uint_t, const char *, boolean_t, boolean_t, |
| boolean_t, int, const dmu_replay_record_t *, int, uint64_t *, |
| uint64_t *, uint64_t *, nvlist_t **); |
| int lzc_receive_with_header(const char *, nvlist_t *, const char *, |
| boolean_t, boolean_t, boolean_t, int, const dmu_replay_record_t *); |
| int lzc_release(nvlist_t *, nvlist_t **); |
| int lzc_reopen(const char *, boolean_t); |
| int lzc_rollback(const char *, char *, int); |
| int lzc_rollback_to(const char *, const char *); |
| int lzc_send(const char *, const char *, int, enum lzc_send_flags); |
| int lzc_send_resume(const char *, const char *, int, enum lzc_send_flags, |
| uint64_t, uint64_t); |
| int lzc_send_space(const char *, const char *, enum lzc_send_flags, |
| uint64_t *); |
| int lzc_snaprange_space(const char *, const char *, uint64_t *); |
| int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **); |
| int lzc_sync(const char *, nvlist_t *, nvlist_t **); |
| int lzc_unload_key(const char *); |
| int lzc_remap(const char *); |
| int lzc_pool_checkpoint(const char *); |
| int lzc_pool_checkpoint_discard(const char *); |
| int lzc_rename(const char *, const char *); |
| int lzc_destroy(const char *fsname); |
| |
| int lzc_inherit(const char *fsname, const char *name, nvlist_t *); |
| int lzc_set_props(const char *, nvlist_t *, nvlist_t *, nvlist_t *); |
| int lzc_list (const char *, nvlist_t *); |
| """ |
| |
| SOURCE = """ |
| #include <libzfs/libzfs_core.h> |
| """ |
| |
| LIBRARY = "zfs_core" |
| |
| # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 |