Go to the source code of this file.
|
static struct drlink_fom * | fom2drlink_fom (struct m0_fom *fom) |
|
static size_t | drlink_fom_locality (const struct m0_fom *fom) |
|
static void | drlink_fom_fini (struct m0_fom *fom) |
|
static int | drlink_fom_tick (struct m0_fom *fom) |
|
M0_INTERNAL int | m0_dtm0_rpc_link_mod_init (void) |
|
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) |
|
static void | dtm0_req_fop_fini (struct dtm0_req_fop *req) |
|
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 void | co_long_write_lock (struct m0_co_context *context, struct m0_long_lock *lk, struct m0_long_lock_link *link, int next_phase) |
|
static void | co_rpc_link_connect (struct m0_co_context *context, struct m0_rpc_link *rlink, struct m0_fom *fom, int next_phase) |
|
static int | find_or_add (struct m0_dtm0_service *dtms, const struct m0_fid *tgt, struct dtm0_process **out) |
|
static struct drlink_fom * | item2drlink_fom (struct m0_rpc_item *item) |
|
static void | dtm0_rlink_rpc_item_reply_cb (struct m0_rpc_item *item) |
|
static int | dtm0_process_rlink_reinit (struct dtm0_process *proc, struct drlink_fom *df) |
|
static int | dtm0_process_rlink_send (struct dtm0_process *proc, struct drlink_fom *drf) |
|
static enum dpr_state | dpr_state_infer (struct dtm0_process *proc) |
|
static void | drlink_addb_drf2item_relate (struct drlink_fom *drf) |
|
static void | drlink_addb_drf2parent_relate (struct drlink_fom *drf) |
|
static void | drlink_coro_fom_tick (struct m0_co_context *context) |
|
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) |
|
◆ _ST
#define _ST |
( |
|
name, |
|
|
|
allowed |
|
) |
| |
Value: .sd_allowed = allowed \
}
◆ M0_TRACE_SUBSYSTEM
#define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DTM0 |
◆ dpr_state
An aggregated status of a dtm0_process:dop_rlink
Enumerator |
---|
DPR_TRANSIENT | Link is not alive but we can resurrect it.
|
DPR_ONLINE | Link is alive and ready to transfer items.
|
DPR_FAILED | Link is permanently dead.
|
Definition at line 375 of file drlink.c.
◆ drlink_fom_state
Enumerator |
---|
DRF_INIT | |
DRF_DONE | |
DRF_LOCKING | |
DRF_CONNECTING | |
DRF_SENDING | |
DRF_WAITING_FOR_REPLY | |
DRF_FAILED | |
DRF_NR | |
Definition at line 253 of file drlink.c.
◆ co_long_write_lock()
◆ co_rpc_link_connect()
◆ dpr_state_infer()
◆ drlink_addb_drf2item_relate()
static void drlink_addb_drf2item_relate |
( |
struct drlink_fom * |
drf | ) |
|
|
static |
◆ drlink_addb_drf2parent_relate()
static void drlink_addb_drf2parent_relate |
( |
struct drlink_fom * |
drf | ) |
|
|
static |
◆ drlink_coro_fom_tick()
static void drlink_coro_fom_tick |
( |
struct m0_co_context * |
context | ) |
|
|
static |
◆ drlink_fom_fini()
static void drlink_fom_fini |
( |
struct m0_fom * |
fom | ) |
|
|
static |
◆ drlink_fom_init()
◆ drlink_fom_locality()
static size_t drlink_fom_locality |
( |
const struct m0_fom * |
fom | ) |
|
|
static |
◆ drlink_fom_tick()
static int drlink_fom_tick |
( |
struct m0_fom * |
fom | ) |
|
|
static |
◆ dtm0_process_rlink_reinit()
◆ dtm0_process_rlink_send()
◆ dtm0_req_fop_dup()
◆ dtm0_req_fop_fini()
◆ dtm0_rlink_rpc_item_reply_cb()
static void dtm0_rlink_rpc_item_reply_cb |
( |
struct m0_rpc_item * |
item | ) |
|
|
static |
◆ find_or_add()
◆ fom2drlink_fom()
◆ item2drlink_fom()
◆ m0_dtm0_req_post()
Asynchronously send a DTM0 message to a remote DTM0 service.
- Parameters
-
svc | local DTM0 service. |
op | BE op to wait for completion. Could be NULL. |
req | DTM0 message to be sent. |
tgt | FID of the remote DTM0 service. |
parent_fom | FOM that caused this DTM0 message (used by ADDB). |
wait_for_ack | Determines whether the local service should wait for a reply from the counterpart. NOTE: it has nothing to do with blocking API. It just lets the FOM to revolve one more time. TODO: This flag will likely be removed after testing with HA. TODO: Add a co_op or clink to support blocking mode. |
- Returns
- An error is returned if there is not enough resources (-ENOMEM) or if the remote service does not exist in the conf cache (-ENOENT).
Definition at line 536 of file drlink.c.
◆ m0_dtm0_rpc_link_mod_fini()
M0_INTERNAL void m0_dtm0_rpc_link_mod_fini |
( |
void |
| ) |
|
◆ m0_dtm0_rpc_link_mod_init()
M0_INTERNAL int m0_dtm0_rpc_link_mod_init |
( |
void |
| ) |
|
◆ drlink_fom_conf
Initial value:= {
.scf_name = "m0_dtm0_drlink_fom",
}
static struct m0_sm_state_descr drlink_fom_states[]
Definition at line 75 of file drlink.c.
◆ drlink_fom_ops
Initial value:= {
}
static void drlink_fom_fini(struct m0_fom *fom)
static size_t drlink_fom_locality(const struct m0_fom *fom)
static int drlink_fom_tick(struct m0_fom *fom)
Definition at line 67 of file drlink.c.
◆ drlink_fom_states
◆ drlink_fom_type
◆ drlink_fom_type_ops
◆ dtm0_req_fop_rlink_rpc_item_ops
Initial value:= {
}
static void dtm0_rlink_rpc_item_reply_cb(struct m0_rpc_item *item)
Definition at line 337 of file drlink.c.