template <class K, class V>
class SharedLRU {
+ CephContext *cct;
typedef ceph::shared_ptr<V> VPtr;
typedef ceph::weak_ptr<V> WeakVPtr;
Mutex lock;
};
public:
- SharedLRU(size_t max_size = 20)
- : lock("SharedLRU::lock"), max_size(max_size), size(0) {}
+ SharedLRU(CephContext *cct = NULL, size_t max_size = 20)
+ : cct(cct), lock("SharedLRU::lock"), max_size(max_size), size(0) {}
~SharedLRU() {
contents.clear();
assert(weak_refs.empty());
}
+ void set_cct(CephContext *c) {
+ cct = c;
+ }
+
void clear(const K& key) {
VPtr val; // release any ref we have after we drop the lock
{
cct->_conf->add_observer(this);
registry = new SharedLRU<ghobject_t, FD>[registry_shards];
for (int i = 0; i < registry_shards; ++i) {
+ registry[i].set_cct(cct);
registry[i].set_size(
MAX((cct->_conf->filestore_fd_cache_size / registry_shards), 1));
}
cct->_conf->osd_min_recovery_priority),
pg_temp_lock("OSDService::pg_temp_lock"),
map_cache_lock("OSDService::map_lock"),
- map_cache(cct->_conf->osd_map_cache_size),
+ map_cache(cct, cct->_conf->osd_map_cache_size),
map_bl_cache(cct->_conf->osd_map_cache_size),
map_bl_inc_cache(cct->_conf->osd_map_cache_size),
in_progress_split_lock("OSDService::in_progress_split_lock"),