]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/shared_cache: take a cct
authorSage Weil <sage@redhat.com>
Fri, 22 Aug 2014 16:04:37 +0000 (09:04 -0700)
committerSage Weil <sage@redhat.com>
Fri, 22 Aug 2014 16:04:37 +0000 (09:04 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/shared_cache.hpp
src/os/FDCache.h
src/osd/OSD.cc

index ecb3abe01748bc8173ba76b916d373ec7c902add..8b48272ee411357c3148b317eadbc3c966d7ac42 100644 (file)
@@ -24,6 +24,7 @@
 
 template <class K, class V>
 class SharedLRU {
+  CephContext *cct;
   typedef ceph::shared_ptr<V> VPtr;
   typedef ceph::weak_ptr<V> WeakVPtr;
   Mutex lock;
@@ -84,8 +85,8 @@ class SharedLRU {
   };
 
 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();
@@ -93,6 +94,10 @@ public:
     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
     {
index 39872f0af789391b5446eefd3bf7f48b61ab90fb..54f2411fab68a2da3824c8a736e8b130b132acfb 100644 (file)
@@ -61,6 +61,7 @@ public:
     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));
     }
index 1171b7072d8da08ff88b60044a35fe5ed3c9cbab..2f4cded51c3f002948b086bdb80840d12f0a8023 100644 (file)
@@ -230,7 +230,7 @@ OSDService::OSDService(OSD *osd) :
                  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"),