10#ifndef __DAOS_PROP_H__
11#define __DAOS_PROP_H__
13#if defined(__cplusplus)
18#include <daos_types.h>
42 DAOS_PROP_PO_SPACE_RB,
48 DAOS_PROP_PO_SELF_HEAL,
65 DAOS_PROP_PO_OWNER_GROUP,
69 DAOS_PROP_PO_SVC_LIST,
70 DAOS_PROP_PO_EC_CELL_SZ,
74#define DAOS_PROP_PO_EC_CELL_SZ_MIN (1UL << 10)
75#define DAOS_PROP_PO_EC_CELL_SZ_MAX (1UL << 30)
80#define DAOS_PROP_PO_NUM (DAOS_PROP_PO_MAX - DAOS_PROP_PO_MIN - 1)
84 DAOS_RECLAIM_DISABLED = 0,
86 DAOS_RECLAIM_SNAPSHOT,
92#define DAOS_SELF_HEAL_AUTO_EXCLUDE (1U << 0)
93#define DAOS_SELF_HEAL_AUTO_REBUILD (1U << 1)
100 DAOS_PROP_CO_MIN = 0x1000,
110 DAOS_PROP_CO_LAYOUT_TYPE,
115 DAOS_PROP_CO_LAYOUT_VER,
125 DAOS_PROP_CO_CSUM_CHUNK_SIZE,
130 DAOS_PROP_CO_CSUM_SERVER_VERIFY,
136 DAOS_PROP_CO_REDUN_FAC,
141 DAOS_PROP_CO_REDUN_LVL,
145 DAOS_PROP_CO_SNAPSHOT_MAX,
158 DAOS_PROP_CO_COMPRESS,
168 DAOS_PROP_CO_ENCRYPT,
178 DAOS_PROP_CO_OWNER_GROUP,
190 DAOS_PROP_CO_DEDUP_THRESHOLD,
199 DAOS_PROP_CO_ALLOCED_OID,
201 DAOS_PROP_CO_EC_CELL_SZ,
213#define DAOS_PROP_CO_NUM (DAOS_PROP_CO_MAX - DAOS_PROP_CO_MIN - 1)
215typedef uint16_t daos_cont_layout_t;
219 DAOS_PROP_CO_LAYOUT_UNKNOWN,
220 DAOS_PROP_CO_LAYOUT_UNKOWN = DAOS_PROP_CO_LAYOUT_UNKNOWN,
221 DAOS_PROP_CO_LAYOUT_POSIX,
222 DAOS_PROP_CO_LAYOUT_HDF5,
223 DAOS_PROP_CO_LAYOUT_PYTHON,
224 DAOS_PROP_CO_LAYOUT_SPARK,
225 DAOS_PROP_CO_LAYOUT_DATABASE,
226 DAOS_PROP_CO_LAYOUT_ROOT,
227 DAOS_PROP_CO_LAYOUT_SEISMIC,
228 DAOS_PROP_CO_LAYOUT_METEO,
229 DAOS_PROP_CO_LAYOUT_MAX
234 DAOS_PROP_CO_CSUM_OFF,
235 DAOS_PROP_CO_CSUM_CRC16,
236 DAOS_PROP_CO_CSUM_CRC32,
237 DAOS_PROP_CO_CSUM_CRC64,
238 DAOS_PROP_CO_CSUM_SHA1,
239 DAOS_PROP_CO_CSUM_SHA256,
240 DAOS_PROP_CO_CSUM_SHA512,
241 DAOS_PROP_CO_CSUM_ADLER32
246 DAOS_PROP_CO_CSUM_SV_OFF,
247 DAOS_PROP_CO_CSUM_SV_ON
252 DAOS_PROP_CO_DEDUP_OFF,
253 DAOS_PROP_CO_DEDUP_MEMCMP,
254 DAOS_PROP_CO_DEDUP_HASH
259 DAOS_PROP_CO_COMPRESS_OFF,
260 DAOS_PROP_CO_COMPRESS_LZ4,
261 DAOS_PROP_CO_COMPRESS_DEFLATE,
262 DAOS_PROP_CO_COMPRESS_DEFLATE1,
263 DAOS_PROP_CO_COMPRESS_DEFLATE2,
264 DAOS_PROP_CO_COMPRESS_DEFLATE3,
265 DAOS_PROP_CO_COMPRESS_DEFLATE4,
270 DAOS_PROP_CO_ENCRYPT_OFF,
271 DAOS_PROP_CO_ENCRYPT_AES_XTS128,
272 DAOS_PROP_CO_ENCRYPT_AES_XTS256,
273 DAOS_PROP_CO_ENCRYPT_AES_CBC128,
274 DAOS_PROP_CO_ENCRYPT_AES_CBC192,
275 DAOS_PROP_CO_ENCRYPT_AES_CBC256,
276 DAOS_PROP_CO_ENCRYPT_AES_GCM128,
277 DAOS_PROP_CO_ENCRYPT_AES_GCM256
282 DAOS_PROP_CO_REDUN_RF0,
283 DAOS_PROP_CO_REDUN_RF1,
284 DAOS_PROP_CO_REDUN_RF2,
285 DAOS_PROP_CO_REDUN_RF3,
286 DAOS_PROP_CO_REDUN_RF4,
294 DAOS_PROP_CO_REDUN_MIN = 1,
295 DAOS_PROP_CO_REDUN_RANK = 1,
296 DAOS_PROP_CO_REDUN_MAX = 254,
302 DAOS_PROP_CO_HEALTHY,
308 DAOS_PROP_CO_UNCLEAN,
312#define DAOS_PROP_CO_CLEAR (0x1)
322#define DAOS_PROP_CO_STATUS_VAL(status, flag, pm_ver) \
323 ((((uint64_t)(flag)) << 48) | \
324 (((uint64_t)(status) & 0xFFFF) << 32) | \
325 ((uint64_t)(pm_ver)))
327static inline uint64_t
330 return DAOS_PROP_CO_STATUS_VAL(co_status->
dcs_status,
336daos_prop_val_2_co_status(uint64_t val,
struct daos_co_status *co_status)
338 co_status->
dcs_flags = (uint16_t)(val >> 48);
339 co_status->
dcs_status = (uint16_t)((val >> 32) & 0xFFFF);
340 co_status->
dcs_pm_ver = (uint32_t)(val & 0xFFFFFFFF);
360#define DAOS_PROP_ENTRIES_MAX_NR (128)
363#define DAOS_PROP_LABEL_MAX_LEN (127)
365#define DAOS_PROP_MAX_LABEL_BUF_LEN (DAOS_PROP_LABEL_MAX_LEN + 1)
379daos_label_is_valid(
const char *label)
383 bool maybe_uuid =
false;
390 len = strnlen(label, DAOS_PROP_LABEL_MAX_LEN + 1);
391 if (len == 0 || len > DAOS_PROP_LABEL_MAX_LEN)
395 for (i = 0; i < len; i++) {
398 if (isalnum(c) || c ==
'.' || c ==
'_' || c ==
':')
409 if (maybe_uuid && strnlen(label, 36) == 36) {
414 for (i = 0, p = label; i < 36; i++, p++) {
415 if (i == 8 || i == 13 || i == 18 || i == 23) {
453daos_prop_alloc(uint32_t entries_nr);
484daos_prop_from_str(
const char *str, daos_size_t len,
daos_prop_t **prop);
506daos_prop_entry_get(
daos_prop_t *prop, uint32_t type);
521daos_prop_set_str(
daos_prop_t *prop, uint32_t type,
const char *str, daos_size_t len);
532daos_prop_entry_set_str(
struct daos_prop_entry *entry,
const char *str, daos_size_t len);
547daos_prop_set_ptr(
daos_prop_t *prop, uint32_t type,
const void *ptr, daos_size_t size);
558daos_prop_entry_set_ptr(
struct daos_prop_entry *entry,
const void *ptr, daos_size_t size);
624#if defined(__cplusplus)
struct daos_prop_entry * dpp_entries