22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DTM0 115 dst->dtr_msg =
src->dtr_msg;
131 const struct m0_fom *parent_fom,
145 reqh =
svc->dos_generic.rs_reqh;
149 if (owned_req ==
NULL)
177 fom->df_wait_for_ack = wait_for_ack;
238 if (process ==
NULL) {
272 .sd_name =
"DRF_DONE",
278 .sd_name =
"DRF_FAILED",
284 #define _ST(name, allowed) \ 287 .sd_allowed = allowed \ 433 #define F M0_CO_FRAME_DATA 540 const struct m0_fom *parent_fom,
M0_INTERNAL int m0_rpc_post(struct m0_rpc_item *item)
M0_INTERNAL void m0_long_lock_link_init(struct m0_long_lock_link *link, struct m0_fom *fom, struct m0_long_lock_addb2 *addb2)
uint32_t m0_fop_opcode(const struct m0_fop *fop)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL int dtm0_process_init(struct dtm0_process *proc, struct m0_dtm0_service *dtms, const struct m0_fid *rem_svc_fid)
enum m0_rpc_item_priority ri_prio
#define M0_FOM_LONG_LOCK_RETURN(rc)
static void drlink_addb_drf2item_relate(struct drlink_fom *drf)
const m0_time_t M0_TIME_NEVER
static struct io_request req
M0_INTERNAL int m0_rpc_link_init(struct m0_rpc_link *rlink, struct m0_rpc_machine *mach, struct m0_fid *svc_fid, const char *ep, uint64_t max_rpcs_in_flight)
struct m0_reqh_service_type dtm0_service_type
static void drlink_fom_fini(struct m0_fom *fom)
M0_INTERNAL void m0_co_op_reset(struct m0_co_op *op)
static enum named_outcome outcome(const struct put_del_ver_case *c)
static const struct m0_sm_conf drlink_fom_conf
static struct drlink_fom * item2drlink_fom(struct m0_rpc_item *item)
static struct m0_fom_type drlink_fom_type
M0_INTERNAL void m0_co_op_init(struct m0_co_op *op)
static struct m0_addb2_mach * mach
M0_INTERNAL void m0_rpc_link_fini(struct m0_rpc_link *rlink)
M0_INTERNAL void m0_fom_wait_on(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
M0_INTERNAL void m0_long_write_unlock(struct m0_long_lock *lock, struct m0_long_lock_link *link)
#define M0_CO_START(context)
M0_INTERNAL struct dtm0_process * dtm0_service_process__lookup(struct m0_reqh_service *reqh_dtm0_svc, const struct m0_fid *remote_dtm0)
M0_INTERNAL void m0_chan_lock(struct m0_chan *ch)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_ADDB2_ADD(M0_AVI_FS_CREATE, new_fid.f_container, new_fid.f_key, mode, rc)
#define M0_CO_END(context)
static void drlink_addb_drf2parent_relate(struct drlink_fom *drf)
static struct m0_rpc_item * item
static int drlink_fom_init(struct drlink_fom *fom, struct m0_dtm0_service *svc, struct m0_be_op *op, const struct m0_fid *tgt, const struct dtm0_req_fop *req, const struct m0_fom *parent_fom, bool wait_for_ack)
static struct m0_sm_state_descr drlink_fom_states[]
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_long_write_lock(struct m0_long_lock *lk, struct m0_long_lock_link *link, int next_phase)
static void drlink_coro_fom_tick(struct m0_co_context *context)
struct m0_fid dop_rserv_fid
static struct drlink_fom * fom2drlink_fom(struct m0_fom *fom)
return M0_ERR(-EOPNOTSUPP)
#define M0_CO_YIELD_RC(context, rc)
M0_INTERNAL void m0_dtm0_rpc_link_mod_fini(void)
static struct dtm0_req_fop * dtm0_req_fop_dup(const struct dtm0_req_fop *src)
#define M0_AMB(obj, ptr, field)
void m0_fom_fini(struct m0_fom *fom)
M0_INTERNAL void m0_co_op_fini(struct m0_co_op *op)
struct m0_long_lock dop_llock
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
static void co_long_write_lock(struct m0_co_context *context, struct m0_long_lock *lk, struct m0_long_lock_link *link, int next_phase)
void m0_fom_phase_move(struct m0_fom *fom, int32_t rc, int phase)
M0_INTERNAL void m0_long_lock_link_fini(struct m0_long_lock_link *link)
M0_INTERNAL int m0_co_op_tick_ret(struct m0_co_op *op, struct m0_fom *fom, int next_state)
struct m0_tl rh_rpc_machines
M0_INTERNAL void m0_fom_type_init(struct m0_fom_type *type, uint64_t id, const struct m0_fom_type_ops *ops, const struct m0_reqh_service_type *svc_type, const struct m0_sm_conf *sm)
M0_INTERNAL bool m0_rpc_link_is_connected(const struct m0_rpc_link *rlink)
M0_INTERNAL int m0_dtm0_rpc_link_mod_init(void)
struct m0_rpc_item * ri_reply
static void dtm0_rlink_rpc_item_reply_cb(struct m0_rpc_item *item)
M0_INTERNAL void m0_be_op_done(struct m0_be_op *op)
static int dtm0_process_rlink_reinit(struct dtm0_process *proc, struct drlink_fom *df)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
struct m0_fop_type dtm0_redo_fop_fopt
static size_t drlink_fom_locality(const struct m0_fom *fom)
struct m0_rpc_link dop_rlink
M0_INTERNAL int m0_buf_copy(struct m0_buf *dest, const struct m0_buf *src)
M0_INTERNAL void m0_chan_unlock(struct m0_chan *ch)
static void co_rpc_link_connect(struct m0_co_context *context, struct m0_rpc_link *rlink, struct m0_fom *fom, int next_phase)
M0_INTERNAL void m0_co_op_active(struct m0_co_op *op)
M0_INTERNAL bool m0_long_is_write_locked(struct m0_long_lock *lock, const struct m0_fom *fom)
void(* rio_replied)(struct m0_rpc_item *item)
#define M0_CO_FUN(context, function)
static int find_or_add(struct m0_dtm0_service *dtms, const struct m0_fid *tgt, struct dtm0_process **out)
M0_INTERNAL int m0_dtm0_tx_desc_copy(const struct m0_dtm0_tx_desc *src, struct m0_dtm0_tx_desc *dst)
static int dtm0_process_rlink_send(struct dtm0_process *proc, struct drlink_fom *drf)
int32_t m0_rpc_item_error(const struct m0_rpc_item *item)
struct m0_pdclust_tgt_addr tgt
M0_INTERNAL void m0_rpc_link_connect_async(struct m0_rpc_link *rlink, m0_time_t abs_timeout, struct m0_clink *wait_clink)
M0_INTERNAL void m0_be_op_active(struct m0_be_op *op)
#define M0_ALLOC_PTR(ptr)
const struct m0_rpc_item_ops * ri_ops
M0_INTERNAL int m0_co_context_init(struct m0_co_context *context)
struct m0_rpc_session * ri_session
static struct m0_net_test_service svc
static const struct m0_fom_type_ops drlink_fom_type_ops
void m0_fop_put_lock(struct m0_fop *fop)
static struct m0_fop * fop
struct m0_fop * m0_rpc_item_to_fop(const struct m0_rpc_item *item)
M0_INTERNAL void m0_fom_queue(struct m0_fom *fom)
void(* fo_fini)(struct m0_fom *fom)
#define M0_CO_REENTER(context,...)
struct m0_rpc_session rlk_sess
static const struct m0_fom_ops drlink_fom_ops
const struct m0_rpc_item_ops dtm0_req_fop_rlink_rpc_item_ops
void m0_fom_phase_set(struct m0_fom *fom, int phase)
M0_INTERNAL bool m0_fid_is_valid(const struct m0_fid *fid)
struct m0_rpc_machine * ri_rmachine
static struct m0_dtm_oper_descr reply
M0_INTERNAL uint64_t m0_sm_id_get(const struct m0_sm *sm)
M0_INTERNAL int m0_dtm0_req_post(struct m0_dtm0_service *svc, struct m0_be_op *op, const struct dtm0_req_fop *req, const struct m0_fid *tgt, const struct m0_fom *parent_fom, bool wait_for_ack)
struct m0_rpc_item f_item
static void dtm0_req_fop_fini(struct dtm0_req_fop *req)
M0_INTERNAL void m0_dtm0_tx_desc_fini(struct m0_dtm0_tx_desc *td)
struct m0_pdclust_src_addr src
struct m0_dtm0_service * df_svc
struct m0_reqh_service dos_generic
static int drlink_fom_tick(struct m0_fom *fom)
struct m0_fop_type dtm0_req_fop_fopt
static void unlock(struct m0_long_lock *lock, struct m0_long_lock_link *link, bool check_ownership)
const m0_time_t M0_TIME_IMMEDIATELY
M0_INTERNAL void m0_co_op_done(struct m0_co_op *op)
static enum dpr_state dpr_state_infer(struct dtm0_process *proc)
struct m0_co_context df_co
#define _ST(name, allowed)
struct m0_fop * m0_fop_alloc(struct m0_fop_type *fopt, void *data, struct m0_rpc_machine *mach)