remove_from_dirty(ref);
ref->dirty_from_or_retired_at = JOURNAL_SEQ_MAX;
retired_extent_gate.add_extent(*ref);
- ref->state = CachedExtent::extent_state_t::RETIRED;
+ ref->state = CachedExtent::extent_state_t::INVALID;
}
void Cache::replace_extent(CachedExtentRef next, CachedExtentRef prev)
return get_extent_ret<T>(
get_extent_ertr::ready_future_marker{},
std::move(ret));
- } else if (ret->is_retired()) {
- ceph_abort_msg("impossible retired extent");
} else {
return crimson::ct_error::eagain::make();
}
// during write, contents match disk, version == 0
DIRTY, // Same as CLEAN, but contents do not match disk,
// version > 0
- RETIRED, // In ExtentIndex while in retired_extent_gate
INVALID // Part of no ExtentIndex set
} state = extent_state_t::INVALID;
friend std::ostream &operator<<(std::ostream &, extent_state_t);
/// Returns true if extent has not been superceded or retired
bool is_valid() const {
- return state != extent_state_t::INVALID && state != extent_state_t::RETIRED;
- }
-
- /// True iff extent is in state RETIRED
- bool is_retired() const {
- return state == extent_state_t::RETIRED;
+ return state != extent_state_t::INVALID;
}
/// Returns true if extent or prior_instance has been invalidated
/// Return journal location of oldest relevant delta, only valid while RETIRED
auto get_retired_at() const {
- ceph_assert(is_retired());
+ ceph_assert(!is_valid());
return dirty_from_or_retired_at;
}
poffset(other.poffset) {}
struct retired_placeholder_t{};
- CachedExtent(retired_placeholder_t) : state(extent_state_t::RETIRED) {}
+ CachedExtent(retired_placeholder_t) : state(extent_state_t::INVALID) {}
friend class Cache;
template <typename T, typename... Args>