30 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DIX 42 #define DFID(x, y) M0_FID_TINIT('x', (x), (y)) 57 return req->dmr_req.dr_cli;
105 memcpy(keys->
ov_buf[idx], iname, klen);
168 if (dld_layout !=
NULL) {
179 if (dld_ldescr !=
NULL) {
370 }
else if (
rc == 0) {
492 &
req->dmr_keys, &
req->dmr_vals);
589 &
req->dmr_keys, &
req->dmr_vals);
661 if (
rc == 0 && dlay !=
NULL) {
670 const struct m0_fid *start_fid,
675 uint32_t keys_nr = indices_nr;
720 #undef M0_TRACE_SUBSYSTEM #define M0_BUFVEC_INIT_BUF(addr_ptr, count_ptr)
M0_INTERNAL int m0_dix_layout_put(struct m0_dix_meta_req *req, const struct m0_fid *fid, const struct m0_dix_layout *dlay, uint32_t nr, uint32_t flags)
static m0_bindex_t indices[ZEROVEC_UT_SEGS_NR]
M0_INTERNAL int m0_dix_layout_get(struct m0_dix_meta_req *req, const struct m0_fid *fid, uint32_t nr)
M0_INTERNAL int m0_dix__layout_set(const struct m0_dix_cli *cli, struct m0_dix *out)
M0_INTERNAL void m0_dix_get_rep(const struct m0_dix_req *req, uint64_t idx, struct m0_dix_get_reply *rep)
M0_INTERNAL void m0_chan_broadcast_lock(struct m0_chan *chan)
static int dix_meta_delete(struct m0_dix_cli *cli, struct m0_sm_group *grp, struct m0_dix_ldesc *dld_layout, struct m0_dix_ldesc *dld_ldescr)
int const char const void size_t int flags
M0_INTERNAL int m0_dix_meta_create(struct m0_dix_cli *cli, struct m0_sm_group *grp, struct m0_dix_ldesc *dld_layout, struct m0_dix_ldesc *dld_ldescr)
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
M0_INTERNAL void m0_clink_del(struct m0_clink *link)
M0_INTERNAL int m0_dix__root_set(const struct m0_dix_cli *cli, struct m0_dix *out)
M0_INTERNAL int m0_dix_desc_set(struct m0_dix *dix, const struct m0_dix_ldesc *desc)
const m0_time_t M0_TIME_NEVER
static struct io_request req
M0_INTERNAL int m0_dix_root_read(struct m0_dix_meta_req *req)
static struct m0_sm_group * grp
M0_INTERNAL const struct m0_fid m0_dix_layout_fid
M0_INTERNAL int m0_dix_ldescr_rep_get(struct m0_dix_meta_req *req, uint64_t idx, struct m0_dix_ldesc *ldesc)
static int dix_layout_from_read_rep(struct m0_dix_meta_req *req, uint64_t idx, const struct m0_fid *expected, struct m0_dix_ldesc *out)
M0_INTERNAL void m0_dix_mreq_init(struct m0_dix_req *req, struct m0_dix_cli *cli, struct m0_sm_group *grp)
M0_INTERNAL int m0_dix_delete(struct m0_dix_req *req, const struct m0_dix *indices, uint64_t indices_nr, struct m0_dtx *dtx, uint32_t flags)
M0_INTERNAL void m0_dix_meta_req_init(struct m0_dix_meta_req *req, struct m0_dix_cli *cli, struct m0_sm_group *grp)
M0_INTERNAL int m0_dix_req_rc(const struct m0_dix_req *req)
M0_INTERNAL int m0_dix_index_list_rep_nr(struct m0_dix_meta_req *req)
M0_INTERNAL int m0_dix_item_rc(const struct m0_dix_req *req, uint64_t idx)
static int dix_mreq_rc(const struct m0_dix_req *req)
M0_INTERNAL int m0_dix_root_read_rep(struct m0_dix_meta_req *req, struct m0_dix_ldesc *layout, struct m0_dix_ldesc *ldescr)
struct m0_fop_getxattr_rep * rep
static int dix_root_put(struct m0_dix_cli *cli, struct m0_sm_group *grp, const struct m0_dix_ldesc *dld_layout, const struct m0_dix_ldesc *dld_ldescr)
M0_INTERNAL void m0_dix_req_fini(struct m0_dix_req *req)
M0_INTERNAL int m0_dix_ldesc_copy(struct m0_dix_ldesc *dst, const struct m0_dix_ldesc *src)
M0_INTERNAL int m0_dix__layout_vals_dec(const struct m0_bufvec *keys, const struct m0_bufvec *vals, struct m0_fid *out_fid, struct m0_dix_layout *out_dlay, uint32_t nr)
M0_INTERNAL uint64_t m0_dix_req_nr(const struct m0_dix_req *req)
M0_INTERNAL void m0_bufvec_free(struct m0_bufvec *bufvec)
M0_INTERNAL int m0_dix__ldesc_vals_enc(const uint64_t *lid, const struct m0_dix_ldesc *ldesc, uint32_t nr, struct m0_bufvec *keys, struct m0_bufvec *vals)
M0_INTERNAL int m0_dix_layout_rep_get(struct m0_dix_meta_req *req, uint64_t idx, struct m0_dix_layout *dlay)
M0_INTERNAL int m0_dix__layout_vals_enc(const struct m0_fid *fid, const struct m0_dix_layout *dlay, uint32_t nr, struct m0_bufvec *keys, struct m0_bufvec *vals)
M0_INTERNAL int m0_dix_next(struct m0_dix_req *req, const struct m0_dix *index, const struct m0_bufvec *start_keys, const uint32_t *recs_nr, uint32_t flags)
struct m0_conf_root * root
return M0_ERR(-EOPNOTSUPP)
static void dix_meta_req_fini(struct m0_dix_meta_req *req)
#define M0_AMB(obj, ptr, field)
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
M0_INTERNAL int m0_dix_get(struct m0_dix_req *req, const struct m0_dix *index, const struct m0_bufvec *keys)
static int dix_root_add(struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t idx, const char *iname, const struct m0_fid *ifid, const struct m0_dix_ldesc *idesc)
M0_INTERNAL int m0_dix_ldescr_get(struct m0_dix_meta_req *req, const uint64_t *lid, uint32_t nr)
M0_INTERNAL int m0_dix_meta_item_rc(const struct m0_dix_meta_req *req, uint64_t idx)
M0_INTERNAL void m0_dix_req_lock(struct m0_dix_req *req)
M0_INTERNAL int m0_dix_req_wait(struct m0_dix_req *req, uint64_t states, m0_time_t to)
M0_INTERNAL int m0_dix_meta_check(struct m0_dix_cli *cli, struct m0_sm_group *grp, bool *result)
M0_INTERNAL void m0_dix_meta_unlock(struct m0_dix_meta_req *req)
void * m0_alloc(size_t size)
M0_INTERNAL void m0_dix_meta_req_fini(struct m0_dix_meta_req *req)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL int m0_dix__ldescr_set(const struct m0_dix_cli *cli, struct m0_dix *out)
M0_INTERNAL void m0_dix_req_fini_lock(struct m0_dix_req *req)
static void dix_meta_indices_fini(struct m0_dix *meta)
M0_INTERNAL int m0_dix__ldesc_vals_dec(const struct m0_bufvec *keys, const struct m0_bufvec *vals, uint64_t *out_lid, struct m0_dix_ldesc *out_ldesc, uint32_t nr)
static struct m0_clink clink[RDWR_REQUEST_MAX]
static bool dix_meta_op_done_cb(struct m0_clink *clink)
M0_INTERNAL int m0_dix_create(struct m0_dix_req *req, const struct m0_dix *indices, uint32_t indices_nr, struct m0_dtx *dtx, uint32_t flags)
M0_INTERNAL int m0_dix_index_list(struct m0_dix_meta_req *req, const struct m0_fid *start_fid, uint32_t indices_nr)
M0_INTERNAL int m0_dix_index_list_rep(struct m0_dix_meta_req *req, uint32_t idx, struct m0_fid *fid)
M0_INTERNAL void m0_dix_ldesc_fini(struct m0_dix_ldesc *ld)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
M0_INTERNAL void m0_dix_meta_req_fini_lock(struct m0_dix_meta_req *req)
M0_INTERNAL int m0_dix__meta_val_dec(const struct m0_bufvec *vals, struct m0_fid *out_fid, struct m0_dix_ldesc *out_dld, uint32_t nr)
M0_INTERNAL int m0_dix_meta_destroy(struct m0_dix_cli *cli, struct m0_sm_group *grp)
M0_INTERNAL const struct m0_fid m0_dix_ldescr_fid
M0_INTERNAL int m0_dix_ldescr_put(struct m0_dix_meta_req *req, const uint64_t *lid, const struct m0_dix_ldesc *ldesc, uint32_t nr)
M0_INTERNAL void m0_clink_add(struct m0_chan *chan, struct m0_clink *link)
M0_INTERNAL int m0_dix_del(struct m0_dix_req *req, const struct m0_dix *index, const struct m0_bufvec *keys, struct m0_dtx *dtx, uint32_t flags)
M0_INTERNAL int m0_dix_ldescr_del(struct m0_dix_meta_req *req, const uint64_t *lid, uint32_t nr)
M0_INTERNAL int m0_dix_meta_generic_rc(const struct m0_dix_meta_req *req)
static struct m0_dix_cli * meta_req_cli(const struct m0_dix_meta_req *req)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
M0_INTERNAL void m0_dix_req_unlock(struct m0_dix_req *req)
M0_INTERNAL int m0_dix_meta_req_nr(const struct m0_dix_meta_req *req)
M0_INTERNAL int m0_dix_layout_del(struct m0_dix_meta_req *req, const struct m0_fid *fid, uint32_t nr)
static int dix_meta_create(struct m0_dix_cli *cli, struct m0_sm_group *grp, struct m0_dix_ldesc *dld_layout, struct m0_dix_ldesc *dld_ldescr)
M0_INTERNAL void m0_dix_next_rep(const struct m0_dix_req *req, uint64_t key_idx, uint64_t val_idx, struct m0_dix_next_reply *rep)
M0_INTERNAL bool m0_dix_req_is_locked(const struct m0_dix_req *req)
M0_INTERNAL void m0_chan_fini_lock(struct m0_chan *chan)
M0_INTERNAL uint32_t m0_dix_next_rep_nr(const struct m0_dix_req *req, uint64_t key_idx)
static int dix_meta_indices_init(struct m0_dix *indices, struct m0_dix_cli *cli, struct m0_dix_ldesc *dld_layout, struct m0_dix_ldesc *dld_ldescr)
M0_INTERNAL const struct m0_fid m0_dix_root_fid
static struct m0_fid ifid
M0_INTERNAL void m0_dix_meta_lock(struct m0_dix_meta_req *req)
M0_INTERNAL int m0_dix_cctgs_lookup(struct m0_dix_req *req, const struct m0_dix *indices, uint32_t indices_nr)
M0_INTERNAL int m0_dix_put(struct m0_dix_req *req, const struct m0_dix *index, const struct m0_bufvec *keys, const struct m0_bufvec *vals, struct m0_dtx *dtx, uint32_t flags)
M0_INTERNAL void m0_dix_fini(struct m0_dix *dix)
M0_INTERNAL int m0_dix__meta_val_enc(const struct m0_fid *fid, const struct m0_dix_ldesc *dld, uint32_t nr, struct m0_bufvec *vals)
M0_INTERNAL int m0_bufvec_empty_alloc(struct m0_bufvec *bufvec, uint32_t num_segs)
M0_INTERNAL int m0_dix_generic_rc(const struct m0_dix_req *req)