29 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DTM 54 while (!exc_tlist_is_empty(&dtm->
d_excited)) {
103 }
while (up !=
NULL);
119 }
while (up !=
NULL);
133 }
while (up !=
NULL);
182 if (other != history && other->
h_rem == history->
h_rem &&
211 if (history->
h_undo == update)
226 if (!exc_tlink_is_in(history)) {
227 bool empty = exc_tlist_is_empty(excited);
229 exc_tlist_add_tail(excited, history);
237 exc_tlist_remove(history);
240 #undef M0_TRACE_SUBSYSTEM
struct m0_dtm_update * h_known
int(* updo_undo)(struct m0_dtm_update *updt)
M0_INTERNAL struct m0_dtm_up * m0_dtm_up_later(struct m0_dtm_up *up)
enum m0_dtm_state up_state
M0_INTERNAL m0_dtm_ver_t up_ver(const struct m0_dtm_up *up)
struct m0_dtm_remote * h_rem
#define UPDATE_UP(update)
void(* hio_persistent)(struct m0_dtm_history *history)
struct m0_dtm_update * h_reint
M0_INTERNAL struct m0_dtm_update * up_update(struct m0_dtm_up *up)
const struct m0_dtm_update_ops * upd_ops
M0_INTERNAL void m0_dtm_history_balance(struct m0_dtm_history *history)
M0_INTERNAL bool update_is_earlier(struct m0_dtm_update *update0, struct m0_dtm_update *update1)
static void history_excite(struct m0_dtm_history *history)
struct m0_dtm_update * h_persistent
#define UPDATE_HISTORY(update)
static void history_balance(struct m0_dtm_history *history)
struct m0_dtm_update * h_reset
#define HISTORY_DTM(history)
static void history_calm(struct m0_dtm_history *history)
static void sibling_undo(struct m0_dtm_history *history, struct m0_dtm_op *op)
M0_INTERNAL void update_reint(struct m0_dtm_update *update)
M0_INTERNAL m0_dtm_ver_t update_ver(const struct m0_dtm_update *update)
M0_INTERNAL void m0_dtm_undo_done(struct m0_dtm_update *update)
static void undo_done(struct m0_dtm_update *update)
M0_INTERNAL bool m0_dtm_history_invariant(const struct m0_dtm_history *history)
M0_INTERNAL struct m0_dtm_up * m0_dtm_up_prior(struct m0_dtm_up *up)
static void sibling_persistent(struct m0_dtm_history *history, struct m0_dtm_op *op)
M0_INTERNAL void m0_dtm_balance(struct m0_dtm *dtm)
struct m0_dtm_update * h_undo
static void dtm_excitement_start(struct m0_dtm *dtm)
static void sibling_reset(struct m0_dtm_history *history, struct m0_dtm_op *op)
void(* hio_fixed)(struct m0_dtm_history *history)
#define m0_tl_for(name, head, obj)
const struct m0_dtm_history_ops * h_ops
M0_INTERNAL struct m0_dtm_up * hi_latest(struct m0_dtm_hi *hi)
M0_INTERNAL struct m0_dtm_up * history_latest(struct m0_dtm_history *history)