get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL),
get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL)
};
+ SUBDEBUGT(seastore_t, "update tails as delta {}", t, tails);
bufferlist bl;
encode(tails, bl);
delta_info_t delta;
}
SUBDEBUGT(seastore_t,
- "commit H{} dirty_from={}, {} read, {} fresh with {} invalid, "
+ "commit H{} dirty_from={}, alloc_from={}, "
+ "{} read, {} fresh with {} invalid, "
"{} delta, {} retire, {}(md={}B, data={}B) ool-records, "
"{}B md, {}B data, modify_time={}",
t, (void*)&t.get_handle(),
get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL),
+ get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL),
read_stat,
fresh_stat,
fresh_invalid_stat,
const journal_seq_t &seq)
{
LOG_PREFIX(Cache::backref_batch_update);
- DEBUG("inserting {} entries", list.size());
+ DEBUG("inserting {} entries at {}", list.size(), seq);
if (!backref_buffer) {
backref_buffer = std::make_unique<backref_cache_t>();
}
Cache::close_ertr::future<> Cache::close()
{
LOG_PREFIX(Cache::close);
- INFO("close with {}({}B) dirty from {}, {}({}B) lru, totally {}({}B) indexed extents",
+ INFO("close with {}({}B) dirty, dirty_from={}, alloc_from={}, "
+ "{}({}B) lru, totally {}({}B) indexed extents",
dirty.size(),
stats.dirty_bytes,
get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL),
+ get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL),
lru.get_current_contents_extents(),
lru.get_current_contents_bytes(),
extents.size(),
// replay dirty
if (journal_seq < dirty_tail) {
DEBUG("journal_seq {} < dirty_tail {}, don't replay {}",
- journal_seq, alloc_tail, delta);
+ journal_seq, dirty_tail, delta);
return replay_delta_ertr::now();
}
{
LOG_PREFIX(Cache::init_cached_extents);
SUBINFOT(seastore_cache,
- "start with {}({}B) extents, {} dirty, from {}",
+ "start with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}",
t,
extents.size(),
extents.get_bytes(),
dirty.size(),
- get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL));
+ get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL),
+ get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL));
// journal replay should has been finished at this point,
// Cache::root should have been inserted to the dirty list
}
).si_then([this, FNAME, &t] {
SUBINFOT(seastore_cache,
- "finish with {}({}B) extents, {} dirty, from {}",
+ "finish with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}",
t,
extents.size(),
extents.get_bytes(),
dirty.size(),
- get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL));
+ get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL),
+ get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL));
});
}
found_delta = true;
journal_tail_delta_t tail_delta;
decode(tail_delta, delta.bl);
+ auto start_seq = locator.write_result.start_seq;
+ INFO("got {}, at seq {}", tail_delta, start_seq);
if (tail_delta.alloc_tail == JOURNAL_SEQ_NULL) {
- tail_delta.alloc_tail = locator.write_result.start_seq;
+ tail_delta.alloc_tail = start_seq;
}
if (tail_delta.dirty_tail == JOURNAL_SEQ_NULL) {
- tail_delta.dirty_tail = locator.write_result.start_seq;
+ tail_delta.dirty_tail = start_seq;
}
segment_provider.update_journal_tails(
tail_delta.dirty_tail, tail_delta.alloc_tail);
c, offset
).si_then([FNAME, offset, c](auto iter) -> get_mapping_ret {
if (iter.is_end() || iter.get_key() != offset) {
- DEBUGT("{} doesn't exist", c.trans, offset);
+ ERRORT("laddr={} doesn't exist", c.trans, offset);
return crimson::ct_error::enoent::make();
} else {
TRACET("{} got {}, {}",
-> _update_mapping_ret {
if (iter.is_end() || iter.get_key() != addr) {
LOG_PREFIX(BtreeLBAManager::_update_mapping);
- DEBUGT("laddr={} doesn't exist", c.trans, addr);
+ ERRORT("laddr={} doesn't exist", c.trans, addr);
return crimson::ct_error::enoent::make();
}
<< ")";
}
+std::ostream &operator<<(std::ostream &out, const journal_tail_delta_t &delta)
+{
+ return out << "journal_tail_delta_t("
+ << "alloc_tail=" << delta.alloc_tail
+ << ", dirty_tail=" << delta.dirty_tail
+ << ")";
+}
+
std::ostream &operator<<(std::ostream &out, const extent_info_t &info)
{
return out << "extent_info_t("
}
};
+std::ostream &operator<<(std::ostream &out, const journal_tail_delta_t &delta);
+
class object_data_t {
laddr_t reserved_data_base = L_ADDR_NULL;
extent_len_t reserved_data_len = 0;