Motr  M0
Distributed transaction manager

Data Structures

struct  m0_dtm_catalogue
 
struct  m0_dtm_domain
 
struct  m0_dtm_domain_cohort
 
struct  m0_dtm
 
struct  m0_dtx
 
struct  m0_dtm_dtx_party
 
struct  m0_dtm_dtx
 
struct  m0_dtm_dtx_srv
 
struct  m0_dtm_factory
 
struct  m0_dtm_factory_ops
 
struct  m0_dtm_factory_type
 
struct  m0_dtm_fol
 
struct  m0_dtm_fol_remote
 
struct  m0_dtm_history
 
struct  m0_dtm_history_ops
 
struct  m0_dtm_history_type
 
struct  m0_dtm_history_type_ops
 
struct  m0_dtm_controlh
 
struct  m0_dtm_ltx
 
struct  m0_dtm_hi
 
struct  m0_dtm_hi_ops
 
struct  m0_dtm_up
 
struct  m0_dtm_op
 
struct  m0_dtm_op_ops
 
struct  m0_dtm_nu
 
struct  m0_dtm_object
 
struct  m0_dtm_oper
 
struct  m0_dtm_oper_updates
 
struct  m0_dtm_oper_descr
 
struct  m0_dtm_remote
 
struct  m0_dtm_remote_ops
 
struct  m0_dtm_rpc_remote
 
struct  m0_dtm_notice
 
struct  m0_dtm_local_remote
 
struct  m0_dtm_update_comm
 
struct  m0_dtm_update
 
struct  m0_dtm_update_ops
 
struct  m0_dtm_update_type
 
struct  m0_dtm_update_data
 
struct  m0_dtm_history_id
 
struct  m0_dtm_update_descr
 
struct  ctx
 
struct  m0_dtm0_ts
 
struct  m0_dtm0_clk_src
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define up_for(o, up)
 
#define up_endfor
 
#define hi_for(h, up)
 
#define hi_endfor
 
#define oper_for(o, update)
 
#define oper_endfor
 
#define history_for(h, update)
 
#define history_endfor
 
#define UPDATE_UP(update)
 
#define UP_HISTORY(up)   hi_history((up)->up_hi)
 
#define UPDATE_HISTORY(update)   UP_HISTORY(&(update)->upd_up)
 
#define UPDATE_REM(update)   (UPDATE_HISTORY(update)->h_rem)
 
#define HISTORY_DTM(history)   (nu_dtm((history)->h_hi.hi_nu))
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_DTM_UPDATE_DATA(label, rule, ver, orig_ver)
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM
 
#define M0_DTM0_TS_MIN   (struct m0_dtm0_ts) { .dts_phys = 1 }
 
#define M0_DTM0_TS_MAX   (struct m0_dtm0_ts) { .dts_phys = (UINT64_MAX - 1) }
 
#define M0_DTM0_TS_INIT   (struct m0_dtm0_ts) { .dts_phys = UINT64_MAX }
 
#define M0_DTM0_TS_NONE   (struct m0_dtm0_ts) { .dts_phys = 0 }
 
#define DTS0_P(_ts)   ((_ts)->dts_phys)
 
#define DTS0_F   "@%" PRIu64
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM0
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM0
 

Typedefs

typedef struct m0_dtm_historym0_dtm_catalogue_alloc_t(struct m0_dtm *, const struct m0_uint128 *, void *)
 
typedef uint64_t m0_dtm_ver_t
 

Enumerations

enum  { M0_DTM_HISTORY_TYPE_NR = 256 }
 
enum  m0_dtx_state { M0_DTX_INVALID, M0_DTX_INIT, M0_DTX_OPEN, M0_DTX_DONE }
 
enum  { M0_DTM_HTYPE_DTX = 8, M0_DTM_HTYPE_DTX_SRV = 9 }
 
enum  { M0_DTM_HTYPE_FOL = 5, M0_DTM_HTYPE_FOL_REM = 6 }
 
enum  { H_NOOP = 1, H_CLOSE = 2 }
 
enum  m0_dtm_history_flags { M0_DHF_CLOSED = M0_DHF_LAST, M0_DHF_AMNESIA }
 
enum  { M0_DTM_HTYPE_LTX = 7 }
 
enum  m0_dtm_ver_cmp { LATE = -1, READY = 0, EARLY = +1, MISER }
 
enum  m0_dtm_state {
  M0_DOS_LIMBO, M0_DOS_FUTURE, M0_DOS_PREPARE, M0_DOS_INPROGRESS,
  M0_DOS_VOLATILE, M0_DOS_PERSISTENT, M0_DOS_STABLE, M0_DOS_NR
}
 
enum  m0_dtm_hi_flags {
  M0_DHF_SHARED = 1ULL << 0, M0_DHF_FULL = 1ULL << 1, M0_DHF_OWNED = 1ULL << 2, M0_DHF_BUSY = 1ULL << 3,
  M0_DHF_LAST = 1ULL << 4
}
 
enum  m0_dtm_up_rule {
  M0_DUR_INC, M0_DUR_SET, M0_DUR_NOT, M0_DUR_APP,
  M0_DUR_NR
}
 
enum  m0_dtm_oper_flags { M0_DOF_CLOSED = 1 << 0, M0_DOF_LAST = 1 << 1, M0_DOF_SENT = 1 << 2 }
 
enum  rem_rpc_notification { R_PERSISTENT = 1, R_FIXED = 2, R_RESET = 3, R_UNDO = 4 }
 
enum  m0_dtm_update_comm_state { M0_DUX_NEW, M0_DUX_INFLIGHT, M0_DUX_REPLIED }
 
enum  m0_dtm_update_comm_flags { M0_DUCF_REPLIED_CALLED = (1 << 0) }
 
enum  { M0_DTM_USER_UPDATE_BASE = 0x100000 }
 
enum  {
  OPER_NR = 3, UPDATE_NR = 15, REM_NR = 7, DTM_NR = REM_NR + 1,
  FAN_NR = UPDATE_NR/REM_NR + 1 + 2
}
 
enum  { HI_MAX = 32, OP_MAX = 32, UP_MAX = 1024 }
 
enum  { OPER_NR = 64, UPDATE_NR = 6, TGT_DELTA = 4 }
 
enum  { FOM_INIT = M0_FOM_PHASE_INIT, FOM_READY = M0_FOM_PHASE_NR }
 
enum  m0_dtm0_cs_types { M0_DTM0_CS_PHYS }
 
enum  m0_dtm0_ts_ord { M0_DTS_LT = -1, M0_DTS_EQ = 0, M0_DTS_GT = 1 }
 

Functions

 M0_TL_DESCR_DEFINE (cat, "catalogue", M0_INTERNAL, struct m0_dtm_history, h_catlink, h_hi.hi_ups.t_magic, M0_DTM_HI_MAGIX, M0_DTM_CAT_MAGIX)
 
 M0_TL_DEFINE (cat, M0_INTERNAL, struct m0_dtm_history)
 
M0_INTERNAL void m0_dtm_catalogue_init (struct m0_dtm_catalogue *cat)
 
M0_INTERNAL void m0_dtm_catalogue_fini (struct m0_dtm_catalogue *cat)
 
M0_INTERNAL int m0_dtm_catalogue_create (struct m0_dtm_catalogue *cat)
 
M0_INTERNAL int m0_dtm_catalogue_delete (struct m0_dtm_catalogue *cat)
 
M0_INTERNAL int m0_dtm_catalogue_lookup (struct m0_dtm_catalogue *cat, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
M0_INTERNAL int m0_dtm_catalogue_add (struct m0_dtm_catalogue *cat, struct m0_dtm_history *history)
 
M0_INTERNAL int m0_dtm_catalogue_del (struct m0_dtm_catalogue *cat, struct m0_dtm_history *history)
 
M0_INTERNAL int m0_dtm_catalogue_find (struct m0_dtm_catalogue *cat, struct m0_dtm *dtm, const struct m0_uint128 *id, m0_dtm_catalogue_alloc_t *alloc, void *datum, struct m0_dtm_history **out)
 
M0_INTERNAL int m0_dtm_domain_init (struct m0_dtm_domain *dom, uint32_t nr)
 
M0_INTERNAL void m0_dtm_domain_fini (struct m0_dtm_domain *dom)
 
M0_INTERNAL void m0_dtm_domain_add (struct m0_dtm_domain *dom, struct m0_dtm_domain_dest *dest)
 
M0_INTERNAL void m0_dtm_domain_open (struct m0_dtm_domain *dom)
 
M0_INTERNAL void m0_dtm_domain_close (struct m0_dtm_domain *dom)
 
M0_INTERNAL void m0_dtm_domain_connect (struct m0_dtm_domain *dom)
 
M0_INTERNAL void m0_dtm_domain_disconnect (struct m0_dtm_domain *dom)
 
M0_INTERNAL void m0_dtm_domain_cohort_init (struct m0_dtm_domain_cohort *coh)
 
M0_INTERNAL void m0_dtm_domain_cohort_fini (struct m0_dtm_domain_cohort *coh)
 
M0_INTERNAL int m0_dtm_domain_cohort_open (struct m0_dtm_domain_cohort *coh)
 
M0_INTERNAL int m0_dtm_domain_cohort_restart (struct m0_dtm_domain_cohort *coh)
 
M0_INTERNAL void m0_dtm_init (struct m0_dtm *dtm, struct m0_uint128 *id)
 
M0_INTERNAL void m0_dtm_fini (struct m0_dtm *dtm)
 
M0_INTERNAL void m0_dtx_init (struct m0_dtx *tx, struct m0_be_domain *be_domain, struct m0_sm_group *sm_group)
 
M0_INTERNAL void m0_dtx_prep (struct m0_dtx *tx, const struct m0_be_tx_credit *cred)
 
M0_INTERNAL void m0_dtx_open (struct m0_dtx *tx)
 
M0_INTERNAL void m0_dtx_opened (struct m0_dtx *tx)
 
M0_INTERNAL int m0_dtx_open_sync (struct m0_dtx *tx)
 
M0_INTERNAL void m0_dtx_done (struct m0_dtx *tx)
 
M0_INTERNAL int m0_dtx_done_sync (struct m0_dtx *tx)
 
M0_INTERNAL void m0_dtx_fini (struct m0_dtx *tx)
 
M0_INTERNAL int m0_dtm_global_init (void)
 
M0_INTERNAL void m0_dtm_global_fini (void)
 
M0_INTERNAL struct m0_dtmnu_dtm (struct m0_dtm_nu *nu)
 
M0_INTERNAL void dtm_lock (struct m0_dtm *dtm)
 
M0_INTERNAL void dtm_unlock (struct m0_dtm *dtm)
 
M0_INTERNAL int m0_dtx_fol_add (struct m0_dtx *tx)
 
 M0_TL_DESCR_DECLARE (hi, M0_EXTERN)
 
 M0_TL_DECLARE (hi, M0_EXTERN, struct m0_dtm_up)
 
 M0_TL_DESCR_DECLARE (op, M0_EXTERN)
 
 M0_TL_DECLARE (op, M0_EXTERN, struct m0_dtm_up)
 
 M0_TL_DESCR_DECLARE (history, M0_EXTERN)
 
 M0_TL_DECLARE (history, M0_EXTERN, struct m0_dtm_update)
 
 M0_TL_DESCR_DECLARE (oper, M0_EXTERN)
 
 M0_TL_DECLARE (oper, M0_EXTERN, struct m0_dtm_update)
 
 M0_TL_DESCR_DECLARE (cat, M0_EXTERN)
 
 M0_TL_DECLARE (cat, M0_EXTERN, struct m0_dtm_history)
 
 M0_TL_DESCR_DECLARE (exc, M0_EXTERN)
 
 M0_TL_DECLARE (exc, M0_EXTERN, struct m0_dtm_history)
 
M0_INTERNAL struct m0_dtm_historyhi_history (struct m0_dtm_hi *hi)
 
M0_INTERNAL struct m0_dtm_updateup_update (struct m0_dtm_up *up)
 
M0_INTERNAL m0_dtm_ver_t up_ver (const struct m0_dtm_up *up)
 
M0_INTERNAL bool op_state (const struct m0_dtm_op *op, enum m0_dtm_state state)
 
M0_INTERNAL void advance_try (const struct m0_dtm_op *op)
 
M0_INTERNAL void up_prepared (struct m0_dtm_up *up)
 
M0_INTERNAL void history_close (struct m0_dtm_history *history)
 
M0_INTERNAL void nu_lock (struct m0_dtm_nu *nu)
 
M0_INTERNAL void nu_unlock (struct m0_dtm_nu *nu)
 
M0_INTERNAL void oper_lock (const struct m0_dtm_oper *oper)
 
M0_INTERNAL void oper_unlock (const struct m0_dtm_oper *oper)
 
M0_INTERNAL void history_lock (const struct m0_dtm_history *history)
 
M0_INTERNAL void history_unlock (const struct m0_dtm_history *history)
 
M0_INTERNAL void update_reint (struct m0_dtm_update *update)
 
M0_INTERNAL struct m0_dtm_uphi_latest (struct m0_dtm_hi *hi)
 
M0_INTERNAL struct m0_dtm_uphi_earliest (struct m0_dtm_hi *hi)
 
M0_INTERNAL struct m0_dtm_uphi_find (struct m0_dtm_hi *hi, m0_dtm_ver_t ver)
 
M0_INTERNAL struct m0_dtm_uphistory_latest (struct m0_dtm_history *history)
 
M0_INTERNAL struct m0_dtm_uphistory_earliest (struct m0_dtm_history *history)
 
M0_INTERNAL m0_dtm_ver_t update_ver (const struct m0_dtm_update *update)
 
M0_INTERNAL bool up_is_earlier (struct m0_dtm_up *up0, struct m0_dtm_up *up1)
 
M0_INTERNAL bool update_is_earlier (struct m0_dtm_update *update0, struct m0_dtm_update *update1)
 
M0_INTERNAL int m0_dtm_remote_global_init (void)
 
M0_INTERNAL void m0_dtm_remote_global_fini (void)
 
M0_INTERNAL void oper_print (const struct m0_dtm_oper *oper)
 
M0_INTERNAL void update_print (const struct m0_dtm_update *update)
 
M0_INTERNAL void history_print (const struct m0_dtm_history *history)
 
M0_INTERNAL void history_print_header (const struct m0_dtm_history *history, char *buf)
 
M0_INTERNAL void update_print_internal (const struct m0_dtm_update *update, bool history)
 
M0_INTERNAL bool oper_update_unique (const struct m0_dtm_oper *oper, const struct m0_dtm_update *update)
 
static struct m0_dtm_controlhdtx_get (struct m0_dtm_dtx *dtx, struct m0_dtm_remote *rem)
 
static struct m0_dtm_historydtx_srv_alloc (struct m0_dtm *dtm, const struct m0_uint128 *id, void *datum)
 
static struct m0_dtm_historypa_history (struct m0_dtm_dtx_party *pa)
 
M0_INTERNAL int m0_dtm_dtx_init (struct m0_dtm_dtx *dtx, const struct m0_uint128 *id, struct m0_dtm *dtm, uint32_t nr_max)
 
M0_INTERNAL void m0_dtm_dtx_fini (struct m0_dtm_dtx *dtx)
 
M0_INTERNAL void m0_dtm_dtx_add (struct m0_dtm_dtx *dtx, struct m0_dtm_oper *oper)
 
M0_INTERNAL void m0_dtm_dtx_close (struct m0_dtm_dtx *dtx)
 
static void dtx_noop (void *unused)
 
static int dtx_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128dtx_id (const struct m0_dtm_history *history)
 
static void dtx_fixed (struct m0_dtm_history *history)
 
static int dtx_srv_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128dtx_srv_id (const struct m0_dtm_history *history)
 
M0_INTERNAL void m0_dtm_fol_init (struct m0_dtm_fol *fol, struct m0_dtm *dtm)
 
M0_INTERNAL void m0_dtm_fol_fini (struct m0_dtm_fol *fol)
 
M0_INTERNAL void m0_dtm_fol_add (struct m0_dtm_fol *fol, struct m0_dtm_oper *oper)
 
static const struct m0_uint128fol_id (const struct m0_dtm_history *history)
 
static struct m0_dtm_cataloguerem_fol_cat (struct m0_dtm *dtm)
 
static void fol_persistent (struct m0_dtm_history *history)
 
static void fol_fixed (struct m0_dtm_history *history)
 
static int fol_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
M0_INTERNAL void m0_dtm_fol_remote_init (struct m0_dtm_fol_remote *frem, struct m0_dtm *dtm, struct m0_dtm_remote *remote)
 
M0_INTERNAL void m0_dtm_fol_remote_fini (struct m0_dtm_fol_remote *frem)
 
M0_INTERNAL void m0_dtm_fol_remote_add (struct m0_dtm_fol_remote *frem, struct m0_dtm_oper *oper)
 
static const struct m0_uint128fol_remote_id (const struct m0_dtm_history *history)
 
static void fol_remote_persistent (struct m0_dtm_history *history)
 
static int fol_remote_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
M0_INTERNAL void m0_dtm_history_init (struct m0_dtm_history *history, struct m0_dtm *dtm)
 
M0_INTERNAL void m0_dtm_history_fini (struct m0_dtm_history *history)
 
M0_INTERNAL bool m0_dtm_history_invariant (const struct m0_dtm_history *history)
 
M0_INTERNAL void m0_dtm_history_persistent (struct m0_dtm_history *history, m0_dtm_ver_t upto)
 
M0_INTERNAL void m0_dtm_history_reset (struct m0_dtm_history *history, m0_dtm_ver_t since)
 
M0_INTERNAL void m0_dtm_history_undo (struct m0_dtm_history *history, m0_dtm_ver_t upto)
 
M0_INTERNAL void m0_dtm_history_close (struct m0_dtm_history *history)
 
M0_INTERNAL void m0_dtm_history_update_get (const struct m0_dtm_history *history, enum m0_dtm_up_rule rule, struct m0_dtm_update_data *data)
 
M0_INTERNAL void m0_dtm_history_type_register (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht)
 
M0_INTERNAL void m0_dtm_history_type_deregister (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht)
 
M0_INTERNAL const struct m0_dtm_history_typem0_dtm_history_type_find (struct m0_dtm *dtm, uint8_t id)
 
M0_INTERNAL void m0_dtm_history_pack (const struct m0_dtm_history *history, struct m0_dtm_history_id *id)
 
M0_INTERNAL int m0_dtm_history_unpack (struct m0_dtm *dtm, const struct m0_dtm_history_id *id, struct m0_dtm_history **out)
 
static void control_update_add (struct m0_dtm_history *history, struct m0_dtm_oper *oper, struct m0_dtm_update *cupdate, enum m0_dtm_up_rule rule, const struct m0_dtm_update_ops *ops)
 
M0_INTERNAL void m0_dtm_history_add_nop (struct m0_dtm_history *history, struct m0_dtm_oper *oper, struct m0_dtm_update *cupdate)
 
static void clop_nop (struct m0_dtm_op *op)
 
static void clop_impossible (struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_history_add_close (struct m0_dtm_history *history, struct m0_dtm_oper *oper, struct m0_dtm_update *cupdate)
 
M0_INTERNAL void m0_dtm_controlh_init (struct m0_dtm_controlh *ch, struct m0_dtm *dtm)
 
M0_INTERNAL void m0_dtm_controlh_fini (struct m0_dtm_controlh *ch)
 
M0_INTERNAL void m0_dtm_controlh_close (struct m0_dtm_controlh *ch)
 
M0_INTERNAL void m0_dtm_controlh_add (struct m0_dtm_controlh *ch, struct m0_dtm_oper *oper)
 
static int ch_noop (struct m0_dtm_update *updt)
 
M0_INTERNAL int m0_dtm_controlh_update (struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
 
M0_INTERNAL void m0_dtm_controlh_fuse_close (struct m0_dtm_update *update)
 
M0_INTERNAL bool m0_dtm_controlh_update_is_close (const struct m0_dtm_update *update)
 
 M0_TL_DESCR_DEFINE (exc, "excited histories", M0_INTERNAL, struct m0_dtm_history, h_exclink, h_hi.hi_ups.t_magic, M0_DTM_HI_MAGIX, M0_DTM_EXC_MAGIX)
 
 M0_TL_DEFINE (exc, M0_INTERNAL, struct m0_dtm_history)
 
static void ltx_persistent_hook (const struct m0_be_tx *tx)
 
M0_INTERNAL void m0_dtm_ltx_init (struct m0_dtm_ltx *ltx, struct m0_dtm *dtm, struct m0_be_domain *dom)
 
M0_INTERNAL void m0_dtm_ltx_open (struct m0_dtm_ltx *ltx)
 
M0_INTERNAL void m0_dtm_ltx_close (struct m0_dtm_ltx *ltx)
 
M0_INTERNAL void m0_dtm_ltx_fini (struct m0_dtm_ltx *ltx)
 
M0_INTERNAL void m0_dtm_ltx_add (struct m0_dtm_ltx *ltx, struct m0_dtm_oper *oper)
 
static int ltx_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128ltx_id (const struct m0_dtm_history *history)
 
static void ltx_noop (struct m0_dtm_history *history)
 
static void history_balance (struct m0_dtm_history *history)
 
static void history_excite (struct m0_dtm_history *history)
 
static void history_calm (struct m0_dtm_history *history)
 
static void undo_done (struct m0_dtm_update *update)
 
static void sibling_undo (struct m0_dtm_history *history, struct m0_dtm_op *op)
 
static void sibling_persistent (struct m0_dtm_history *history, struct m0_dtm_op *op)
 
static void sibling_reset (struct m0_dtm_history *history, struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_balance (struct m0_dtm *dtm)
 
M0_INTERNAL void m0_dtm_history_balance (struct m0_dtm_history *history)
 
M0_INTERNAL void m0_dtm_undo_done (struct m0_dtm_update *update)
 
static void dtm_excitement_start (struct m0_dtm *dtm)
 
 M0_TL_DESCR_DEFINE (hi, "nucleus hi updates", M0_INTERNAL, struct m0_dtm_up, up_hi_linkage, up_magix, M0_DTM_UP_MAGIX, M0_DTM_HI_MAGIX)
 
 M0_TL_DEFINE (hi, M0_INTERNAL, struct m0_dtm_up)
 
 M0_TL_DESCR_DEFINE (op, "nucleus operation updates", M0_INTERNAL, struct m0_dtm_up, up_op_linkage, up_magix, M0_DTM_UP_MAGIX, M0_DTM_OP_MAGIX)
 
 M0_TL_DEFINE (op, M0_INTERNAL, struct m0_dtm_up)
 
 M0_BOB_DEFINE (static, &hi_bob, m0_dtm_hi)
 
 M0_BOB_DEFINE (static, &up_bob, m0_dtm_up)
 
 M0_BOB_DEFINE (static, &op_bob, m0_dtm_op)
 
static void advance_hi (struct m0_dtm_hi *hi)
 
static void advance_op (struct m0_dtm_op *op)
 
static void up_ready (struct m0_dtm_up *up)
 
static void up_insert (struct m0_dtm_up *up)
 
static int op_cmp (const struct m0_dtm_op *op)
 
static void up_del (struct m0_dtm_up *up)
 
static int up_cmp (const struct m0_dtm_up *up, m0_dtm_ver_t hver)
 
static void up_fini (struct m0_dtm_up *up)
 
M0_INTERNAL void m0_dtm_op_init (struct m0_dtm_op *op, struct m0_dtm_nu *nu)
 
M0_INTERNAL void m0_dtm_op_close (const struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_op_prepared (const struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_op_done (const struct m0_dtm_op *op)
 
static void op_del (struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_op_del (struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_op_fini (struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_hi_init (struct m0_dtm_hi *hi, struct m0_dtm_nu *nu)
 
M0_INTERNAL void m0_dtm_hi_fini (struct m0_dtm_hi *hi)
 
M0_INTERNAL void m0_dtm_up_init (struct m0_dtm_up *up, struct m0_dtm_hi *hi, struct m0_dtm_op *op, enum m0_dtm_up_rule rule, m0_dtm_ver_t ver, m0_dtm_ver_t orig_ver)
 
M0_INTERNAL void m0_dtm_nu_init (struct m0_dtm_nu *nu)
 
M0_INTERNAL void m0_dtm_nu_fini (struct m0_dtm_nu *nu)
 
M0_INTERNAL struct m0_dtm_upm0_dtm_up_prior (struct m0_dtm_up *up)
 
M0_INTERNAL struct m0_dtm_upm0_dtm_up_later (struct m0_dtm_up *up)
 
static bool op_is_locked (const struct m0_dtm_op *op)
 
static bool up_pair_invariant (const struct m0_dtm_up *up, const struct m0_dtm_up *next)
 
M0_INTERNAL bool m0_dtm_hi_invariant (const struct m0_dtm_hi *hi)
 
M0_INTERNAL bool m0_dtm_up_invariant (const struct m0_dtm_up *up)
 
M0_INTERNAL bool m0_dtm_op_invariant (const struct m0_dtm_op *op)
 
M0_INTERNAL void m0_dtm_nuclei_init (void)
 
M0_INTERNAL void m0_dtm_nuclei_fini (void)
 
M0_INTERNAL void up_print (const struct m0_dtm_up *up)
 
M0_INTERNAL void op_print (const struct m0_dtm_op *op)
 
M0_INTERNAL void hi_print (const struct m0_dtm_hi *hi)
 
M0_INTERNAL void m0_dtm_up_ver_set (struct m0_dtm_up *up, m0_dtm_ver_t ver, m0_dtm_ver_t orig_ver)
 
M0_INTERNAL void m0_dtm_object_init (struct m0_dtm_object *obj)
 
M0_INTERNAL void m0_dtm_object_fini (struct m0_dtm_object *obj)
 
M0_INTERNAL void m0_dtm_oper_init (struct m0_dtm_oper *oper, struct m0_dtm *dtm, struct m0_tl *uu)
 
M0_INTERNAL void m0_dtm_oper_fini (struct m0_dtm_oper *oper)
 
M0_INTERNAL bool m0_dtm_oper_invariant (const struct m0_dtm_oper *oper)
 
M0_INTERNAL void m0_dtm_oper_close (struct m0_dtm_oper *oper)
 
M0_INTERNAL void m0_dtm_oper_prepared (const struct m0_dtm_oper *oper, const struct m0_dtm_remote *rem)
 
M0_INTERNAL void m0_dtm_oper_done (const struct m0_dtm_oper *oper, const struct m0_dtm_remote *rem)
 
M0_INTERNAL void m0_dtm_oper_pack (struct m0_dtm_oper *oper, const struct m0_dtm_remote *rem, struct m0_dtm_oper_descr *ode)
 
M0_INTERNAL int m0_dtm_oper_build (struct m0_dtm_oper *oper, struct m0_tl *uu, const struct m0_dtm_oper_descr *ode)
 
M0_INTERNAL void m0_dtm_reply_pack (const struct m0_dtm_oper *oper, const struct m0_dtm_oper_descr *request, struct m0_dtm_oper_descr *reply)
 
M0_INTERNAL void m0_dtm_reply_unpack (struct m0_dtm_oper *oper, const struct m0_dtm_oper_descr *reply)
 
M0_INTERNAL struct m0_dtm_updatem0_dtm_oper_get (const struct m0_dtm_oper *oper, uint32_t label)
 
struct m0_dtm_oper_updates M0_XCA_DOMAIN (rpc)
 
M0_INTERNAL void m0_dtm_oper_unpack (struct m0_dtm_oper *oper, const struct m0_dtm_oper_descr *ode)
 
static void rem_rpc_notify (struct m0_dtm_remote *rem, const struct m0_dtm_history *history, m0_dtm_ver_t ver, enum rem_rpc_notification opcode)
 
static int rem_rpc_deliver (struct m0_rpc_machine *mach, struct m0_rpc_item *item)
 
M0_INTERNAL void m0_dtm_remote_add (struct m0_dtm_remote *rem, struct m0_dtm_oper *oper, struct m0_dtm_history *history, struct m0_dtm_update *update)
 
M0_INTERNAL void m0_dtm_remote_init (struct m0_dtm_remote *remote, struct m0_uint128 *id, struct m0_dtm *local)
 
M0_INTERNAL void m0_dtm_remote_fini (struct m0_dtm_remote *remote)
 
M0_INTERNAL void m0_dtm_rpc_remote_init (struct m0_dtm_rpc_remote *remote, struct m0_uint128 *id, struct m0_dtm *local, struct m0_rpc_conn *conn)
 
M0_INTERNAL void m0_dtm_rpc_remote_fini (struct m0_dtm_rpc_remote *remote)
 
static void rem_rpc_persistent (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_rpc_fixed (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_rpc_reset (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_rpc_undo (struct m0_dtm_remote *rem, struct m0_dtm_history *history, m0_dtm_ver_t upto)
 
static void rem_rpc_send (struct m0_dtm_remote *rem, struct m0_dtm_update *update)
 
static void rem_rpc_resend (struct m0_dtm_remote *rem, struct m0_dtm_update *update)
 
static void notice_pack (struct m0_dtm_notice *notice, const struct m0_dtm_history *history, m0_dtm_ver_t ver, enum rem_rpc_notification opcode)
 
static void notice_deliver (struct m0_dtm_notice *notice, struct m0_dtm *dtm)
 
static M0_UNUSED void rem_rpc_redo_replied (struct m0_rpc_item *item)
 
M0_INTERNAL void m0_dtm_local_remote_init (struct m0_dtm_local_remote *lre, struct m0_uint128 *id, struct m0_dtm *local, struct m0_reqh *reqh)
 
M0_INTERNAL void m0_dtm_local_remote_fini (struct m0_dtm_local_remote *lre)
 
static void rem_local_notify (struct m0_dtm_remote *rem, const struct m0_dtm_history *history, m0_dtm_ver_t ver, enum rem_rpc_notification opcode)
 
static void rem_local_persistent (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_local_fixed (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_local_reset (struct m0_dtm_remote *rem, struct m0_dtm_history *history)
 
static void rem_local_send (struct m0_dtm_remote *rem, struct m0_dtm_update *update)
 
static void rem_local_undo (struct m0_dtm_remote *rem, struct m0_dtm_history *history, m0_dtm_ver_t upto)
 
M0_INTERNAL void m0_dtm_update_init (struct m0_dtm_update *update, struct m0_dtm_history *history, struct m0_dtm_oper *oper, const struct m0_dtm_update_data *data)
 
M0_INTERNAL bool m0_dtm_update_invariant (const struct m0_dtm_update *update)
 
M0_INTERNAL bool m0_dtm_update_is_user (const struct m0_dtm_update *update)
 
M0_INTERNAL void m0_dtm_update_pack (const struct m0_dtm_update *update, struct m0_dtm_update_descr *updd)
 
M0_INTERNAL void m0_dtm_update_unpack (struct m0_dtm_update *update, const struct m0_dtm_update_descr *updd)
 
M0_INTERNAL int m0_dtm_update_build (struct m0_dtm_update *update, struct m0_dtm_oper *oper, const struct m0_dtm_update_descr *updd)
 
M0_INTERNAL bool m0_dtm_update_matches_descr (const struct m0_dtm_update *update, const struct m0_dtm_update_descr *updd)
 
M0_INTERNAL bool m0_dtm_descr_matches_update (const struct m0_dtm_update *update, const struct m0_dtm_update_descr *updd)
 
M0_INTERNAL void m0_dtm_update_list_init (struct m0_tl *list)
 
M0_INTERNAL void m0_dtm_update_list_fini (struct m0_tl *list)
 
M0_INTERNAL void m0_dtm_update_reint (struct m0_dtm_update *update)
 
M0_INTERNAL void m0_dtm_comm_set (struct m0_dtm_update *update, struct m0_fop *fop)
 
M0_INTERNAL void m0_dtm_update_link (struct m0_tl *list, struct m0_dtm_update *update, uint32_t nr)
 
static void dtm_update_replied (struct m0_rpc_item *item)
 
 M0_TL_DESCR_DEFINE (history, "dtm history updates", M0_INTERNAL, struct m0_dtm_update, upd_up.up_hi_linkage, upd_up.up_magix, M0_DTM_UP_MAGIX, M0_DTM_HI_MAGIX)
 
 M0_TL_DEFINE (history, M0_INTERNAL, struct m0_dtm_update)
 
 M0_TL_DESCR_DEFINE (oper, "dtm operation updates", M0_INTERNAL, struct m0_dtm_update, upd_up.up_op_linkage, upd_up.up_magix, M0_DTM_UP_MAGIX, M0_DTM_OP_MAGIX)
 
 M0_TL_DEFINE (oper, M0_INTERNAL, struct m0_dtm_update)
 
static void noop (struct m0_dtm_op *op)
 
static void never (struct m0_dtm_op *op)
 
static int undo_redo (struct m0_dtm_update *updt)
 
static int update_init (struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
 
static void test_persistent (struct m0_dtm_history *history)
 
static int hfind (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128hid (const struct m0_dtm_history *history)
 
static void init0 (void)
 
static void fini0 (void)
 
static void init1 (void)
 
static void fini1 (void)
 
static void init2 (void)
 
static void fini2 (void)
 
static void init3 (void)
 
static void fini3 (void)
 
static void init4 (void)
 
static void fini4 (void)
 
static void init5 (void)
 
static void fini5 (void)
 
static void dtm_setup (void)
 
static void dtx_setup (void)
 
static void dtx_populate (void)
 
static void dtx_pack (void)
 
static void dtx_reply (void)
 
static void dtx_fix (void)
 
static void ready (struct m0_dtm_op *op)
 
static void miser (struct m0_dtm_op *op)
 
static void late (struct m0_dtm_op *op)
 
static void h_release (struct m0_dtm_hi *hi)
 
static void nu (void)
 
static void hi (void)
 
static void op (void)
 
static void ctx_init (void)
 
static void ctx_fini (void)
 
static void ctx_add (int hi, int op, enum m0_dtm_up_rule rule, m0_dtm_ver_t ver, m0_dtm_ver_t orig_ver)
 
static void __attribute__ ((unused))
 
static void ctx_check (void)
 
static void fail (struct m0_dtm_op *op)
 
static void ctx_op_add (int i)
 
static void ctx_state (int i, enum m0_dtm_state state)
 
static void up_init (void)
 
static void op_add (void)
 
static void op_gap (void)
 
static void set_flag (struct m0_dtm_op *op)
 
static void op_late (void)
 
static void op_miser (void)
 
static void op_miser_delayed (void)
 
static void op_done (void)
 
static int src_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128src_id (const struct m0_dtm_history *history)
 
static int tgt_find (struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
 
static const struct m0_uint128tgt_id (const struct m0_dtm_history *history)
 
static int service_start (struct m0_reqh_service *service)
 
static void service_stop (struct m0_reqh_service *service)
 
static void service_fini (struct m0_reqh_service *service)
 
static int service_allocate (struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
 
static void test_fom_fini (struct m0_fom *fom)
 
static void op_ready (struct m0_dtm_op *op)
 
static void op_late (struct m0_dtm_op *op)
 
static void op_miser (struct m0_dtm_op *op)
 
static int test_fom_tick (struct m0_fom *fom)
 
static size_t test_fom_home_locality (const struct m0_fom *fom)
 
static int test_fom_create (struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
 
static void rpc_fop_fom_init (void)
 
static void rpc_fop_fom_fini (void)
 
static void src_init (struct m0_dtm_remote *dtm, unsigned flags, int ctrl)
 
static void src_fini (void)
 
static void tgt_init (void)
 
static void tgt_fini (void)
 
static void oper_populate (int i, unsigned nr)
 
static void transmit_build (void)
 
static void transmit_test (void)
 
static void redo_test (void)
 
M0_INTERNAL enum m0_dtm0_ts_ord m0_dtm0_ts_cmp (const struct m0_dtm0_clk_src *cs, const struct m0_dtm0_ts *left, const struct m0_dtm0_ts *right)
 
M0_INTERNAL void m0_dtm0_clk_src_init (struct m0_dtm0_clk_src *cs, enum m0_dtm0_cs_types type)
 
M0_INTERNAL void m0_dtm0_clk_src_fini (struct m0_dtm0_clk_src *cs)
 
M0_INTERNAL void m0_dtm0_clk_src_now (struct m0_dtm0_clk_src *cs, struct m0_dtm0_ts *now)
 
M0_INTERNAL bool m0_dtm0_ts__invariant (const struct m0_dtm0_ts *ts)
 
M0_INTERNAL bool m0_dtm0_ts_is_none (const struct m0_dtm0_ts *ts)
 
M0_INTERNAL void m0_dtm0_dtx_domain_init (void)
 
M0_INTERNAL void m0_dtm0_dtx_domain_fini (void)
 
static int dtx_log_insert (struct m0_dtm0_dtx *dtx)
 
static void dtx_log_update (struct m0_dtm0_dtx *dtx)
 
static void dtx_init (struct m0_dtm0_dtx *dtx, struct m0_dtm0_service *svc, struct m0_sm_group *grp)
 
static struct m0_dtm0_dtxdtx_alloc (struct m0_dtm0_service *svc, struct m0_sm_group *grp)
 
static void dtx_fini (struct m0_dtm0_dtx *dtx)
 
static void dtx_prepare (struct m0_dtm0_dtx *dtx)
 
static int dtx_open (struct m0_dtm0_dtx *dtx, uint32_t nr_pa)
 
static void dtx_fop_assign (struct m0_dtm0_dtx *dtx, uint32_t pa_idx, const struct m0_fop *pa_fop)
 
static int dtx_fid_assign (struct m0_dtm0_dtx *dtx, uint32_t pa_idx, const struct m0_fid *pa_sfid)
 
static int dtx_close (struct m0_dtm0_dtx *dtx)
 
static void dtx_done (struct m0_dtm0_dtx *dtx)
 
static void dtx_exec_all_ast_cb (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
static void dtx_persistent_ast_cb (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
M0_INTERNAL void m0_dtm0_dtx_pmsg_post (struct m0_dtm0_dtx *dtx, struct m0_fop *fop)
 
static void dtx_executed (struct m0_dtm0_dtx *dtx, uint32_t idx)
 
M0_INTERNAL struct m0_dtxm0_dtx0_alloc (struct m0_dtm0_service *svc, struct m0_sm_group *grp)
 
M0_INTERNAL void m0_dtx0_prepare (struct m0_dtx *dtx)
 
M0_INTERNAL int m0_dtx0_open (struct m0_dtx *dtx, uint32_t nr)
 
M0_INTERNAL int m0_dtx0_fid_assign (struct m0_dtx *dtx, uint32_t pa_idx, const struct m0_fid *pa_sfid)
 
M0_INTERNAL void m0_dtx0_fop_assign (struct m0_dtx *dtx, uint32_t pa_idx, const struct m0_fop *pa_fop)
 
M0_INTERNAL int m0_dtx0_close (struct m0_dtx *dtx)
 
M0_INTERNAL void m0_dtx0_executed (struct m0_dtx *dtx, uint32_t pa_idx)
 
M0_INTERNAL void m0_dtx0_done (struct m0_dtx *dtx)
 
M0_INTERNAL int m0_dtx0_txd_copy (const struct m0_dtx *dtx, struct m0_dtm0_tx_desc *dst)
 
M0_INTERNAL enum m0_dtm0_dtx_state m0_dtx0_sm_state (const struct m0_dtx *dtx)
 
M0_INTERNAL void m0_dtm0_tx_desc_init_none (struct m0_dtm0_tx_desc *td)
 
M0_INTERNAL bool m0_dtm0_tx_desc_is_none (const struct m0_dtm0_tx_desc *td)
 
M0_INTERNAL bool m0_dtm0_tx_desc__invariant (const struct m0_dtm0_tx_desc *td)
 
M0_INTERNAL bool m0_dtm0_tid__invariant (const struct m0_dtm0_tid *tid)
 
M0_INTERNAL int m0_dtm0_tx_desc_copy (const struct m0_dtm0_tx_desc *src, struct m0_dtm0_tx_desc *dst)
 
M0_INTERNAL int m0_dtm0_tx_desc_init (struct m0_dtm0_tx_desc *td, uint32_t nr_pa)
 
M0_INTERNAL void m0_dtm0_tx_desc_fini (struct m0_dtm0_tx_desc *td)
 
M0_INTERNAL int m0_dtm0_tid_cmp (struct m0_dtm0_clk_src *cs, const struct m0_dtm0_tid *left, const struct m0_dtm0_tid *right)
 
M0_INTERNAL void m0_dtm0_tx_desc_apply (struct m0_dtm0_tx_desc *tgt, const struct m0_dtm0_tx_desc *upd)
 
M0_INTERNAL bool m0_dtm0_tx_desc_state_eq (const struct m0_dtm0_tx_desc *txd, enum m0_dtm0_tx_pa_state state)
 
M0_INTERNAL void m0_dtm0_tx_desc_print (const struct m0_dtm0_tx_desc *txd)
 

Variables

static const struct m0_dtm_history_ops dtx_ops
 
static const struct m0_dtm_history_ops dtx_srv_ops
 
static const struct m0_dtm_history_type_ops dtx_htype_ops
 
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_htype
 
static const struct m0_dtm_history_type_ops dtx_srv_htype_ops
 
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_srv_htype
 
M0_EXTERN const struct m0_dtm_history_type m0_dtm_dtx_htype
 
M0_EXTERN const struct m0_dtm_history_type m0_dtm_dtx_srv_htype
 
static const struct m0_dtm_history_ops fol_ops
 
static const struct m0_dtm_history_ops fol_remote_ops
 
static const struct m0_dtm_history_type_ops fol_htype_ops
 
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_htype
 
static const struct m0_dtm_history_type_ops fol_remote_htype_ops
 
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_remote_htype
 
M0_EXTERN const struct m0_dtm_history_type m0_dtm_fol_htype
 
M0_EXTERN const struct m0_dtm_history_type m0_dtm_fol_remote_htype
 
static const struct m0_dtm_update_ops ch_close_ops
 
static const struct m0_dtm_update_ops ch_noop_ops
 
static const struct m0_dtm_op_ops clop_ops
 
static const struct m0_dtm_update_type ch_noop_utype
 
static const struct m0_dtm_update_type ch_close_utype
 
static const struct m0_dtm_history_ops ltx_ops
 
static const struct m0_uint128 ltxid = M0_UINT128(0x10ca1, 0x10ca1)
 
static const struct m0_dtm_history_type_ops ltx_htype_ops
 
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_ltx_htype
 
M0_EXTERN const struct m0_dtm_history_type m0_dtm_ltx_htype
 
static const struct m0_bob_type hi_bob
 
static const struct m0_bob_type op_bob
 
static struct m0_bob_type up_bob
 
enum rem_rpc_notification M0_XCA_DOMAIN
 
static const struct m0_dtm_remote_ops rem_rpc_ops
 
static const struct m0_dtm_remote_ops rem_local_ops
 
static struct m0_fop_type rem_rpc_fopt
 
static const struct m0_fop_type_ops rem_rpc_ftype_ops
 
static struct m0_rpc_item_type_ops rem_rpc_itype_ops
 
static const struct m0_rpc_item_ops rem_rpc_item_sender_ops
 
static M0_UNUSED const struct m0_rpc_item_ops rem_rpc_item_redo_ops
 
struct m0_dtm_local_remote M0_XCA_DOMAIN
 
static const struct m0_rpc_item_ops dtm_update_item_ops
 
enum { ... }  M0_XCA_DOMAIN
 
static struct m0_dtm dtm_local
 
static struct m0_dtm dtm_remote [REM_NR]
 
static struct m0_dtm_local_remote remote_local [REM_NR]
 
static struct m0_dtm_local_remote remote_remote [REM_NR]
 
static struct m0_dtm_dtx dx
 
static struct m0_dtm_history history0 [UPDATE_NR *DTM_NR]
 
static struct m0_dtm_update control_local [OPER_NR][2 *DTM_NR]
 
static struct m0_dtm_update control_remote [REM_NR][OPER_NR][1]
 
static struct m0_uint128 id0 [UPDATE_NR *DTM_NR]
 
static struct m0_dtm_oper oper_local [OPER_NR]
 
static struct m0_dtm_oper oper_remote [REM_NR][OPER_NR]
 
static struct m0_dtm_update update_local [OPER_NR][UPDATE_NR]
 
static struct m0_dtm_update update_remote [REM_NR][OPER_NR][FAN_NR]
 
static struct m0_dtm_historyhistory_local
 
static struct m0_dtm_historyhistory_remote [REM_NR]
 
static struct m0_dtm_fol fol_remote [REM_NR]
 
static struct m0_tl uu
 
static struct m0_dtm_update_descr udescr [REM_NR][OPER_NR][FAN_NR]
 
static struct m0_dtm_update_descr ureply [REM_NR][OPER_NR][FAN_NR]
 
static struct m0_dtm_oper_descr ode [REM_NR][OPER_NR]
 
static struct m0_dtm_oper_descr ode_reply [REM_NR][OPER_NR]
 
static const struct m0_dtm_update_type test_utype
 
static const struct m0_dtm_update_ops test_ops
 
static const struct m0_dtm_op_ops op_ops
 
static const struct m0_dtm_history_ops hops
 
static const struct m0_dtm_history_type_ops htype_ops
 
static const struct m0_dtm_history_type htype
 
struct m0_ut_suite dtm_dtx_ut
 
static struct ctx cc
 
static void(* c_ready )(struct m0_dtm_op *op)
 
static void(* c_miser )(struct m0_dtm_op *op)
 
static void(* c_late )(struct m0_dtm_op *op)
 
static const struct m0_dtm_op_ops op_ops
 
static const struct m0_dtm_hi_ops hi_ops
 
static bool flag
 
struct m0_ut_suite dtm_nucleus_ut
 
static struct m0_uint128 dtm_id_src = { 1, 1 }
 
static struct m0_uint128 dtm_id_tgt = { 2, 2 }
 
static struct m0_tl uu
 
static struct m0_dtm dtm_src
 
static struct m0_dtm dtm_tgt
 
static struct m0_dtm_local_remote tgt
 
static struct m0_dtm_local_remote local
 
static struct m0_dtm_oper oper_src [OPER_NR]
 
static struct m0_dtm_oper oper_tgt [OPER_NR]
 
static struct m0_dtm_update update_src [OPER_NR][UPDATE_NR]
 
static struct m0_dtm_update update_tgt [OPER_NR][UPDATE_NR+TGT_DELTA]
 
static struct m0_dtm_update control_src [OPER_NR][TGT_DELTA]
 
static struct m0_dtm_update control_tgt [OPER_NR][TGT_DELTA]
 
static struct m0_dtm_history history_src [UPDATE_NR]
 
static struct m0_dtm_history history_tgt [UPDATE_NR]
 
static struct m0_uint128 id_src [UPDATE_NR]
 
static struct m0_uint128 id_tgt [UPDATE_NR]
 
static struct m0_dtm_update_descr udescr [UPDATE_NR+TGT_DELTA]
 
static struct m0_dtm_update_descr udescr_reply [UPDATE_NR+TGT_DELTA]
 
static struct m0_fop redo_fop [OPER_NR]
 
static struct m0_fom redo_fom [OPER_NR]
 
static struct m0_dtm_oper_descr redo_ode [OPER_NR]
 
static struct m0_dtm_update_descr redo_udescr [OPER_NR][UPDATE_NR+TGT_DELTA]
 
static struct m0_dtm_oper_descr ode
 
static struct m0_dtm_oper_descr reply
 
static m0_dtm_ver_t last [UPDATE_NR]
 
static struct m0_ut_rpc_mach_ctx test_ctx
 
static const struct m0_dtm_update_type test_utype
 
static const struct m0_dtm_update_ops test_ops
 
static const struct m0_dtm_op_ops op_ops
 
static const struct m0_dtm_history_type_ops src_htype_ops
 
static const struct m0_dtm_history_type src_htype
 
static const struct m0_dtm_history_ops src_ops
 
static const struct m0_dtm_history_type_ops tgt_htype_ops
 
static const struct m0_dtm_history_type tgt_htype
 
static const struct m0_dtm_history_ops tgt_ops
 
static struct m0_fop_type test_fopt
 
static struct m0_reqh_servicetest_svc
 
static const struct m0_fop_type_ops test_ftype_ops
 
static const struct m0_reqh_service_ops test_service_ops
 
static const struct m0_reqh_service_type_ops stype_ops
 
struct m0_reqh_service_type test_stype
 
static unsigned ticked
 
static const struct m0_dtm_op_ops test_op_ops
 
static struct m0_sm_state_descr fom_phases []
 
const struct m0_sm_conf test_conf
 
static struct m0_mutex lock
 
static struct m0_semaphore seq
 
static const struct m0_fom_ops test_fom_ops
 
static const struct m0_fom_type_ops test_fom_type_ops
 
struct m0_ut_suite dtm_transmit_ut
 
enum m0_dtm0_ts_ord M0_XCA_DOMAIN
 
static struct m0_sm_state_descr dtx_states []
 
static struct m0_sm_trans_descr dtx_trans []
 
struct m0_sm_conf m0_dtx_sm_conf
 

Detailed Description

Macro Definition Documentation

◆ DTS0_F

#define DTS0_F   "@%" PRIu64

Definition at line 106 of file clk_src.h.

◆ DTS0_P

#define DTS0_P (   _ts)    ((_ts)->dts_phys)

Definition at line 105 of file clk_src.h.

◆ hi_endfor

#define hi_endfor
Value:
} while (0)
#define m0_tl_endfor
Definition: tlist.h:700

Definition at line 64 of file dtm_internal.h.

◆ hi_for

#define hi_for (   h,
  up 
)
Value:
do { \
struct m0_dtm_up *up; \
m0_tl_for(hi, &(h)->hi_ups, up)
#define m0_tl_for(name, head, obj)
Definition: tlist.h:695
static void hi(void)
Definition: nucleus.c:93

Definition at line 58 of file dtm_internal.h.

◆ HISTORY_DTM

#define HISTORY_DTM (   history)    (nu_dtm((history)->h_hi.hi_nu))

Definition at line 106 of file dtm_internal.h.

◆ history_endfor

#define history_endfor
Value:
} while (0)
#define m0_tl_endfor
Definition: tlist.h:700

Definition at line 93 of file dtm_internal.h.

◆ history_for

#define history_for (   h,
  update 
)
Value:
do { \
struct m0_dtm_update *update; \
m0_tl_for(history, &(h)->h_hi.hi_ups, update)
#define m0_tl_for(name, head, obj)
Definition: tlist.h:695

Definition at line 87 of file dtm_internal.h.

◆ M0_DTM0_TS_INIT

#define M0_DTM0_TS_INIT   (struct m0_dtm0_ts) { .dts_phys = UINT64_MAX }

Defines an invalid (but defined) value for a CS.TS.

Definition at line 101 of file clk_src.h.

◆ M0_DTM0_TS_MAX

#define M0_DTM0_TS_MAX   (struct m0_dtm0_ts) { .dts_phys = (UINT64_MAX - 1) }

Defines the maximal valid value for a CS.TS.

Definition at line 99 of file clk_src.h.

◆ M0_DTM0_TS_MIN

#define M0_DTM0_TS_MIN   (struct m0_dtm0_ts) { .dts_phys = 1 }

Defines the minimal valid value for a CS.TS.

Definition at line 97 of file clk_src.h.

◆ M0_DTM0_TS_NONE

#define M0_DTM0_TS_NONE   (struct m0_dtm0_ts) { .dts_phys = 0 }

Definition at line 103 of file clk_src.h.

◆ M0_DTM_UPDATE_DATA

#define M0_DTM_UPDATE_DATA (   label,
  rule,
  ver,
  orig_ver 
)
Value:
(struct m0_dtm_update_data) { \
.da_label = (label), \
.da_rule = (rule), \
.da_ver = (ver), \
.da_orig_ver = (orig_ver) \
}
uint8_t da_rule
Definition: update.h:99
uint64_t da_orig_ver
Definition: update.h:97

Definition at line 102 of file update.h.

◆ M0_TRACE_SUBSYSTEM [1/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM0

Definition at line 28 of file dtx.c.

◆ M0_TRACE_SUBSYSTEM [2/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 29 of file machine.c.

◆ M0_TRACE_SUBSYSTEM [3/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 29 of file nucleus.c.

◆ M0_TRACE_SUBSYSTEM [4/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 29 of file dtx.c.

◆ M0_TRACE_SUBSYSTEM [5/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 29 of file transmit.c.

◆ M0_TRACE_SUBSYSTEM [6/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 30 of file update.c.

◆ M0_TRACE_SUBSYSTEM [7/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 30 of file catalogue.c.

◆ M0_TRACE_SUBSYSTEM [8/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 30 of file history.c.

◆ M0_TRACE_SUBSYSTEM [9/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 30 of file operation.c.

◆ M0_TRACE_SUBSYSTEM [10/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 30 of file remote.c.

◆ M0_TRACE_SUBSYSTEM [11/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM0

Definition at line 32 of file tx_desc.c.

◆ M0_TRACE_SUBSYSTEM [12/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 38 of file dtm.c.

◆ M0_TRACE_SUBSYSTEM [13/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 40 of file fol.c.

◆ M0_TRACE_SUBSYSTEM [14/14]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DTM

Definition at line 40 of file dtx.c.

◆ oper_endfor

#define oper_endfor
Value:
} while (0)
#define m0_tl_endfor
Definition: tlist.h:700

Definition at line 83 of file dtm_internal.h.

◆ oper_for

#define oper_for (   o,
  update 
)
Value:
do { \
struct m0_dtm_update *update; \
m0_tl_for(oper, &(o)->oprt_op.op_ups, update)
#define m0_tl_for(name, head, obj)
Definition: tlist.h:695

Definition at line 77 of file dtm_internal.h.

◆ up_endfor

#define up_endfor
Value:
} while (0)
#define m0_tl_endfor
Definition: tlist.h:700

Definition at line 54 of file dtm_internal.h.

◆ up_for

#define up_for (   o,
  up 
)
Value:
do { \
struct m0_dtm_up *up; \
m0_tl_for(op, &(o)->op_ups, up)
op
Definition: libdemo.c:64
#define m0_tl_for(name, head, obj)
Definition: tlist.h:695

Definition at line 48 of file dtm_internal.h.

◆ UP_HISTORY

#define UP_HISTORY (   up)    hi_history((up)->up_hi)

Definition at line 103 of file dtm_internal.h.

◆ UPDATE_HISTORY

#define UPDATE_HISTORY (   update)    UP_HISTORY(&(update)->upd_up)

Definition at line 104 of file dtm_internal.h.

◆ UPDATE_REM

#define UPDATE_REM (   update)    (UPDATE_HISTORY(update)->h_rem)

Definition at line 105 of file dtm_internal.h.

◆ UPDATE_UP

#define UPDATE_UP (   update)
Value:
({ \
typeof(update) __update = (update); \
__update != NULL ? &__update->upd_up : NULL; \
})
#define NULL
Definition: misc.h:38

Definition at line 97 of file dtm_internal.h.

Typedef Documentation

◆ m0_dtm_catalogue_alloc_t

typedef struct m0_dtm_history* m0_dtm_catalogue_alloc_t(struct m0_dtm *, const struct m0_uint128 *, void *)

Definition at line 61 of file catalogue.h.

◆ m0_dtm_ver_t

typedef uint64_t m0_dtm_ver_t

Definition at line 48 of file nucleus.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
M0_DTM_HISTORY_TYPE_NR 

Maximal number of history types (m0_dtm_history_type).

Definition at line 512 of file dtm.h.

◆ anonymous enum

anonymous enum
Enumerator
M0_DTM_HTYPE_DTX 
M0_DTM_HTYPE_DTX_SRV 

Definition at line 120 of file dtx.c.

◆ anonymous enum

anonymous enum
Enumerator
M0_DTM_HTYPE_FOL 
M0_DTM_HTYPE_FOL_REM 

Definition at line 72 of file fol.c.

◆ anonymous enum

anonymous enum
Enumerator
H_NOOP 
H_CLOSE 

Definition at line 361 of file history.c.

◆ anonymous enum

anonymous enum
Enumerator
M0_DTM_HTYPE_LTX 

Definition at line 94 of file ltx.c.

◆ anonymous enum

anonymous enum
Enumerator
M0_DTM_USER_UPDATE_BASE 

Definition at line 79 of file update.h.

◆ anonymous enum

anonymous enum
Enumerator
OPER_NR 
UPDATE_NR 
REM_NR 
DTM_NR 
FAN_NR 

Definition at line 41 of file dtx.c.

◆ anonymous enum

anonymous enum
Enumerator
HI_MAX 
OP_MAX 
UP_MAX 

Definition at line 36 of file nucleus.c.

◆ anonymous enum

anonymous enum
Enumerator
OPER_NR 
UPDATE_NR 
TGT_DELTA 

Definition at line 59 of file transmit.c.

◆ anonymous enum

anonymous enum
Enumerator
FOM_INIT 
FOM_READY 

Definition at line 299 of file transmit.c.

◆ m0_dtm0_cs_types

Enumerator
M0_DTM0_CS_PHYS 

Definition at line 74 of file clk_src.h.

◆ m0_dtm0_ts_ord

Timestamp ordering is the result of comparison of two timestamps (see CS.TS.CMP for the details).

Enumerator
M0_DTS_LT 
M0_DTS_EQ 
M0_DTS_GT 

Definition at line 112 of file clk_src.h.

◆ m0_dtm_hi_flags

Enumerator
M0_DHF_SHARED 
M0_DHF_FULL 
M0_DHF_OWNED 
M0_DHF_BUSY 
M0_DHF_LAST 

Definition at line 72 of file nucleus.h.

◆ m0_dtm_history_flags

Enumerator
M0_DHF_CLOSED 
M0_DHF_AMNESIA 

Definition at line 73 of file history.h.

◆ m0_dtm_oper_flags

Enumerator
M0_DOF_CLOSED 
M0_DOF_LAST 
M0_DOF_SENT 

Definition at line 54 of file operation.h.

◆ m0_dtm_state

Enumerator
M0_DOS_LIMBO 
M0_DOS_FUTURE 
M0_DOS_PREPARE 
M0_DOS_INPROGRESS 
M0_DOS_VOLATILE 
M0_DOS_PERSISTENT 
M0_DOS_STABLE 
M0_DOS_NR 

Definition at line 52 of file nucleus.h.

◆ m0_dtm_up_rule

Enumerator
M0_DUR_INC 
M0_DUR_SET 
M0_DUR_NOT 
M0_DUR_APP 
M0_DUR_NR 

Definition at line 84 of file nucleus.h.

◆ m0_dtm_update_comm_flags

Enumerator
M0_DUCF_REPLIED_CALLED 

Definition at line 60 of file update.h.

◆ m0_dtm_update_comm_state

Enumerator
M0_DUX_NEW 
M0_DUX_INFLIGHT 
M0_DUX_REPLIED 

Definition at line 54 of file update.h.

◆ m0_dtm_ver_cmp

Enumerator
LATE 
READY 
EARLY 
MISER 

Definition at line 70 of file nucleus.c.

◆ m0_dtx_state

Enumerator
M0_DTX_INVALID 
M0_DTX_INIT 
M0_DTX_OPEN 
M0_DTX_DONE 

Definition at line 547 of file dtm.h.

◆ rem_rpc_notification

Enumerator
R_PERSISTENT 
R_FIXED 
R_RESET 
R_UNDO 

Definition at line 44 of file remote.c.

Function Documentation

◆ __attribute__()

static void __attribute__ ( (unused)  )
static

Definition at line 165 of file nucleus.c.

Here is the call graph for this function:

◆ advance_hi()

static void advance_hi ( struct m0_dtm_hi hi)
static

Definition at line 152 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ advance_op()

static void advance_op ( struct m0_dtm_op op)
static

Definition at line 170 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ advance_try()

M0_INTERNAL void advance_try ( const struct m0_dtm_op op)

Definition at line 145 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ch_noop()

static int ch_noop ( struct m0_dtm_update updt)
static

Definition at line 366 of file history.c.

◆ clop_impossible()

static void clop_impossible ( struct m0_dtm_op op)
static

Definition at line 308 of file history.c.

◆ clop_nop()

static void clop_nop ( struct m0_dtm_op op)
static

Definition at line 305 of file history.c.

◆ control_update_add()

static void control_update_add ( struct m0_dtm_history history,
struct m0_dtm_oper oper,
struct m0_dtm_update cupdate,
enum m0_dtm_up_rule  rule,
const struct m0_dtm_update_ops ops 
)
static

Definition at line 268 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_add()

static void ctx_add ( int  hi,
int  op,
enum m0_dtm_up_rule  rule,
m0_dtm_ver_t  ver,
m0_dtm_ver_t  orig_ver 
)
static

Definition at line 149 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_check()

static void ctx_check ( void  )
static

Definition at line 175 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_fini()

static void ctx_fini ( void  )
static

Definition at line 137 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_init()

static void ctx_init ( void  )
static

Definition at line 117 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_op_add()

static void ctx_op_add ( int  i)
static

Definition at line 192 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ctx_state()

static void ctx_state ( int  i,
enum m0_dtm_state  state 
)
static

Definition at line 199 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtm_excitement_start()

static void dtm_excitement_start ( struct m0_dtm dtm)
static

Definition at line 217 of file machine.c.

Here is the caller graph for this function:

◆ dtm_lock()

M0_INTERNAL void dtm_lock ( struct m0_dtm dtm)

Definition at line 159 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtm_setup()

static void dtm_setup ( void  )
static

Definition at line 414 of file dtx.c.

Here is the call graph for this function:

◆ dtm_unlock()

M0_INTERNAL void dtm_unlock ( struct m0_dtm dtm)

Definition at line 164 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtm_update_replied()

static void dtm_update_replied ( struct m0_rpc_item item)
static

Definition at line 262 of file update.c.

Here is the call graph for this function:

◆ dtx_alloc()

static struct m0_dtm0_dtx* dtx_alloc ( struct m0_dtm0_service svc,
struct m0_sm_group grp 
)
static

Definition at line 147 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_close()

static int dtx_close ( struct m0_dtm0_dtx dtx)
static

Definition at line 279 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_done()

static void dtx_done ( struct m0_dtm0_dtx dtx)
static

Definition at line 307 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_exec_all_ast_cb()

static void dtx_exec_all_ast_cb ( struct m0_sm_group grp,
struct m0_sm_ast ast 
)
static

Definition at line 318 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_executed()

static void dtx_executed ( struct m0_dtm0_dtx dtx,
uint32_t  idx 
)
static

Definition at line 404 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_fid_assign()

static int dtx_fid_assign ( struct m0_dtm0_dtx dtx,
uint32_t  pa_idx,
const struct m0_fid pa_sfid 
)
static

Definition at line 222 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_find()

static int dtx_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 108 of file dtx.c.

Here is the call graph for this function:

◆ dtx_fini()

static void dtx_fini ( struct m0_dtm0_dtx dtx)
static

Definition at line 163 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_fix()

static void dtx_fix ( void  )
static

Definition at line 444 of file dtx.c.

Here is the call graph for this function:

◆ dtx_fixed()

static void dtx_fixed ( struct m0_dtm_history history)
static

Definition at line 140 of file dtx.c.

◆ dtx_fop_assign()

static void dtx_fop_assign ( struct m0_dtm0_dtx dtx,
uint32_t  pa_idx,
const struct m0_fop pa_fop 
)
static

Definition at line 197 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_get()

static struct m0_dtm_controlh * dtx_get ( struct m0_dtm_dtx dtx,
struct m0_dtm_remote rem 
)
static

Definition at line 165 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_id()

static const struct m0_uint128* dtx_id ( const struct m0_dtm_history history)
static

Definition at line 132 of file dtx.c.

◆ dtx_init()

static void dtx_init ( struct m0_dtm0_dtx dtx,
struct m0_dtm0_service svc,
struct m0_sm_group grp 
)
static

Definition at line 137 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_log_insert()

static int dtx_log_insert ( struct m0_dtm0_dtx dtx)
static

Definition at line 106 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_log_update()

static void dtx_log_update ( struct m0_dtm0_dtx dtx)
static

Definition at line 123 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_noop()

static void dtx_noop ( void *  unused)
static

Definition at line 105 of file dtx.c.

◆ dtx_open()

static int dtx_open ( struct m0_dtm0_dtx dtx,
uint32_t  nr_pa 
)
static

Definition at line 189 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_pack()

static void dtx_pack ( void  )
static

Definition at line 432 of file dtx.c.

Here is the call graph for this function:

◆ dtx_persistent_ast_cb()

static void dtx_persistent_ast_cb ( struct m0_sm_group grp,
struct m0_sm_ast ast 
)
static

Definition at line 336 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_populate()

static void dtx_populate ( void  )
static

Definition at line 426 of file dtx.c.

Here is the call graph for this function:

◆ dtx_prepare()

static void dtx_prepare ( struct m0_dtm0_dtx dtx)
static

Definition at line 176 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_reply()

static void dtx_reply ( void  )
static

Definition at line 438 of file dtx.c.

Here is the call graph for this function:

◆ dtx_setup()

static void dtx_setup ( void  )
static

Definition at line 420 of file dtx.c.

Here is the call graph for this function:

◆ dtx_srv_alloc()

static struct m0_dtm_history * dtx_srv_alloc ( struct m0_dtm dtm,
const struct m0_uint128 id,
void *  datum 
)
static

Definition at line 222 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dtx_srv_find()

static int dtx_srv_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 187 of file dtx.c.

Here is the call graph for this function:

◆ dtx_srv_id()

static const struct m0_uint128* dtx_srv_id ( const struct m0_dtm_history history)
static

Definition at line 206 of file dtx.c.

◆ fail()

static void fail ( struct m0_dtm_op op)
static

Definition at line 187 of file nucleus.c.

Here is the caller graph for this function:

◆ fini0()

static void fini0 ( void  )
static

Definition at line 217 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fini1()

static void fini1 ( void  )
static

Definition at line 258 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fini2()

static void fini2 ( void  )
static

Definition at line 292 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fini3()

static void fini3 ( void  )
static

Definition at line 320 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fini4()

static void fini4 ( void  )
static

Definition at line 390 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fini5()

static void fini5 ( void  )
static

Definition at line 409 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fol_find()

static int fol_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 97 of file fol.c.

Here is the call graph for this function:

◆ fol_fixed()

static void fol_fixed ( struct m0_dtm_history history)
static

Definition at line 92 of file fol.c.

◆ fol_id()

static const struct m0_uint128* fol_id ( const struct m0_dtm_history history)
static

Definition at line 67 of file fol.c.

◆ fol_persistent()

static void fol_persistent ( struct m0_dtm_history history)
static

Definition at line 82 of file fol.c.

Here is the call graph for this function:

◆ fol_remote_find()

static int fol_remote_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 161 of file fol.c.

Here is the call graph for this function:

◆ fol_remote_id()

static const struct m0_uint128* fol_remote_id ( const struct m0_dtm_history history)
static

Definition at line 153 of file fol.c.

◆ fol_remote_persistent()

static void fol_remote_persistent ( struct m0_dtm_history history)
static

Definition at line 158 of file fol.c.

◆ h_release()

static void h_release ( struct m0_dtm_hi hi)
static

Definition at line 78 of file nucleus.c.

◆ hfind()

static int hfind ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 114 of file dtx.c.

Here is the call graph for this function:

◆ hi()

static void hi ( void  )
static

Definition at line 93 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hi_earliest()

M0_INTERNAL struct m0_dtm_up * hi_earliest ( struct m0_dtm_hi hi)

Definition at line 390 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hi_find()

M0_INTERNAL struct m0_dtm_up * hi_find ( struct m0_dtm_hi hi,
m0_dtm_ver_t  ver 
)

Definition at line 396 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hi_history()

M0_INTERNAL struct m0_dtm_history * hi_history ( struct m0_dtm_hi hi)

Definition at line 199 of file history.c.

Here is the call graph for this function:

◆ hi_latest()

M0_INTERNAL struct m0_dtm_up * hi_latest ( struct m0_dtm_hi hi)

Definition at line 385 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hi_print()

M0_INTERNAL void hi_print ( const struct m0_dtm_hi hi)

Definition at line 563 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hid()

static const struct m0_uint128* hid ( const struct m0_dtm_history history)
static

Definition at line 138 of file dtx.c.

Here is the caller graph for this function:

◆ history_balance()

static void history_balance ( struct m0_dtm_history history)
static

Definition at line 75 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_calm()

static void history_calm ( struct m0_dtm_history history)
static

Definition at line 235 of file machine.c.

Here is the caller graph for this function:

◆ history_close()

M0_INTERNAL void history_close ( struct m0_dtm_history history)

Definition at line 169 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_earliest()

M0_INTERNAL struct m0_dtm_up * history_earliest ( struct m0_dtm_history history)

Definition at line 210 of file history.c.

Here is the call graph for this function:

◆ history_excite()

static void history_excite ( struct m0_dtm_history history)
static

Definition at line 221 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_latest()

M0_INTERNAL struct m0_dtm_up * history_latest ( struct m0_dtm_history history)

Definition at line 205 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_lock()

M0_INTERNAL void history_lock ( const struct m0_dtm_history history)

Definition at line 288 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_print()

M0_INTERNAL void history_print ( const struct m0_dtm_history history)

Definition at line 438 of file history.c.

Here is the call graph for this function:

◆ history_print_header()

M0_INTERNAL void history_print_header ( const struct m0_dtm_history history,
char *  buf 
)

Definition at line 425 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ history_unlock()

M0_INTERNAL void history_unlock ( const struct m0_dtm_history history)

Definition at line 293 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init0()

static void init0 ( void  )
static

Definition at line 155 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init1()

static void init1 ( void  )
static

Definition at line 249 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init2()

static void init2 ( void  )
static

Definition at line 264 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init3()

static void init3 ( void  )
static

Definition at line 297 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init4()

static void init4 ( void  )
static

Definition at line 331 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init5()

static void init5 ( void  )
static

Definition at line 395 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ late()

static void late ( struct m0_dtm_op op)
static

Definition at line 66 of file nucleus.c.

◆ ltx_find()

static int ltx_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 82 of file ltx.c.

◆ ltx_id()

static const struct m0_uint128* ltx_id ( const struct m0_dtm_history history)
static

Definition at line 104 of file ltx.c.

◆ ltx_noop()

static void ltx_noop ( struct m0_dtm_history history)
static

Definition at line 109 of file ltx.c.

◆ ltx_persistent_hook()

static void ltx_persistent_hook ( const struct m0_be_tx tx)
static

Definition at line 75 of file ltx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ M0_BOB_DEFINE() [1/3]

M0_BOB_DEFINE ( static  ,
hi_bob,
m0_dtm_hi   
)

◆ M0_BOB_DEFINE() [2/3]

M0_BOB_DEFINE ( static  ,
up_bob,
m0_dtm_up   
)

◆ M0_BOB_DEFINE() [3/3]

M0_BOB_DEFINE ( static  ,
op_bob,
m0_dtm_op   
)

◆ m0_dtm0_clk_src_fini()

M0_INTERNAL void m0_dtm0_clk_src_fini ( struct m0_dtm0_clk_src cs)

Finalises a clock source. See CS.FINI

Definition at line 49 of file clk_src.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_clk_src_init()

M0_INTERNAL void m0_dtm0_clk_src_init ( struct m0_dtm0_clk_src cs,
enum m0_dtm0_cs_types  type 
)

Initalises a clock source. See CS.INIT

Definition at line 38 of file clk_src.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_clk_src_now()

M0_INTERNAL void m0_dtm0_clk_src_now ( struct m0_dtm0_clk_src cs,
struct m0_dtm0_ts now 
)

Returns the current clock source value. See CS.NOW

Definition at line 71 of file clk_src.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_dtx_domain_fini()

M0_INTERNAL void m0_dtm0_dtx_domain_fini ( void  )

Definition at line 98 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_dtx_domain_init()

M0_INTERNAL void m0_dtm0_dtx_domain_init ( void  )

Definition at line 90 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_dtx_pmsg_post()

M0_INTERNAL void m0_dtm0_dtx_pmsg_post ( struct m0_dtm0_dtx dtx,
struct m0_fop fop 
)

Launches asynchronous processing of a persistent message.

Parameters
dtxA DTX that is the context for the processing.
fopAn FOP with the P message.

Definition at line 371 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tid__invariant()

M0_INTERNAL bool m0_dtm0_tid__invariant ( const struct m0_dtm0_tid tid)

Definition at line 68 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tid_cmp()

M0_INTERNAL int m0_dtm0_tid_cmp ( struct m0_dtm0_clk_src cs,
const struct m0_dtm0_tid left,
const struct m0_dtm0_tid right 
)

Definition at line 119 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_ts__invariant()

M0_INTERNAL bool m0_dtm0_ts__invariant ( const struct m0_dtm0_ts ts)

Definition at line 79 of file clk_src.c.

Here is the caller graph for this function:

◆ m0_dtm0_ts_cmp()

M0_INTERNAL enum m0_dtm0_ts_ord m0_dtm0_ts_cmp ( const struct m0_dtm0_clk_src cs,
const struct m0_dtm0_ts left,
const struct m0_dtm0_ts right 
)

Compares two timestamps. See CS.TS.CMP

Definition at line 61 of file clk_src.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_ts_is_none()

M0_INTERNAL bool m0_dtm0_ts_is_none ( const struct m0_dtm0_ts ts)

Definition at line 118 of file clk_src.c.

◆ m0_dtm0_tx_desc__invariant()

M0_INTERNAL bool m0_dtm0_tx_desc__invariant ( const struct m0_dtm0_tx_desc td)

Definition at line 49 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_apply()

M0_INTERNAL void m0_dtm0_tx_desc_apply ( struct m0_dtm0_tx_desc tgt,
const struct m0_dtm0_tx_desc upd 
)

Applies an update onto the given target value. The state of the participants of the target modifed as per the following statement:

*       target = max_state(target, update);
* 

Definition at line 127 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_copy()

M0_INTERNAL int m0_dtm0_tx_desc_copy ( const struct m0_dtm0_tx_desc src,
struct m0_dtm0_tx_desc dst 
)

Writes a deep copy of "src" into "dst".

Definition at line 76 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_fini()

M0_INTERNAL void m0_dtm0_tx_desc_fini ( struct m0_dtm0_tx_desc td)

Definition at line 111 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_init()

M0_INTERNAL int m0_dtm0_tx_desc_init ( struct m0_dtm0_tx_desc td,
uint32_t  nr_pa 
)

Creates a new tx descriptor with the given number of participants.

Definition at line 97 of file tx_desc.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_init_none()

M0_INTERNAL void m0_dtm0_tx_desc_init_none ( struct m0_dtm0_tx_desc td)

Definition at line 39 of file tx_desc.c.

Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_is_none()

M0_INTERNAL bool m0_dtm0_tx_desc_is_none ( const struct m0_dtm0_tx_desc td)

Definition at line 44 of file tx_desc.c.

Here is the caller graph for this function:

◆ m0_dtm0_tx_desc_print()

M0_INTERNAL void m0_dtm0_tx_desc_print ( const struct m0_dtm0_tx_desc txd)

Definition at line 163 of file tx_desc.c.

◆ m0_dtm0_tx_desc_state_eq()

M0_INTERNAL bool m0_dtm0_tx_desc_state_eq ( const struct m0_dtm0_tx_desc txd,
enum m0_dtm0_tx_pa_state  state 
)

Returns "true" iif the state of each participant equals to the given "state" value.

Definition at line 155 of file tx_desc.c.

Here is the caller graph for this function:

◆ m0_dtm_balance()

M0_INTERNAL void m0_dtm_balance ( struct m0_dtm dtm)

Definition at line 52 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_catalogue_add()

M0_INTERNAL int m0_dtm_catalogue_add ( struct m0_dtm_catalogue cat,
struct m0_dtm_history history 
)

Definition at line 78 of file catalogue.c.

Here is the caller graph for this function:

◆ m0_dtm_catalogue_create()

M0_INTERNAL int m0_dtm_catalogue_create ( struct m0_dtm_catalogue cat)

Definition at line 59 of file catalogue.c.

◆ m0_dtm_catalogue_del()

M0_INTERNAL int m0_dtm_catalogue_del ( struct m0_dtm_catalogue cat,
struct m0_dtm_history history 
)

Definition at line 85 of file catalogue.c.

Here is the caller graph for this function:

◆ m0_dtm_catalogue_delete()

M0_INTERNAL int m0_dtm_catalogue_delete ( struct m0_dtm_catalogue cat)

Definition at line 64 of file catalogue.c.

◆ m0_dtm_catalogue_find()

M0_INTERNAL int m0_dtm_catalogue_find ( struct m0_dtm_catalogue cat,
struct m0_dtm dtm,
const struct m0_uint128 id,
m0_dtm_catalogue_alloc_t alloc,
void *  datum,
struct m0_dtm_history **  out 
)

Definition at line 92 of file catalogue.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_catalogue_fini()

M0_INTERNAL void m0_dtm_catalogue_fini ( struct m0_dtm_catalogue cat)

Definition at line 49 of file catalogue.c.

Here is the caller graph for this function:

◆ m0_dtm_catalogue_init()

M0_INTERNAL void m0_dtm_catalogue_init ( struct m0_dtm_catalogue cat)

Definition at line 44 of file catalogue.c.

Here is the caller graph for this function:

◆ m0_dtm_catalogue_lookup()

M0_INTERNAL int m0_dtm_catalogue_lookup ( struct m0_dtm_catalogue cat,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)

Definition at line 69 of file catalogue.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_comm_set()

M0_INTERNAL void m0_dtm_comm_set ( struct m0_dtm_update update,
struct m0_fop fop 
)

Definition at line 205 of file update.c.

◆ m0_dtm_controlh_add()

M0_INTERNAL void m0_dtm_controlh_add ( struct m0_dtm_controlh ch,
struct m0_dtm_oper oper 
)

Definition at line 352 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_controlh_close()

M0_INTERNAL void m0_dtm_controlh_close ( struct m0_dtm_controlh ch)

Definition at line 346 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_controlh_fini()

M0_INTERNAL void m0_dtm_controlh_fini ( struct m0_dtm_controlh ch)

Definition at line 340 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_controlh_fuse_close()

M0_INTERNAL void m0_dtm_controlh_fuse_close ( struct m0_dtm_update update)

Definition at line 406 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_controlh_init()

M0_INTERNAL void m0_dtm_controlh_init ( struct m0_dtm_controlh ch,
struct m0_dtm dtm 
)

Definition at line 328 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_controlh_update()

M0_INTERNAL int m0_dtm_controlh_update ( struct m0_dtm_history history,
uint8_t  id,
struct m0_dtm_update update 
)

Definition at line 393 of file history.c.

◆ m0_dtm_controlh_update_is_close()

M0_INTERNAL bool m0_dtm_controlh_update_is_close ( const struct m0_dtm_update update)

Definition at line 414 of file history.c.

Here is the caller graph for this function:

◆ m0_dtm_descr_matches_update()

M0_INTERNAL bool m0_dtm_descr_matches_update ( const struct m0_dtm_update update,
const struct m0_dtm_update_descr updd 
)

Definition at line 166 of file update.c.

Here is the caller graph for this function:

◆ m0_dtm_domain_add()

M0_INTERNAL void m0_dtm_domain_add ( struct m0_dtm_domain dom,
struct m0_dtm_domain_dest *  dest 
)

◆ m0_dtm_domain_close()

M0_INTERNAL void m0_dtm_domain_close ( struct m0_dtm_domain dom)

◆ m0_dtm_domain_cohort_fini()

M0_INTERNAL void m0_dtm_domain_cohort_fini ( struct m0_dtm_domain_cohort coh)

◆ m0_dtm_domain_cohort_init()

M0_INTERNAL void m0_dtm_domain_cohort_init ( struct m0_dtm_domain_cohort coh)

◆ m0_dtm_domain_cohort_open()

M0_INTERNAL int m0_dtm_domain_cohort_open ( struct m0_dtm_domain_cohort coh)

◆ m0_dtm_domain_cohort_restart()

M0_INTERNAL int m0_dtm_domain_cohort_restart ( struct m0_dtm_domain_cohort coh)

◆ m0_dtm_domain_connect()

M0_INTERNAL void m0_dtm_domain_connect ( struct m0_dtm_domain dom)

◆ m0_dtm_domain_disconnect()

M0_INTERNAL void m0_dtm_domain_disconnect ( struct m0_dtm_domain dom)

◆ m0_dtm_domain_fini()

M0_INTERNAL void m0_dtm_domain_fini ( struct m0_dtm_domain dom)

◆ m0_dtm_domain_init()

M0_INTERNAL int m0_dtm_domain_init ( struct m0_dtm_domain dom,
uint32_t  nr 
)

◆ m0_dtm_domain_open()

M0_INTERNAL void m0_dtm_domain_open ( struct m0_dtm_domain dom)

◆ m0_dtm_dtx_add()

M0_INTERNAL void m0_dtm_dtx_add ( struct m0_dtm_dtx dtx,
struct m0_dtm_oper oper 
)

Definition at line 80 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_dtx_close()

M0_INTERNAL void m0_dtm_dtx_close ( struct m0_dtm_dtx dtx)

Definition at line 90 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_dtx_fini()

M0_INTERNAL void m0_dtm_dtx_fini ( struct m0_dtm_dtx dtx)

Definition at line 69 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_dtx_init()

M0_INTERNAL int m0_dtm_dtx_init ( struct m0_dtm_dtx dtx,
const struct m0_uint128 id,
struct m0_dtm dtm,
uint32_t  nr_max 
)

Definition at line 57 of file dtx.c.

Here is the caller graph for this function:

◆ m0_dtm_fini()

M0_INTERNAL void m0_dtm_fini ( struct m0_dtm dtm)

Definition at line 54 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_fol_add()

M0_INTERNAL void m0_dtm_fol_add ( struct m0_dtm_fol fol,
struct m0_dtm_oper oper 
)

Definition at line 61 of file fol.c.

Here is the call graph for this function:

◆ m0_dtm_fol_fini()

M0_INTERNAL void m0_dtm_fol_fini ( struct m0_dtm_fol fol)

Definition at line 56 of file fol.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_fol_init()

M0_INTERNAL void m0_dtm_fol_init ( struct m0_dtm_fol fol,
struct m0_dtm dtm 
)

Definition at line 46 of file fol.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_fol_remote_add()

M0_INTERNAL void m0_dtm_fol_remote_add ( struct m0_dtm_fol_remote frem,
struct m0_dtm_oper oper 
)

Definition at line 146 of file fol.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_fol_remote_fini()

M0_INTERNAL void m0_dtm_fol_remote_fini ( struct m0_dtm_fol_remote frem)

Definition at line 138 of file fol.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_fol_remote_init()

M0_INTERNAL void m0_dtm_fol_remote_init ( struct m0_dtm_fol_remote frem,
struct m0_dtm dtm,
struct m0_dtm_remote remote 
)

Definition at line 126 of file fol.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_global_fini()

M0_INTERNAL void m0_dtm_global_fini ( void  )

Definition at line 148 of file dtm.c.

Here is the call graph for this function:

◆ m0_dtm_global_init()

M0_INTERNAL int m0_dtm_global_init ( void  )

Definition at line 142 of file dtm.c.

Here is the call graph for this function:

◆ m0_dtm_hi_fini()

M0_INTERNAL void m0_dtm_hi_fini ( struct m0_dtm_hi hi)

Definition at line 277 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_hi_init()

M0_INTERNAL void m0_dtm_hi_init ( struct m0_dtm_hi hi,
struct m0_dtm_nu nu 
)

Definition at line 268 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_hi_invariant()

M0_INTERNAL bool m0_dtm_hi_invariant ( const struct m0_dtm_hi hi)

Definition at line 436 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_add_close()

M0_INTERNAL void m0_dtm_history_add_close ( struct m0_dtm_history history,
struct m0_dtm_oper oper,
struct m0_dtm_update cupdate 
)

Definition at line 319 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_add_nop()

M0_INTERNAL void m0_dtm_history_add_nop ( struct m0_dtm_history history,
struct m0_dtm_oper oper,
struct m0_dtm_update cupdate 
)

Definition at line 298 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_balance()

M0_INTERNAL void m0_dtm_history_balance ( struct m0_dtm_history history)

Definition at line 63 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_close()

M0_INTERNAL void m0_dtm_history_close ( struct m0_dtm_history history)

Definition at line 162 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_fini()

M0_INTERNAL void m0_dtm_history_fini ( struct m0_dtm_history history)

Definition at line 63 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_init()

M0_INTERNAL void m0_dtm_history_init ( struct m0_dtm_history history,
struct m0_dtm dtm 
)

Definition at line 51 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_invariant()

M0_INTERNAL bool m0_dtm_history_invariant ( const struct m0_dtm_history history)

Definition at line 71 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_pack()

M0_INTERNAL void m0_dtm_history_pack ( const struct m0_dtm_history history,
struct m0_dtm_history_id id 
)

Definition at line 239 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_persistent()

M0_INTERNAL void m0_dtm_history_persistent ( struct m0_dtm_history history,
m0_dtm_ver_t  upto 
)

Definition at line 107 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_reset()

M0_INTERNAL void m0_dtm_history_reset ( struct m0_dtm_history history,
m0_dtm_ver_t  since 
)

Definition at line 125 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_type_deregister()

M0_INTERNAL void m0_dtm_history_type_deregister ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht 
)

Definition at line 225 of file history.c.

Here is the caller graph for this function:

◆ m0_dtm_history_type_find()

M0_INTERNAL const struct m0_dtm_history_type * m0_dtm_history_type_find ( struct m0_dtm dtm,
uint8_t  id 
)

Definition at line 234 of file history.c.

Here is the caller graph for this function:

◆ m0_dtm_history_type_register()

M0_INTERNAL void m0_dtm_history_type_register ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht 
)

Definition at line 216 of file history.c.

Here is the caller graph for this function:

◆ m0_dtm_history_undo()

M0_INTERNAL void m0_dtm_history_undo ( struct m0_dtm_history history,
m0_dtm_ver_t  upto 
)

Definition at line 144 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_unpack()

M0_INTERNAL int m0_dtm_history_unpack ( struct m0_dtm dtm,
const struct m0_dtm_history_id id,
struct m0_dtm_history **  out 
)

Definition at line 248 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_history_update_get()

M0_INTERNAL void m0_dtm_history_update_get ( const struct m0_dtm_history history,
enum m0_dtm_up_rule  rule,
struct m0_dtm_update_data data 
)

Definition at line 176 of file history.c.

Here is the caller graph for this function:

◆ m0_dtm_init()

M0_INTERNAL void m0_dtm_init ( struct m0_dtm dtm,
struct m0_uint128 id 
)

Definition at line 41 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_local_remote_fini()

M0_INTERNAL void m0_dtm_local_remote_fini ( struct m0_dtm_local_remote lre)

Definition at line 276 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_local_remote_init()

M0_INTERNAL void m0_dtm_local_remote_init ( struct m0_dtm_local_remote lre,
struct m0_uint128 id,
struct m0_dtm local,
struct m0_reqh reqh 
)

Definition at line 266 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_ltx_add()

M0_INTERNAL void m0_dtm_ltx_add ( struct m0_dtm_ltx ltx,
struct m0_dtm_oper oper 
)

Definition at line 69 of file ltx.c.

Here is the call graph for this function:

◆ m0_dtm_ltx_close()

M0_INTERNAL void m0_dtm_ltx_close ( struct m0_dtm_ltx ltx)

Definition at line 56 of file ltx.c.

Here is the call graph for this function:

◆ m0_dtm_ltx_fini()

M0_INTERNAL void m0_dtm_ltx_fini ( struct m0_dtm_ltx ltx)

Definition at line 63 of file ltx.c.

Here is the call graph for this function:

◆ m0_dtm_ltx_init()

M0_INTERNAL void m0_dtm_ltx_init ( struct m0_dtm_ltx ltx,
struct m0_dtm dtm,
struct m0_be_domain dom 
)

Definition at line 40 of file ltx.c.

Here is the call graph for this function:

◆ m0_dtm_ltx_open()

M0_INTERNAL void m0_dtm_ltx_open ( struct m0_dtm_ltx ltx)

Definition at line 50 of file ltx.c.

Here is the call graph for this function:

◆ m0_dtm_nu_fini()

M0_INTERNAL void m0_dtm_nu_fini ( struct m0_dtm_nu nu)

Definition at line 370 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_nu_init()

M0_INTERNAL void m0_dtm_nu_init ( struct m0_dtm_nu nu)

Definition at line 365 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_nuclei_fini()

M0_INTERNAL void m0_dtm_nuclei_fini ( void  )

Definition at line 534 of file nucleus.c.

Here is the caller graph for this function:

◆ m0_dtm_nuclei_init()

M0_INTERNAL void m0_dtm_nuclei_init ( void  )

Definition at line 528 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_object_fini()

M0_INTERNAL void m0_dtm_object_fini ( struct m0_dtm_object obj)

◆ m0_dtm_object_init()

M0_INTERNAL void m0_dtm_object_init ( struct m0_dtm_object obj)

◆ m0_dtm_op_close()

M0_INTERNAL void m0_dtm_op_close ( const struct m0_dtm_op op)

Definition at line 84 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_op_del()

M0_INTERNAL void m0_dtm_op_del ( struct m0_dtm_op op)

Definition at line 128 of file nucleus.c.

Here is the call graph for this function:

◆ m0_dtm_op_done()

M0_INTERNAL void m0_dtm_op_done ( const struct m0_dtm_op op)

Definition at line 108 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_op_fini()

M0_INTERNAL void m0_dtm_op_fini ( struct m0_dtm_op op)

Definition at line 135 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_op_init()

M0_INTERNAL void m0_dtm_op_init ( struct m0_dtm_op op,
struct m0_dtm_nu nu 
)

Definition at line 77 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_op_invariant()

M0_INTERNAL bool m0_dtm_op_invariant ( const struct m0_dtm_op op)

Definition at line 470 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_op_prepared()

M0_INTERNAL void m0_dtm_op_prepared ( const struct m0_dtm_op op)

Definition at line 97 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_build()

M0_INTERNAL int m0_dtm_oper_build ( struct m0_dtm_oper oper,
struct m0_tl uu,
const struct m0_dtm_oper_descr ode 
)

Definition at line 183 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_close()

M0_INTERNAL void m0_dtm_oper_close ( struct m0_dtm_oper oper)

Definition at line 83 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_done()

M0_INTERNAL void m0_dtm_oper_done ( const struct m0_dtm_oper oper,
const struct m0_dtm_remote rem 
)

Definition at line 144 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_fini()

M0_INTERNAL void m0_dtm_oper_fini ( struct m0_dtm_oper oper)

Definition at line 58 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_get()

M0_INTERNAL struct m0_dtm_update * m0_dtm_oper_get ( const struct m0_dtm_oper oper,
uint32_t  label 
)

Definition at line 259 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_init()

M0_INTERNAL void m0_dtm_oper_init ( struct m0_dtm_oper oper,
struct m0_dtm dtm,
struct m0_tl uu 
)

Definition at line 44 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_invariant()

M0_INTERNAL bool m0_dtm_oper_invariant ( const struct m0_dtm_oper oper)

Definition at line 69 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_pack()

M0_INTERNAL void m0_dtm_oper_pack ( struct m0_dtm_oper oper,
const struct m0_dtm_remote rem,
struct m0_dtm_oper_descr ode 
)

Definition at line 161 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_prepared()

M0_INTERNAL void m0_dtm_oper_prepared ( const struct m0_dtm_oper oper,
const struct m0_dtm_remote rem 
)

Definition at line 122 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_oper_unpack()

M0_INTERNAL void m0_dtm_oper_unpack ( struct m0_dtm_oper oper,
const struct m0_dtm_oper_descr ode 
)

◆ m0_dtm_remote_add()

M0_INTERNAL void m0_dtm_remote_add ( struct m0_dtm_remote rem,
struct m0_dtm_oper oper,
struct m0_dtm_history history,
struct m0_dtm_update update 
)

Definition at line 65 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_remote_fini()

M0_INTERNAL void m0_dtm_remote_fini ( struct m0_dtm_remote remote)

Definition at line 82 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_remote_global_fini()

M0_INTERNAL void m0_dtm_remote_global_fini ( void  )

Definition at line 209 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_remote_global_init()

M0_INTERNAL int m0_dtm_remote_global_init ( void  )

Definition at line 195 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_remote_init()

M0_INTERNAL void m0_dtm_remote_init ( struct m0_dtm_remote remote,
struct m0_uint128 id,
struct m0_dtm local 
)

Definition at line 73 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_reply_pack()

M0_INTERNAL void m0_dtm_reply_pack ( const struct m0_dtm_oper oper,
const struct m0_dtm_oper_descr request,
struct m0_dtm_oper_descr reply 
)

Definition at line 209 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_reply_unpack()

M0_INTERNAL void m0_dtm_reply_unpack ( struct m0_dtm_oper oper,
const struct m0_dtm_oper_descr reply 
)

Definition at line 236 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_rpc_remote_fini()

M0_INTERNAL void m0_dtm_rpc_remote_fini ( struct m0_dtm_rpc_remote remote)

Definition at line 97 of file remote.c.

Here is the call graph for this function:

◆ m0_dtm_rpc_remote_init()

M0_INTERNAL void m0_dtm_rpc_remote_init ( struct m0_dtm_rpc_remote remote,
struct m0_uint128 id,
struct m0_dtm local,
struct m0_rpc_conn conn 
)

Definition at line 87 of file remote.c.

Here is the call graph for this function:

◆ m0_dtm_undo_done()

M0_INTERNAL void m0_dtm_undo_done ( struct m0_dtm_update update)

Definition at line 69 of file machine.c.

Here is the call graph for this function:

◆ m0_dtm_up_init()

M0_INTERNAL void m0_dtm_up_init ( struct m0_dtm_up up,
struct m0_dtm_hi hi,
struct m0_dtm_op op,
enum m0_dtm_up_rule  rule,
m0_dtm_ver_t  ver,
m0_dtm_ver_t  orig_ver 
)

Definition at line 286 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_up_invariant()

M0_INTERNAL bool m0_dtm_up_invariant ( const struct m0_dtm_up up)

Definition at line 448 of file nucleus.c.

Here is the caller graph for this function:

◆ m0_dtm_up_later()

M0_INTERNAL struct m0_dtm_up * m0_dtm_up_later ( struct m0_dtm_up up)

Definition at line 380 of file nucleus.c.

Here is the caller graph for this function:

◆ m0_dtm_up_prior()

M0_INTERNAL struct m0_dtm_up * m0_dtm_up_prior ( struct m0_dtm_up up)

Definition at line 375 of file nucleus.c.

Here is the caller graph for this function:

◆ m0_dtm_up_ver_set()

M0_INTERNAL void m0_dtm_up_ver_set ( struct m0_dtm_up up,
m0_dtm_ver_t  ver,
m0_dtm_ver_t  orig_ver 
)

◆ m0_dtm_update_build()

M0_INTERNAL int m0_dtm_update_build ( struct m0_dtm_update update,
struct m0_dtm_oper oper,
const struct m0_dtm_update_descr updd 
)

Definition at line 132 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_update_init()

M0_INTERNAL void m0_dtm_update_init ( struct m0_dtm_update update,
struct m0_dtm_history history,
struct m0_dtm_oper oper,
const struct m0_dtm_update_data data 
)

Definition at line 47 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_update_invariant()

M0_INTERNAL bool m0_dtm_update_invariant ( const struct m0_dtm_update update)

Definition at line 65 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_update_is_user()

M0_INTERNAL bool m0_dtm_update_is_user ( const struct m0_dtm_update update)

Definition at line 87 of file update.c.

Here is the call graph for this function:

◆ m0_dtm_update_link()

M0_INTERNAL void m0_dtm_update_link ( struct m0_tl list,
struct m0_dtm_update update,
uint32_t  nr 
)

Definition at line 221 of file update.c.

Here is the caller graph for this function:

◆ m0_dtm_update_list_fini()

M0_INTERNAL void m0_dtm_update_list_fini ( struct m0_tl list)

Definition at line 182 of file update.c.

Here is the caller graph for this function:

◆ m0_dtm_update_list_init()

M0_INTERNAL void m0_dtm_update_list_init ( struct m0_tl list)

Definition at line 177 of file update.c.

Here is the caller graph for this function:

◆ m0_dtm_update_matches_descr()

M0_INTERNAL bool m0_dtm_update_matches_descr ( const struct m0_dtm_update update,
const struct m0_dtm_update_descr updd 
)

Definition at line 154 of file update.c.

Here is the caller graph for this function:

◆ m0_dtm_update_pack()

M0_INTERNAL void m0_dtm_update_pack ( const struct m0_dtm_update update,
struct m0_dtm_update_descr updd 
)

Definition at line 93 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtm_update_reint()

M0_INTERNAL void m0_dtm_update_reint ( struct m0_dtm_update update)

Definition at line 192 of file update.c.

Here is the call graph for this function:

◆ m0_dtm_update_unpack()

M0_INTERNAL void m0_dtm_update_unpack ( struct m0_dtm_update update,
const struct m0_dtm_update_descr updd 
)

Definition at line 113 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_alloc()

M0_INTERNAL struct m0_dtx* m0_dtx0_alloc ( struct m0_dtm0_service svc,
struct m0_sm_group grp 
)

Definition at line 456 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_close()

M0_INTERNAL int m0_dtx0_close ( struct m0_dtx dtx)

Forbids further modifications by user and shares DTX with DTM log. It shall be called when the user of DTM0 finished populating the information about the participants of the corresponding dtx. Once a dtx is closed, all the participants in the list will move to INPROGRESS state.

Definition at line 492 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_done()

M0_INTERNAL void m0_dtx0_done ( struct m0_dtx dtx)

Marks a transaction as "no longer in-use". The user does not have exclusive ownership on a dtx after it has been closed (i.e., added to the log). This function ends this sharing, so that the log has exclusive ownership of the record. The user should not hold any pointers to this DTX after this call.

Definition at line 504 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_executed()

M0_INTERNAL void m0_dtx0_executed ( struct m0_dtx dtx,
uint32_t  pa_idx 
)

Notifies DTM0 that DTX is executed on the particular participant.

Parameters
dtxA DTX that is executed on the particular participant.
pa_idxIndex of the participant.

Definition at line 498 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_fid_assign()

M0_INTERNAL int m0_dtx0_fid_assign ( struct m0_dtx dtx,
uint32_t  pa_idx,
const struct m0_fid pa_sfid 
)

Fills in the FID of the given participant.

Parameters
pa_idxA position in the participants list.
pa_sfidThe FID of a service that participates in the dtx.

Definition at line 475 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_fop_assign()

M0_INTERNAL void m0_dtx0_fop_assign ( struct m0_dtx dtx,
uint32_t  pa_idx,
const struct m0_fop pa_fop 
)

Fills in the FOP associated with the given participant.

Definition at line 483 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_open()

M0_INTERNAL int m0_dtx0_open ( struct m0_dtx dtx,
uint32_t  nr_pa 
)

Initializes inner structures and allocates resources.

Parameters
dtxA DTX structure to be initialized (must be allocated).
nr_paThe number of participants.

Definition at line 469 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_prepare()

M0_INTERNAL void m0_dtx0_prepare ( struct m0_dtx dtx)

Assigns a TID to the transaction.

Definition at line 463 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx0_sm_state()

M0_INTERNAL enum m0_dtm0_dtx_state m0_dtx0_sm_state ( const struct m0_dtx dtx)

Definition at line 522 of file dtx.c.

Here is the caller graph for this function:

◆ m0_dtx0_txd_copy()

M0_INTERNAL int m0_dtx0_txd_copy ( const struct m0_dtx dtx,
struct m0_dtm0_tx_desc dst 
)

Puts a copy of dtx's transaction descriptor into "dst". User is responsible for m0_dtm0_tx_desc_fini() lasing of 'dst'. If dtx is NULL then dst will be filled with the empty tx_desc.

Definition at line 510 of file dtx.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_done()

M0_INTERNAL void m0_dtx_done ( struct m0_dtx tx)

Definition at line 115 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_done_sync()

M0_INTERNAL int m0_dtx_done_sync ( struct m0_dtx tx)

Definition at line 122 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_fini()

M0_INTERNAL void m0_dtx_fini ( struct m0_dtx tx)

Definition at line 134 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_fol_add()

M0_INTERNAL int m0_dtx_fol_add ( struct m0_dtx tx)

Definition at line 169 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_init()

M0_INTERNAL void m0_dtx_init ( struct m0_dtx tx,
struct m0_be_domain be_domain,
struct m0_sm_group sm_group 
)

Definition at line 67 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_open()

M0_INTERNAL void m0_dtx_open ( struct m0_dtx tx)

Definition at line 86 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_open_sync()

M0_INTERNAL int m0_dtx_open_sync ( struct m0_dtx tx)

Definition at line 101 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dtx_opened()

M0_INTERNAL void m0_dtx_opened ( struct m0_dtx tx)

Definition at line 94 of file dtm.c.

Here is the caller graph for this function:

◆ m0_dtx_prep()

M0_INTERNAL void m0_dtx_prep ( struct m0_dtx tx,
const struct m0_be_tx_credit cred 
)

Definition at line 80 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ M0_TL_DECLARE() [1/6]

M0_TL_DECLARE ( hi  ,
M0_EXTERN  ,
struct m0_dtm_up   
)

◆ M0_TL_DECLARE() [2/6]

M0_TL_DECLARE ( op  ,
M0_EXTERN  ,
struct m0_dtm_up   
)

◆ M0_TL_DECLARE() [3/6]

M0_TL_DECLARE ( history  ,
M0_EXTERN  ,
struct m0_dtm_update   
)

◆ M0_TL_DECLARE() [4/6]

M0_TL_DECLARE ( oper  ,
M0_EXTERN  ,
struct m0_dtm_update   
)

◆ M0_TL_DECLARE() [5/6]

M0_TL_DECLARE ( cat  ,
M0_EXTERN  ,
struct m0_dtm_history   
)

◆ M0_TL_DECLARE() [6/6]

M0_TL_DECLARE ( exc  ,
M0_EXTERN  ,
struct m0_dtm_history   
)

◆ M0_TL_DEFINE() [1/6]

M0_TL_DEFINE ( cat  ,
M0_INTERNAL  ,
struct m0_dtm_history   
)

◆ M0_TL_DEFINE() [2/6]

M0_TL_DEFINE ( hi  ,
M0_INTERNAL  ,
struct m0_dtm_up   
)

◆ M0_TL_DEFINE() [3/6]

M0_TL_DEFINE ( op  ,
M0_INTERNAL  ,
struct m0_dtm_up   
)

◆ M0_TL_DEFINE() [4/6]

M0_TL_DEFINE ( history  ,
M0_INTERNAL  ,
struct m0_dtm_update   
)

◆ M0_TL_DEFINE() [5/6]

M0_TL_DEFINE ( oper  ,
M0_INTERNAL  ,
struct m0_dtm_update   
)

◆ M0_TL_DEFINE() [6/6]

M0_TL_DEFINE ( exc  ,
M0_INTERNAL  ,
struct m0_dtm_history   
)

◆ M0_TL_DESCR_DECLARE() [1/6]

M0_TL_DESCR_DECLARE ( hi  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DECLARE() [2/6]

M0_TL_DESCR_DECLARE ( op  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DECLARE() [3/6]

M0_TL_DESCR_DECLARE ( history  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DECLARE() [4/6]

M0_TL_DESCR_DECLARE ( oper  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DECLARE() [5/6]

M0_TL_DESCR_DECLARE ( cat  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DECLARE() [6/6]

M0_TL_DESCR_DECLARE ( exc  ,
M0_EXTERN   
)

◆ M0_TL_DESCR_DEFINE() [1/6]

M0_TL_DESCR_DEFINE ( cat  ,
"catalogue"  ,
M0_INTERNAL  ,
struct m0_dtm_history  ,
h_catlink  ,
h_hi.hi_ups.  t_magic,
M0_DTM_HI_MAGIX  ,
M0_DTM_CAT_MAGIX   
)

◆ M0_TL_DESCR_DEFINE() [2/6]

M0_TL_DESCR_DEFINE ( hi  ,
"nucleus hi updates"  ,
M0_INTERNAL  ,
struct m0_dtm_up  ,
up_hi_linkage  ,
up_magix  ,
M0_DTM_UP_MAGIX  ,
M0_DTM_HI_MAGIX   
)

◆ M0_TL_DESCR_DEFINE() [3/6]

M0_TL_DESCR_DEFINE ( op  ,
"nucleus operation updates"  ,
M0_INTERNAL  ,
struct m0_dtm_up  ,
up_op_linkage  ,
up_magix  ,
M0_DTM_UP_MAGIX  ,
M0_DTM_OP_MAGIX   
)

◆ M0_TL_DESCR_DEFINE() [4/6]

M0_TL_DESCR_DEFINE ( history  ,
"dtm history updates"  ,
M0_INTERNAL  ,
struct m0_dtm_update  ,
upd_up.  up_hi_linkage,
upd_up.  up_magix,
M0_DTM_UP_MAGIX  ,
M0_DTM_HI_MAGIX   
)

◆ M0_TL_DESCR_DEFINE() [5/6]

M0_TL_DESCR_DEFINE ( oper  ,
"dtm operation updates"  ,
M0_INTERNAL  ,
struct m0_dtm_update  ,
upd_up.  up_op_linkage,
upd_up.  up_magix,
M0_DTM_UP_MAGIX  ,
M0_DTM_OP_MAGIX   
)

◆ M0_TL_DESCR_DEFINE() [6/6]

M0_TL_DESCR_DEFINE ( exc  ,
"excited histories"  ,
M0_INTERNAL  ,
struct m0_dtm_history  ,
h_exclink  ,
h_hi.hi_ups.  t_magic,
M0_DTM_HI_MAGIX  ,
M0_DTM_EXC_MAGIX   
)

◆ M0_XCA_DOMAIN()

struct m0_dtm_oper_updates M0_XCA_DOMAIN ( rpc  )

◆ miser()

static void miser ( struct m0_dtm_op op)
static

Definition at line 60 of file nucleus.c.

◆ never()

static void never ( struct m0_dtm_op op)
static

Definition at line 74 of file dtx.c.

◆ noop()

static void noop ( struct m0_dtm_op op)
static

Definition at line 71 of file dtx.c.

◆ notice_deliver()

static void notice_deliver ( struct m0_dtm_notice notice,
struct m0_dtm dtm 
)
static

Definition at line 214 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ notice_pack()

static void notice_pack ( struct m0_dtm_notice notice,
const struct m0_dtm_history history,
m0_dtm_ver_t  ver,
enum rem_rpc_notification  opcode 
)
static

Definition at line 164 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nu()

static void nu ( void  )
static

Definition at line 87 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nu_dtm()

M0_INTERNAL struct m0_dtm * nu_dtm ( struct m0_dtm_nu nu)

Definition at line 154 of file dtm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nu_lock()

M0_INTERNAL void nu_lock ( struct m0_dtm_nu nu)

Definition at line 538 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nu_unlock()

M0_INTERNAL void nu_unlock ( struct m0_dtm_nu nu)

Definition at line 543 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op()

static void op ( void  )
static

Definition at line 105 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op_add()

static void op_add ( void  )
static

Definition at line 211 of file nucleus.c.

Here is the call graph for this function:

◆ op_cmp()

static int op_cmp ( const struct m0_dtm_op op)
static

Definition at line 235 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op_del()

static void op_del ( struct m0_dtm_op op)
static

Definition at line 119 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op_done()

static void op_done ( void  )
static

Definition at line 351 of file nucleus.c.

Here is the call graph for this function:

◆ op_gap()

static void op_gap ( void  )
static

Definition at line 248 of file nucleus.c.

Here is the call graph for this function:

◆ op_is_locked()

static bool op_is_locked ( const struct m0_dtm_op op)
static

Definition at line 428 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op_late() [1/2]

static void op_late ( void  )
static

Definition at line 274 of file nucleus.c.

Here is the call graph for this function:

◆ op_late() [2/2]

static void op_late ( struct m0_dtm_op op)
static

Definition at line 283 of file transmit.c.

◆ op_miser() [1/2]

static void op_miser ( struct m0_dtm_op op)
static

Definition at line 288 of file transmit.c.

◆ op_miser() [2/2]

static void op_miser ( void  )
static

Definition at line 292 of file nucleus.c.

Here is the call graph for this function:

◆ op_miser_delayed()

static void op_miser_delayed ( void  )
static

Definition at line 313 of file nucleus.c.

Here is the call graph for this function:

◆ op_print()

M0_INTERNAL void op_print ( const struct m0_dtm_op op)

Definition at line 555 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ op_ready()

static void op_ready ( struct m0_dtm_op op)
static

Definition at line 272 of file transmit.c.

Here is the call graph for this function:

◆ op_state()

M0_INTERNAL bool op_state ( const struct m0_dtm_op op,
enum m0_dtm_state  state 
)

Definition at line 511 of file nucleus.c.

Here is the caller graph for this function:

◆ oper_lock()

M0_INTERNAL void oper_lock ( const struct m0_dtm_oper oper)

Definition at line 283 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ oper_populate()

static void oper_populate ( int  i,
unsigned  nr 
)
static

Definition at line 563 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ oper_print()

M0_INTERNAL void oper_print ( const struct m0_dtm_oper oper)

Definition at line 293 of file operation.c.

Here is the call graph for this function:

◆ oper_unlock()

M0_INTERNAL void oper_unlock ( const struct m0_dtm_oper oper)

Definition at line 288 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ oper_update_unique()

M0_INTERNAL bool oper_update_unique ( const struct m0_dtm_oper oper,
const struct m0_dtm_update update 
)

Definition at line 270 of file operation.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pa_history()

static struct m0_dtm_history * pa_history ( struct m0_dtm_dtx_party pa)
static

Definition at line 160 of file dtx.c.

Here is the caller graph for this function:

◆ ready()

static void ready ( struct m0_dtm_op op)
static

Definition at line 54 of file nucleus.c.

◆ redo_test()

static void redo_test ( void  )
static

Definition at line 706 of file transmit.c.

Here is the call graph for this function:

◆ rem_fol_cat()

static struct m0_dtm_catalogue* rem_fol_cat ( struct m0_dtm dtm)
static

Definition at line 77 of file fol.c.

Here is the caller graph for this function:

◆ rem_local_fixed()

static void rem_local_fixed ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 298 of file remote.c.

Here is the call graph for this function:

◆ rem_local_notify()

static void rem_local_notify ( struct m0_dtm_remote rem,
const struct m0_dtm_history history,
m0_dtm_ver_t  ver,
enum rem_rpc_notification  opcode 
)
static

Definition at line 281 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rem_local_persistent()

static void rem_local_persistent ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 291 of file remote.c.

Here is the call graph for this function:

◆ rem_local_reset()

static void rem_local_reset ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 304 of file remote.c.

Here is the call graph for this function:

◆ rem_local_send()

static void rem_local_send ( struct m0_dtm_remote rem,
struct m0_dtm_update update 
)
static

Definition at line 310 of file remote.c.

Here is the call graph for this function:

◆ rem_local_undo()

static void rem_local_undo ( struct m0_dtm_remote rem,
struct m0_dtm_history history,
m0_dtm_ver_t  upto 
)
static

Definition at line 322 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_deliver()

static int rem_rpc_deliver ( struct m0_rpc_machine mach,
struct m0_rpc_item item 
)
static

Definition at line 240 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rem_rpc_fixed()

static void rem_rpc_fixed ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 109 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_notify()

static void rem_rpc_notify ( struct m0_dtm_remote rem,
const struct m0_dtm_history history,
m0_dtm_ver_t  ver,
enum rem_rpc_notification  opcode 
)
static

Definition at line 173 of file remote.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rem_rpc_persistent()

static void rem_rpc_persistent ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 102 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_redo_replied()

static M0_UNUSED void rem_rpc_redo_replied ( struct m0_rpc_item item)
static

Definition at line 247 of file remote.c.

◆ rem_rpc_resend()

static void rem_rpc_resend ( struct m0_dtm_remote rem,
struct m0_dtm_update update 
)
static

Definition at line 140 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_reset()

static void rem_rpc_reset ( struct m0_dtm_remote rem,
struct m0_dtm_history history 
)
static

Definition at line 115 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_send()

static void rem_rpc_send ( struct m0_dtm_remote rem,
struct m0_dtm_update update 
)
static

Definition at line 130 of file remote.c.

Here is the call graph for this function:

◆ rem_rpc_undo()

static void rem_rpc_undo ( struct m0_dtm_remote rem,
struct m0_dtm_history history,
m0_dtm_ver_t  upto 
)
static

Definition at line 121 of file remote.c.

Here is the call graph for this function:

◆ rpc_fop_fom_fini()

static void rpc_fop_fom_fini ( void  )
static

Definition at line 436 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_fop_fom_init()

static void rpc_fop_fom_init ( void  )
static

Definition at line 402 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ service_allocate()

static int service_allocate ( struct m0_reqh_service **  service,
const struct m0_reqh_service_type stype 
)
static

Definition at line 242 of file transmit.c.

◆ service_fini()

static void service_fini ( struct m0_reqh_service service)
static

Definition at line 231 of file transmit.c.

Here is the call graph for this function:

◆ service_start()

static int service_start ( struct m0_reqh_service service)
static

Definition at line 223 of file transmit.c.

◆ service_stop()

static void service_stop ( struct m0_reqh_service service)
static

Definition at line 228 of file transmit.c.

◆ set_flag()

static void set_flag ( struct m0_dtm_op op)
static

Definition at line 268 of file nucleus.c.

Here is the caller graph for this function:

◆ sibling_persistent()

static void sibling_persistent ( struct m0_dtm_history history,
struct m0_dtm_op op 
)
static

Definition at line 159 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sibling_reset()

static void sibling_reset ( struct m0_dtm_history history,
struct m0_dtm_op op 
)
static

Definition at line 176 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sibling_undo()

static void sibling_undo ( struct m0_dtm_history history,
struct m0_dtm_op op 
)
static

Definition at line 140 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ src_find()

static int src_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 139 of file transmit.c.

◆ src_fini()

static void src_fini ( void  )
static

Definition at line 499 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ src_id()

static const struct m0_uint128* src_id ( const struct m0_dtm_history history)
static

Definition at line 162 of file transmit.c.

Here is the caller graph for this function:

◆ src_init()

static void src_init ( struct m0_dtm_remote dtm,
unsigned  flags,
int  ctrl 
)
static

Definition at line 449 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_fom_create()

static int test_fom_create ( struct m0_fop fop,
struct m0_fom **  out,
struct m0_reqh reqh 
)
static

Definition at line 384 of file transmit.c.

Here is the call graph for this function:

◆ test_fom_fini()

static void test_fom_fini ( struct m0_fom fom)
static

Definition at line 265 of file transmit.c.

Here is the call graph for this function:

◆ test_fom_home_locality()

static size_t test_fom_home_locality ( const struct m0_fom fom)
static

Definition at line 371 of file transmit.c.

Here is the call graph for this function:

◆ test_fom_tick()

static int test_fom_tick ( struct m0_fom fom)
static

Definition at line 329 of file transmit.c.

Here is the call graph for this function:

◆ test_persistent()

static void test_persistent ( struct m0_dtm_history history)
static

Definition at line 103 of file dtx.c.

◆ tgt_find()

static int tgt_find ( struct m0_dtm dtm,
const struct m0_dtm_history_type ht,
const struct m0_uint128 id,
struct m0_dtm_history **  out 
)
static

Definition at line 179 of file transmit.c.

◆ tgt_fini()

static void tgt_fini ( void  )
static

Definition at line 548 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tgt_id()

static const struct m0_uint128* tgt_id ( const struct m0_dtm_history history)
static

Definition at line 202 of file transmit.c.

Here is the caller graph for this function:

◆ tgt_init()

static void tgt_init ( void  )
static

Definition at line 518 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transmit_build()

static void transmit_build ( void  )
static

Definition at line 583 of file transmit.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ transmit_test()

static void transmit_test ( void  )
static

Definition at line 613 of file transmit.c.

Here is the call graph for this function:

◆ undo_done()

static void undo_done ( struct m0_dtm_update update)
static

Definition at line 193 of file machine.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ undo_redo()

static int undo_redo ( struct m0_dtm_update updt)
static

Definition at line 79 of file dtx.c.

◆ up_cmp()

static int up_cmp ( const struct m0_dtm_up up,
m0_dtm_ver_t  hver 
)
static

Definition at line 337 of file nucleus.c.

Here is the caller graph for this function:

◆ up_del()

static void up_del ( struct m0_dtm_up up)
static

Definition at line 328 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_fini()

static void up_fini ( struct m0_dtm_up up)
static

Definition at line 307 of file nucleus.c.

Here is the caller graph for this function:

◆ up_init()

static void up_init ( void  )
static

Definition at line 204 of file nucleus.c.

Here is the call graph for this function:

◆ up_insert()

static void up_insert ( struct m0_dtm_up up)
static

Definition at line 315 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_is_earlier()

M0_INTERNAL bool up_is_earlier ( struct m0_dtm_up up0,
struct m0_dtm_up up1 
)

Definition at line 410 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_pair_invariant()

static bool up_pair_invariant ( const struct m0_dtm_up up,
const struct m0_dtm_up next 
)
static

Definition at line 497 of file nucleus.c.

Here is the caller graph for this function:

◆ up_prepared()

M0_INTERNAL void up_prepared ( struct m0_dtm_up up)

Definition at line 222 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_print()

M0_INTERNAL void up_print ( const struct m0_dtm_up up)

Definition at line 548 of file nucleus.c.

Here is the caller graph for this function:

◆ up_ready()

static void up_ready ( struct m0_dtm_up up)
static

Definition at line 203 of file nucleus.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_update()

M0_INTERNAL struct m0_dtm_update * up_update ( struct m0_dtm_up up)

Definition at line 228 of file update.c.

Here is the caller graph for this function:

◆ up_ver()

M0_INTERNAL m0_dtm_ver_t up_ver ( const struct m0_dtm_up up)

Definition at line 405 of file nucleus.c.

Here is the caller graph for this function:

◆ update_init()

static int update_init ( struct m0_dtm_history history,
uint8_t  id,
struct m0_dtm_update update 
)
static

Definition at line 95 of file dtx.c.

◆ update_is_earlier()

M0_INTERNAL bool update_is_earlier ( struct m0_dtm_update update0,
struct m0_dtm_update update1 
)

Definition at line 234 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_print()

M0_INTERNAL void update_print ( const struct m0_dtm_update update)

Definition at line 317 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_print_internal()

M0_INTERNAL void update_print_internal ( const struct m0_dtm_update update,
bool  history 
)

Definition at line 297 of file update.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_reint()

M0_INTERNAL void update_reint ( struct m0_dtm_update update)

Definition at line 240 of file update.c.

Here is the caller graph for this function:

◆ update_ver()

M0_INTERNAL m0_dtm_ver_t update_ver ( const struct m0_dtm_update update)

Definition at line 194 of file history.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ c_late

void(* c_late) (struct m0_dtm_op *op)
static

Definition at line 52 of file nucleus.c.

◆ c_miser

void(* c_miser) (struct m0_dtm_op *op)
static

Definition at line 51 of file nucleus.c.

◆ c_ready

void(* c_ready) (struct m0_dtm_op *op)
static

Definition at line 50 of file nucleus.c.

◆ cc

struct ctx cc
static

◆ ch_close_ops

static const struct m0_dtm_update_ops ch_close_ops
static
Initial value:
= {
.updo_redo = &ch_noop,
.updo_undo = &ch_noop,
.updo_type = &ch_close_utype
}
static const struct m0_dtm_update_type ch_close_utype
Definition: history.c:382
static int ch_noop(struct m0_dtm_update *updt)
Definition: history.c:366

Definition at line 48 of file history.c.

◆ ch_close_utype

const struct m0_dtm_update_type ch_close_utype
static
Initial value:
= {
.updtt_id = H_CLOSE,
.updtt_name = "close"
}

Definition at line 382 of file history.c.

◆ ch_noop_ops

static const struct m0_dtm_update_ops ch_noop_ops
static
Initial value:
= {
.updo_redo = &ch_noop,
.updo_undo = &ch_noop,
.updo_type = &ch_noop_utype
}
static const struct m0_dtm_update_type ch_noop_utype
Definition: history.c:371
static int ch_noop(struct m0_dtm_update *updt)
Definition: history.c:366

Definition at line 49 of file history.c.

◆ ch_noop_utype

const struct m0_dtm_update_type ch_noop_utype
static
Initial value:
= {
.updtt_id = H_NOOP,
.updtt_name = "noop"
}

Definition at line 371 of file history.c.

◆ clop_ops

const struct m0_dtm_op_ops clop_ops
static
Initial value:
= {
.doo_ready = clop_nop,
.doo_late = clop_impossible,
.doo_miser = clop_impossible
}
static void clop_nop(struct m0_dtm_op *op)
Definition: history.c:305
static void clop_impossible(struct m0_dtm_op *op)
Definition: history.c:308

Definition at line 313 of file history.c.

◆ control_local

struct m0_dtm_update control_local[OPER_NR][2 *DTM_NR]
static

Definition at line 55 of file dtx.c.

◆ control_remote

struct m0_dtm_update control_remote[REM_NR][OPER_NR][1]
static

Definition at line 56 of file dtx.c.

◆ control_src

struct m0_dtm_update control_src[OPER_NR][TGT_DELTA]
static

Definition at line 76 of file transmit.c.

◆ control_tgt

struct m0_dtm_update control_tgt[OPER_NR][TGT_DELTA]
static

Definition at line 77 of file transmit.c.

◆ dtm_dtx_ut

struct m0_ut_suite dtm_dtx_ut
Initial value:
= {
.ts_name = "dtm-dtx-ut",
.ts_tests = {
{ "dtm-setup", dtm_setup },
{ "dtx-setup", dtx_setup },
{ "dtx-populate", dtx_populate },
{ "dtx-pack", dtx_pack },
{ "dtx-reply", dtx_reply },
{ "dtx-fix", dtx_fix },
{ NULL, NULL }
}
}
static void dtx_pack(void)
Definition: dtx.c:432
#define NULL
Definition: misc.h:38
static void dtx_reply(void)
Definition: dtx.c:438
static void dtx_setup(void)
Definition: dtx.c:420
static void dtx_populate(void)
Definition: dtx.c:426
static void dtm_setup(void)
Definition: dtx.c:414
static void dtx_fix(void)
Definition: dtx.c:444

Definition at line 450 of file dtx.c.

◆ dtm_id_src

struct m0_uint128 dtm_id_src = { 1, 1 }
static

Definition at line 65 of file transmit.c.

◆ dtm_id_tgt

struct m0_uint128 dtm_id_tgt = { 2, 2 }
static

Definition at line 66 of file transmit.c.

◆ dtm_local

struct m0_dtm dtm_local
static

Definition at line 49 of file dtx.c.

◆ dtm_nucleus_ut

struct m0_ut_suite dtm_nucleus_ut
Initial value:
= {
.ts_name = "dtm-nucleus-ut",
.ts_tests = {
{ "nu", nu },
{ "hi", hi },
{ "op", op },
{ "up", up_init },
{ "op-add", op_add },
{ "gap", op_gap },
{ "late", op_late },
{ "miser", op_miser },
{ "miser-delayed", op_miser_delayed },
{ "done", op_done },
{ NULL, NULL }
}
}
static void op_done(void)
Definition: nucleus.c:351
#define NULL
Definition: misc.h:38
static void op_late(void)
Definition: nucleus.c:274
op
Definition: libdemo.c:64
static void up_init(void)
Definition: nucleus.c:204
static void op_gap(void)
Definition: nucleus.c:248
static void nu(void)
Definition: nucleus.c:87
static void op_add(void)
Definition: nucleus.c:211
static void op_miser_delayed(void)
Definition: nucleus.c:313
static void hi(void)
Definition: nucleus.c:93
static void op_miser(void)
Definition: nucleus.c:292

Definition at line 376 of file nucleus.c.

◆ dtm_remote

struct m0_dtm dtm_remote[REM_NR]
static

Definition at line 50 of file dtx.c.

◆ dtm_src

struct m0_dtm dtm_src
static

Definition at line 68 of file transmit.c.

◆ dtm_tgt

struct m0_dtm dtm_tgt
static

Definition at line 69 of file transmit.c.

◆ dtm_transmit_ut

struct m0_ut_suite dtm_transmit_ut
Initial value:
= {
.ts_name = "dtm-transmit-ut",
.ts_tests = {
{ "transmit", transmit_test },
{ "redo", redo_test },
{ NULL, NULL }
}
}
#define NULL
Definition: misc.h:38
static void redo_test(void)
Definition: transmit.c:706
static void transmit_test(void)
Definition: transmit.c:613

Definition at line 731 of file transmit.c.

◆ dtm_update_item_ops

static const struct m0_rpc_item_ops dtm_update_item_ops
static
Initial value:
= {
.rio_replied = &dtm_update_replied
}
static void dtm_update_replied(struct m0_rpc_item *item)
Definition: update.c:262

Definition at line 203 of file update.c.

◆ dtx_htype_ops

const struct m0_dtm_history_type_ops dtx_htype_ops
static
Initial value:
= {
.hito_find = &dtx_find
}
static int dtx_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: dtx.c:108

Definition at line 116 of file dtx.c.

◆ dtx_ops

static const struct m0_dtm_history_ops dtx_ops
static
Initial value:
= {
.hio_type = &m0_dtm_dtx_htype,
.hio_id = &dtx_id,
.hio_persistent = (void *)&dtx_noop,
.hio_fixed = &dtx_fixed,
.hio_update = &m0_dtm_controlh_update
}
static void dtx_fixed(struct m0_dtm_history *history)
Definition: dtx.c:140
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_htype
Definition: dtx.c:125
static const struct m0_uint128 * dtx_id(const struct m0_dtm_history *history)
Definition: dtx.c:132
static void dtx_noop(void *unused)
Definition: dtx.c:105
M0_INTERNAL int m0_dtm_controlh_update(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: history.c:393

Definition at line 48 of file dtx.c.

◆ dtx_srv_htype_ops

const struct m0_dtm_history_type_ops dtx_srv_htype_ops
static
Initial value:
= {
.hito_find = &dtx_srv_find
}
static int dtx_srv_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: dtx.c:187

Definition at line 195 of file dtx.c.

◆ dtx_srv_ops

static const struct m0_dtm_history_ops dtx_srv_ops
static
Initial value:
= {
.hio_type = &m0_dtm_dtx_srv_htype,
.hio_id = &dtx_srv_id,
.hio_persistent = (void *)&dtx_noop,
.hio_fixed = (void *)&dtx_noop,
.hio_update = &m0_dtm_controlh_update
}
static const struct m0_uint128 * dtx_srv_id(const struct m0_dtm_history *history)
Definition: dtx.c:206
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_srv_htype
Definition: dtx.c:199
static void dtx_noop(void *unused)
Definition: dtx.c:105
M0_INTERNAL int m0_dtm_controlh_update(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: history.c:393

Definition at line 49 of file dtx.c.

◆ dtx_states

struct m0_sm_state_descr dtx_states[]
static

Definition at line 41 of file dtx.c.

◆ dtx_trans

struct m0_sm_trans_descr dtx_trans[]
static
Initial value:

Definition at line 73 of file dtx.c.

◆ dx

struct m0_dtm_dtx dx
static

Definition at line 53 of file dtx.c.

◆ flag

bool flag
static

Definition at line 266 of file nucleus.c.

◆ fol_htype_ops

const struct m0_dtm_history_type_ops fol_htype_ops
static
Initial value:
= {
.hito_find = &fol_find
}
static int fol_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: fol.c:97

Definition at line 107 of file fol.c.

◆ fol_ops

static const struct m0_dtm_history_ops fol_ops
static
Initial value:
= {
.hio_type = &m0_dtm_fol_htype,
.hio_id = &fol_id,
.hio_persistent = &fol_persistent,
.hio_fixed = &fol_fixed,
.hio_update = &m0_dtm_controlh_update
}
static const struct m0_uint128 * fol_id(const struct m0_dtm_history *history)
Definition: fol.c:67
static void fol_persistent(struct m0_dtm_history *history)
Definition: fol.c:82
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_htype
Definition: fol.c:111
static void fol_fixed(struct m0_dtm_history *history)
Definition: fol.c:92
M0_INTERNAL int m0_dtm_controlh_update(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: history.c:393

Definition at line 43 of file fol.c.

◆ fol_remote

struct m0_dtm_fol fol_remote[REM_NR]
static

Definition at line 64 of file dtx.c.

◆ fol_remote_htype_ops

const struct m0_dtm_history_type_ops fol_remote_htype_ops
static
Initial value:
= {
.hito_find = &fol_remote_find
}
static int fol_remote_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: fol.c:161

Definition at line 169 of file fol.c.

◆ fol_remote_ops

static const struct m0_dtm_history_ops fol_remote_ops
static
Initial value:
= {
.hio_id = &fol_remote_id,
.hio_persistent = &fol_remote_persistent,
.hio_update = &m0_dtm_controlh_update
}
static void fol_remote_persistent(struct m0_dtm_history *history)
Definition: fol.c:158
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_remote_htype
Definition: fol.c:173
M0_INTERNAL int m0_dtm_controlh_update(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: history.c:393
static const struct m0_uint128 * fol_remote_id(const struct m0_dtm_history *history)
Definition: fol.c:153

Definition at line 44 of file fol.c.

◆ fom_phases

struct m0_sm_state_descr fom_phases[]
static
Initial value:
= {
[FOM_INIT] = {
.sd_flags = M0_SDF_INITIAL,
.sd_name = "init",
.sd_allowed = M0_BITS(FOM_READY)
},
[FOM_READY] = {
.sd_name = "ready",
.sd_allowed = M0_BITS(M0_FOPH_FINISH)
},
.sd_flags = M0_SDF_TERMINAL,
.sd_name = "SM finish",
}
}
#define M0_BITS(...)
Definition: misc.h:236

Definition at line 304 of file transmit.c.

◆ hi_bob

static const struct m0_bob_type hi_bob
static
Initial value:
= {
.bt_name = "dtm history",
.bt_magix_offset = M0_MAGIX_OFFSET(struct m0_dtm_hi, hi_ups.t_magic),
.bt_magix = M0_DTM_HI_MAGIX
}
#define M0_MAGIX_OFFSET(type, field)
Definition: misc.h:356

Definition at line 53 of file nucleus.c.

◆ hi_ops

const struct m0_dtm_hi_ops hi_ops
static
Initial value:
= {
.dho_release = h_release
}
static void h_release(struct m0_dtm_hi *hi)
Definition: nucleus.c:78

Definition at line 82 of file nucleus.c.

◆ history0

struct m0_dtm_history history0[UPDATE_NR *DTM_NR]
static

Definition at line 54 of file dtx.c.

◆ history_local

struct m0_dtm_history* history_local
static

Definition at line 62 of file dtx.c.

◆ history_remote

struct m0_dtm_history* history_remote[REM_NR]
static

Definition at line 63 of file dtx.c.

◆ history_src

struct m0_dtm_history history_src[UPDATE_NR]
static

Definition at line 78 of file transmit.c.

◆ history_tgt

struct m0_dtm_history history_tgt[UPDATE_NR]
static

Definition at line 79 of file transmit.c.

◆ hops

static const struct m0_dtm_history_ops hops
static
Initial value:
= {
.hio_type = &htype,
.hio_id = &hid,
.hio_persistent = &test_persistent,
.hio_update = &update_init
}
static int update_init(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: dtx.c:95
static void test_persistent(struct m0_dtm_history *history)
Definition: dtx.c:103
static const struct m0_dtm_history_type htype
Definition: dtx.c:131
static const struct m0_uint128 * hid(const struct m0_dtm_history *history)
Definition: dtx.c:138

Definition at line 112 of file dtx.c.

◆ htype

const struct m0_dtm_history_type htype
static
Initial value:
= {
.hit_id = 1,
.hit_rem_id = 1,
.hit_name = "test-histories",
.hit_ops = &htype_ops
}
static const struct m0_dtm_history_type_ops htype_ops
Definition: dtx.c:127

Definition at line 131 of file dtx.c.

◆ htype_ops

const struct m0_dtm_history_type_ops htype_ops
static
Initial value:
= {
.hito_find = hfind
}
static int hfind(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: dtx.c:114

Definition at line 127 of file dtx.c.

◆ id0

struct m0_uint128 id0[UPDATE_NR *DTM_NR]
static

Definition at line 57 of file dtx.c.

◆ id_src

struct m0_uint128 id_src[UPDATE_NR]
static

Definition at line 80 of file transmit.c.

◆ id_tgt

struct m0_uint128 id_tgt[UPDATE_NR]
static

Definition at line 81 of file transmit.c.

◆ last

m0_dtm_ver_t last[UPDATE_NR]
static

Definition at line 100 of file transmit.c.

◆ local

struct m0_dtm_local_remote local
static

Definition at line 71 of file transmit.c.

◆ lock

struct m0_mutex lock
static

Definition at line 326 of file transmit.c.

◆ ltx_htype_ops

const struct m0_dtm_history_type_ops ltx_htype_ops
static
Initial value:
= {
.hito_find = ltx_find
}
static int ltx_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: ltx.c:82

Definition at line 90 of file ltx.c.

◆ ltx_ops

static const struct m0_dtm_history_ops ltx_ops
static
Initial value:
= {
.hio_type = &m0_dtm_ltx_htype,
.hio_id = &ltx_id,
.hio_persistent = &ltx_noop,
.hio_fixed = &ltx_noop,
.hio_update = &m0_dtm_controlh_update
}
M0_INTERNAL const struct m0_dtm_history_type m0_dtm_ltx_htype
Definition: ltx.c:98
static void ltx_noop(struct m0_dtm_history *history)
Definition: ltx.c:109
static const struct m0_uint128 * ltx_id(const struct m0_dtm_history *history)
Definition: ltx.c:104
M0_INTERNAL int m0_dtm_controlh_update(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: history.c:393

Definition at line 37 of file ltx.c.

◆ ltxid

const struct m0_uint128 ltxid = M0_UINT128(0x10ca1, 0x10ca1)
static

Definition at line 38 of file ltx.c.

◆ m0_dtm_dtx_htype [1/2]

M0_EXTERN const struct m0_dtm_history_type m0_dtm_dtx_htype

Definition at line 67 of file dtx.h.

◆ m0_dtm_dtx_htype [2/2]

M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_htype
Initial value:
= {
.hit_id = M0_DTM_HTYPE_DTX,
.hit_rem_id = M0_DTM_HTYPE_DTX_SRV,
.hit_name = "dtx-party",
.hit_ops = &dtx_htype_ops
}
static const struct m0_dtm_history_type_ops dtx_htype_ops
Definition: dtx.c:116

Definition at line 125 of file dtx.c.

◆ m0_dtm_dtx_srv_htype [1/2]

M0_EXTERN const struct m0_dtm_history_type m0_dtm_dtx_srv_htype

Definition at line 68 of file dtx.h.

◆ m0_dtm_dtx_srv_htype [2/2]

M0_INTERNAL const struct m0_dtm_history_type m0_dtm_dtx_srv_htype
Initial value:
= {
.hit_rem_id = M0_DTM_HTYPE_DTX,
.hit_name = "distributed transaction service side",
.hit_ops = &dtx_srv_htype_ops
}
static const struct m0_dtm_history_type_ops dtx_srv_htype_ops
Definition: dtx.c:195

Definition at line 199 of file dtx.c.

◆ m0_dtm_fol_htype [1/2]

M0_EXTERN const struct m0_dtm_history_type m0_dtm_fol_htype

Definition at line 53 of file fol.h.

◆ m0_dtm_fol_htype [2/2]

M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_htype
Initial value:
= {
.hit_id = M0_DTM_HTYPE_FOL,
.hit_rem_id = M0_DTM_HTYPE_FOL_REM,
.hit_name = "fol",
.hit_ops = &fol_htype_ops
}
static const struct m0_dtm_history_type_ops fol_htype_ops
Definition: fol.c:107

Definition at line 111 of file fol.c.

◆ m0_dtm_fol_remote_htype [1/2]

M0_EXTERN const struct m0_dtm_history_type m0_dtm_fol_remote_htype

Definition at line 66 of file fol.h.

◆ m0_dtm_fol_remote_htype [2/2]

M0_INTERNAL const struct m0_dtm_history_type m0_dtm_fol_remote_htype
Initial value:
= {
.hit_rem_id = M0_DTM_HTYPE_FOL,
.hit_name = "remote fol",
}
static const struct m0_dtm_history_type_ops fol_remote_htype_ops
Definition: fol.c:169

Definition at line 173 of file fol.c.

◆ m0_dtm_ltx_htype [1/2]

M0_EXTERN const struct m0_dtm_history_type m0_dtm_ltx_htype

Definition at line 58 of file ltx.h.

◆ m0_dtm_ltx_htype [2/2]

M0_INTERNAL const struct m0_dtm_history_type m0_dtm_ltx_htype
Initial value:
= {
.hit_id = M0_DTM_HTYPE_LTX,
.hit_name = "local transaction",
.hit_ops = &ltx_htype_ops
}
static const struct m0_dtm_history_type_ops ltx_htype_ops
Definition: ltx.c:90

Definition at line 98 of file ltx.c.

◆ m0_dtx_sm_conf

struct m0_sm_conf m0_dtx_sm_conf
Initial value:
= {
.scf_name = "dtm0dtx",
.scf_nr_states = ARRAY_SIZE(dtx_states),
.scf_state = dtx_states,
.scf_trans_nr = ARRAY_SIZE(dtx_trans),
.scf_trans = dtx_trans,
}
static struct m0_sm_state_descr dtx_states[]
Definition: dtx.c:41
static struct m0_sm_trans_descr dtx_trans[]
Definition: dtx.c:73
#define ARRAY_SIZE(a)
Definition: misc.h:45

Definition at line 82 of file dtx.c.

◆ M0_XCA_DOMAIN [1/4]

enum { ... } M0_XCA_DOMAIN

◆ M0_XCA_DOMAIN [2/4]

enum rem_rpc_notification M0_XCA_DOMAIN

◆ M0_XCA_DOMAIN [3/4]

struct m0_dtm_local_remote M0_XCA_DOMAIN

◆ M0_XCA_DOMAIN [4/4]

enum m0_dtm0_ts_ord M0_XCA_DOMAIN

◆ ode [1/2]

struct m0_dtm_oper_descr ode
static
Initial value:
= {
.od_updates = {
.ou_nr = UPDATE_NR + TGT_DELTA,
.ou_update = udescr
}
}
static struct m0_dtm_update_descr udescr[UPDATE_NR+TGT_DELTA]
Definition: transmit.c:82

Definition at line 88 of file transmit.c.

◆ ode [2/2]

struct m0_dtm_oper_descr ode[REM_NR][OPER_NR]
static

Definition at line 68 of file dtx.c.

◆ ode_reply

struct m0_dtm_oper_descr ode_reply[REM_NR][OPER_NR]
static

Definition at line 69 of file dtx.c.

◆ op_bob

static const struct m0_bob_type op_bob
static
Initial value:
= {
.bt_name = "dtm operation",
.bt_magix_offset = M0_MAGIX_OFFSET(struct m0_dtm_op, op_ups.t_magic),
.bt_magix = M0_DTM_OP_MAGIX
}
#define M0_MAGIX_OFFSET(type, field)
Definition: misc.h:356

Definition at line 54 of file nucleus.c.

◆ op_ops [1/3]

const struct m0_dtm_op_ops op_ops
static
Initial value:
= {
.doo_ready = ready,
.doo_late = late,
.doo_miser = miser
}
static void ready(struct m0_dtm_op *op)
Definition: nucleus.c:54
static void miser(struct m0_dtm_op *op)
Definition: nucleus.c:60
static void late(struct m0_dtm_op *op)
Definition: nucleus.c:66

Definition at line 72 of file nucleus.c.

◆ op_ops [2/3]

const struct m0_dtm_op_ops op_ops
static
Initial value:
= {
.doo_ready = noop,
.doo_late = never,
.doo_miser = never
}
static void noop(struct m0_dtm_op *op)
Definition: dtx.c:71
static void never(struct m0_dtm_op *op)
Definition: dtx.c:74

Definition at line 106 of file dtx.c.

◆ op_ops [3/3]

const struct m0_dtm_op_ops op_ops
static
Initial value:
= {
.doo_ready = noop,
.doo_late = noop,
.doo_miser = noop
}
static void noop(struct m0_dtm_op *op)
Definition: transmit.c:103

Definition at line 133 of file transmit.c.

◆ oper_local

struct m0_dtm_oper oper_local[OPER_NR]
static

Definition at line 58 of file dtx.c.

◆ oper_remote

struct m0_dtm_oper oper_remote[REM_NR][OPER_NR]
static

Definition at line 59 of file dtx.c.

◆ oper_src

struct m0_dtm_oper oper_src[OPER_NR]
static

Definition at line 72 of file transmit.c.

◆ oper_tgt

struct m0_dtm_oper oper_tgt[OPER_NR]
static

Definition at line 73 of file transmit.c.

◆ redo_fom

struct m0_fom redo_fom[OPER_NR]
static

Definition at line 85 of file transmit.c.

◆ redo_fop

struct m0_fop redo_fop[OPER_NR]
static

Definition at line 84 of file transmit.c.

◆ redo_ode

struct m0_dtm_oper_descr redo_ode[OPER_NR]
static

Definition at line 86 of file transmit.c.

◆ redo_udescr

struct m0_dtm_update_descr redo_udescr[OPER_NR][UPDATE_NR+TGT_DELTA]
static

Definition at line 87 of file transmit.c.

◆ rem_local_ops

static const struct m0_dtm_remote_ops rem_local_ops
static
Initial value:
= {
.reo_persistent = &rem_local_persistent,
.reo_fixed = &rem_local_fixed,
.reo_reset = &rem_local_reset,
.reo_send = &rem_local_send,
.reo_resend = &rem_local_send,
.reo_undo = &rem_local_undo
}
static void rem_local_fixed(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:298
static void rem_local_reset(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:304
static void rem_local_send(struct m0_dtm_remote *rem, struct m0_dtm_update *update)
Definition: remote.c:310
static void rem_local_persistent(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:291
static void rem_local_undo(struct m0_dtm_remote *rem, struct m0_dtm_history *history, m0_dtm_ver_t upto)
Definition: remote.c:322

Definition at line 52 of file remote.c.

◆ rem_rpc_fopt

struct m0_fop_type rem_rpc_fopt
static

Definition at line 59 of file remote.c.

◆ rem_rpc_ftype_ops

static const struct m0_fop_type_ops rem_rpc_ftype_ops
static
Initial value:
= {
}

Definition at line 60 of file remote.c.

◆ rem_rpc_item_redo_ops

static M0_UNUSED const struct m0_rpc_item_ops rem_rpc_item_redo_ops
static
Initial value:
= {
.rio_replied = &rem_rpc_redo_replied
}
static M0_UNUSED void rem_rpc_redo_replied(struct m0_rpc_item *item)
Definition: remote.c:247

Definition at line 63 of file remote.c.

◆ rem_rpc_item_sender_ops

static const struct m0_rpc_item_ops rem_rpc_item_sender_ops
static
Initial value:
= {
}

Definition at line 62 of file remote.c.

◆ rem_rpc_itype_ops

static struct m0_rpc_item_type_ops rem_rpc_itype_ops
static
Initial value:
= {
}

Definition at line 61 of file remote.c.

◆ rem_rpc_ops

static const struct m0_dtm_remote_ops rem_rpc_ops
static
Initial value:
= {
.reo_persistent = &rem_rpc_persistent,
.reo_fixed = &rem_rpc_fixed,
.reo_reset = &rem_rpc_reset,
.reo_send = &rem_rpc_send,
.reo_resend = &rem_rpc_resend,
.reo_undo = &rem_rpc_undo
}
static void rem_rpc_undo(struct m0_dtm_remote *rem, struct m0_dtm_history *history, m0_dtm_ver_t upto)
Definition: remote.c:121
static void rem_rpc_send(struct m0_dtm_remote *rem, struct m0_dtm_update *update)
Definition: remote.c:130
static void rem_rpc_persistent(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:102
static void rem_rpc_resend(struct m0_dtm_remote *rem, struct m0_dtm_update *update)
Definition: remote.c:140
static void rem_rpc_reset(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:115
static void rem_rpc_fixed(struct m0_dtm_remote *rem, struct m0_dtm_history *history)
Definition: remote.c:109

Definition at line 51 of file remote.c.

◆ remote_local

struct m0_dtm_local_remote remote_local[REM_NR]
static

Definition at line 51 of file dtx.c.

◆ remote_remote

struct m0_dtm_local_remote remote_remote[REM_NR]
static

Definition at line 52 of file dtx.c.

◆ reply

struct m0_dtm_oper_descr reply
static
Initial value:
= {
.od_updates = {
.ou_nr = UPDATE_NR + TGT_DELTA,
.ou_update = udescr_reply
}
}
static struct m0_dtm_update_descr udescr_reply[UPDATE_NR+TGT_DELTA]
Definition: transmit.c:83

Definition at line 94 of file transmit.c.

◆ seq

struct m0_semaphore seq
static

Definition at line 327 of file transmit.c.

◆ src_htype

const struct m0_dtm_history_type src_htype
static
Initial value:
= {
.hit_id = 2,
.hit_rem_id = 2,
.hit_name = "source histories",
.hit_ops = &src_htype_ops
}
static const struct m0_dtm_history_type_ops src_htype_ops
Definition: transmit.c:151

Definition at line 155 of file transmit.c.

◆ src_htype_ops

const struct m0_dtm_history_type_ops src_htype_ops
static
Initial value:
= {
.hito_find = src_find
}
static int src_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: transmit.c:139

Definition at line 151 of file transmit.c.

◆ src_ops

const struct m0_dtm_history_ops src_ops
static
Initial value:
= {
.hio_type = &src_htype,
.hio_id = &src_id,
.hio_persistent = &test_persistent,
.hio_update = &update_init
}
static const struct m0_dtm_history_type src_htype
Definition: transmit.c:155
static int update_init(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: transmit.c:122
static void test_persistent(struct m0_dtm_history *history)
Definition: transmit.c:130
static const struct m0_uint128 * src_id(const struct m0_dtm_history *history)
Definition: transmit.c:162

Definition at line 172 of file transmit.c.

◆ stype_ops

const struct m0_reqh_service_type_ops stype_ops
static
Initial value:
= {
.rsto_service_allocate = &service_allocate
}
static int service_allocate(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
Definition: transmit.c:242

Definition at line 255 of file transmit.c.

◆ test_conf

const struct m0_sm_conf test_conf
Initial value:
= {
.scf_name = "dtm up fom",
.scf_nr_states = ARRAY_SIZE(fom_phases),
.scf_state = fom_phases
}
static struct m0_sm_state_descr fom_phases[]
Definition: transmit.c:304
#define ARRAY_SIZE(a)
Definition: misc.h:45

Definition at line 320 of file transmit.c.

◆ test_ctx

struct m0_ut_rpc_mach_ctx test_ctx
static

Definition at line 101 of file transmit.c.

◆ test_fom_ops

const struct m0_fom_ops test_fom_ops
static
Initial value:
= {
.fo_fini = &test_fom_fini,
.fo_tick = &test_fom_tick,
.fo_home_locality = &test_fom_home_locality
}
static void test_fom_fini(struct m0_fom *fom)
Definition: transmit.c:265
static int test_fom_tick(struct m0_fom *fom)
Definition: transmit.c:329
static size_t test_fom_home_locality(const struct m0_fom *fom)
Definition: transmit.c:371

Definition at line 378 of file transmit.c.

◆ test_fom_type_ops

const struct m0_fom_type_ops test_fom_type_ops
static
Initial value:
= {
.fto_create = &test_fom_create
}
static int test_fom_create(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
Definition: transmit.c:384

Definition at line 398 of file transmit.c.

◆ test_fopt

struct m0_fop_type test_fopt
static

Definition at line 219 of file transmit.c.

◆ test_ftype_ops

const struct m0_fop_type_ops test_ftype_ops
static

Definition at line 221 of file transmit.c.

◆ test_op_ops

const struct m0_dtm_op_ops test_op_ops
static
Initial value:
= {
.doo_ready = &op_ready,
.doo_late = &op_late,
.doo_miser = &op_miser
}
static void op_ready(struct m0_dtm_op *op)
Definition: transmit.c:272
static void op_miser(struct m0_dtm_op *op)
Definition: transmit.c:288
static void op_late(struct m0_dtm_op *op)
Definition: transmit.c:283

Definition at line 293 of file transmit.c.

◆ test_ops [1/2]

const struct m0_dtm_update_ops test_ops
static
Initial value:
= {
.updo_redo = &undo_redo,
.updo_undo = &undo_redo,
.updo_type = &test_utype
}
static const struct m0_dtm_update_type test_utype
Definition: dtx.c:84
static int undo_redo(struct m0_dtm_update *updt)
Definition: dtx.c:79

Definition at line 89 of file dtx.c.

◆ test_ops [2/2]

const struct m0_dtm_update_ops test_ops
static
Initial value:
= {
.updo_redo = &undo_redo,
.updo_undo = &undo_redo,
.updo_type = &test_utype
}
static int undo_redo(struct m0_dtm_update *updt)
Definition: transmit.c:106
static const struct m0_dtm_update_type test_utype
Definition: transmit.c:111

Definition at line 116 of file transmit.c.

◆ test_service_ops

const struct m0_reqh_service_ops test_service_ops
static
Initial value:
= {
.rso_start = &service_start,
.rso_stop = &service_stop,
.rso_fini = &service_fini
}
static int service_start(struct m0_reqh_service *service)
Definition: transmit.c:223
static void service_stop(struct m0_reqh_service *service)
Definition: transmit.c:228
static void service_fini(struct m0_reqh_service *service)
Definition: transmit.c:231

Definition at line 236 of file transmit.c.

◆ test_stype

struct m0_reqh_service_type test_stype
Initial value:
= {
.rst_name = "dtm-ub-service",
.rst_ops = &stype_ops,
.rst_level = M0_RS_LEVEL_NORMAL,
}
static const struct m0_reqh_service_type_ops stype_ops
Definition: transmit.c:255

Definition at line 259 of file transmit.c.

◆ test_svc

struct m0_reqh_service* test_svc
static

Definition at line 220 of file transmit.c.

◆ test_utype [1/2]

const struct m0_dtm_update_type test_utype
static
Initial value:
= {
.updtt_id = 0,
.updtt_name = "test"
}

Definition at line 84 of file dtx.c.

◆ test_utype [2/2]

const struct m0_dtm_update_type test_utype
static
Initial value:
= {
.updtt_id = 0,
.updtt_name = "test update"
}

Definition at line 111 of file transmit.c.

◆ tgt

struct m0_dtm_local_remote tgt
static

Definition at line 70 of file transmit.c.

◆ tgt_htype

const struct m0_dtm_history_type tgt_htype
static
Initial value:
= {
.hit_id = 2,
.hit_rem_id = 2,
.hit_name = "target histories",
.hit_ops = &tgt_htype_ops
}
static const struct m0_dtm_history_type_ops tgt_htype_ops
Definition: transmit.c:191

Definition at line 195 of file transmit.c.

◆ tgt_htype_ops

const struct m0_dtm_history_type_ops tgt_htype_ops
static
Initial value:
= {
.hito_find = tgt_find
}
static int tgt_find(struct m0_dtm *dtm, const struct m0_dtm_history_type *ht, const struct m0_uint128 *id, struct m0_dtm_history **out)
Definition: transmit.c:179

Definition at line 191 of file transmit.c.

◆ tgt_ops

const struct m0_dtm_history_ops tgt_ops
static
Initial value:
= {
.hio_type = &tgt_htype,
.hio_id = &tgt_id,
.hio_persistent = &test_persistent,
.hio_update = &update_init
}
static const struct m0_dtm_history_type tgt_htype
Definition: transmit.c:195
static const struct m0_uint128 * tgt_id(const struct m0_dtm_history *history)
Definition: transmit.c:202
static int update_init(struct m0_dtm_history *history, uint8_t id, struct m0_dtm_update *update)
Definition: transmit.c:122
static void test_persistent(struct m0_dtm_history *history)
Definition: transmit.c:130

Definition at line 212 of file transmit.c.

◆ ticked

unsigned ticked
static

Definition at line 270 of file transmit.c.

◆ udescr [1/2]

struct m0_dtm_update_descr udescr[UPDATE_NR+TGT_DELTA]
static

Definition at line 82 of file transmit.c.

◆ udescr [2/2]

struct m0_dtm_update_descr udescr[REM_NR][OPER_NR][FAN_NR]
static

Definition at line 66 of file dtx.c.

◆ udescr_reply

struct m0_dtm_update_descr udescr_reply[UPDATE_NR+TGT_DELTA]
static

Definition at line 83 of file transmit.c.

◆ up_bob

struct m0_bob_type up_bob
static

Definition at line 55 of file nucleus.c.

◆ update_local

struct m0_dtm_update update_local[OPER_NR][UPDATE_NR]
static

Definition at line 60 of file dtx.c.

◆ update_remote

struct m0_dtm_update update_remote[REM_NR][OPER_NR][FAN_NR]
static

Definition at line 61 of file dtx.c.

◆ update_src

struct m0_dtm_update update_src[OPER_NR][UPDATE_NR]
static

Definition at line 74 of file transmit.c.

◆ update_tgt

struct m0_dtm_update update_tgt[OPER_NR][UPDATE_NR+TGT_DELTA]
static

Definition at line 75 of file transmit.c.

◆ ureply

struct m0_dtm_update_descr ureply[REM_NR][OPER_NR][FAN_NR]
static

Definition at line 67 of file dtx.c.

◆ uu [1/2]

struct m0_tl uu
static

Definition at line 67 of file transmit.c.

◆ uu [2/2]

struct m0_tl uu
static

Definition at line 65 of file dtx.c.