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,
73 DAOS_PROP_PO_EC_CELL_SZ,
81 DAOS_PROP_PO_REDUN_FAC,
96 DAOS_PROP_PO_GLOBAL_VERSION,
100 DAOS_PROP_PO_UPGRADE_STATUS,
107 DAOS_PROP_PO_SCRUB_MODE,
113 DAOS_PROP_PO_SCRUB_FREQ,
119 DAOS_PROP_PO_SCRUB_THRESH,
123 DAOS_PROP_PO_SVC_REDUN_FAC,
125 DAOS_PROP_PO_OBJ_VERSION,
129 DAOS_PROP_PO_PERF_DOMAIN,
131 DAOS_PROP_PO_CHECKPOINT_MODE,
133 DAOS_PROP_PO_CHECKPOINT_FREQ,
135 DAOS_PROP_PO_CHECKPOINT_THRESH,
137 DAOS_PROP_PO_REINT_MODE,
141#define DAOS_PROP_PO_EC_CELL_SZ_MIN (1UL << 10)
142#define DAOS_PROP_PO_EC_CELL_SZ_MAX (1UL << 30)
144#define DAOS_PROP_PO_REDUN_FAC_MAX 4
145#define DAOS_PROP_PO_REDUN_FAC_DEFAULT 0
148daos_rf_is_valid(
unsigned long long rf)
150 return rf <= DAOS_PROP_PO_REDUN_FAC_MAX;
159#define DAOS_PROP_PO_RP_PDA_DEFAULT 3
164#define DAOS_PROP_PO_EC_PDA_DEFAULT 1
168 DAOS_UPGRADE_STATUS_NOT_STARTED = 0,
169 DAOS_UPGRADE_STATUS_IN_PROGRESS = 1,
170 DAOS_UPGRADE_STATUS_COMPLETED = 2,
171 DAOS_UPGRADE_STATUS_FAILED = 3,
174#define DAOS_PROP_PO_SVC_REDUN_FAC_MAX 4
175#define DAOS_PROP_PO_SVC_REDUN_FAC_DEFAULT 2
178daos_svc_rf_is_valid(uint64_t svc_rf)
180 return svc_rf <= DAOS_PROP_PO_SVC_REDUN_FAC_MAX;
186#define DAOS_PROP_PO_PERF_DOMAIN_DEFAULT PO_COMP_TP_ROOT
191#define DAOS_PROP_PO_NUM (DAOS_PROP_PO_MAX - DAOS_PROP_PO_MIN - 1)
195 DAOS_RECLAIM_DISABLED = 0,
197 DAOS_RECLAIM_SNAPSHOT,
203 DAOS_REINT_MODE_DATA_SYNC = 0,
204 DAOS_REINT_MODE_NO_DATA_SYNC = 1,
210#define DAOS_PROP_PO_REINT_MODE_DEFAULT DAOS_REINT_MODE_DATA_SYNC
217 DAOS_SCRUB_MODE_OFF = 0,
218 DAOS_SCRUB_MODE_LAZY = 1,
219 DAOS_SCRUB_MODE_TIMED = 2,
220 DAOS_SCRUB_MODE_INVALID = 3,
224#define DAOS_PROP_PO_SCRUB_MODE_DEFAULT DAOS_SCRUB_MODE_OFF
226#define DAOS_PROP_PO_SCRUB_FREQ_DEFAULT 604800
227#define DAOS_PROP_PO_SCRUB_THRESH_DEFAULT 0
231 DAOS_CHECKPOINT_DISABLED = 0,
232 DAOS_CHECKPOINT_TIMED,
233 DAOS_CHECKPOINT_LAZY,
236#define DAOS_PROP_PO_CHECKPOINT_MODE_DEFAULT DAOS_CHECKPOINT_TIMED
237#define DAOS_PROP_PO_CHECKPOINT_FREQ_DEFAULT 5
238#define DAOS_PROP_PO_CHECKPOINT_FREQ_MIN 1
239#define DAOS_PROP_PO_CHECKPOINT_FREQ_MAX (1 << 20)
240#define DAOS_PROP_PO_CHECKPOINT_THRESH_DEFAULT 50
241#define DAOS_PROP_PO_CHECKPOINT_THRESH_MAX 75
242#define DAOS_PROP_PO_CHECKPOINT_THRESH_MIN 10
245#define DAOS_SELF_HEAL_AUTO_EXCLUDE (1U << 0)
246#define DAOS_SELF_HEAL_AUTO_REBUILD (1U << 1)
252enum daos_cont_props {
253 DAOS_PROP_CO_MIN = 0x1000,
263 DAOS_PROP_CO_LAYOUT_TYPE,
268 DAOS_PROP_CO_LAYOUT_VER,
278 DAOS_PROP_CO_CSUM_CHUNK_SIZE,
283 DAOS_PROP_CO_CSUM_SERVER_VERIFY,
289 DAOS_PROP_CO_REDUN_FAC,
294 DAOS_PROP_CO_REDUN_LVL,
298 DAOS_PROP_CO_SNAPSHOT_MAX,
311 DAOS_PROP_CO_COMPRESS,
321 DAOS_PROP_CO_ENCRYPT,
331 DAOS_PROP_CO_OWNER_GROUP,
343 DAOS_PROP_CO_DEDUP_THRESHOLD,
352 DAOS_PROP_CO_ALLOCED_OID,
354 DAOS_PROP_CO_EC_CELL_SZ,
360 DAOS_PROP_CO_GLOBAL_VERSION,
362 DAOS_PROP_CO_SCRUBBER_DISABLED,
364 DAOS_PROP_CO_OBJ_VERSION,
377#define DAOS_PROP_CO_NUM (DAOS_PROP_CO_MAX - DAOS_PROP_CO_MIN - 1)
379typedef uint16_t daos_cont_layout_t;
383 DAOS_PROP_CO_LAYOUT_UNKNOWN,
384 DAOS_PROP_CO_LAYOUT_UNKOWN = DAOS_PROP_CO_LAYOUT_UNKNOWN,
385 DAOS_PROP_CO_LAYOUT_POSIX,
386 DAOS_PROP_CO_LAYOUT_HDF5,
387 DAOS_PROP_CO_LAYOUT_PYTHON,
388 DAOS_PROP_CO_LAYOUT_SPARK,
389 DAOS_PROP_CO_LAYOUT_DATABASE,
390 DAOS_PROP_CO_LAYOUT_ROOT,
391 DAOS_PROP_CO_LAYOUT_SEISMIC,
392 DAOS_PROP_CO_LAYOUT_METEO,
393 DAOS_PROP_CO_LAYOUT_MAX
398 DAOS_PROP_CO_CSUM_OFF,
399 DAOS_PROP_CO_CSUM_CRC16,
400 DAOS_PROP_CO_CSUM_CRC32,
401 DAOS_PROP_CO_CSUM_CRC64,
402 DAOS_PROP_CO_CSUM_SHA1,
403 DAOS_PROP_CO_CSUM_SHA256,
404 DAOS_PROP_CO_CSUM_SHA512,
405 DAOS_PROP_CO_CSUM_ADLER32
410 DAOS_PROP_CO_CSUM_SV_OFF,
411 DAOS_PROP_CO_CSUM_SV_ON
416 DAOS_PROP_CO_DEDUP_OFF,
417 DAOS_PROP_CO_DEDUP_MEMCMP,
418 DAOS_PROP_CO_DEDUP_HASH
423 DAOS_PROP_CO_COMPRESS_OFF,
424 DAOS_PROP_CO_COMPRESS_LZ4,
425 DAOS_PROP_CO_COMPRESS_DEFLATE,
426 DAOS_PROP_CO_COMPRESS_DEFLATE1,
427 DAOS_PROP_CO_COMPRESS_DEFLATE2,
428 DAOS_PROP_CO_COMPRESS_DEFLATE3,
429 DAOS_PROP_CO_COMPRESS_DEFLATE4,
434 DAOS_PROP_CO_ENCRYPT_OFF,
435 DAOS_PROP_CO_ENCRYPT_AES_XTS128,
436 DAOS_PROP_CO_ENCRYPT_AES_XTS256,
437 DAOS_PROP_CO_ENCRYPT_AES_CBC128,
438 DAOS_PROP_CO_ENCRYPT_AES_CBC192,
439 DAOS_PROP_CO_ENCRYPT_AES_CBC256,
440 DAOS_PROP_CO_ENCRYPT_AES_GCM128,
441 DAOS_PROP_CO_ENCRYPT_AES_GCM256
446 DAOS_PROP_CO_REDUN_RF0,
447 DAOS_PROP_CO_REDUN_RF1,
448 DAOS_PROP_CO_REDUN_RF2,
449 DAOS_PROP_CO_REDUN_RF3,
450 DAOS_PROP_CO_REDUN_RF4,
458 DAOS_PROP_CO_REDUN_MIN = 1,
460 DAOS_PROP_CO_REDUN_RANK = 1,
462 DAOS_PROP_CO_REDUN_NODE = 2,
463 DAOS_PROP_CO_REDUN_MAX = 254,
467#define DAOS_PROP_CO_REDUN_DEFAULT DAOS_PROP_CO_REDUN_NODE
472 DAOS_PROP_CO_HEALTHY,
478 DAOS_PROP_CO_UNCLEAN,
482#define DAOS_PROP_CO_CLEAR (0x1)
494#define DAOS_PROP_CO_STATUS_VAL(status, flag, pm_ver) \
495 ((((uint64_t)(flag)) << 48) | \
496 (((uint64_t)(status) & 0xFFFF) << 32) | \
497 ((uint64_t)(pm_ver)))
499static inline uint64_t
502 return DAOS_PROP_CO_STATUS_VAL(co_status->
dcs_status,
508daos_prop_val_2_co_status(uint64_t val,
struct daos_co_status *co_status)
510 co_status->
dcs_flags = (uint16_t)(val >> 48);
511 co_status->
dcs_status = (uint16_t)((val >> 32) & 0xFFFF);
512 co_status->
dcs_pm_ver = (uint32_t)(val & 0xFFFFFFFF);
516 DAOS_PROP_ENTRY_NOT_SET = (1 << 0),
539#define DAOS_PROP_ENTRIES_MAX_NR (128)
542#define DAOS_PROP_LABEL_MAX_LEN (127)
544#define DAOS_PROP_MAX_LABEL_BUF_LEN (DAOS_PROP_LABEL_MAX_LEN + 1)
547#define DAOS_PROP_CO_LABEL_DEFAULT "container_label_not_set"
548#define DAOS_PROP_PO_LABEL_DEFAULT "pool_label_not_set"
562daos_label_is_valid(
const char *label)
566 bool maybe_uuid =
false;
573 len = strnlen(label, DAOS_PROP_LABEL_MAX_LEN + 1);
574 if (len == 0 || len > DAOS_PROP_LABEL_MAX_LEN)
578 for (i = 0; i < len; i++) {
581 if (isalnum(c) || c ==
'.' || c ==
'_' || c ==
':')
592 if (maybe_uuid && strnlen(label, 36) == 36) {
597 for (i = 0, p = label; i < 36; i++, p++) {
598 if (i == 8 || i == 13 || i == 18 || i == 23) {
619#define DAOS_PROP_POLICYSTR_MAX_LEN (127)
622#define DAOS_PROP_POLICYSTR_DEFAULT "type=io_size"
629daos_perf_domain_is_valid(
const char *perf_domain)
631 return daos_label_is_valid(perf_domain);
652daos_prop_alloc(uint32_t entries_nr);
684daos_prop_from_str(
const char *str, daos_size_t len,
daos_prop_t **prop);
719daos_prop_entry_get(
daos_prop_t *prop, uint32_t type);
734daos_prop_set_str(
daos_prop_t *prop, uint32_t type,
const char *str, daos_size_t len);
745daos_prop_entry_set_str(
struct daos_prop_entry *entry,
const char *str, daos_size_t len);
760daos_prop_set_ptr(
daos_prop_t *prop, uint32_t type,
const void *ptr, daos_size_t size);
771daos_prop_entry_set_ptr(
struct daos_prop_entry *entry,
const void *ptr, daos_size_t size);
848 if (entry->
dpe_flags & DAOS_PROP_ENTRY_NOT_SET)
854#if defined(__cplusplus)
struct daos_prop_entry * dpp_entries