27 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_IOSERVICE 116 .rst_typecode = M0_CST_IOS,
177 m0_reqh_lockers_free(
m0_get()->i_ios_cdom_key);
210 uint32_t segments_nr;
219 M0_ASSERT(m0_rpc_machine_bob_check(rpcmach));
247 segments_nr, segment_size,
248 colours, M0_0VEC_SHIFT,
275 bufferpools_tlink_init(newbp);
307 bufferpools_tlink_del_fini(
bp);
520 return M0_RC(-ENOMEM);
529 conn->imc_connected =
true;
533 conn->imc_connected =
false;
631 while (imc_map !=
NULL && imc_map->
imc_nr > 0) {
641 "Failed to terminate session %d",
rc);
647 "Failed to terminate connection %d",
rc);
690 req_fop_cob = &getattr->
g_body;
700 rep_fop_cob = &getattr_rep->
g_body;
701 if (rep_fop_cob->
b_rc == 0)
770 rep_fop_cob = &getattr_rep->
cgr_body;
775 rep_fop_cob = &getattr_rep->
g_body;
842 rep_fop_cob = &getattr_rep->
cgr_body;
843 if (rep_fop_cob->
b_rc == 0)
858 void (*cb)(
void *arg,
int rc),
895 void (*cb)(
void *arg,
int rc),
905 rpc_session = &
ctx->sc_rlink.rlk_sess;
920 void (*cb)(
void *arg,
int rc),
943 void (*cb)(
void *arg,
int rc),
983 req_fop_cob = &getattr->
g_body;
999 #undef M0_TRACE_SUBSYSTEM static const char * srv_ep_addr
M0_INTERNAL int m0_reqh_service_state_get(const struct m0_reqh_service *s)
M0_INTERNAL m0_bcount_t m0_net_domain_get_max_buffer_segment_size(struct m0_net_domain *dom)
M0_INTERNAL void m0_net_buffer_pool_fini(struct m0_net_buffer_pool *pool)
M0_INTERNAL int m0_rpc_post(struct m0_rpc_item *item)
M0_INTERNAL int m0_ios_start_sm_init(struct m0_ios_start_sm *ios_sm, struct m0_reqh_service *service, struct m0_sm_group *grp)
static struct m0_fid gob_fid
M0_INTERNAL void m0_fom_wakeup(struct m0_fom *fom)
int(* rso_start)(struct m0_reqh_service *service)
M0_INTERNAL struct m0_fop_cob_common * m0_cobfop_common_get(struct m0_fop *fop)
enum m0_rpc_item_priority ri_prio
static void buffer_pool_not_empty(struct m0_net_buffer_pool *bp)
M0_INTERNAL uint64_t m0_fid_hash(const struct m0_fid *fid)
static uint32_t ios_net_buffer_pool_size
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)
struct m0_tl rios_buffer_pools
M0_TL_DESCR_DECLARE(cs_eps, extern)
static int m0_ios_mds_conn_init(struct m0_reqh *reqh, struct m0_ios_mds_conn_map *conn_map)
M0_INTERNAL void m0_ios_start_unlock(struct m0_ios_start_sm *ios_sm)
const m0_time_t M0_TIME_NEVER
M0_INTERNAL int m0_ios_register(void)
static struct io_request req
static struct m0_sm_group * grp
M0_INTERNAL void m0_fop_init(struct m0_fop *fop, struct m0_fop_type *fopt, void *data, void(*fop_release)(struct m0_ref *))
struct m0_pool_version * pv
#define M0_LOG(level,...)
M0_INTERNAL void m0_net_buffer_pool_unlock(struct m0_net_buffer_pool *pool)
const struct m0_net_buffer_pool_ops * nbp_ops
M0_INTERNAL int m0_rpc_client_find_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, enum m0_conf_service_type stype, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
void m0_cob_domain_fini(struct m0_cob_domain *dom)
M0_TL_DEFINE(bufferpools, M0_INTERNAL, struct m0_rios_buffer_pool)
M0_INTERNAL void m0_ios_cdom_get(struct m0_reqh *reqh, struct m0_cob_domain **out)
int m0_rpc_session_destroy(struct m0_rpc_session *session, m0_time_t abs_timeout)
M0_INTERNAL void m0_rwlock_write_lock(struct m0_rwlock *lock)
struct m0_fop_type m0_fop_getattr_fopt
M0_TL_DECLARE(cs_eps, M0_INTERNAL, struct cs_endpoint_and_xprt)
struct m0_net_domain * rios_ndom
struct m0_net_domain * ntm_dom
void * m0_fop_data(const struct m0_fop *fop)
M0_INTERNAL int m0_ios_cob_getattr_async(const struct m0_fid *gfid, struct m0_cob_attr *attr, uint64_t cob_idx, struct m0_pool_version *pv, void(*cb)(void *arg, int rc), void *arg)
struct m0_reqh_service rios_gen
static void ios_fini(struct m0_reqh_service *service)
M0_INTERNAL void m0_md_cob_wire2mem(struct m0_cob_attr *attr, const struct m0_fop_cob *body)
struct m0_net_buffer_pool_ops buffer_pool_ops
M0_INTERNAL void m0_ios_mds_conn_fini(struct m0_reqh *reqh)
M0_INTERNAL struct m0 * m0_get(void)
#define container_of(ptr, type, member)
static void buffer_pool_low(struct m0_net_buffer_pool *bp)
struct m0_rwlock rh_rwlock
static struct m0_rpc_item * item
struct m0_fop_getxattr_rep * rep
static int ios_allocate(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
static void ios_stop(struct m0_reqh_service *service)
int m0_reqh_service_type_register(struct m0_reqh_service_type *rstype)
struct m0_chan rios_bp_wait
struct m0_reqh_service * sac_service
struct m0_rpc_session imc_session
M0_INTERNAL int m0_sm_timedwait(struct m0_sm *mach, uint64_t states, m0_time_t deadline)
static int _rpc_post(struct m0_fop *fop, struct m0_rpc_session *session)
M0_INTERNAL int m0_ios_mds_getattr_async(struct m0_reqh *reqh, const struct m0_fid *gfid, struct m0_cob_attr *attr, void(*cb)(void *arg, int rc), void *arg)
M0_INTERNAL bool m0_reqh_io_service_invariant(const struct m0_reqh_io_service *rios)
struct m0_clink rios_clink
M0_INTERNAL int m0_ioservice_fop_init(void)
static struct m0_ios_mds_conn * m0_ios_mds_conn_map_hash(const struct m0_ios_mds_conn_map *imc_map, const struct m0_fid *gfid)
struct m0_fop_type m0_fop_cob_getattr_fopt
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
M0_INTERNAL size_t m0_list_length(const struct m0_list *list)
M0_INTERNAL void m0_chan_signal(struct m0_chan *chan)
struct m0_fop_type * f_type
static const struct m0_reqh_service_ops ios_ops
static void ios_cob_fop_populate(struct m0_fop *fop, const struct m0_fid *cob_fid, const struct m0_fid *gob_fid, uint32_t cob_idx, uint32_t cob_type)
struct m0_net_buffer_pool rios_bp
#define M0_ERR_INFO(rc, fmt,...)
struct m0_fop_cob cgr_body
return M0_ERR(-EOPNOTSUPP)
struct m0_cob_domain * ism_dom
struct m0_cob_domain * rios_cdom
static void attr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
static const struct socktype stype[]
struct m0_net_transfer_mc rm_tm
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
static int ios_mds_conn_get_locked(struct m0_reqh *reqh, struct m0_ios_mds_conn_map **out, bool *new)
struct m0_ios_start_sm rios_sm
M0_INTERNAL struct m0_rpc_session * m0_reqh_mdpool_service_index_to_session(const struct m0_reqh *reqh, const struct m0_fid *gob_fid, uint32_t index)
struct m0_reqh_service_type m0_ios_type
static int ios_start(struct m0_reqh_service *service)
struct m0_tl rh_rpc_machines
void(* nbpo_not_empty)(struct m0_net_buffer_pool *)
int m0_rpc_conn_destroy(struct m0_rpc_conn *conn, m0_time_t abs_timeout)
static struct m0_fid cob_fid
M0_INTERNAL void m0_net_buffer_pool_lock(struct m0_net_buffer_pool *pool)
static const struct m0_rpc_item_ops getattr_fop_rpc_item_ops
struct m0_rpc_item * ri_reply
M0_INTERNAL int m0_ios_mds_getattr(struct m0_reqh *reqh, const struct m0_fid *gfid, struct m0_cob_attr *attr)
int m0_rpc_post_sync(struct m0_fop *fop, struct m0_rpc_session *session, const struct m0_rpc_item_ops *ri_ops, m0_time_t deadline)
struct m0_pools_common * pv_pc
M0_INTERNAL void m0_ios_net_buffer_pool_size_set(uint32_t buffer_pool_size)
struct m0_sm_group * lo_grp
M0_INTERNAL void m0_rwlock_write_unlock(struct m0_rwlock *lock)
M0_INTERNAL int m0_fop_data_alloc(struct m0_fop *fop)
M0_INTERNAL void m0_fop_fini(struct m0_fop *fop)
struct m0_pool_device_to_service * pc_dev2svc
static struct m0_clink clink[RDWR_REQUEST_MAX]
M0_INTERNAL void m0_ios_delete_buffer_pool(struct m0_reqh_service *service)
void(* mo_cb)(void *arg, int rc)
static struct fdmi_ctx ctx
M0_INTERNAL int m0_ios_getattr(struct m0_reqh *reqh, const struct m0_fid *gfid, uint64_t index, struct m0_cob_attr *attr)
M0_INTERNAL void m0_ios_cdom_fini(struct m0_reqh *reqh)
static int m0_ios_mds_conn_get(struct m0_reqh *reqh, struct m0_ios_mds_conn_map **out)
struct m0_reqh_service_ctx * pds_ctx
void(* rio_replied)(struct m0_rpc_item *item)
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
int32_t m0_rpc_item_error(const struct m0_rpc_item *item)
static void getattr_rpc_item_reply_cb(struct m0_rpc_item *item)
int(* rsto_service_allocate)(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
M0_INTERNAL struct m0_locality * m0_locality0_get(void)
struct m0_mutex nbp_mutex
M0_INTERNAL void m0_fid_tchange(struct m0_fid *fid, uint8_t tid)
static unsigned ios_mds_conn_key
#define M0_ALLOC_PTR(ptr)
M0_INTERNAL void m0_ioservice_fop_fini(void)
M0_INTERNAL void m0_ios_start_sm_fini(struct m0_ios_start_sm *ios_sm)
struct m0_rpc_session * ri_session
struct m0_fop * m0_fop_alloc_at(struct m0_rpc_session *sess, struct m0_fop_type *fopt)
M0_INTERNAL int m0_net_buffer_pool_provision(struct m0_net_buffer_pool *pool, uint32_t buf_nr)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
void m0_fop_put_lock(struct m0_fop *fop)
static struct m0_fop * fop
M0_INTERNAL void m0_rwlock_read_lock(struct m0_rwlock *lock)
static bool ios_start_async_cb(struct m0_clink *clink)
M0_INTERNAL int32_t m0_net_domain_get_max_buffer_segments(struct m0_net_domain *dom)
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
struct m0_fop * m0_rpc_item_to_fop(const struct m0_rpc_item *item)
static int _ios_cob_getattr_async(struct m0_rpc_session *rpc_session, struct m0_fid *cob_fid, const struct m0_fid *gfid, struct m0_cob_attr *attr, uint32_t index, uint32_t cob_type, void(*cb)(void *arg, int rc), void *arg)
M0_INTERNAL void m0_ios_unregister(void)
M0_INTERNAL bool m0_is_cob_getattr_fop(const struct m0_fop *fop)
M0_TL_DESCR_DEFINE(bufferpools, "rpc machines associated with reqh", M0_INTERNAL, struct m0_rios_buffer_pool, rios_bp_linkage, rios_bp_magic, M0_IOS_BUFFER_POOL_MAGIC, M0_IOS_BUFFER_POOL_HEAD_MAGIC)
static struct bulkio_params * bp
M0_INTERNAL void m0_rwlock_read_unlock(struct m0_rwlock *lock)
struct m0_rpc_conn imc_conn
struct m0_ios_mds_conn * imc_map[M0T1FS_MAX_NR_MDS]
M0_INTERNAL void m0_fid_convert_gob2cob(const struct m0_fid *gob_fid, struct m0_fid *cob_fid, uint32_t device_id)
M0_INTERNAL void m0_ios_start_sm_exec(struct m0_ios_start_sm *ios_sm)
#define m0_tl_for(name, head, obj)
M0_INTERNAL void m0_chan_fini_lock(struct m0_chan *chan)
M0_INTERNAL int m0_ios_create_buffer_pool(struct m0_reqh_service *service)
struct m0_rpc_item f_item
M0_INTERNAL int m0_net_buffer_pool_init(struct m0_net_buffer_pool *pool, struct m0_net_domain *ndom, uint32_t threshold, uint32_t seg_nr, m0_bcount_t seg_size, uint32_t colours, unsigned shift, bool dont_dump)
void m0_reqh_service_type_unregister(struct m0_reqh_service_type *rstype)
static struct m0_reqh_service * service[REQH_IN_UT_MAX]
M0_INTERNAL void m0_ios_start_lock(struct m0_ios_start_sm *ios_sm)
M0_INTERNAL struct m0_motr * m0_cs_ctx_get(struct m0_reqh *reqh)
static struct m0_rpc_machine rpc_machine
static void mds_op_release(struct m0_ref *ref)
#define m0_tl_exists(name, var, head,...)
M0_INTERNAL int m0_ios_getattr_async(struct m0_reqh *reqh, const struct m0_fid *gfid, struct m0_cob_attr *attr, uint64_t index, void(*cb)(void *arg, int rc), void *arg)
static int ios_start_async(struct m0_reqh_service_start_async_ctx *asc)
static const struct m0_reqh_service_type_ops ios_type_ops
static void ios_prepare_to_stop(struct m0_reqh_service *service)
const struct m0_reqh_service_ops * rs_ops