// retiering extents, this is because logical linked tree
// nodes needs to access their prior instances in this
// phase if they are rewritten.
+ e->set_io_wait();
e->prepare_commit();
});
assert(!i->is_dirty());
const auto t_src = t.get_src();
touch_extent(*i, &t_src, t.get_cache_hint());
+ i->complete_io();
epm.commit_space_used(i->get_paddr(), i->get_length());
// Note: commit extents and backref allocations in the same place
}
bool is_stable_writting() const {
- // MUTATION_PENDING and under-io extents are already stable and visible,
- // see prepare_record().
+ // MUTATION_PENDING/INITIAL_WRITE_PENDING and under-io extents are already
+ // stable and visible, see prepare_record().
//
- // XXX: It might be good to mark this case as DIRTY from the definition,
+ // XXX: It might be good to mark this case as DIRTY/CLEAN from the definition,
// which probably can make things simpler.
- return is_mutation_pending() && is_pending_io();
+ return (is_mutation_pending() || is_initial_pending()) && is_pending_io();
}
/// Returns true if extent is stable and shared among transactions