retire_stat.increment(extent->get_length());
DEBUGT("retired and remove extent -- {}", t, *extent);
commit_retire_extent(t, extent);
- if (is_backref_mapped_extent_node(extent) ||
- is_retired_placeholder_type(extent->get_type())) {
+ if (is_backref_mapped_type(extent->get_type()) ||
+ is_retired_placeholder_type(extent->get_type())) {
rel_delta.alloc_blk_ranges.emplace_back(
extent->get_paddr(),
L_ADDR_NULL,
},
modify_time);
if (i->is_valid() &&
- is_backref_mapped_extent_node(i)) {
+ is_backref_mapped_type(i->get_type())) {
laddr_t alloc_laddr;
if (i->is_logical()) {
alloc_laddr = i->cast<LogicalCachedExtent>()->get_laddr();
get_by_ext(efforts.fresh_ool_by_ext,
i->get_type()).increment(i->get_length());
i->prepare_commit();
- if (is_backref_mapped_extent_node(i)) {
+ if (is_backref_mapped_type(i->get_type())) {
laddr_t alloc_laddr;
if (i->is_logical()) {
alloc_laddr = i->cast<LogicalCachedExtent>()->get_laddr();
const auto t_src = t.get_src();
touch_extent(*i, &t_src);
epm.commit_space_used(i->get_paddr(), i->get_length());
- if (is_backref_mapped_extent_node(i)) {
+ if (is_backref_mapped_type(i->get_type())) {
DEBUGT("backref_entry alloc {} len 0x{:x}",
t,
i->get_paddr(),
for (auto &i: t.retired_set) {
auto &extent = i.extent;
extent->dirty_from_or_retired_at = start_seq;
- if (is_backref_mapped_extent_node(extent) ||
+ if (is_backref_mapped_type(extent->get_type()) ||
is_retired_placeholder_type(extent->get_type())) {
DEBUGT("backref_entry free {} len 0x{:x}",
t,
std::ostream &operator<<(std::ostream &, CachedExtent::extent_state_t);
std::ostream &operator<<(std::ostream &, const CachedExtent&);
-bool is_backref_mapped_extent_node(const CachedExtentRef &extent);
-
/// Compare extents by paddr
struct paddr_cmp {
bool operator()(paddr_t lhs, const CachedExtent &rhs) const {
}
}
+constexpr bool is_backref_mapped_type(extent_types_t type) {
+ if ((type >= extent_types_t::LADDR_INTERNAL &&
+ type <= extent_types_t::OBJECT_DATA_BLOCK) ||
+ type == extent_types_t::TEST_BLOCK ||
+ type == extent_types_t::TEST_BLOCK_PHYSICAL) {
+ assert(is_logical_type(type) ||
+ is_lba_node(type) ||
+ type == extent_types_t::TEST_BLOCK_PHYSICAL);
+ return true;
+ } else {
+ assert(!is_logical_type(type) &&
+ !is_lba_node(type) &&
+ type != extent_types_t::TEST_BLOCK_PHYSICAL);
+ return false;
+ }
+}
+
constexpr bool is_real_type(extent_types_t type) {
if (type <= extent_types_t::OBJECT_DATA_BLOCK ||
(type >= extent_types_t::TEST_BLOCK &&