Cache::~Cache()
{
LOG_PREFIX(Cache::~Cache);
- lru.clear();
for (auto &i: extents) {
ERROR("extent {} still alive", i);
}
if (ref->is_dirty()) {
add_to_dirty(ref);
- } else if (!ref->is_placeholder()) {
- lru.add_to_lru(*ref);
- }
+ } else {
+ touch_extent(*ref);
+ }
DEBUG("extent {}", *ref);
}
remove_from_lru(lru.front());
}
}
- public:
- LRU(size_t capacity) : capacity(capacity) {}
-
- size_t get_current_contents_bytes() const {
- return contents;
- }
-
- size_t get_current_contents_extents() const {
- return lru.size();
- }
void add_to_lru(CachedExtent &extent) {
assert(
trim_to_capacity();
}
+ public:
+ LRU(size_t capacity) : capacity(capacity) {}
+
+ size_t get_current_contents_bytes() const {
+ return contents;
+ }
+
+ size_t get_current_contents_extents() const {
+ return lru.size();
+ }
+
void remove_from_lru(CachedExtent &extent) {
assert(extent.is_clean());
assert(!extent.is_pending());
}
~LRU() {
- assert(lru.empty());
+ clear();
}
} lru;