* Upon commit, these now block relative addresses will be interpretted
* against the real final address.
*/
- if (!get_paddr().is_absolute()) {
+ if (get_paddr().is_record_relative()) {
// backend_type_t::SEGMENTED
- assert(get_paddr().is_record_relative());
resolve_relative_addrs(
make_record_relative_paddr(0).block_relative_to(get_paddr()));
- } // else: backend_type_t::RANDOM_BLOCK
+ } else {
+ // backend_type_t::RANDOM_BLOCK
+ assert(get_paddr().is_absolute());
+ }
}
void on_delta_write(paddr_t record_block_offset) final {
ceph_abort();
}
- // any relative paddr must have been on the transaction
- assert(!paddr.is_relative());
+ // any record-relative or delayed paddr must have been on the transaction
+ assert(paddr.is_absolute());
// absent from transaction
// retiring is not included by the cache hit metrics
void Cache::retire_absent_extent_addr(
Transaction &t, paddr_t paddr, extent_len_t length)
{
+ assert(paddr.is_absolute());
+
CachedExtentRef ext;
#ifndef NDEBUG
auto result = t.get_extent(paddr, &ext);
for (auto &i: t.ool_block_list) {
TRACET("fresh ool extent -- {}", t, *i);
ceph_assert(i->is_valid());
- assert(!i->is_inline());
+ assert(i->get_paddr().is_absolute());
get_by_ext(efforts.fresh_ool_by_ext,
i->get_type()).increment(i->get_length());
if (is_backref_mapped_type(i->get_type())) {
decode(alloc_delta, delta.bl);
backref_entry_refs_t backref_entries;
for (auto &alloc_blk : alloc_delta.alloc_blk_ranges) {
- if (alloc_blk.paddr.is_relative()) {
- assert(alloc_blk.paddr.is_record_relative());
+ if (alloc_blk.paddr.is_record_relative()) {
alloc_blk.paddr = record_base.add_relative(alloc_blk.paddr);
+ } else {
+ ceph_assert(alloc_blk.paddr.is_absolute());
}
DEBUG("replay alloc_blk {}~0x{:x} {}, journal_seq: {}",
alloc_blk.paddr, alloc_blk.len, alloc_blk.laddr, journal_seq);
paddr_t paddr,
paddr_t key,
extent_types_t type) {
- assert(!paddr.is_relative());
+ assert(paddr.is_absolute());
auto [iter, inserted] = backref_extents.emplace(paddr, key, type);
boost::ignore_unused(inserted);
assert(inserted);
}
bool is_inline() const {
- return poffset.is_relative();
+ return poffset.is_record_relative();
}
paddr_t get_prior_paddr_and_reset() {
}
void mark_delayed_extent_ool(CachedExtentRef& ref) {
+ assert(ref->get_paddr().is_delayed());
ool_block_list.push_back(ref);
}
void update_delayed_ool_extent_addr(LogicalCachedExtentRef& ref,
paddr_t final_addr) {
- write_set.erase(*ref);
assert(ref->get_paddr().is_delayed());
+ assert(final_addr.is_absolute());
+ write_set.erase(*ref);
ref->set_paddr(final_addr, /* need_update_mapping: */ true);
- assert(!ref->get_paddr().is_null());
- assert(!ref->is_inline());
write_set.insert(*ref);
}
void mark_allocated_extent_ool(CachedExtentRef& ref) {
assert(ref->get_paddr().is_absolute());
- assert(!ref->is_inline());
ool_block_list.push_back(ref);
}
void mark_inplace_rewrite_extent_ool(LogicalCachedExtentRef ref) {
assert(ref->get_paddr().is_absolute_random_block());
- assert(!ref->is_inline());
inplace_ool_block_list.push_back(ref);
}
extent_len_t len,
extent_types_t type,
laddr_t laddr) {
+ assert(paddr.is_absolute());
if (is_backref_node(type)) {
assert(laddr == L_ADDR_NULL);
- assert(backref_key != P_ADDR_NULL);
+ assert(backref_key.is_absolute() || backref_key == P_ADDR_MIN);
backref_manager->cache_new_backref_extent(paddr, backref_key, type);
cache->update_tree_extents_num(type, 1);
epm->mark_space_used(paddr, len);