10#define daos_obj_generate_oid daos_obj_generate_oid2
12#if defined(__cplusplus)
16#include <daos_types.h>
17#include <daos_event.h>
18#include <daos_obj_class.h>
21#define DAOS_OBJ_NIL ((daos_obj_id_t){0})
24#define OID_FMT_INTR_BITS 32
26#define OID_FMT_TYPE_BITS 8
28#define OID_FMT_CLASS_BITS 8
30#define OID_FMT_META_BITS 16
33#define OID_FMT_TYPE_SHIFT (64 - OID_FMT_TYPE_BITS)
35#define OID_FMT_CLASS_SHIFT (OID_FMT_TYPE_SHIFT - OID_FMT_CLASS_BITS)
37#define OID_FMT_META_SHIFT (OID_FMT_CLASS_SHIFT - OID_FMT_META_BITS)
40#define OID_FMT_TYPE_MAX ((1ULL << OID_FMT_TYPE_BITS) - 1)
42#define OID_FMT_CLASS_MAX ((1ULL << OID_FMT_CLASS_BITS) - 1)
44#define OID_FMT_META_MAX ((1ULL << OID_FMT_META_BITS) - 1)
47#define OID_FMT_TYPE_MASK (OID_FMT_TYPE_MAX << OID_FMT_TYPE_SHIFT)
49#define OID_FMT_CLASS_MASK (OID_FMT_CLASS_MAX << OID_FMT_CLASS_SHIFT)
51#define OID_FMT_META_MASK (OID_FMT_META_MAX << OID_FMT_META_SHIFT)
56 DAOS_OT_MULTI_HASHED = 0,
64 DAOS_OT_DKEY_UINT64 = 2,
67 DAOS_OT_AKEY_UINT64 = 3,
70 DAOS_OT_MULTI_UINT64 = 4,
73 DAOS_OT_DKEY_LEXICAL = 5,
76 DAOS_OT_AKEY_LEXICAL = 6,
79 DAOS_OT_MULTI_LEXICAL = 7,
82 DAOS_OT_KV_HASHED = 8,
85 DAOS_OT_KV_UINT64 = 9,
88 DAOS_OT_KV_LEXICAL = 10,
94 DAOS_OT_ARRAY_ATTR = 12,
97 DAOS_OT_ARRAY_BYTE = 13,
118daos_otype_t_is_valid(
enum daos_otype_t type)
120 return type <= DAOS_OT_MAX;
124daos_pa_domain_is_valid(uint32_t pa_domain)
126 return pa_domain == DAOS_PROP_CO_REDUN_NODE || pa_domain == DAOS_PROP_CO_REDUN_RANK;
129static inline enum daos_otype_t
134 type = (oid.
hi & OID_FMT_TYPE_MASK) >> OID_FMT_TYPE_SHIFT;
136 return (
enum daos_otype_t)type;
140daos_is_dkey_lexical_type(
enum daos_otype_t type)
143 case DAOS_OT_DKEY_LEXICAL:
144 case DAOS_OT_MULTI_LEXICAL:
145 case DAOS_OT_KV_LEXICAL:
156 return daos_is_dkey_lexical_type(daos_obj_id2type(oid));
160daos_is_akey_lexical_type(
enum daos_otype_t type)
163 case DAOS_OT_AKEY_LEXICAL:
164 case DAOS_OT_MULTI_LEXICAL:
175 return daos_is_akey_lexical_type(daos_obj_id2type(oid));
179daos_is_dkey_uint64_type(
enum daos_otype_t type)
182 case DAOS_OT_ARRAY_BYTE:
183 case DAOS_OT_MULTI_UINT64:
184 case DAOS_OT_DKEY_UINT64:
185 case DAOS_OT_KV_UINT64:
187 case DAOS_OT_ARRAY_ATTR:
198 return daos_is_dkey_uint64_type(daos_obj_id2type(oid));
202daos_is_akey_uint64_type(
enum daos_otype_t type)
205 case DAOS_OT_MULTI_UINT64:
206 case DAOS_OT_AKEY_UINT64:
217 return daos_is_akey_uint64_type(daos_obj_id2type(oid));
221daos_is_array_type(
enum daos_otype_t type)
224 case DAOS_OT_ARRAY_BYTE:
226 case DAOS_OT_ARRAY_ATTR:
237 enum daos_otype_t type = daos_obj_id2type(oid);
239 return daos_is_array_type(type);
243daos_is_kv_type(
enum daos_otype_t type)
246 case DAOS_OT_KV_HASHED:
247 case DAOS_OT_KV_UINT64:
248 case DAOS_OT_KV_LEXICAL:
259 enum daos_otype_t type = daos_obj_id2type(oid);
261 return daos_is_kv_type(type);
265#define IO_FLAGS_COND_BITS 8
269 DAOS_COND_PUNCH = (1 << 0),
271 DAOS_COND_DKEY_INSERT = (1 << 1),
273 DAOS_COND_DKEY_UPDATE = (1 << 2),
275 DAOS_COND_DKEY_FETCH = (1 << 3),
277 DAOS_COND_AKEY_INSERT = (1 << 4),
279 DAOS_COND_AKEY_UPDATE = (1 << 5),
281 DAOS_COND_AKEY_FETCH = (1 << 6),
286 DAOS_COND_PER_AKEY = (1 << 7),
288 DAOS_COND_MASK = ((1 << IO_FLAGS_COND_BITS) - 1),
305 DAOS_OO_RO = (1 << 1),
307 DAOS_OO_RW = (1 << 2),
309 DAOS_OO_EXCL = (1 << 3),
311 DAOS_OO_IO_RAND = (1 << 4),
313 DAOS_OO_IO_SEQ = (1 << 5),
412#define DAOS_IOMF_DETAIL (0x1U)
461 DAOS_GET_MAX = (1 << 0),
463 DAOS_GET_MIN = (1 << 1),
465 DAOS_GET_DKEY = (1 << 2),
467 DAOS_GET_AKEY = (1 << 3),
469 DAOS_GET_RECX = (1 << 4),
486static enum daos_obj_redun
489 return (
enum daos_obj_redun)((oid.
hi & OID_FMT_CLASS_MASK) >> OID_FMT_CLASS_SHIFT);
492static inline daos_oclass_id_t
495 enum daos_obj_redun ord;
498 ord = daos_obj_id2ord(oid);
499 nr_grps = (oid.
hi & OID_FMT_META_MASK) >> OID_FMT_META_SHIFT;
501 return (ord << OC_REDUN_SHIFT) | nr_grps;
504static inline uint32_t
507 return (oid.
hi & OID_FMT_META_MASK) >> OID_FMT_META_SHIFT;
513 return oid.
hi == 0 && oid.
lo == 0;
516#define DAOS_OCH_RDD_BITS 4
517#define DAOS_OCH_SHD_BITS 6
518#define DAOS_OCH_RDD_SHIFT 0
519#define DAOS_OCH_SHD_SHIFT DAOS_OCH_RDD_BITS
520#define DAOS_OCH_RDD_MAX_VAL ((1ULL << DAOS_OCH_RDD_BITS) - 1)
521#define DAOS_OCH_SHD_MAX_VAL ((1ULL << DAOS_OCH_SHD_BITS) - 1)
522#define DAOS_OCH_RDD_MASK (DAOS_OCH_RDD_MAX_VAL << DAOS_OCH_RDD_SHIFT)
523#define DAOS_OCH_SHD_MASK (DAOS_OCH_SHD_MAX_VAL << DAOS_OCH_SHD_SHIFT)
528 DAOS_OCH_RDD_DEF = (1 << 0),
529 DAOS_OCH_RDD_NO = (1 << 1),
530 DAOS_OCH_RDD_RP = (1 << 2),
531 DAOS_OCH_RDD_EC = (1 << 3),
533 DAOS_OCH_SHD_DEF = (1 << 4),
536 DAOS_OCH_SHD_TINY = (1 << 5),
537 DAOS_OCH_SHD_REG = (1 << 6),
538 DAOS_OCH_SHD_HI = (1 << 7),
539 DAOS_OCH_SHD_EXT = (1 << 8),
540 DAOS_OCH_SHD_MAX = (1 << 9),
571 enum daos_otype_t type, daos_oclass_id_t cid,
572 daos_oclass_hints_t hints, uint32_t args);
585 oid->
hi = (oid->
hi + 999999937) & UINT_MAX;
706 daos_key_t *dkey,
unsigned int nr, daos_key_t *akeys,
794 daos_key_t *dkey,
unsigned int nr,
daos_iod_t *iods,
847 daos_key_t *dkey,
unsigned int nr,
daos_iod_t *iods,
1001 daos_key_t *akey, daos_size_t *size, uint32_t *nr,
1051 daos_key_t *dkey, daos_key_t *akey,
daos_recx_t *recx,
1210#define DAOS_OIT_MARKER_MAX_LEN (32)
1298#if defined(__cplusplus)
struct daos_oclass_attr * oa_oa