11#ifndef __DAOS_PROP_H__
12#define __DAOS_PROP_H__
14#if defined(__cplusplus)
19#include <daos_types.h>
43 DAOS_PROP_PO_SPACE_RB,
49 DAOS_PROP_PO_SELF_HEAL,
66 DAOS_PROP_PO_OWNER_GROUP,
70 DAOS_PROP_PO_SVC_LIST,
74 DAOS_PROP_PO_EC_CELL_SZ,
78 DAOS_PROP_PO_DATA_THRESH,
82 DAOS_PROP_PO_REDUN_FAC,
97 DAOS_PROP_PO_GLOBAL_VERSION,
101 DAOS_PROP_PO_UPGRADE_STATUS,
108 DAOS_PROP_PO_SCRUB_MODE,
114 DAOS_PROP_PO_SCRUB_FREQ,
120 DAOS_PROP_PO_SCRUB_THRESH,
124 DAOS_PROP_PO_SVC_REDUN_FAC,
126 DAOS_PROP_PO_OBJ_VERSION,
130 DAOS_PROP_PO_PERF_DOMAIN,
132 DAOS_PROP_PO_CHECKPOINT_MODE,
134 DAOS_PROP_PO_CHECKPOINT_FREQ,
136 DAOS_PROP_PO_CHECKPOINT_THRESH,
138 DAOS_PROP_PO_REINT_MODE,
140 DAOS_PROP_PO_SVC_OPS_ENABLED,
142 DAOS_PROP_PO_SVC_OPS_ENTRY_AGE,
146#define DAOS_PROP_PO_NUM (DAOS_PROP_PO_MAX - DAOS_PROP_PO_MIN - 1)
148#define DAOS_PROP_PO_EC_CELL_SZ_MIN (1UL << 10)
149#define DAOS_PROP_PO_EC_CELL_SZ_MAX (1UL << 30)
151#define DAOS_PROP_PO_REDUN_FAC_MAX 4
152#define DAOS_PROP_PO_REDUN_FAC_DEFAULT 3
155daos_rf_is_valid(
unsigned long long rf)
157 return rf <= DAOS_PROP_PO_REDUN_FAC_MAX;
160#define DAOS_PROP_PDA_MAX ((uint32_t)-1)
167#define DAOS_PROP_PO_RP_PDA_DEFAULT DAOS_PROP_PDA_MAX
172#define DAOS_PROP_PO_EC_PDA_DEFAULT ((uint32_t)1)
176 DAOS_UPGRADE_STATUS_NOT_STARTED = 0,
177 DAOS_UPGRADE_STATUS_IN_PROGRESS = 1,
178 DAOS_UPGRADE_STATUS_COMPLETED = 2,
179 DAOS_UPGRADE_STATUS_FAILED = 3,
182#define DAOS_PROP_PO_SVC_REDUN_FAC_MAX 4
183#define DAOS_PROP_PO_SVC_REDUN_FAC_DEFAULT 2
186daos_svc_rf_is_valid(uint64_t svc_rf)
188 return svc_rf <= DAOS_PROP_PO_SVC_REDUN_FAC_MAX;
195 DAOS_PROP_PERF_DOMAIN_ROOT = 255,
196 DAOS_PROP_PERF_DOMAIN_GROUP = 200,
202#define DAOS_PROP_PO_PERF_DOMAIN_DEFAULT DAOS_PROP_PERF_DOMAIN_ROOT
203#define DAOS_PROP_CO_PERF_DOMAIN_DEFAULT DAOS_PROP_PERF_DOMAIN_ROOT
208#define DAOS_PROP_PO_NUM (DAOS_PROP_PO_MAX - DAOS_PROP_PO_MIN - 1)
212 DAOS_RECLAIM_DISABLED = 0,
214 DAOS_RECLAIM_SNAPSHOT,
220 DAOS_REINT_MODE_DATA_SYNC = 0,
221 DAOS_REINT_MODE_NO_DATA_SYNC = 1,
222 DAOS_REINT_MODE_INCREMENTAL = 2,
228#define DAOS_PROP_PO_REINT_MODE_DEFAULT DAOS_REINT_MODE_DATA_SYNC
235 DAOS_SCRUB_MODE_OFF = 0,
236 DAOS_SCRUB_MODE_LAZY = 1,
237 DAOS_SCRUB_MODE_TIMED = 2,
238 DAOS_SCRUB_MODE_INVALID = 3,
242#define DAOS_PROP_PO_SCRUB_MODE_DEFAULT DAOS_SCRUB_MODE_OFF
244#define DAOS_PROP_PO_SCRUB_FREQ_DEFAULT 604800
245#define DAOS_PROP_PO_SCRUB_THRESH_DEFAULT 0
249 DAOS_CHECKPOINT_DISABLED = 0,
250 DAOS_CHECKPOINT_TIMED,
251 DAOS_CHECKPOINT_LAZY,
254#define DAOS_PROP_PO_CHECKPOINT_MODE_DEFAULT DAOS_CHECKPOINT_TIMED
255#define DAOS_PROP_PO_CHECKPOINT_FREQ_DEFAULT 5
256#define DAOS_PROP_PO_CHECKPOINT_FREQ_MIN 1
257#define DAOS_PROP_PO_CHECKPOINT_FREQ_MAX (1 << 20)
258#define DAOS_PROP_PO_CHECKPOINT_THRESH_DEFAULT 50
259#define DAOS_PROP_PO_CHECKPOINT_THRESH_MAX 75
260#define DAOS_PROP_PO_CHECKPOINT_THRESH_MIN 10
261#define DAOS_PROP_PO_SVC_OPS_ENABLED_DEFAULT 1
262#define DAOS_PROP_PO_SVC_OPS_ENTRY_AGE_DEFAULT 300
263#define DAOS_PROP_PO_SVC_OPS_ENTRY_AGE_MIN 60
264#define DAOS_PROP_PO_SVC_OPS_ENTRY_AGE_MAX 600
267#define DAOS_SELF_HEAL_AUTO_EXCLUDE (1U << 0)
268#define DAOS_SELF_HEAL_AUTO_REBUILD (1U << 1)
269#define DAOS_SELF_HEAL_DELAY_REBUILD (1U << 2)
275enum daos_cont_props {
276 DAOS_PROP_CO_MIN = 0x1000,
286 DAOS_PROP_CO_LAYOUT_TYPE,
291 DAOS_PROP_CO_LAYOUT_VER,
301 DAOS_PROP_CO_CSUM_CHUNK_SIZE,
306 DAOS_PROP_CO_CSUM_SERVER_VERIFY,
312 DAOS_PROP_CO_REDUN_FAC,
317 DAOS_PROP_CO_REDUN_LVL,
321 DAOS_PROP_CO_SNAPSHOT_MAX,
334 DAOS_PROP_CO_COMPRESS,
344 DAOS_PROP_CO_ENCRYPT,
354 DAOS_PROP_CO_OWNER_GROUP,
366 DAOS_PROP_CO_DEDUP_THRESHOLD,
375 DAOS_PROP_CO_ALLOCED_OID,
377 DAOS_PROP_CO_EC_CELL_SZ,
383 DAOS_PROP_CO_GLOBAL_VERSION,
385 DAOS_PROP_CO_SCRUBBER_DISABLED,
387 DAOS_PROP_CO_OBJ_VERSION,
389 DAOS_PROP_CO_PERF_DOMAIN,
402#define DAOS_PROP_CO_NUM (DAOS_PROP_CO_MAX - DAOS_PROP_CO_MIN - 1)
404typedef uint16_t daos_cont_layout_t;
408 DAOS_PROP_CO_LAYOUT_UNKNOWN,
409 DAOS_PROP_CO_LAYOUT_UNKOWN = DAOS_PROP_CO_LAYOUT_UNKNOWN,
410 DAOS_PROP_CO_LAYOUT_POSIX,
411 DAOS_PROP_CO_LAYOUT_HDF5,
412 DAOS_PROP_CO_LAYOUT_PYTHON,
413 DAOS_PROP_CO_LAYOUT_SPARK,
414 DAOS_PROP_CO_LAYOUT_DATABASE,
415 DAOS_PROP_CO_LAYOUT_ROOT,
416 DAOS_PROP_CO_LAYOUT_SEISMIC,
417 DAOS_PROP_CO_LAYOUT_METEO,
418 DAOS_PROP_CO_LAYOUT_MAX
423 DAOS_PROP_CO_CSUM_OFF,
424 DAOS_PROP_CO_CSUM_CRC16,
425 DAOS_PROP_CO_CSUM_CRC32,
426 DAOS_PROP_CO_CSUM_CRC64,
427 DAOS_PROP_CO_CSUM_SHA1,
428 DAOS_PROP_CO_CSUM_SHA256,
429 DAOS_PROP_CO_CSUM_SHA512,
430 DAOS_PROP_CO_CSUM_ADLER32
435 DAOS_PROP_CO_CSUM_SV_OFF,
436 DAOS_PROP_CO_CSUM_SV_ON
441 DAOS_PROP_CO_DEDUP_OFF,
442 DAOS_PROP_CO_DEDUP_MEMCMP,
443 DAOS_PROP_CO_DEDUP_HASH
448 DAOS_PROP_CO_COMPRESS_OFF,
449 DAOS_PROP_CO_COMPRESS_LZ4,
450 DAOS_PROP_CO_COMPRESS_DEFLATE,
451 DAOS_PROP_CO_COMPRESS_DEFLATE1,
452 DAOS_PROP_CO_COMPRESS_DEFLATE2,
453 DAOS_PROP_CO_COMPRESS_DEFLATE3,
454 DAOS_PROP_CO_COMPRESS_DEFLATE4,
459 DAOS_PROP_CO_ENCRYPT_OFF,
460 DAOS_PROP_CO_ENCRYPT_AES_XTS128,
461 DAOS_PROP_CO_ENCRYPT_AES_XTS256,
462 DAOS_PROP_CO_ENCRYPT_AES_CBC128,
463 DAOS_PROP_CO_ENCRYPT_AES_CBC192,
464 DAOS_PROP_CO_ENCRYPT_AES_CBC256,
465 DAOS_PROP_CO_ENCRYPT_AES_GCM128,
466 DAOS_PROP_CO_ENCRYPT_AES_GCM256
471 DAOS_PROP_CO_REDUN_RF0 = 0,
472 DAOS_PROP_CO_REDUN_RF1 = 1,
473 DAOS_PROP_CO_REDUN_RF2 = 2,
474 DAOS_PROP_CO_REDUN_RF3 = 3,
475 DAOS_PROP_CO_REDUN_RF4 = 4,
484 DAOS_PROP_CO_REDUN_MIN = 1,
486 DAOS_PROP_CO_REDUN_RANK = 1,
488 DAOS_PROP_CO_REDUN_NODE = 2,
490 DAOS_PROP_CO_REDUN_FAULT = 3,
491 DAOS_PROP_CO_REDUN_MAX = 254,
495#define DAOS_PROP_CO_REDUN_DEFAULT DAOS_PROP_CO_REDUN_NODE
500 DAOS_PROP_CO_HEALTHY,
506 DAOS_PROP_CO_UNCLEAN,
510#define DAOS_PROP_CO_CLEAR (0x1)
522#define DAOS_PROP_CO_STATUS_VAL(status, flag, pm_ver) \
523 ((((uint64_t)(flag)) << 48) | \
524 (((uint64_t)(status) & 0xFFFF) << 32) | \
525 ((uint64_t)(pm_ver)))
527static inline uint64_t
530 return DAOS_PROP_CO_STATUS_VAL(co_status->
dcs_status,
536daos_prop_val_2_co_status(uint64_t val,
struct daos_co_status *co_status)
538 co_status->
dcs_flags = (uint16_t)(val >> 48);
539 co_status->
dcs_status = (uint16_t)((val >> 32) & 0xFFFF);
540 co_status->
dcs_pm_ver = (uint32_t)(val & 0xFFFFFFFF);
544 DAOS_PROP_ENTRY_NOT_SET = (1 << 0),
567#define DAOS_PROP_ENTRIES_MAX_NR (128)
570#define DAOS_PROP_LABEL_MAX_LEN (127)
572#define DAOS_PROP_MAX_LABEL_BUF_LEN (DAOS_PROP_LABEL_MAX_LEN + 1)
575#define DAOS_PROP_CO_LABEL_DEFAULT "container_label_not_set"
576#define DAOS_PROP_PO_LABEL_DEFAULT "pool_label_not_set"
590daos_label_is_valid(
const char *label)
594 bool maybe_uuid =
false;
601 len = strnlen(label, DAOS_PROP_LABEL_MAX_LEN + 1);
602 if (len == 0 || len > DAOS_PROP_LABEL_MAX_LEN)
606 for (i = 0; i < len; i++) {
609 if (isalnum(c) || c ==
'.' || c ==
'_' || c ==
':')
620 if (maybe_uuid && daos_is_valid_uuid_string(label, UUID_SST_NONE))
627#define DAOS_PROP_PO_DATA_THRESH_DEFAULT (1UL << 12)
630#define DAOS_PROP_NO_PO_LABEL "pool_label_not_set"
633#define DEFAULT_CONT_LABEL "container_label_not_set"
636#define DAOS_PROP_NO_CO_LABEL DEFAULT_CONT_LABEL
643daos_perf_domain_is_valid(
const char *perf_domain)
645 return daos_label_is_valid(perf_domain);
666daos_prop_alloc(uint32_t entries_nr);
698daos_prop_from_str(
const char *str, daos_size_t len,
daos_prop_t **prop);
733daos_prop_entry_get(
daos_prop_t *prop, uint32_t type);
748daos_prop_set_str(
daos_prop_t *prop, uint32_t type,
const char *str, daos_size_t len);
759daos_prop_entry_set_str(
struct daos_prop_entry *entry,
const char *str, daos_size_t len);
774daos_prop_set_ptr(
daos_prop_t *prop, uint32_t type,
const void *ptr, daos_size_t size);
785daos_prop_entry_set_ptr(
struct daos_prop_entry *entry,
const void *ptr, daos_size_t size);
862 if (entry->
dpe_flags & DAOS_PROP_ENTRY_NOT_SET)
868#if defined(__cplusplus)
struct daos_prop_entry * dpp_entries