}
lru.remove_from_lru(*ref);
- add_to_dirty(ref);
ref->state = CachedExtent::extent_state_t::DIRTY;
+ add_to_dirty(ref);
}
void Cache::add_to_dirty(CachedExtentRef ref)
{
- assert(ref->is_valid());
+ assert(ref->is_dirty());
assert(!ref->primary_ref_list_hook.is_linked());
intrusive_ptr_add_ref(&*ref);
dirty.push_back(*ref);
CachedExtentRef next,
CachedExtentRef prev)
{
+ assert(next->is_dirty());
assert(next->get_paddr() == prev->get_paddr());
assert(next->version == prev->version + 1);
extents.replace(*next, *prev);
auto ret = CachedExtent::make_cached_extent_ref<T>(std::move(result.bp));
ret->set_paddr(result.paddr);
ret->hint = hint;
- t.add_fresh_extent(ret);
ret->state = CachedExtent::extent_state_t::INITIAL_WRITE_PENDING;
+ t.add_fresh_extent(ret);
SUBDEBUGT(seastore_cache, "allocated {} {}B extent at {}, hint={} -- {}",
t, T::TYPE, length, result.paddr, hint, *ret);
return ret;