INFO("{} segment managers", sms.size());
init_complete = false;
stats = {};
+ journal_head = JOURNAL_SEQ_NULL;
journal_alloc_tail = JOURNAL_SEQ_NULL;
journal_dirty_tail = JOURNAL_SEQ_NULL;
INFO("done, start GC, time_bound={}",
sea_time_point_printer_t{segments.get_time_bound()});
ceph_assert(journal_head != JOURNAL_SEQ_NULL);
+ ceph_assert(journal_alloc_tail != JOURNAL_SEQ_NULL);
+ ceph_assert(journal_dirty_tail != JOURNAL_SEQ_NULL);
init_complete = true;
gc_process.start();
}
* Segments calculations
*/
std::size_t get_segments_in_journal() const {
- if (!init_complete) {
- return 0;
- }
auto journal_tail = get_journal_tail();
- if (journal_tail == JOURNAL_SEQ_NULL) {
- return segments.get_num_type_journal();
+ if (journal_tail == JOURNAL_SEQ_NULL ||
+ journal_head == JOURNAL_SEQ_NULL) {
+ return 0;
}
- assert(journal_head != JOURNAL_SEQ_NULL);
assert(journal_head.segment_seq >= journal_tail.segment_seq);
return journal_head.segment_seq + 1 - journal_tail.segment_seq;
}