23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_RPC 116 "Session isn't established. Hence, not posting the item",
123 "Session is cancelled. Hence, not posting the item",
150 200 * 1000 * 1000),
NULL);
159 reply->ri_deadline = 0;
248 segs_nr,
seg_size, tm_nr, M0_SEG_SHIFT,
260 return M0_RC(-ENOMEM);
328 #undef M0_TRACE_SUBSYSTEM static m0_bcount_t seg_size
M0_INTERNAL m0_bcount_t m0_rpc_session_get_max_item_size(const struct m0_rpc_session *session)
M0_INTERNAL uint32_t m0_rpc_max_segs_nr(struct m0_net_domain *ndom)
const struct m0_net_xprt_ops * nx_ops
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_time_t ri_resend_interval
M0_INTERNAL void m0_rpc_oneway_item_post(const struct m0_rpc_conn *conn, struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_conn_is_rcv(const struct m0_rpc_conn *conn)
static struct m0_net_buffer_pool app_pool
enum m0_rpc_item_priority ri_prio
M0_INTERNAL uint32_t m0_rpc_max_recv_msgs(struct m0_net_domain *ndom, m0_bcount_t rpc_size)
const m0_time_t M0_TIME_NEVER
M0_INTERNAL int m0_rpc_item_module_init(void)
#define M0_LOG(level,...)
M0_INTERNAL void m0_net_buffer_pool_unlock(struct m0_net_buffer_pool *pool)
M0_INTERNAL void m0_rpc_item_failed(struct m0_rpc_item *item, int32_t rc)
const struct m0_net_buffer_pool_ops * nbp_ops
void m0_rpc_item_get(struct m0_rpc_item *item)
M0_INTERNAL bool m0_clink_is_armed(const struct m0_clink *link)
M0_INTERNAL const char * item_kind(const struct m0_rpc_item *item)
M0_INTERNAL m0_time_t m0_rpc__down_timeout(void)
m0_time_t m0_time(uint64_t secs, long ns)
static struct m0_rpc_item * item
M0_INTERNAL void m0_net_domain_buffer_pool_not_empty(struct m0_net_buffer_pool *pool)
struct m0_rpc_chan * c_rpcchan
uint32_t(* xo_rpc_max_recv_msgs)(struct m0_net_domain *ndom, m0_bcount_t rpc_size)
M0_INTERNAL bool m0_rpc_session_is_cancelled(struct m0_rpc_session *session)
M0_INTERNAL bool m0_rpc_item_is_request(const struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_session_invariant(const struct m0_rpc_session *session)
#define M0_ASSERT_EX(cond)
M0_INTERNAL void m0_rpc_item_send_reply(struct m0_rpc_item *req, struct m0_rpc_item *reply)
m0_bcount_t m0_rpc_item_size(struct m0_rpc_item *item)
M0_INTERNAL void m0_rpc_session_module_fini(void)
M0_INTERNAL void m0_rpc_link_module_fini(void)
M0_INTERNAL bool m0_rpc_machine_is_locked(const struct m0_rpc_machine *machine)
M0_INTERNAL int m0_rpc_reply_timedwait(struct m0_clink *clink, const m0_time_t timeout)
struct m0_rpc_machine * c_rpc_machine
#define M0_ERR_INFO(rc, fmt,...)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_rpc_machine_unlock(struct m0_rpc_machine *machine)
M0_INTERNAL void m0_rpc_item_module_fini(void)
M0_INTERNAL void m0_rpc_item_sm_init(struct m0_rpc_item *item, enum m0_rpc_item_dir dir)
const struct m0_net_xprt * nd_xprt
M0_INTERNAL bool m0_rpc_item_is_oneway(const struct m0_rpc_item *item)
M0_INTERNAL void m0_rpc_item_send(struct m0_rpc_item *item)
m0_time_t m0_time_now(void)
M0_INTERNAL m0_bcount_t m0_rpc_max_msg_size(struct m0_net_domain *ndom, m0_bcount_t rpc_size)
struct m0_rpc_item_header2 ri_header
M0_INTERNAL int m0_rpc_net_buffer_pool_setup(struct m0_net_domain *ndom, struct m0_net_buffer_pool *app_pool, uint32_t bufs_nr, uint32_t tm_nr)
uint32_t rm_min_recv_size
M0_INTERNAL uint32_t m0_rpc_bufs_nr(uint32_t len, uint32_t tms_nr)
void(* nbpo_not_empty)(struct m0_net_buffer_pool *)
M0_INTERNAL void m0_net_buffer_pool_lock(struct m0_net_buffer_pool *pool)
M0_INTERNAL int session_state(const struct m0_rpc_session *session)
static const struct m0_net_buffer_pool_ops b_ops
const struct m0_rpc_item_type * ri_type
M0_INTERNAL struct m0_rpc_machine * session_machine(const struct m0_rpc_session *s)
M0_INTERNAL void m0_cookie_init(struct m0_cookie *cookie, const uint64_t *obj)
void m0_rpc_reply_post(struct m0_rpc_item *request, struct m0_rpc_item *reply)
static struct m0_clink clink[RDWR_REQUEST_MAX]
struct m0_rpc_machine machine
M0_INTERNAL int m0_rpc_session_module_init(void)
M0_INTERNAL void m0_rpc_frm_enq_item(struct m0_rpc_frm *frm, struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_machine_is_not_locked(const struct m0_rpc_machine *machine)
M0_INTERNAL void m0_rpc_service_unregister(void)
#define M0_FI_ENABLED(tag)
M0_INTERNAL void m0_rpc_machine_lock(struct m0_rpc_machine *machine)
M0_INTERNAL int m0_rpc_init(void)
M0_INTERNAL bool m0_chan_timedwait(struct m0_clink *link, const m0_time_t abs_timeout)
static void rpc_buffer_pool_low(struct m0_net_buffer_pool *bp)
m0_time_t m0_time_from_now(uint64_t secs, long ns)
static uint32_t max32u(uint32_t a, uint32_t b)
struct m0_rpc_session * ri_session
m0_bcount_t(* xo_rpc_max_seg_size)(struct m0_net_domain *ndom)
M0_INTERNAL void m0_cookie_new(uint64_t *gen)
M0_INTERNAL int m0_net_buffer_pool_provision(struct m0_net_buffer_pool *pool, uint32_t buf_nr)
m0_bcount_t(* xo_rpc_max_msg_size)(struct m0_net_domain *ndom, m0_bcount_t rpc_size)
struct m0_fop * m0_rpc_item_to_fop(const struct m0_rpc_item *item)
M0_INTERNAL int m0_rpc_link_module_init(void)
M0_INTERNAL void m0_rpc_fini(void)
static struct bulkio_params * bp
void m0_rpc_net_buffer_pool_cleanup(struct m0_net_buffer_pool *app_pool)
M0_INTERNAL void m0_rpc_oneway_item_post_locked(const struct m0_rpc_conn *conn, struct m0_rpc_item *item)
M0_INTERNAL bool m0_rpc_conn_is_snd(const struct m0_rpc_conn *conn)
struct m0_rpc_machine * ri_rmachine
static struct m0_dtm_oper_descr reply
M0_INTERNAL m0_bcount_t m0_rpc_max_seg_size(struct m0_net_domain *ndom)
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)
M0_INTERNAL int m0_rpc_service_register(void)
M0_INTERNAL int m0_rpc__post_locked(struct m0_rpc_item *item)
struct m0_rpc_conn * s_conn
static struct m0_rpc_conn * item2conn(const struct m0_rpc_item *item)
uint32_t(* xo_rpc_max_segs_nr)(struct m0_net_domain *ndom)
int m0_nanosleep(const m0_time_t req, m0_time_t *rem)