22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DTM0 289 &rec->dlr_txd.dtd_id,
367 "already in m0_dtx0_done().");
404 lrec_be_tlink_create(rec, tx);
410 lrec_tlink_init_at_tail(rec, log->
u.
dl_inmem);
503 while ((currec = lrec_tlist_pop(log->
u.
dl_inmem)) != rec) {
547 lrec_tlink_init_at_tail(rec, log->
u.
dl_inmem);
631 lrec_be_tlink_destroy(rec, tx);
719 #undef M0_TRACE_SUBSYSTEM
#define M0_BE_ALLOC_CREDIT_PTR(ptr, seg, accum)
#define M0_BE_ALLOC_PTR_SYNC(ptr, seg, tx)
M0_INTERNAL bool m0_buf_is_set(const struct m0_buf *buf)
static void plog_rec_fini(struct m0_dtm0_log_rec **dl_lrec, struct m0_be_dtm0_log *log, struct m0_be_tx *tx)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL bool m0_be_dtm0_plog_can_prune(struct m0_be_dtm0_log *log, const struct m0_dtm0_tid *id, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_be_dtm0_log_free(struct m0_be_dtm0_log **in_log)
struct m0_dtm0_dtx dlr_dtx
M0_BE_LIST_DESCR_DEFINE(lrec, "DTM0 PLog", static, struct m0_dtm0_log_rec, u.dlr_link, dlr_magic, M0_BE_DTM0_LOG_REC_MAGIX, M0_BE_DTM0_LOG_MAGIX)
static void log_rec_fini(struct m0_dtm0_log_rec *rec, struct m0_be_tx *tx)
#define M0_BE_ALLOC_CREDIT_ARR(arr, nr, seg, accum)
static bool be_dtm0_log_iter_is_first(const struct m0_be_dtm0_log_iter *iter)
struct m0_dtm0_tx_desc dlr_txd
static void log_create_credit(struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
struct m0_be_seg * dl_seg
#define M0_BE_ALLOC_BUF_SYNC(buf, seg, tx)
M0_INTERNAL void m0_be_dtm0_log_fini(struct m0_be_dtm0_log *log)
#define M0_BE_TX_CAPTURE_PTR(seg, tx, ptr)
M0_INTERNAL bool m0_dtm0_tx_desc__invariant(const struct m0_dtm0_tx_desc *td)
struct m0_be_dtm0_log * dli_log
#define M0_BE_TX_CREDIT_TYPE(type)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
#define M0_BE_TX_CAPTURE_ARR(seg, tx, arr, nr)
static bool be_dtm0_log_iter_invariant(const struct m0_be_dtm0_log_iter *iter)
M0_INTERNAL void m0_be_dtm0_volatile_log_update(struct m0_be_dtm0_log *log, struct m0_dtm0_log_rec *rec)
M0_INTERNAL int m0_be_dtm0_plog_prune(struct m0_be_dtm0_log *log, struct m0_be_tx *tx, const struct m0_dtm0_tid *id)
struct m0_buf dlr_payload
M0_INTERNAL void m0_be_dtm0_log_clear(struct m0_be_dtm0_log *log)
M0_INTERNAL void m0_buf_memcpy(struct m0_buf *dst, const struct m0_buf *src)
M0_INTERNAL void m0_dtm0_tx_desc_apply(struct m0_dtm0_tx_desc *tgt, const struct m0_dtm0_tx_desc *upd)
#define M0_BE_TX_CREDIT(nr, size)
struct m0_dtm0_tid dtd_id
static int dtm0_log__insert(struct m0_be_dtm0_log *log, struct m0_be_tx *tx, struct m0_dtm0_tx_desc *txd, struct m0_buf *payload)
M0_INTERNAL int m0_be_dtm0_log_iter_next(struct m0_be_dtm0_log_iter *iter, struct m0_dtm0_log_rec *out)
static int plog_rec_init(struct m0_dtm0_log_rec **out, struct m0_be_tx *tx, struct m0_be_seg *seg, struct m0_dtm0_tx_desc *txd, struct m0_buf *payload)
return M0_ERR(-EOPNOTSUPP)
struct m0_be_list * dl_persist
M0_INTERNAL void m0_be_dtm0_volatile_log_del(struct m0_be_dtm0_log *log, struct m0_dtm0_log_rec *rec, bool fini)
M0_INTERNAL int m0_be_dtm0_volatile_log_insert(struct m0_be_dtm0_log *log, struct m0_dtm0_log_rec *rec)
#define m0_tl_teardown(name, head, obj)
M0_INTERNAL int m0_be_dtm0_log_init(struct m0_be_dtm0_log *log, struct m0_be_seg *seg, struct m0_dtm0_clk_src *cs, bool is_plog)
#define M0_BE_TX_CAPTURE_BUF(seg, tx, buf)
M0_INTERNAL int m0_be_dtm0_log_create(struct m0_be_tx *tx, struct m0_be_seg *seg, struct m0_be_dtm0_log **out)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
M0_INTERNAL int m0_be_dtm0_log_alloc(struct m0_be_dtm0_log **out)
union m0_be_dtm0_log::@31 u
M0_INTERNAL void m0_be_tx_credit_add(struct m0_be_tx_credit *c0, const struct m0_be_tx_credit *c1)
M0_INTERNAL bool m0_dtm0_tid__invariant(const struct m0_dtm0_tid *tid)
static void log_rec_del_credit(struct m0_be_seg *seg, struct m0_dtm0_log_rec *rec, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_dtm0_log_destroy(struct m0_be_tx *tx, struct m0_be_dtm0_log **log)
M0_INTERNAL void m0_dtm0_log_iter_rec_fini(struct m0_dtm0_log_rec *rec)
M0_TL_DESCR_DEFINE(lrec, "DTM0 Log", static, struct m0_dtm0_log_rec, u.dlr_tlink, dlr_magic, M0_BE_DTM0_LOG_REC_MAGIX, M0_BE_DTM0_LOG_MAGIX)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
M0_INTERNAL int m0_be_dtm0_log_prune(struct m0_be_dtm0_log *log, struct m0_be_tx *tx, const struct m0_dtm0_tid *id)
#define M0_BE_FREE_PTR_SYNC(ptr, seg, tx)
M0_INTERNAL int m0_buf_copy(struct m0_buf *dest, const struct m0_buf *src)
M0_BE_LIST_DEFINE(lrec, static, struct m0_dtm0_log_rec)
M0_INTERNAL int m0_dtm0_tx_desc_copy(const struct m0_dtm0_tx_desc *src, struct m0_dtm0_tx_desc *dst)
static void log_rec_partial_insert_credit(struct m0_dtm0_tx_desc *txd, struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
struct m0_dtm0_tx_pa * dtp_pa
M0_INTERNAL void m0_be_dtm0_log_iter_init(struct m0_be_dtm0_log_iter *iter, struct m0_be_dtm0_log *log)
M0_INTERNAL void log_destroy_credit(struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
static bool m0_dtm0_log_rec__invariant(const struct m0_dtm0_log_rec *rec)
M0_INTERNAL int m0_be_dtm0_log_update(struct m0_be_dtm0_log *log, struct m0_be_tx *tx, struct m0_dtm0_tx_desc *txd, struct m0_buf *payload)
#define M0_ALLOC_PTR(ptr)
M0_INTERNAL void m0_be_dtm0_log_credit(enum m0_be_dtm0_log_credit_op op, struct m0_dtm0_tx_desc *txd, struct m0_buf *payload, struct m0_be_seg *seg, struct m0_dtm0_log_rec *rec, struct m0_be_tx_credit *accum)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
#define M0_BE_ALLOC_ARR_SYNC(arr, nr, seg, tx)
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)
struct m0_dtm0_clk_src * dl_cs
#define m0_be_list_endfor
M0_INTERNAL bool m0_dtm0_tx_desc_state_eq(const struct m0_dtm0_tx_desc *txd, enum m0_dtm0_tx_pa_state state)
struct m0_dtm0_tx_participants dtd_ps
int fini(struct workload *w)
static struct m0_be_seg * seg
M0_INTERNAL void m0_be_dtm0_log_iter_fini(struct m0_be_dtm0_log_iter *iter)
static int dtm0_log__set(struct m0_be_dtm0_log *log, struct m0_be_tx *tx, const struct m0_dtm0_tx_desc *txd, const struct m0_buf *payload, struct m0_dtm0_log_rec *rec)
#define M0_ASSERT_INFO(cond, fmt,...)
static void log_rec_full_insert_credit(struct m0_dtm0_tx_desc *txd, struct m0_buf *payload, struct m0_be_seg *seg, struct m0_be_tx_credit *accum)
static bool m0_be_dtm0_log__invariant(const struct m0_be_dtm0_log *log)
M0_INTERNAL struct m0_dtm0_log_rec * m0_be_dtm0_log_find(struct m0_be_dtm0_log *log, const struct m0_dtm0_tid *id)
static const struct m0_dtm0_tid dtm0_log_iter_tid0
#define m0_tl_find(name, var, head,...)
#define m0_tl_for(name, head, obj)
struct m0_dtm0_tid dli_current_tid
static int log_rec_init(struct m0_dtm0_log_rec **rec, struct m0_be_tx *tx, struct m0_dtm0_tx_desc *txd, struct m0_buf *payload)
M0_INTERNAL void m0_dtm0_tx_desc_fini(struct m0_dtm0_tx_desc *td)
struct m0_pdclust_src_addr src
#define M0_BE_FREE_CREDIT_ARR(arr, nr, seg, accum)
M0_INTERNAL int m0_dtm0_log_rec_copy(struct m0_dtm0_log_rec *dst, const struct m0_dtm0_log_rec *src)
M0_INTERNAL void m0_be_list_credit(enum m0_be_list_op optype, m0_bcount_t nr, struct m0_be_tx_credit *accum)
#define m0_be_list_for(name, head, obj)
#define M0_BE_FREE_CREDIT_PTR(ptr, seg, accum)
M0_TL_DEFINE(lrec, static, struct m0_dtm0_log_rec)
struct m0_dtm0_tx_desc dd_txd
#define M0_IMPOSSIBLE(fmt,...)
#define M0_BE_ALLOC_CREDIT_BUF(buf, seg, accum)