23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_RPC 78 fom = &
gen->ssf_fom_generic;
105 if (reply_fopt ==
NULL || fom_ops ==
NULL) {
220 fop_rep =
fom->fo_rep_fop;
244 uniq_fid = &
fom->fo_service->rs_service_fid;
248 if (est_conn !=
NULL) {
339 fop_rep =
fom->fo_rep_fop;
396 uniq_fid = &
fom->fo_service->rs_service_fid;
496 if (
gen->ssf_term_session ==
NULL)
508 "wait for session to become idle",
609 fop_rep =
fom->fo_rep_fop;
634 if (
gen->ssf_term_session ==
NULL) {
677 reply->ctr_rc = -EALREADY;
680 reply->ctr_rc = -EPERM;
static struct m0_rpc_session session0
uint32_t m0_fop_opcode(const struct m0_fop *fop)
M0_INTERNAL void m0_rpc_session_fini_locked(struct m0_rpc_session *session)
struct m0_fop_type m0_rpc_fop_session_terminate_rep_fopt
static int fom_timeout(struct m0_fom *fom)
const struct m0_fom_ops m0_rpc_fom_conn_terminate_ops
static struct m0_addb2_mach * m
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
M0_INTERNAL struct m0_rpc_conn * m0_rpc_machine_find_conn(const struct m0_rpc_machine *machine, const struct m0_rpc_item *item)
static struct m0_sm_group * grp
#define M0_LOG(level,...)
static int session_gen_fom_create(struct m0_fop *fop, struct m0_fom **m, struct m0_reqh *reqh)
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
struct m0_fom_type_ops m0_rpc_fom_session_establish_type_ops
M0_EXTERN struct m0_rpc_session * m0_rpc_conn_session0(const struct m0_rpc_conn *conn)
struct m0_fop_type m0_rpc_fop_session_establish_rep_fopt
int(* fto_create)(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
const struct m0_fom_ops m0_rpc_fom_session_establish_ops
void * m0_fop_data(const struct m0_fop *fop)
struct m0_fom_type_ops m0_rpc_fom_session_terminate_type_ops
M0_INTERNAL void m0_fom_wait_on(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
M0_INTERNAL int m0_rpc_rcv_conn_terminate(struct m0_rpc_conn *conn)
#define container_of(ptr, type, member)
static struct m0_rpc_item * item
M0_INTERNAL struct m0_rpc_session * m0_rpc_session_pop(const struct m0_rpc_conn *conn)
M0_INTERNAL bool m0_rpc_conn_invariant(const struct m0_rpc_conn *conn)
M0_INTERNAL uint64_t m0_rpc_id_generate(const struct m0_fid *uniq_fid)
struct m0_fom_type ft_fom_type
static const struct m0_rpc_item_ops conn_terminate_reply_item_ops
struct m0_sm_group rm_sm_grp
static struct m0_sm_ast ast[NR]
M0_INTERNAL int m0_fom_timeout_wait_on(struct m0_fom_timeout *to, struct m0_fom *fom, m0_time_t deadline)
void m0_fom_init(struct m0_fom *fom, const struct m0_fom_type *fom_type, const struct m0_fom_ops *ops, struct m0_fop *fop, struct m0_fop *reply, struct m0_reqh *reqh)
M0_INTERNAL bool m0_rpc_machine_is_locked(const struct m0_rpc_machine *machine)
struct m0_fop_type * f_type
const struct m0_fom_ops m0_rpc_fom_session_terminate_ops
struct m0_rpc_machine * c_rpc_machine
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_rpc_machine_unlock(struct m0_rpc_machine *machine)
M0_INTERNAL void session_state_set(struct m0_rpc_session *session, int state)
static void conn_cleanup_ast(struct m0_sm_group *grp, struct m0_sm_ast *ast)
#define M0_AMB(obj, ptr, field)
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
M0_INTERNAL int m0_rpc_fom_conn_terminate_tick(struct m0_fom *fom)
M0_INTERNAL void m0_rpc_session_hold_busy(struct m0_rpc_session *session)
void m0_fom_fini(struct m0_fom *fom)
struct m0_rpc_item_header2 ri_header
static struct m0_fop reply_fop
M0_INTERNAL int m0_rpc_fom_session_terminate_tick(struct m0_fom *fom)
struct m0_fom_type_ops m0_rpc_fom_conn_establish_type_ops
M0_INTERNAL int m0_rpc_rcv_conn_init(struct m0_rpc_conn *conn, struct m0_net_end_point *ep, struct m0_rpc_machine *machine, const struct m0_uint128 *uuid)
M0_INTERNAL int session_state(const struct m0_rpc_session *session)
struct m0_fom_type_ops m0_rpc_fom_conn_terminate_type_ops
M0_INTERNAL struct m0_rpc_machine * session_machine(const struct m0_rpc_session *s)
M0_INTERNAL size_t m0_rpc_session_default_home_locality(const struct m0_fom *fom)
void m0_rpc_reply_post(struct m0_rpc_item *request, struct m0_rpc_item *reply)
void(* rio_sent)(struct m0_rpc_item *item)
struct m0_rpc_machine machine
static struct fdmi_ctx ctx
static int rpc_tick_ret(struct m0_rpc_session *session, struct m0_fom *fom, int next_state)
static void session_gen_fom_fini(struct m0_fom *fom)
struct m0_fop * m0_fop_reply_alloc(struct m0_fop *req, struct m0_fop_type *rept)
M0_INTERNAL void m0_rpc_conn_terminate_reply_sent(struct m0_rpc_conn *conn)
M0_INTERNAL void conn_state_set(struct m0_rpc_conn *conn, int state)
M0_INTERNAL void m0_fom_timeout_fini(struct m0_fom_timeout *to)
struct m0_fop_type m0_rpc_fop_conn_terminate_fopt
struct m0_fop_type m0_rpc_fop_session_establish_fopt
struct m0_fop_type m0_rpc_fop_conn_establish_rep_fopt
#define M0_FI_ENABLED(tag)
M0_INTERNAL void m0_rpc_machine_lock(struct m0_rpc_machine *machine)
#define M0_ALLOC_PTR(ptr)
const struct m0_rpc_item_ops * ri_ops
m0_time_t m0_time_from_now(uint64_t secs, long ns)
M0_INTERNAL int m0_rpc_session_init_locked(struct m0_rpc_session *session, struct m0_rpc_conn *conn)
static void conn_terminate_reply_sent_cb(struct m0_rpc_item *item)
struct m0_rpc_session * ri_session
const struct m0_fom_ops m0_rpc_fom_conn_establish_ops
static struct m0_fop * fop
void(* fo_fini)(struct m0_fom *fom)
M0_INTERNAL int m0_rpc_fom_session_establish_tick(struct m0_fom *fom)
M0_INTERNAL int m0_rpc_rcv_session_terminate(struct m0_rpc_session *session)
void m0_fom_phase_set(struct m0_fom *fom, int phase)
M0_INTERNAL void m0_fom_timeout_init(struct m0_fom_timeout *to)
struct m0_fop_type m0_rpc_fop_session_terminate_fopt
struct m0_rpc_machine * ri_rmachine
static struct m0_dtm_oper_descr reply
void m0_fop_put(struct m0_fop *fop)
struct m0_rpc_item f_item
struct m0_fop_type m0_rpc_fop_conn_establish_fopt
M0_INTERNAL int m0_rpc_fom_conn_establish_tick(struct m0_fom *fom)
M0_INTERNAL struct m0_rpc_session * m0_rpc_session_search_and_pop(const struct m0_rpc_conn *conn, uint64_t session_id)
static struct m0_rpc_conn * item2conn(const struct m0_rpc_item *item)
static int conn_state(const struct m0_rpc_conn *conn)
struct m0_fop_type m0_rpc_fop_conn_terminate_rep_fopt
#define M0_IMPOSSIBLE(fmt,...)