Motr  M0
engine.c File Reference
#include "lib/trace.h"
#include "be/engine.h"
#include "lib/memory.h"
#include "lib/errno.h"
#include "lib/misc.h"
#include "lib/time.h"
#include "be/tx_service.h"
#include "be/tx_group.h"
#include "be/tx_internal.h"
#include "be/seg_dict.h"
#include "be/domain.h"
Include dependency graph for engine.c:

Go to the source code of this file.

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_BE
 

Functions

 M0_TL_DESCR_DEFINE (etx, "m0_be_engine::eng_txs[]", M0_INTERNAL, struct m0_be_tx, t_engine_linkage, t_magic, M0_BE_TX_MAGIC, M0_BE_TX_ENGINE_MAGIC)
 
 M0_TL_DEFINE (etx, M0_INTERNAL, struct m0_be_tx)
 
 M0_TL_DESCR_DEFINE (egr, "m0_be_engine::eng_groups[]", static, struct m0_be_tx_group, tg_engine_linkage, tg_magic, M0_BE_TX_MAGIC, M0_BE_TX_ENGINE_MAGIC)
 
 M0_TL_DEFINE (egr, static, struct m0_be_tx_group)
 
static bool be_engine_is_locked (const struct m0_be_engine *en)
 
static void be_engine_tx_group_open (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
static void be_engine_group_freeze (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
static void be_engine_group_tryclose (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
static void be_engine_tx_group_state_move (struct m0_be_engine *en, struct m0_be_tx_group *gr, enum m0_be_tx_group_state state)
 
static int be_engine_cfg_validate (struct m0_be_engine_cfg *en_cfg)
 
M0_INTERNAL int m0_be_engine_init (struct m0_be_engine *en, struct m0_be_domain *dom, struct m0_be_engine_cfg *en_cfg)
 
M0_INTERNAL void m0_be_engine_fini (struct m0_be_engine *en)
 
static void be_engine_lock (struct m0_be_engine *en)
 
static void be_engine_unlock (struct m0_be_engine *en)
 
static bool be_engine_invariant (struct m0_be_engine *en)
 
static uint64_t be_engine_tx_id_allocate (struct m0_be_engine *en)
 
static struct m0_be_txbe_engine_tx_peek (struct m0_be_engine *en, enum m0_be_tx_state state)
 
static void be_engine_tx_state_post (struct m0_be_engine *en, struct m0_be_tx *tx, enum m0_be_tx_state state)
 
static bool is_engine_at_stopped_or_done (const struct m0_be_engine *en, bool stopped)
 
static struct m0_be_txbe_engine_tx_opening_peek (struct m0_be_engine *en)
 
static void be_engine_got_tx_open (struct m0_be_engine *en, struct m0_be_tx *tx)
 
static void be_engine_group_timer_cb (struct m0_sm_timer *timer)
 
static void be_engine_group_timer_arm (struct m0_sm_group *sm_grp, struct m0_sm_ast *ast)
 
static void be_engine_group_timer_disarm (struct m0_sm_group *sm_grp, struct m0_sm_ast *ast)
 
static void be_engine_group_timeout_arm (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
static struct m0_be_tx_groupbe_engine_group_find (struct m0_be_engine *en)
 
static int be_engine_tx_trygroup (struct m0_be_engine *en, struct m0_be_tx *tx)
 
static bool be_engine_recovery_is_finished (struct m0_be_engine *en)
 
static void be_engine_recovery_finish (struct m0_be_engine *en)
 
static void be_engine_try_recovery (struct m0_be_engine *en)
 
static struct m0_be_txbe_engine_recovery_tx_find (struct m0_be_engine *en, enum m0_be_tx_state state)
 
static void be_engine_got_tx_grouping (struct m0_be_engine *en)
 
static void be_engine_got_tx_closed (struct m0_be_engine *en, struct m0_be_tx *tx)
 
static void be_engine_got_tx_done (struct m0_be_engine *en, struct m0_be_tx *tx)
 
M0_INTERNAL bool m0_be_engine__invariant (struct m0_be_engine *en)
 
M0_INTERNAL void m0_be_engine__tx_init (struct m0_be_engine *en, struct m0_be_tx *tx, enum m0_be_tx_state state)
 
M0_INTERNAL void m0_be_engine__tx_fini (struct m0_be_engine *en, struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_engine__tx_state_set (struct m0_be_engine *en, struct m0_be_tx *tx, enum m0_be_tx_state state)
 
M0_INTERNAL void m0_be_engine__tx_force (struct m0_be_engine *en, struct m0_be_tx *tx)
 
static void be_engine_tx_group_ready (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
M0_INTERNAL void m0_be_engine__tx_group_ready (struct m0_be_engine *en, struct m0_be_tx_group *gr)
 
static void be_engine_group_stop_nr (struct m0_be_engine *en, size_t nr)
 
static int be_engine_group_start (struct m0_be_engine *en, size_t index)
 
M0_INTERNAL int m0_be_engine_start (struct m0_be_engine *en)
 
M0_INTERNAL void m0_be_engine_stop (struct m0_be_engine *en)
 
M0_INTERNAL void m0_be_engine_got_log_space_cb (struct m0_be_log *log)
 
M0_INTERNAL void m0_be_engine_full_log_cb (struct m0_be_log *log)
 
M0_INTERNAL struct m0_be_txm0_be_engine__tx_find (struct m0_be_engine *en, uint64_t id)
 
M0_INTERNAL int m0_be_engine__exclusive_open_invariant (struct m0_be_engine *en, struct m0_be_tx *excl)
 
M0_INTERNAL void m0_be_engine_tx_size_max (struct m0_be_engine *en, struct m0_be_tx_credit *cred, m0_bcount_t *payload_size)
 
M0_INTERNAL void m0_be_engine__group_limits (struct m0_be_engine *en, uint32_t *group_nr, uint32_t *tx_per_group)
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_BE

Definition at line 23 of file engine.c.