22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DTM0 289 &rec->dlr_txd.dtd_id,
374 "already in m0_dtx0_done().");
412 lrec_be_tlink_create(rec, tx);
418 lrec_tlink_init_at_tail(rec, log->
u.
dl_inmem);
511 while ((currec = lrec_tlist_pop(log->
u.
dl_inmem)) != rec) {
551 lrec_tlink_init_at_tail(rec, log->
u.
dl_inmem);
624 lrec_be_tlink_destroy(rec, tx);
658 "in m0_dtx0_close().");
676 #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)
M0_INTERNAL void m0_dtm0_dtx_pmsg_post(struct m0_dtm0_dtx *dtx, struct m0_fop *fop)
static struct io_request req
#define M0_BE_ALLOC_CREDIT_ARR(arr, nr, seg, accum)
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)
void * m0_fop_data(const struct m0_fop *fop)
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)
#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)
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)
struct m0_fop_type * f_type
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 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)
M0_INTERNAL void m0_be_dtm0_log_pmsg_post(struct m0_be_dtm0_log *log, struct m0_fop *fop)
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_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 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)
static struct m0_fop * fop
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
static struct m0_be_seg * seg
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)
#define m0_tl_find(name, var, head,...)
#define m0_tl_for(name, head, obj)
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_fop_type dtm0_req_fop_fopt
#define M0_BE_FREE_CREDIT_ARR(arr, nr, seg, accum)
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)
static void log_rec_fini(struct m0_dtm0_log_rec **rec, struct m0_be_tx *tx)
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)