<< lower_bound << dendl;
mark_dirty_from(lower_bound);
+ // We need to preserve the original crt before it gets updated in rewind_from_head().
+ // Later, in merge_object_divergent_entries(), we use it to check whether we can rollback
+ // a divergent entry or not.
+ eversion_t original_crt = log.get_can_rollback_to();
+ dout(20) << __func__ << " original_crt = " << original_crt << dendl;
auto divergent = log.rewind_from_head(lower_bound);
// move aside divergent items
for (auto &&oe: divergent) {
divergent,
info,
log.get_can_rollback_to(),
- log.get_can_rollback_to(),
+ original_crt,
missing,
rollbacker,
this);
ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid
<< " olog_can_rollback_to: "
<< olog_can_rollback_to << dendl;
+ ldpp_dout(dpp, 10) << __func__ << ": hoid " << hoid
+ << " original_crt: "
+ << original_can_rollback_to << dendl;
/// Distinguish between 4) and 5)
for (list<pg_log_entry_t>::const_reverse_iterator i = entries.rbegin();
i != entries.rend();