1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright 2016-2020, Intel Corporation */
5 * libpmempool.h -- definitions of libpmempool entry points
7 * See libpmempool(7) for details.
11 #define LIBPMEMPOOL_H 1
18 #include <pmemcompat.h>
21 #define pmempool_check_status pmempool_check_statusW
22 #define pmempool_check_args pmempool_check_argsW
24 #define pmempool_check_init pmempool_check_initW
25 #define pmempool_check pmempool_checkW
26 #define pmempool_sync pmempool_syncW
27 #define pmempool_transform pmempool_transformW
28 #define pmempool_rm pmempool_rmW
29 #define pmempool_check_version pmempool_check_versionW
30 #define pmempool_errormsg pmempool_errormsgW
31 #define pmempool_feature_enable pmempool_feature_enableW
32 #define pmempool_feature_disable pmempool_feature_disableW
33 #define pmempool_feature_query pmempool_feature_queryW
35 #define pmempool_check_status pmempool_check_statusU
36 #define pmempool_check_args pmempool_check_argsU
38 #define pmempool_check_init pmempool_check_initU
39 #define pmempool_check pmempool_checkU
40 #define pmempool_sync pmempool_syncU
41 #define pmempool_transform pmempool_transformU
42 #define pmempool_rm pmempool_rmU
43 #define pmempool_check_version pmempool_check_versionU
44 #define pmempool_errormsg pmempool_errormsgU
45 #define pmempool_feature_enable pmempool_feature_enableU
46 #define pmempool_feature_disable pmempool_feature_disableU
47 #define pmempool_feature_query pmempool_feature_queryU
61 enum pmempool_pool_type
{
62 PMEMPOOL_POOL_TYPE_DETECT
,
63 PMEMPOOL_POOL_TYPE_LOG
,
64 PMEMPOOL_POOL_TYPE_BLK
,
65 PMEMPOOL_POOL_TYPE_OBJ
,
66 PMEMPOOL_POOL_TYPE_BTT
,
67 PMEMPOOL_POOL_TYPE_RESERVED1
, /* used to be cto */
73 #define PMEMPOOL_CHECK_REPAIR (1U << 0)
77 #define PMEMPOOL_CHECK_DRY_RUN (1U << 1)
79 * perform hazardous repairs
81 #define PMEMPOOL_CHECK_ADVANCED (1U << 2)
83 * do not ask before repairs
85 #define PMEMPOOL_CHECK_ALWAYS_YES (1U << 3)
87 * generate info statuses
89 #define PMEMPOOL_CHECK_VERBOSE (1U << 4)
91 * generate string format statuses
93 #define PMEMPOOL_CHECK_FORMAT_STR (1U << 5)
96 * types of check statuses
98 enum pmempool_check_msg_type
{
99 PMEMPOOL_CHECK_MSG_TYPE_INFO
,
100 PMEMPOOL_CHECK_MSG_TYPE_ERROR
,
101 PMEMPOOL_CHECK_MSG_TYPE_QUESTION
,
107 enum pmempool_check_result
{
108 PMEMPOOL_CHECK_RESULT_CONSISTENT
,
109 PMEMPOOL_CHECK_RESULT_NOT_CONSISTENT
,
110 PMEMPOOL_CHECK_RESULT_REPAIRED
,
111 PMEMPOOL_CHECK_RESULT_CANNOT_REPAIR
,
112 PMEMPOOL_CHECK_RESULT_ERROR
,
113 PMEMPOOL_CHECK_RESULT_SYNC_REQ
,
119 typedef struct pmempool_check_ctx PMEMpoolcheck
;
122 * finalize the check and get the result
124 enum pmempool_check_result
pmempool_check_end(PMEMpoolcheck
*ppc
);
128 #define PMEMPOOL_RM_FORCE (1U << 0) /* ignore any errors */
129 #define PMEMPOOL_RM_POOLSET_LOCAL (1U << 1) /* remove local poolsets */
130 #define PMEMPOOL_RM_POOLSET_REMOTE (1U << 2) /* remove remote poolsets */
137 * fix bad blocks - it requires creating or reading special recovery files
139 #define PMEMPOOL_SYNC_FIX_BAD_BLOCKS (1U << 0)
141 * do not apply changes, only check if operation is viable
143 #define PMEMPOOL_SYNC_DRY_RUN (1U << 1)
146 * LIBPMEMPOOL TRANSFORM
150 * do not apply changes, only check if operation is viable
152 #define PMEMPOOL_TRANSFORM_DRY_RUN (1U << 1)
155 * PMEMPOOL_MAJOR_VERSION and PMEMPOOL_MINOR_VERSION provide the current version
156 * of the libpmempool API as provided by this header file. Applications can
157 * verify that the version available at run-time is compatible with the version
158 * used at compile-time by passing these defines to pmempool_check_version().
160 #define PMEMPOOL_MAJOR_VERSION 1
161 #define PMEMPOOL_MINOR_VERSION 3
166 struct pmempool_check_statusU
{
167 enum pmempool_check_msg_type type
;
175 #define pmempool_check_status pmempool_check_statusU
177 struct pmempool_check_statusW
{
178 enum pmempool_check_msg_type type
;
181 const wchar_t *answer
;
187 * check context arguments
189 struct pmempool_check_argsU
{
191 const char *backup_path
;
192 enum pmempool_pool_type pool_type
;
197 #define pmempool_check_args pmempool_check_argsU
199 struct pmempool_check_argsW
{
201 const wchar_t *backup_path
;
202 enum pmempool_pool_type pool_type
;
208 * initialize a check context
212 pmempool_check_init(struct pmempool_check_args
*args
, size_t args_size
);
215 pmempool_check_initU(struct pmempool_check_argsU
*args
, size_t args_size
);
217 pmempool_check_initW(struct pmempool_check_argsW
*args
, size_t args_size
);
221 * start / resume the check
224 struct pmempool_check_status
*pmempool_check(PMEMpoolcheck
*ppc
);
226 struct pmempool_check_statusU
*pmempool_checkU(PMEMpoolcheck
*ppc
);
227 struct pmempool_check_statusW
*pmempool_checkW(PMEMpoolcheck
*ppc
);
231 * LIBPMEMPOOL SYNC & TRANSFORM
235 * Synchronize data between replicas within a poolset.
240 int pmempool_sync(const char *poolset_file
, unsigned flags
);
242 int pmempool_syncU(const char *poolset_file
, unsigned flags
);
243 int pmempool_syncW(const wchar_t *poolset_file
, unsigned flags
);
247 * Modify internal structure of a poolset.
252 int pmempool_transform(const char *poolset_file_src
,
253 const char *poolset_file_dst
, unsigned flags
);
255 int pmempool_transformU(const char *poolset_file_src
,
256 const char *poolset_file_dst
, unsigned flags
);
257 int pmempool_transformW(const wchar_t *poolset_file_src
,
258 const wchar_t *poolset_file_dst
, unsigned flags
);
261 /* PMEMPOOL feature enable, disable, query */
266 enum pmempool_feature
{
267 PMEMPOOL_FEAT_SINGLEHDR
,
268 PMEMPOOL_FEAT_CKSUM_2K
,
269 PMEMPOOL_FEAT_SHUTDOWN_STATE
,
270 PMEMPOOL_FEAT_CHECK_BAD_BLOCKS
,
273 /* PMEMPOOL FEATURE ENABLE */
275 int pmempool_feature_enable(const char *path
, enum pmempool_feature feature
,
278 int pmempool_feature_enableU(const char *path
, enum pmempool_feature feature
,
280 int pmempool_feature_enableW(const wchar_t *path
,
281 enum pmempool_feature feature
, unsigned flags
);
284 /* PMEMPOOL FEATURE DISABLE */
286 int pmempool_feature_disable(const char *path
, enum pmempool_feature feature
,
289 int pmempool_feature_disableU(const char *path
, enum pmempool_feature feature
,
291 int pmempool_feature_disableW(const wchar_t *path
,
292 enum pmempool_feature feature
, unsigned flags
);
295 /* PMEMPOOL FEATURE QUERY */
297 int pmempool_feature_query(const char *path
, enum pmempool_feature feature
,
300 int pmempool_feature_queryU(const char *path
, enum pmempool_feature feature
,
302 int pmempool_feature_queryW(const wchar_t *path
,
303 enum pmempool_feature feature
, unsigned flags
);
308 int pmempool_rm(const char *path
, unsigned flags
);
310 int pmempool_rmU(const char *path
, unsigned flags
);
311 int pmempool_rmW(const wchar_t *path
, unsigned flags
);
315 const char *pmempool_check_version(unsigned major_required
,
316 unsigned minor_required
);
318 const char *pmempool_check_versionU(unsigned major_required
,
319 unsigned minor_required
);
320 const wchar_t *pmempool_check_versionW(unsigned major_required
,
321 unsigned minor_required
);
325 const char *pmempool_errormsg(void);
327 const char *pmempool_errormsgU(void);
328 const wchar_t *pmempool_errormsgW(void);
334 #endif /* libpmempool.h */