mirror of
https://github.com/ceph/ceph
synced 2025-01-10 05:00:59 +00:00
crimson: object state can be manually evicted from OSD's cache.
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
This commit is contained in:
parent
d86ffe51aa
commit
c400cf336f
@ -29,11 +29,11 @@ class SharedLRU {
|
||||
SharedLRU<K,V>* cache;
|
||||
const K key;
|
||||
void operator()(V* ptr) {
|
||||
cache->_erase(key);
|
||||
cache->_erase_weak(key);
|
||||
delete ptr;
|
||||
}
|
||||
};
|
||||
void _erase(const K& key) {
|
||||
void _erase_weak(const K& key) {
|
||||
weak_refs.erase(key);
|
||||
}
|
||||
public:
|
||||
@ -85,6 +85,11 @@ public:
|
||||
shared_ptr_t lower_bound(const K& key);
|
||||
// return the first element that is greater than key
|
||||
std::optional<value_type> upper_bound(const K& key);
|
||||
|
||||
void erase(const K& key) {
|
||||
cache.erase(key);
|
||||
_erase_weak(key);
|
||||
}
|
||||
};
|
||||
|
||||
template<class K, class V>
|
||||
|
@ -113,7 +113,7 @@ template <class Key, class Value, bool Ordered>
|
||||
void SimpleLRU<Key,Value,Ordered>::erase(const Key& key)
|
||||
{
|
||||
if (auto found = cache.find(key); found != cache.end()) {
|
||||
lru.erase(found->second->second);
|
||||
lru.erase(found->second.second);
|
||||
cache.erase(found);
|
||||
}
|
||||
}
|
||||
|
@ -149,6 +149,13 @@ PGBackend::_load_ss(const hobject_t& oid)
|
||||
});
|
||||
}
|
||||
|
||||
seastar::future<>
|
||||
PGBackend::evict_object_state(const hobject_t& oid)
|
||||
{
|
||||
os_cache.erase(oid);
|
||||
return seastar::now();
|
||||
}
|
||||
|
||||
seastar::future<bufferlist> PGBackend::read(const object_info_t& oi,
|
||||
size_t offset,
|
||||
size_t length,
|
||||
|
@ -34,6 +34,7 @@ public:
|
||||
const ec_profile_t& ec_profile);
|
||||
using cached_os_t = boost::local_shared_ptr<ObjectState>;
|
||||
seastar::future<cached_os_t> get_object_state(const hobject_t& oid);
|
||||
seastar::future<> evict_object_state(const hobject_t& oid);
|
||||
seastar::future<bufferlist> read(const object_info_t& oi,
|
||||
uint64_t off,
|
||||
uint64_t len,
|
||||
|
Loading…
Reference in New Issue
Block a user