23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BE 86 bool (*
compare)(
const char *dict_key,
87 const char *user_key))
107 return m0_streq(dict_key, user_key);
119 size_t buf_len = strlen(
name) + 1;
126 be_seg_dict_be_list_credit(
M0_BLO_ADD, 1, accum);
136 size_t buf_len = strlen(
name) + 1;
138 be_seg_dict_be_list_credit(
M0_BLO_DEL, 1, accum);
197 const char *user_key)
199 return strcmp(dict_key, user_key) >= 0;
203 const char *user_key)
205 return strcmp(dict_key, user_key) > 0;
210 const char *start_key,
211 const char **this_key,
213 bool (*
compare)(
const char *dict_key,
214 const char *user_key))
237 const char *start_key,
238 const char **this_key,
247 const char *start_key,
248 const char **this_key,
263 size_t buf_len = strlen(
name) + 1;
270 return M0_RC(-ENOENT);
303 be_seg_dict_be_tlink_create(kv, tx);
305 be_seg_dict_be_list_add_tail(dict, tx, kv);
307 be_seg_dict_be_list_add_before(dict, tx,
next, kv);
330 be_seg_dict_be_list_del(dict, tx, kv);
331 be_seg_dict_be_tlink_destroy(kv, tx);
350 be_seg_dict_be_list_create(dict, tx);
362 be_seg_dict_be_list_destroy(dict, tx);
367 #undef M0_TRACE_SUBSYSTEM
#define M0_BE_TX_CREDIT_PTR(ptr)
#define M0_BE_ALLOC_CREDIT_PTR(ptr, seg, accum)
M0_INTERNAL int m0_be_seg_dict_begin(struct m0_be_seg *seg, const char *start_key, const char **this_key, void **this_rec)
#define M0_BE_ALLOC_PTR_SYNC(ptr, seg, tx)
static struct be_seg_dict_keyval * be_seg_dict_find(struct m0_be_seg *seg, const char *user_key, bool(*compare)(const char *dict_key, const char *user_key))
M0_INTERNAL int m0_be_seg_dict_insert(struct m0_be_seg *seg, struct m0_be_tx *tx, const char *name, void *value)
M0_INTERNAL void m0_be_seg_dict_init(struct m0_be_seg *seg)
#define M0_LOG(level,...)
#define M0_BE_ALLOC_CREDIT_ARR(arr, nr, seg, accum)
M0_INTERNAL int m0_be_seg_dict_next(struct m0_be_seg *seg, const char *prefix, const char *start_key, const char **this_key, void **this_rec)
static struct m0_uint128 prefix
#define M0_BE_OP_SYNC(op_obj, action)
int const char const void * value
#define M0_BE_TX_CAPTURE_PTR(seg, tx, ptr)
static bool be_seg_dict_kv_eq(const char *dict_key, const char *user_key)
M0_INTERNAL bool m0_be_seg__invariant(const struct m0_be_seg *seg)
static void be_seg_dict_kv_get(const struct be_seg_dict_keyval *kv)
#define M0_BE_TX_CAPTURE_ARR(seg, tx, arr, nr)
static struct m0_be_list * be_seg_dict_get(const struct m0_be_seg *seg)
#define M0_BE_TX_CREDIT(nr, size)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL int m0_be_seg_dict_delete(struct m0_be_seg *seg, struct m0_be_tx *tx, const char *name)
M0_INTERNAL struct m0_be_allocator * m0_be_seg_allocator(struct m0_be_seg *seg)
static int be_seg_dict_iterate(struct m0_be_seg *seg, const char *prefix, const char *start_key, const char **this_key, void **this_rec, bool(*compare)(const char *dict_key, const char *user_key))
M0_INTERNAL void m0_be_tx_credit_add(struct m0_be_tx_credit *c0, const struct m0_be_tx_credit *c1)
M0_INTERNAL void m0_be_seg_dict_fini(struct m0_be_seg *seg)
M0_BE_LIST_DESCR_DEFINE(be_seg_dict, "be_seg_dict", static, struct be_seg_dict_keyval, dkv_link, dkv_magic, M0_BE_SEG_DICT_MAGIC, M0_BE_SEG_DICT_HEAD_MAGIC)
static bool be_seg_dict_kv_next(const char *dict_key, const char *user_key)
M0_INTERNAL void m0_be_seg_dict_destroy_credit(struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
static bool compare(const struct m0_sns_ir *ir, const uint32_t *failed_arr, const struct m0_bufvec *x, const struct m0_matvec *r)
M0_INTERNAL void m0_be_seg_dict_delete_credit(struct m0_be_seg *seg, const char *name, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_be_free(struct m0_be_allocator *a, struct m0_be_tx *tx, struct m0_be_op *op, void *ptr)
#define M0_FI_ENABLED(tag)
M0_INTERNAL void m0_be_seg_dict_create_credit(struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
static bool be_seg_dict_kv_begin(const char *dict_key, const char *user_key)
M0_INTERNAL void m0_be_seg_dict_destroy(struct m0_be_seg *seg, struct m0_be_tx *tx)
#define M0_BE_ALLOC_ARR_SYNC(arr, nr, seg, tx)
#define m0_be_list_endfor
static struct m0_be_seg * seg
M0_BE_LIST_DEFINE(be_seg_dict, static, struct be_seg_dict_keyval)
M0_INTERNAL void m0_be_seg_dict_create(struct m0_be_seg *seg, struct m0_be_tx *tx)
M0_INTERNAL void m0_be_seg_dict_insert_credit(struct m0_be_seg *seg, const char *name, struct m0_be_tx_credit *accum)
M0_INTERNAL int m0_be_seg_dict_lookup(struct m0_be_seg *seg, const char *name, void **out)
#define M0_BE_FREE_CREDIT_ARR(arr, nr, seg, accum)
#define m0_be_list_for(name, head, obj)
#define M0_BE_FREE_CREDIT_PTR(ptr, seg, accum)
struct m0_be_list_link dkv_link
static void be_seg_dict_kv_put(const struct be_seg_dict_keyval *kv)