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,
104#define DAOS_PROP_PO_EC_CELL_SZ_MIN (1UL << 10)
105#define DAOS_PROP_PO_EC_CELL_SZ_MAX (1UL << 30)
107#define DAOS_PROP_PO_REDUN_FAC_MAX 4
108#define DAOS_PROP_PO_REDUN_FAC_DEFAULT 0
111daos_rf_is_valid(
unsigned long long rf)
113 return rf <= DAOS_PROP_PO_REDUN_FAC_MAX;
122#define DAOS_PROP_PO_RP_PDA_DEFAULT 3
127#define DAOS_PROP_PO_EC_PDA_DEFAULT 1
131 DAOS_UPGRADE_STATUS_NOT_STARTED = 0,
132 DAOS_UPGRADE_STATUS_IN_PROGRESS = 1,
133 DAOS_UPGRADE_STATUS_COMPLETED = 2,
134 DAOS_UPGRADE_STATUS_FAILED = 3,
140#define DAOS_PROP_PO_NUM (DAOS_PROP_PO_MAX - DAOS_PROP_PO_MIN - 1)
144 DAOS_RECLAIM_DISABLED = 0,
146 DAOS_RECLAIM_SNAPSHOT,
152#define DAOS_SELF_HEAL_AUTO_EXCLUDE (1U << 0)
153#define DAOS_SELF_HEAL_AUTO_REBUILD (1U << 1)
159enum daos_cont_props {
160 DAOS_PROP_CO_MIN = 0x1000,
170 DAOS_PROP_CO_LAYOUT_TYPE,
175 DAOS_PROP_CO_LAYOUT_VER,
185 DAOS_PROP_CO_CSUM_CHUNK_SIZE,
190 DAOS_PROP_CO_CSUM_SERVER_VERIFY,
196 DAOS_PROP_CO_REDUN_FAC,
201 DAOS_PROP_CO_REDUN_LVL,
205 DAOS_PROP_CO_SNAPSHOT_MAX,
218 DAOS_PROP_CO_COMPRESS,
228 DAOS_PROP_CO_ENCRYPT,
238 DAOS_PROP_CO_OWNER_GROUP,
250 DAOS_PROP_CO_DEDUP_THRESHOLD,
259 DAOS_PROP_CO_ALLOCED_OID,
261 DAOS_PROP_CO_EC_CELL_SZ,
267 DAOS_PROP_CO_GLOBAL_VERSION,
280#define DAOS_PROP_CO_NUM (DAOS_PROP_CO_MAX - DAOS_PROP_CO_MIN - 1)
282typedef uint16_t daos_cont_layout_t;
286 DAOS_PROP_CO_LAYOUT_UNKNOWN,
287 DAOS_PROP_CO_LAYOUT_UNKOWN = DAOS_PROP_CO_LAYOUT_UNKNOWN,
288 DAOS_PROP_CO_LAYOUT_POSIX,
289 DAOS_PROP_CO_LAYOUT_HDF5,
290 DAOS_PROP_CO_LAYOUT_PYTHON,
291 DAOS_PROP_CO_LAYOUT_SPARK,
292 DAOS_PROP_CO_LAYOUT_DATABASE,
293 DAOS_PROP_CO_LAYOUT_ROOT,
294 DAOS_PROP_CO_LAYOUT_SEISMIC,
295 DAOS_PROP_CO_LAYOUT_METEO,
296 DAOS_PROP_CO_LAYOUT_MAX
301 DAOS_PROP_CO_CSUM_OFF,
302 DAOS_PROP_CO_CSUM_CRC16,
303 DAOS_PROP_CO_CSUM_CRC32,
304 DAOS_PROP_CO_CSUM_CRC64,
305 DAOS_PROP_CO_CSUM_SHA1,
306 DAOS_PROP_CO_CSUM_SHA256,
307 DAOS_PROP_CO_CSUM_SHA512,
308 DAOS_PROP_CO_CSUM_ADLER32
313 DAOS_PROP_CO_CSUM_SV_OFF,
314 DAOS_PROP_CO_CSUM_SV_ON
319 DAOS_PROP_CO_DEDUP_OFF,
320 DAOS_PROP_CO_DEDUP_MEMCMP,
321 DAOS_PROP_CO_DEDUP_HASH
326 DAOS_PROP_CO_COMPRESS_OFF,
327 DAOS_PROP_CO_COMPRESS_LZ4,
328 DAOS_PROP_CO_COMPRESS_DEFLATE,
329 DAOS_PROP_CO_COMPRESS_DEFLATE1,
330 DAOS_PROP_CO_COMPRESS_DEFLATE2,
331 DAOS_PROP_CO_COMPRESS_DEFLATE3,
332 DAOS_PROP_CO_COMPRESS_DEFLATE4,
337 DAOS_PROP_CO_ENCRYPT_OFF,
338 DAOS_PROP_CO_ENCRYPT_AES_XTS128,
339 DAOS_PROP_CO_ENCRYPT_AES_XTS256,
340 DAOS_PROP_CO_ENCRYPT_AES_CBC128,
341 DAOS_PROP_CO_ENCRYPT_AES_CBC192,
342 DAOS_PROP_CO_ENCRYPT_AES_CBC256,
343 DAOS_PROP_CO_ENCRYPT_AES_GCM128,
344 DAOS_PROP_CO_ENCRYPT_AES_GCM256
349 DAOS_PROP_CO_REDUN_RF0,
350 DAOS_PROP_CO_REDUN_RF1,
351 DAOS_PROP_CO_REDUN_RF2,
352 DAOS_PROP_CO_REDUN_RF3,
353 DAOS_PROP_CO_REDUN_RF4,
361 DAOS_PROP_CO_REDUN_MIN = 1,
362 DAOS_PROP_CO_REDUN_RANK = 1,
363 DAOS_PROP_CO_REDUN_MAX = 254,
369 DAOS_PROP_CO_HEALTHY,
375 DAOS_PROP_CO_UNCLEAN,
379#define DAOS_PROP_CO_CLEAR (0x1)
390#define DAOS_PROP_CO_STATUS_VAL(status, flag, pm_ver) \
391 ((((uint64_t)(flag)) << 48) | \
392 (((uint64_t)(status) & 0xFFFF) << 32) | \
393 ((uint64_t)(pm_ver)))
395static inline uint64_t
398 return DAOS_PROP_CO_STATUS_VAL(co_status->
dcs_status,
404daos_prop_val_2_co_status(uint64_t val,
struct daos_co_status *co_status)
406 co_status->
dcs_flags = (uint16_t)(val >> 48);
407 co_status->
dcs_status = (uint16_t)((val >> 32) & 0xFFFF);
408 co_status->
dcs_pm_ver = (uint32_t)(val & 0xFFFFFFFF);
412 DAOS_PROP_ENTRY_NOT_SET = (1 << 0),
435#define DAOS_PROP_ENTRIES_MAX_NR (128)
438#define DAOS_PROP_LABEL_MAX_LEN (127)
440#define DAOS_PROP_MAX_LABEL_BUF_LEN (DAOS_PROP_LABEL_MAX_LEN + 1)
454daos_label_is_valid(
const char *label)
458 bool maybe_uuid =
false;
465 len = strnlen(label, DAOS_PROP_LABEL_MAX_LEN + 1);
466 if (len == 0 || len > DAOS_PROP_LABEL_MAX_LEN)
470 for (i = 0; i < len; i++) {
473 if (isalnum(c) || c ==
'.' || c ==
'_' || c ==
':')
484 if (maybe_uuid && strnlen(label, 36) == 36) {
489 for (i = 0, p = label; i < 36; i++, p++) {
490 if (i == 8 || i == 13 || i == 18 || i == 23) {
511#define DAOS_PROP_POLICYSTR_MAX_LEN (127)
514#define DAOS_PROP_POLICYSTR_DEFAULT "type=io_size"
534daos_prop_alloc(uint32_t entries_nr);
566daos_prop_from_str(
const char *str, daos_size_t len,
daos_prop_t **prop);
588daos_prop_entry_get(
daos_prop_t *prop, uint32_t type);
603daos_prop_set_str(
daos_prop_t *prop, uint32_t type,
const char *str, daos_size_t len);
614daos_prop_entry_set_str(
struct daos_prop_entry *entry,
const char *str, daos_size_t len);
629daos_prop_set_ptr(
daos_prop_t *prop, uint32_t type,
const void *ptr, daos_size_t size);
640daos_prop_entry_set_ptr(
struct daos_prop_entry *entry,
const void *ptr, daos_size_t size);
717 if (entry->
dpe_flags & DAOS_PROP_ENTRY_NOT_SET)
723#if defined(__cplusplus)
struct daos_prop_entry * dpp_entries