23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DIX 110 #define SERVER_LOG_FILE_NAME "dix_ut.errlog" 114 "m0d",
"-T",
"linux",
115 "-D",
"cs_sdb",
"-S",
"cs_stob",
116 "-A",
"linuxstob:cs_addb_stob",
118 "-H",
"0@lo:12345:34:1",
135 #define DFID(x, y) M0_FID_TINIT('x', (x), (y)) 147 { .e_start = 3, .e_end = 4 },
148 { .e_start = 2, .e_end = 5 },
149 { .e_start = 1, .e_end = 2 },
150 { .e_start = 6, .e_end = 7 },
163 #define BYTES(bit) ((bit + 7) / 8) 168 char byte_val = *((
char*)
buffer + byte_num);
170 char bit_val = 0x1 & (byte_val >> bit_shift);
185 { .e_start = 3, .e_end = 4 },
186 { .e_start = 2, .e_end = 5 },
187 { .e_start = 1, .e_end = 2 },
188 { .e_start = 6, .e_end = 7 },
200 (
void*)&result, &len);
204 for (
i = 0;
i < len;
i++) {
207 if (
i == 0 ||
i == 1 ||
i == 4 ||
i == 8 ||
i == 9)
228 (
void*)&result, &len);
246 { .e_start = 2, .e_end = 5 },
254 (
void*)&result, &len);
259 for (
i = 0;
i < len;
i++) {
277 { .
e_start = 8, .e_end = 600 },
285 (
void*)&result, &len);
289 for (
i = 0;
i < len;
i++) {
306 { .
e_start = 100, .e_end = 600 },
314 (
void*)&result, &len);
333 memset(
key.b_addr, 7, key_len);
337 for (unit = 0; unit < W; ++unit) {
413 {.e_start = 110, .e_end = 200},
414 {.e_start = 300, .e_end = 400},
449 {.e_start = 110, .e_end = 200},
450 {.e_start = 300, .e_end = 400},
492 {.e_start = 110, .e_end = 200},
493 {.e_start = 300, .e_end = 400},
501 uint64_t lid1 = 1010101;
537 dlay1.
u.dl_id = lid1;
562 pdld = &dlay2.
u.dl_desc;
583 return 100 + seq_num;
592 uint32_t
count = last_val - first_val + 1;
599 key = *(uint64_t *)
rep->dra_rep[
i].dre_key.b_addr;
600 val = *(uint64_t *)
rep->dra_rep[
i].dre_val.b_addr;
682 for (
i = 0;
i <
rep->dra_nr;
i++) {
683 if (
rep->dra_rep[
i].dre_rc == 0) {
714 event.pe_state = state;
727 return &
pver->pv_mach;
742 return cli_pd->pd_state;
813 M0_PRE(
index->dd_layout.u.dl_desc.ld_imask.im_nr == 0);
819 P =
pver->pv_attr.pa_P;
822 &
index->dd_layout.u.dl_desc, &kbuf);
839 uint32_t K = (sdevs_nr - 1) / 2;
840 uint32_t parity_offset = 1;
841 uint32_t spare_offset = parity_offset + K;
847 return sdevs[parity_offset + 0];
849 return sdevs[parity_offset + 1];
851 return sdevs[spare_offset + 0];
853 return sdevs[spare_offset + 1];
868 &
index->dd_layout.u.dl_desc);
908 for (
i = 0;
i < keys_nr;
i++) {
944 for (
i = 0;
i < keys_nr;
i++) {
979 for (
i = 0;
i < keys_nr;
i++) {
982 if (
rep.cge_rc == -ENOENT) {
985 }
else if (vals !=
NULL) {
1041 cl_rpc_ctx = &
cctx->cl_rpc_ctx;
1174 struct m0_ext range[] = {
1232 uint32_t indices_nr,
1280 const uint32_t *recs_nr,
1326 if (
rep->dra_nr == 0) {
1336 for (
i = 0;
i <
rep->dra_nr;
i++)
1337 rep->dra_rep[
i].dre_rc =
1341 for (
i = 0;
i <
rep->dra_nr;
i++) {
1346 if (
rep->dra_rep[
i].dre_rc != 0)
1350 .b_addr = keys->ov_buf[i],
1351 .b_nob = keys->ov_vec.v_count[i]
1365 rep->dra_rep[k++].dre_rc = rc2;
1370 rep->dra_rep[k].dre_rc = 0;
1412 const uint32_t *recs_nr,
1446 for (
i = 0;
i < indices_nr;
i++)
1450 for (
i = 0;
i < indices_nr;
i++)
1463 for (
i = 0;
i < indices_nr;
i++)
1468 for (
i = 0;
i < indices_nr;
i++)
1484 for (
i = 0;
i < indices_nr;
i++)
1509 for (
i = 0;
i < indices_nr;
i++)
1522 for (
i = 0;
i < indices_nr;
i++)
1528 for (
i = 0;
i < indices_nr;
i++)
1544 for (
i = 0;
i < indices_nr;
i++)
1550 for (
i = 0;
i < indices_nr;
i++) {
1568 for (
i = 0;
i < indices_nr;
i++)
1584 for (
i = 0;
i < indices_nr;
i++)
1606 for (
i = 0;
i < indices_nr;
i++)
1612 uint32_t indices_nr,
1614 uint32_t *out_fids_nr)
1633 for (
i = 0;
i < *out_fids_nr;
i++)
1644 LIST_INDEX_REQ_NR = 100,
1651 uint32_t res_nr = 0;
1656 for (
i = 0;
i < indices_nr;
i++)
1669 for (
i = 0;
i < indices_nr;
i++)
1684 for (
i = 0;
i < indices_nr;
i++)
1688 for (
i = 0;
i < indices_nr;
i++) {
1690 unknown_indices[
i] =
1705 for (
i = 0;
i < indices_nr;
i++)
1739 uint32_t recs_nr =
COUNT;
1780 *(uint64_t *)start_key.
ov_buf[0] = 0;
2134 uint32_t recs_nr[
COUNT/2];
2191 uint32_t recs_nr[1];
2244 uint32_t recs_nr =
COUNT;
2460 uint32_t recs_nr =
COUNT;
2486 key = *(uint64_t *)
rep.dra_rep[
i].dre_key.b_addr;
2500 key = *(uint64_t *)
rep.dra_rep[
i].dre_key.b_addr;
2627 uint32_t start_keys_nr = 2;
2669 *(uint64_t *)start_keys->
ov_buf[0] = 1;
2670 *(uint64_t *)start_keys->
ov_buf[1] = 4;
2673 reps = cas_reps->
ov_buf[0];
2682 reps = cas_reps->
ov_buf[1];
2688 reps = cas_reps->
ov_buf[2];
2699 reps = dix_reps->
ov_buf[0];
2705 reps = dix_reps->
ov_buf[1];
2731 uint32_t start_keys_nr = 2;
2773 *(uint64_t *)start_keys->
ov_buf[0] = 1;
2774 *(uint64_t *)start_keys->
ov_buf[1] = 10;
2777 reps = cas_reps->
ov_buf[0];
2786 reps = cas_reps->
ov_buf[1];
2796 reps = cas_reps->
ov_buf[2];
2807 reps = dix_reps->
ov_buf[0];
2812 reps = dix_reps->
ov_buf[1];
2838 uint32_t start_keys_nr = 2;
2880 *(uint64_t *)start_keys->
ov_buf[0] = 1;
2881 *(uint64_t *)start_keys->
ov_buf[1] = 7;
2884 reps = cas_reps->
ov_buf[0];
2892 reps = cas_reps->
ov_buf[1];
2898 reps = cas_reps->
ov_buf[2];
2906 reps = dix_reps->
ov_buf[0];
2911 reps = dix_reps->
ov_buf[1];
2941 uint32_t start_keys_nr = 5;
2957 for (
i = 0;
i < *ctx_nr;
i++) {
2966 for (
i = 0;
i < start_keys_nr;
i++) {
2974 for (
i = 0;
i < start_keys_nr;
i++)
2978 *(uint64_t *)start_keys->
ov_buf[0] = 1;
2979 *(uint64_t *)start_keys->
ov_buf[1] = 3;
2980 *(uint64_t *)start_keys->
ov_buf[2] = 5;
2981 *(uint64_t *)start_keys->
ov_buf[3] = 7;
2982 *(uint64_t *)start_keys->
ov_buf[4] = 9;
2985 for (
i = 0;
i < *ctx_nr;
i++) {
2987 for (j = 0; j < 10; j++)
2992 reps = dix_reps->
ov_buf[0];
2996 reps = dix_reps->
ov_buf[1];
3000 reps = dix_reps->
ov_buf[2];
3004 reps = dix_reps->
ov_buf[3];
3008 reps = dix_reps->
ov_buf[4];
3067 uint32_t *ctx_nr) = {
3083 for (key_idx = 0; key_idx < dix_reps->
ov_vec.
v_nr; key_idx++) {
3086 for (val_idx = 0; val_idx < rep_nr; val_idx++) {
3087 drep = reps->
ov_buf[val_idx];
3107 uint32_t start_keys_nr;
3110 m0_fi_enable(
"m0_dix_next_result_prepare",
"mock_data_load");
3115 cases[
it](&cas_reps, &dix_reps, &recs_nr,
3116 &start_keys, &ctx_nr);
3117 req.dr_recs_nr = recs_nr;
3118 start_keys_nr =
req.dr_items_nr = start_keys.ov_vec.v_nr;
3122 for (ctx_id = 0; ctx_id < ctx_nr; ctx_id++) {
3128 creps = cas_reps.
ov_buf[ctx_id];
3131 for (key_id = 0; key_id <
ctx->sc_reps_nr; key_id++) {
3134 ctx->sc_reps[key_id] = *crep;
3144 m0_fi_disable(
"m0_dix_next_result_prepare",
"mock_data_load");
3206 #undef M0_TRACE_SUBSYSTEM static const char * srv_ep_addr
static void imask_invalid(void)
struct m0_poolmach_state * pm_state
void meta_val_encdec_n(void)
static m0_bindex_t indices[ZEROVEC_UT_SEGS_NR]
#define SERVER_LOG_FILE_NAME
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
M0_INTERNAL void m0_pools_common_fini(struct m0_pools_common *pc)
#define M0_ALLOC_ARR(arr, nr)
static int dix_client_init(struct cl_ctx *cctx, const char *cl_ep_addr, const char *srv_ep_addr, const char *dbname, struct m0_net_xprt *xprt)
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_pool_fini(struct m0_pool *pool)
static char get_bit(void *buffer, m0_bcount_t pos)
static void dix_create(void)
void m0_net_domain_fini(struct m0_net_domain *dom)
static void server_is_down(void)
M0_INTERNAL int m0_poolmach_state_transit(struct m0_poolmach *pm, const struct m0_poolmach_event *event)
static void dix_create_dgmode(void)
struct m0_ut_suite dix_client_ut
static int dix_ut_put(const struct m0_dix *index, const struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t flags, struct dix_rep_arr *rep)
int const char const void size_t int flags
static void dix_get_resend(void)
static void dix_delete_crow(void)
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_lock(struct m0_clink *link)
M0_INTERNAL int m0_dix_imask_init(struct m0_dix_imask *mask, struct m0_ext *range, uint64_t nr)
struct m0_dix_next_sort_ctx_arr nrs_sctx_arr
static struct m0_rpc_server_ctx dix_ut_sctx
M0_INTERNAL int m0_layout_domain_init(struct m0_layout_domain *dom)
const m0_time_t M0_TIME_NEVER
M0_INTERNAL struct m0_pool_version * m0_pool_version_find(struct m0_pools_common *pc, const struct m0_fid *id)
static struct io_request req
struct m0_conf_obj rt_obj
static bool dix_cctg_has_replica(struct m0_dix *index, struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t sdev_idx)
struct m0_poolmach pv_mach
static enum m0_pool_nd_state dix_disk_state(uint32_t sdev_idx)
static void dix_client_fini(struct cl_ctx *cctx)
int m0_rpc_server_start(struct m0_rpc_server_ctx *sctx)
#define M0_FID_INIT(container, key)
struct m0_dix_linst dit_linst
M0_INTERNAL int m0_dix_next_result_prepare(struct m0_dix_req *req)
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_layout_domain_fini(struct m0_layout_domain *dom)
M0_INTERNAL void m0_dix_meta_req_init(struct m0_dix_meta_req *req, struct m0_dix_cli *cli, struct m0_sm_group *grp)
struct m0_pool_version pool_ver
static int dix_cctg_records_del(struct m0_dix *index, struct m0_bufvec *keys, uint32_t sdev_idx)
struct m0_dix_next_sort_ctx * sca_ctx
static void dix__kv_alloc_and_fill(struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t first, uint32_t last)
M0_INTERNAL int m0_dix_index_list_rep_nr(struct m0_dix_meta_req *req)
M0_INTERNAL void m0_cas_get_rep(const struct m0_cas_req *req, uint64_t idx, struct m0_cas_get_reply *rep)
struct m0_rpc_client_ctx cl_rpc_ctx
M0_INTERNAL int m0_dix_item_rc(const struct m0_dix_req *req, uint64_t idx)
static void dix_next(void)
struct m0_dix_layout ci_layout
M0_INTERNAL int m0_dix_imask_apply(void *buffer, m0_bcount_t buf_len_bytes, struct m0_dix_imask *mask, void **res, m0_bcount_t *res_len_bits)
M0_INTERNAL int m0_dix_layout_iter_init(struct m0_dix_layout_iter *iter, const struct m0_fid *index, struct m0_layout_domain *ldom, struct m0_pool_version *pver, struct m0_dix_ldesc *ldesc, struct m0_buf *key)
M0_INTERNAL void m0_rconfc_stop_sync(struct m0_rconfc *rconfc)
static void ut_service_fini(void)
static int ut_pver_find(struct m0_reqh *reqh, struct m0_fid *out)
M0_INTERNAL void m0_dix_target(struct m0_dix_linst *inst, uint64_t unit, struct m0_buf *key, uint64_t *out_id)
static struct m0_rpc_client_ctx cctx
static struct m0_be_emap_cursor it
static void dix_pm_disk_state_set(struct m0_poolmach *pm, uint32_t sdev_idx, enum m0_pool_nd_state state)
static void dix_del(void)
static void dix_get_dgmode(void)
static void results_check(struct m0_dix_req *req, struct m0_bufvec *dix_reps)
static void dix_list(void)
struct m0_pool_version * dx_pver
#define M0_SRC_PATH(name)
M0_INTERNAL int m0_pools_setup(struct m0_pools_common *pc, const struct m0_fid *profile, struct m0_sm_group *sm_grp, struct m0_dtm *dtm)
static int case_4_data(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t **recs_nr, struct m0_bufvec *start_keys, uint32_t *ctx_nr)
struct m0_fop_getxattr_rep * rep
struct m0_pdclust_attr pl_attr
static void dix_index_init(struct m0_dix *index, uint32_t id)
M0_INTERNAL void m0_dix_rs_fini(struct m0_dix_next_resultset *rs)
M0_INTERNAL int m0_cas_get(struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys)
static struct m0_rpc_session * cctg_rpc_sess(uint32_t sdev_idx)
static void imask_short(void)
static void dix_delete_dgmode(void)
static void dixc_ut_init(struct m0_rpc_server_ctx *sctx, struct cl_ctx *cctx)
static const char * cl_ep_addrs[]
static struct m0_pools_common pc
static const char * cl_ep_addr
M0_INTERNAL void m0_dix_layout_fini(struct m0_dix_linst *li)
M0_INTERNAL void m0_cas_req_unlock(struct m0_cas_req *req)
M0_INTERNAL int m0_pool_init(struct m0_pool *pool, const struct m0_fid *id, enum m0_pver_policy_code pver_policy)
M0_INTERNAL void m0_dix_layout_iter_fini(struct m0_dix_layout_iter *iter)
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)
static int dix_list_op(const struct m0_fid *start_fid, uint32_t indices_nr, struct m0_fid *out_fids, uint32_t *out_fids_nr)
M0_INTERNAL int m0_sm_timedwait(struct m0_sm *mach, uint64_t states, m0_time_t deadline)
static int dix_common_idx_op(const struct m0_dix *indices, uint32_t indices_nr, enum ut_dix_req_type type)
struct m0_pooldev * pst_devices_array
M0_INTERNAL int m0_bufvec_alloc(struct m0_bufvec *bufvec, uint32_t num_segs, m0_bcount_t seg_size)
M0_INTERNAL void m0_cas_req_lock(struct m0_cas_req *req)
M0_INTERNAL int m0_confc_root_open(struct m0_confc *confc, struct m0_conf_root **root)
static int dix_ut_del(const struct m0_dix *index, const struct m0_bufvec *keys, struct dix_rep_arr *rep)
M0_INTERNAL uint64_t m0_dix_req_nr(const struct m0_dix_req *req)
static void dix_disk_failure_set(uint32_t sdev_idx, enum m0_pool_nd_state state)
M0_INTERNAL void m0_bufvec_free(struct m0_bufvec *bufvec)
struct m0_dix_imask ld_imask
M0_INTERNAL struct m0_fid * m0_reqh2profile(struct m0_reqh *reqh)
static int dix_ut_next(const struct m0_dix *index, const struct m0_bufvec *start_keys, const uint32_t *recs_nr, uint32_t flags, struct dix_rep_arr *rep)
M0_INTERNAL void m0_dix_cli_unlock(struct m0_dix_cli *cli)
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_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_delete(void)
M0_INTERNAL int m0_cas_req_generic_rc(const struct m0_cas_req *req)
static void keys_alloc(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps)
static void layout_create(struct m0_layout_domain *domain, struct m0_pool_version *pver)
M0_INTERNAL void m0_cas_req_init(struct m0_cas_req *req, struct m0_rpc_session *sess, struct m0_sm_group *grp)
static void imask_infini(void)
static int dix_common_rec_op(const struct m0_dix *index, const struct m0_bufvec *keys, struct m0_bufvec *vals, const uint32_t *recs_nr, uint32_t flags, struct dix_rep_arr *rep, enum ut_dix_req_type type)
M0_INTERNAL uint64_t m0_pool_version2layout_id(const struct m0_fid *pv_fid, uint64_t lid)
M0_INTERNAL struct m0_confc * m0_reqh2confc(struct m0_reqh *reqh)
#define M0_FID_TINIT(type, container, key)
struct m0_fid rt_imeta_pver
M0_INTERNAL void m0_cas_put_rep(struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
static const char * cdbnames[]
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
struct m0_fd_tree pv_fd_tree
#define M0_NET_XPRT_PREFIX_DEFAULT
static void local_failures(void)
static void m0_fi_enable(const char *func, const char *tag)
M0_INTERNAL int m0_reqh_conf_setup(struct m0_reqh *reqh, struct m0_confc_args *args)
M0_INTERNAL void m0_dix_cli_lock(struct m0_dix_cli *cli)
static void dix_cctgs_lookup(void)
static struct m0_poolmach * dix_srv_poolmach(void)
void meta_val_encdec(void)
M0_INTERNAL int m0_dix_get(struct m0_dix_req *req, const struct m0_dix *index, const struct m0_bufvec *keys)
static void dix_index_create_and_fill(const struct m0_dix *index, const struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t flags)
M0_INTERNAL void m0_dix_layout_iter_next(struct m0_dix_layout_iter *iter, uint64_t *tgt)
M0_INTERNAL int m0_dix_cli_start_sync(struct m0_dix_cli *cli)
M0_INTERNAL void m0_pools_common_service_ctx_connect_sync(struct m0_pools_common *pc)
static uint64_t dix_key(uint32_t seq_num)
static void dix_disk_online_set(uint32_t sdev_idx)
M0_INTERNAL int m0_dix_meta_item_rc(const struct m0_dix_meta_req *req, uint64_t idx)
struct m0_sm_group * cl_grp
static void dix_create_crow(void)
struct m0_fd_cache_info ft_cache_info
static int dix_rep_cmp(struct m0_dix_next_reply *a, struct m0_dix_next_reply *b)
M0_INTERNAL void m0_dix_req_lock(struct m0_dix_req *req)
struct m0_net_domain cl_ndom
M0_INTERNAL void m0_dix_req_init(struct m0_dix_req *req, struct m0_dix_cli *cli, struct m0_sm_group *grp)
M0_INTERNAL int m0_dix_req_wait(struct m0_dix_req *req, uint64_t states, m0_time_t to)
M0_INTERNAL int m0_dix_ldesc_init(struct m0_dix_ldesc *ld, struct m0_ext *range, m0_bcount_t range_nr, enum m0_dix_hash_fnc_type htype, struct m0_fid *pver)
static int case_1_data(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t **recs_nr, struct m0_bufvec *start_keys, uint32_t *ctx_nr)
int m0_rpc_client_stop(struct m0_rpc_client_ctx *cctx)
M0_INTERNAL void m0_dix_meta_unlock(struct m0_dix_meta_req *req)
M0_INTERNAL int m0_cas_del(struct m0_cas_req *req, struct m0_cas_id *index, struct m0_bufvec *keys, struct m0_dtx *dtx, uint32_t flags)
struct m0_net_xprt * m0_net_xprt_default_get(void)
M0_INTERNAL void m0_pools_service_ctx_destroy(struct m0_pools_common *pc)
static void dix_put_crow(void)
int m0_rpc_client_start(struct m0_rpc_client_ctx *cctx)
struct m0_net_xprt ** rsx_xprts
M0_INTERNAL int m0_buf_alloc(struct m0_buf *buf, size_t size)
static int dix_ut_get(const struct m0_dix *index, const struct m0_bufvec *keys, struct dix_rep_arr *rep)
static void dix_del_dgmode(void)
static struct m0_rpc_server_ctx sctx
uint32_t rcx_recv_queue_min_length
static int m0_rconfc_start_sync(struct m0_rconfc *rconfc)
M0_INTERNAL int m0_layout_init_by_pver(struct m0_layout_domain *dom, struct m0_pool_version *pv, int *count)
static struct cl_ctx dix_ut_cctx
M0_INTERNAL uint32_t m0_dix_liter_W(struct m0_dix_layout_iter *iter)
struct m0_layout_domain rh_ldom
struct m0_sm_group * lo_grp
M0_INTERNAL void m0_dix_req_fini_lock(struct m0_dix_req *req)
static uint32_t dix_sdev_id(enum ut_pg_unit unit)
struct m0_dix_imask ld_imask
static void ut_service_init(void)
static int dix_common_idx_flagged_op(const struct m0_dix *indices, uint32_t indices_nr, enum ut_dix_req_type type, uint32_t flags)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
static void dix_null_value(void)
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 void dix_cctg_records_put(struct m0_dix *index, struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t sdev_idx)
struct m0_pool_device_to_service * pc_dev2svc
static struct m0_clink clink[RDWR_REQUEST_MAX]
static int case_2_data(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t **recs_nr, struct m0_bufvec *start_keys, uint32_t *ctx_nr)
M0_INTERNAL int m0_fid_sscanf(const char *s, struct m0_fid *fid)
static void dix_records_restore(struct m0_dix *index, struct m0_bufvec *keys, struct m0_bufvec *vals)
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)
union m0_dix_layout::@145 u
M0_INTERNAL int m0_dix_index_list(struct m0_dix_meta_req *req, const struct m0_fid *start_fid, uint32_t indices_nr)
struct m0_net_domain * rcx_net_dom
static void dix_predictable_index_init(struct m0_dix *index, uint32_t id)
M0_INTERNAL int m0_buf_copy(struct m0_buf *dest, const struct m0_buf *src)
M0_INTERNAL int m0_layout_standard_types_register(struct m0_layout_domain *dom)
static struct fdmi_ctx ctx
M0_INTERNAL int m0_dix_index_list_rep(struct m0_dix_meta_req *req, uint32_t idx, struct m0_fid *fid)
M0_INTERNAL int m0_dix_cli_init(struct m0_dix_cli *cli, struct m0_sm_group *sm_group, struct m0_pools_common *pc, struct m0_layout_domain *ldom, const struct m0_fid *pver)
static void dix_disk_state_set(uint32_t sdev_idx, enum m0_pool_nd_state state)
M0_INTERNAL void m0_rconfc_fini(struct m0_rconfc *rconfc)
static struct m0_pool pool
static void m0_fi_enable_off_n_on_m(const char *func, const char *tag, uint32_t n, uint32_t m)
static int(* cases[])(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t **recs_nr, struct m0_bufvec *start_keys, uint32_t *ctx_nr)
struct m0_reqh_service_ctx * pds_ctx
M0_INTERNAL void m0_dix_ldesc_fini(struct m0_dix_ldesc *ld)
struct m0_dix_ldesc cl_dld1
static void imask_empty(void)
uint64_t rcx_max_rpcs_in_flight
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
#define m0_forall(var, nr,...)
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
M0_INTERNAL void m0_dix_meta_req_fini_lock(struct m0_dix_meta_req *req)
static void dix_index_fini(struct m0_dix *index)
M0_INTERNAL void m0_dix_cli_bootstrap_lock(struct m0_dix_cli *cli)
static void dix_cctg_id_fill(struct m0_dix *index, uint32_t sdev_idx, struct m0_cas_id *cctg_id)
static void dix_dgmode_disks_prep(enum ut_pg_unit unit1, enum m0_pool_nd_state state1, enum ut_pg_unit unit2, enum m0_pool_nd_state state2, struct m0_dix *index, struct m0_bufvec *keys, struct m0_bufvec *vals)
struct m0_pdclust_tgt_addr tgt
M0_INTERNAL void m0_cas_req_fini_lock(struct m0_cas_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 void m0_cas_del_rep(struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
static void crep_val_set(struct m0_bufvec *reps, uint32_t idx, uint64_t val)
int m0_net_domain_init(struct m0_net_domain *dom, const struct m0_net_xprt *xprt)
#define M0_BUF_INIT_PTR(p)
M0_INTERNAL int m0_pools_common_init(struct m0_pools_common *pc, struct m0_rpc_machine *rmach)
M0_INTERNAL struct m0_locality * m0_locality0_get(void)
static void dix_kv_destroy(struct m0_bufvec *keys, struct m0_bufvec *vals)
struct m0_reqh_context cc_reqh_ctx
M0_INTERNAL void m0_layout_domain_cleanup(struct m0_layout_domain *dom)
M0_INTERNAL uint64_t m0_cas_req_nr(const struct m0_cas_req *req)
static const char * ut_profile
M0_INTERNAL int m0_dix_rs_init(struct m0_dix_next_resultset *rs, uint32_t start_keys_nr, uint32_t sctx_nr)
static void dix_meta_create(void)
static void dix_get(void)
static uint64_t dix_val(uint32_t seq_num)
#define M0_UT_CONF_PROCESS
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_pools_service_ctx_create(struct m0_pools_common *pc)
static int64_t min64(int64_t a, int64_t b)
struct m0_net_xprt ** m0_net_all_xprt_get(void)
M0_INTERNAL int m0_dix_meta_generic_rc(const struct m0_dix_meta_req *req)
M0_INTERNAL int m0_cas_put(struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys, const struct m0_bufvec *values, struct m0_dtx *dtx, uint32_t flags)
static void dixc_ut_fini(struct m0_rpc_server_ctx *sctx, struct cl_ctx *cctx)
const char * rcx_remote_addr
static void dix__vals_check(struct dix_rep_arr *rep, uint32_t start_key, uint32_t first_val, uint32_t last_val)
M0_INTERNAL void m0_dix_imask_fini(struct m0_dix_imask *mask)
static void dix_put_overwrite(void)
static void dix_rep_free(struct dix_rep_arr *rep)
struct m0_pools_common * rh_pools
M0_INTERNAL void m0_dix_req_unlock(struct m0_dix_req *req)
M0_INTERNAL void m0_layout_standard_types_unregister(struct m0_layout_domain *dom)
static void layout_check(struct m0_dix_linst *dli)
static void drep_val_set(struct m0_bufvec *reps, uint32_t idx, uint64_t val)
static void m0_fi_enable_once(const char *func, const char *tag)
const char * rcx_local_addr
static char * dix_startup_cmd[]
struct m0_pdclust_layout * li_pl
M0_INTERNAL void m0_confc_close(struct m0_conf_obj *obj)
struct m0_rconfc rh_rconfc
void m0_rpc_server_stop(struct m0_rpc_server_ctx *sctx)
struct m0_rpc_machine rcx_rpc_machine
static void dix_predictable_sdev_ids_fill(struct m0_dix *index)
struct m0_rpc_session rlk_sess
static int case_3_data(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t **recs_nr, struct m0_bufvec *start_keys, uint32_t *ctx_nr)
static void dix_next_crow(void)
static bool dix_rec_is_deleted(struct m0_dix *index, struct m0_bufvec *keys)
M0_INTERNAL void m0_dix_cli_fini_lock(struct m0_dix_cli *cli)
static void dix_records_erase(struct m0_dix *index, struct m0_bufvec *keys)
static void dix_vals_check(struct dix_rep_arr *rep, uint32_t count)
M0_INTERNAL int m0_pool_versions_setup(struct m0_pools_common *pc)
struct m0_net_xprt * xprt
static void dix_put_dgmode(void)
static void dix_put(void)
M0_INTERNAL void m0_pool_versions_destroy(struct m0_pools_common *pc)
struct m0_rpc_link sc_rlink
struct m0_pools_common cl_pools_common
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)
static void dix_kv_alloc_and_fill(struct m0_bufvec *keys, struct m0_bufvec *vals, uint32_t count)
static struct m0_layout_domain domain
static void dix_next_dgmode(void)
M0_INTERNAL uint32_t m0_dix_next_rep_nr(const struct m0_dix_req *req, uint64_t key_idx)
static void dix_dgmode_disks_unprep(enum ut_pg_unit unit1, enum m0_pool_nd_state state1, enum ut_pg_unit unit2, enum m0_pool_nd_state state2, struct m0_dix *index, struct m0_bufvec *keys, struct m0_bufvec *vals)
struct m0_rpc_machine cl_rpc_machine
M0_INTERNAL int m0_dix_layout_init(struct m0_dix_linst *dli, struct m0_layout_domain *domain, const struct m0_fid *fid, uint64_t layout_id, struct m0_pool_version *pver, struct m0_dix_ldesc *dld)
struct m0_pdclust_attr pv_attr
static void case_data_free(struct m0_bufvec *cas_reps, struct m0_bufvec *dix_reps, uint32_t *recs_nr, struct m0_bufvec *start_keys)
static struct m0_pooldev * dix_pm_disk_find(struct m0_poolmach *pm, uint32_t sdev_idx)
M0_INTERNAL void m0_dix_cli_stop(struct m0_dix_cli *cli)
M0_INTERNAL void m0_dix_fid_convert_dix2cctg(const struct m0_fid *dix_fid, struct m0_fid *cctg_fid, uint32_t device_id)
M0_INTERNAL void m0_dix_meta_lock(struct m0_dix_meta_req *req)
struct m0_fid g_process_fid
M0_INTERNAL int m0_dix_cctgs_lookup(struct m0_dix_req *req, const struct m0_dix *indices, uint32_t indices_nr)
struct m0_layout_domain cl_ldom
struct m0_motr rsx_motr_ctx
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 struct m0_pooldev * m0_dix_tgt2sdev(struct m0_dix_linst *linst, uint64_t tgt)
static const char * srv_ep_addrs[]
static struct m0_addb2_frame_header last
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)
struct m0_dix_ldesc cl_dld2
M0_INTERNAL int m0_dix_generic_rc(const struct m0_dix_req *req)
#define M0_IMPOSSIBLE(fmt,...)
M0_INTERNAL void m0_pools_destroy(struct m0_pools_common *pc)