Motr  M0
tx.c File Reference
#include <stddef.h>
#include "lib/trace.h"
#include "be/tx.h"
#include "be/tx_group.h"
#include "be/tx_internal.h"
#include "lib/errno.h"
#include "lib/misc.h"
#include "lib/arith.h"
#include "lib/memory.h"
#include "fol/fol.h"
#include "be/op.h"
#include "be/domain.h"
#include "be/engine.h"
#include "be/addb2.h"
#include "be/fmt.h"
Include dependency graph for tx.c:

Go to the source code of this file.

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_BE
 
#define BE_TX_LOCKED_AT_STATE(tx, states)
 

Functions

static bool be_tx_state_invariant (const struct m0_sm *mach)
 
static bool be_tx_is_locked (const struct m0_be_tx *tx)
 
static void be_tx_state_move_ast (struct m0_be_tx *tx, enum m0_be_tx_state state)
 
static void be_tx_ast_cb (struct m0_sm_group *sm_group, struct m0_sm_ast *ast)
 
static struct m0_sm_astbe_tx_ast (struct m0_be_tx *tx, enum m0_be_tx_state state)
 
static void be_tx_state_move (struct m0_be_tx *tx, enum m0_be_tx_state state, int rc)
 
M0_INTERNAL void m0_be_tx_init (struct m0_be_tx *tx, uint64_t tid, struct m0_be_domain *dom, struct m0_sm_group *sm_group, m0_be_tx_cb_t persistent, m0_be_tx_cb_t discarded, void(*filler)(struct m0_be_tx *tx, void *payload), void *datum)
 
M0_INTERNAL void m0_be_tx_fini (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_prep (struct m0_be_tx *tx, const struct m0_be_tx_credit *credit)
 
M0_INTERNAL void m0_be_tx_payload_prep (struct m0_be_tx *tx, m0_bcount_t size)
 
M0_INTERNAL void m0_be_tx_open (struct m0_be_tx *tx)
 
static void be_tx_make_reg_d (struct m0_be_tx *tx, struct m0_be_reg_d *rd, const struct m0_be_reg *reg)
 
M0_INTERNAL void m0_be_tx_capture (struct m0_be_tx *tx, const struct m0_be_reg *reg)
 
M0_INTERNAL void m0_be_tx_uncapture (struct m0_be_tx *tx, const struct m0_be_reg *reg)
 
static void addb2_add_tx_attrs (const struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_close (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_get (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_put (struct m0_be_tx *tx)
 
M0_INTERNAL int m0_be_tx_timedwait (struct m0_be_tx *tx, uint64_t states, m0_time_t deadline)
 
M0_INTERNAL enum m0_be_tx_state m0_be_tx_state (const struct m0_be_tx *tx)
 
M0_INTERNAL const char * m0_be_tx_state_name (enum m0_be_tx_state state)
 
static int be_tx_memory_allocate (struct m0_be_tx *tx)
 
static void be_tx_gc (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx__state_post (struct m0_be_tx *tx, enum m0_be_tx_state state)
 
M0_INTERNAL bool m0_be_tx__invariant (const struct m0_be_tx *tx)
 
M0_INTERNAL struct m0_be_reg_aream0_be_tx__reg_area (struct m0_be_tx *tx)
 
M0_INTERNAL int m0_be_tx_open_sync (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_exclusive_open (struct m0_be_tx *tx)
 
M0_INTERNAL int m0_be_tx_exclusive_open_sync (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_close_sync (struct m0_be_tx *tx)
 
M0_INTERNAL bool m0_be_tx__is_fast (struct m0_be_tx *tx)
 
M0_INTERNAL int m0_be_tx_fol_add (struct m0_be_tx *tx, struct m0_fol_rec *rec)
 
M0_INTERNAL void m0_be_tx_force (struct m0_be_tx *tx)
 
M0_INTERNAL bool m0_be_tx__is_exclusive (const struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx__recovering_set (struct m0_be_tx *tx)
 
M0_INTERNAL bool m0_be_tx__is_recovering (struct m0_be_tx *tx)
 
M0_INTERNAL void m0_be_tx_deconstruct (struct m0_be_tx *tx, struct m0_be_fmt_tx *ftx)
 
M0_INTERNAL void m0_be_tx_reconstruct (struct m0_be_tx *tx, const struct m0_be_fmt_tx *ftx)
 
M0_INTERNAL void m0_be_tx__group_assign (struct m0_be_tx *tx, struct m0_be_tx_group *gr)
 
static bool be_should_break (struct m0_be_engine *eng, uint64_t fraction, const struct m0_be_tx_credit *accum, const struct m0_be_tx_credit *delta)
 
M0_INTERNAL bool m0_be_should_break (struct m0_be_engine *eng, const struct m0_be_tx_credit *accum, const struct m0_be_tx_credit *delta)
 
M0_INTERNAL bool m0_be_should_break_half (struct m0_be_engine *eng, const struct m0_be_tx_credit *accum, const struct m0_be_tx_credit *delta)
 
M0_INTERNAL void m0_be_tx_gc_enable (struct m0_be_tx *tx, void(*gc_free)(struct m0_be_tx *, void *param), void *param)
 
M0_INTERNAL void m0_be_tx_lsn_set (struct m0_be_tx *tx, m0_bindex_t lsn, m0_bindex_t lsn_discarded)
 
M0_INTERNAL void m0_be_tx_lsn_get (struct m0_be_tx *tx, m0_bindex_t *lsn, m0_bindex_t *lsn_discarded)
 
M0_INTERNAL int m0_be_tx_mod_init (void)
 
M0_INTERNAL void m0_be_tx_mod_fini (void)
 

Variables

static const ptrdiff_t be_tx_ast_offset [M0_BTS_NR+1]
 
static struct m0_sm_state_descr be_tx_states [M0_BTS_NR]
 
static struct m0_sm_trans_descr be_tx_sm_trans []
 
struct m0_sm_conf be_tx_sm_conf
 
M0_EXTERN struct m0_sm_conf op_states_conf
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_BE

Definition at line 25 of file tx.c.