23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BE 169 rc = *iter ==
NULL ? -ENOMEM : 0;
195 M0_ENTRY(
"rvr = %p, log = %p", rvr, log);
198 rc = m0_be_fmt_log_header_init(&log_hdr,
NULL);
208 log_record_iter_tlink_init_at_tail(iter, &rvr->
brec_iters);
216 if (!M0_IN(
rc, (0, -ENOENT))){
220 if (
rc == -ENOENT && prev ==
NULL){
227 prev = log_record_iter_tlist_head(&rvr->
brec_iters);
231 log_record_iter_tlink_del_fini(prev);
233 prev = log_record_iter_tlist_head(&rvr->
brec_iters);
236 last_discarded == log_discarded &&
237 last_discarded == next_pos));
248 log_record_iter_tlink_init_at(iter, &rvr->
brec_iters);
262 iter = log_record_iter_tlist_tail(&rvr->
brec_iters);
270 " last_record_size=%"PRIu64 271 " current position=%"PRIu64 272 " discarded position=%"PRIu64,
283 log_record_iter_tlink_del_fini(iter);
295 " last_record_size=%"PRIu64 296 " current position=%"PRIu64 297 " discarded position=%"PRIu64,
304 m0_be_fmt_log_header_fini(&log_hdr);
315 result = !log_record_iter_tlist_is_empty(&rvr->
brec_iters);
332 log_record_iter_tlink_fini(
next);
struct m0_be_fmt_log_record_header lri_header
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_recovery_init(struct m0_be_recovery *rvr, struct m0_be_recovery_cfg *cfg)
M0_INTERNAL int m0_be_log_record_iter_init(struct m0_be_log_record_iter *iter)
M0_INTERNAL int m0_be_log_record_initial(struct m0_be_log *log, struct m0_be_log_record_iter *curr)
#define M0_LOG(level,...)
M0_INTERNAL bool m0_be_recovery_log_record_available(struct m0_be_recovery *rvr)
m0_bcount_t brec_last_record_size
M0_INTERNAL void m0_be_recovery_fini(struct m0_be_recovery *rvr)
M0_INTERNAL int m0_be_log_record_prev(struct m0_be_log *log, const struct m0_be_log_record_iter *curr, struct m0_be_log_record_iter *prev)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_TL_DEFINE(log_record_iter, static, struct m0_be_log_record_iter)
static int be_recovery_log_record_iter_new(struct m0_be_log_record_iter **iter)
M0_INTERNAL int m0_be_log_record_next(struct m0_be_log *log, const struct m0_be_log_record_iter *curr, struct m0_be_log_record_iter *next)
struct m0_mutex brec_lock
m0_bindex_t brec_discarded
M0_TL_DESCR_DEFINE(log_record_iter, "m0_be_log_record_iter list in recovery", static, struct m0_be_log_record_iter, lri_linkage, lri_magic, M0_BE_RECOVERY_MAGIC, M0_BE_RECOVERY_HEAD_MAGIC)
m0_bindex_t brec_last_record_pos
struct m0_be_log * brc_log
struct m0_be_recovery_cfg brec_cfg
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_recovery_log_record_get(struct m0_be_recovery *rvr, struct m0_be_log_record_iter *iter)
#define M0_ALLOC_PTR(ptr)
M0_INTERNAL void m0_be_log_record_iter_copy(struct m0_be_log_record_iter *dest, struct m0_be_log_record_iter *src)
M0_INTERNAL int m0_be_log_header_read(struct m0_be_log *log, struct m0_be_fmt_log_header *log_hdr)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_log_record_iter_fini(struct m0_be_log_record_iter *iter)
static void be_recovery_log_record_iter_destroy(struct m0_be_log_record_iter *iter)
M0_INTERNAL int m0_be_recovery_run(struct m0_be_recovery *rvr)
#define m0_tl_for(name, head, obj)