]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add missing cache locking
authorYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 19 Aug 2011 19:56:38 +0000 (12:56 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Fri, 19 Aug 2011 19:56:38 +0000 (12:56 -0700)
this was overlooked when switch to the multithreaded configuration

src/rgw/rgw_cache.cc
src/rgw/rgw_cache.h

index 4dde65ffe099d4b0ae729ad15d9ef8f947ae5cac..526e6917db3ec5871c7994e423a74efa59748960 100644 (file)
@@ -7,6 +7,8 @@ using namespace std;
 
 int ObjectCache::get(string& name, ObjectCacheInfo& info, uint32_t mask)
 {
+  Mutex::Locker l(lock);
+
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end()) {
     RGW_LOG(10) << "cache get: name=" << name << " : miss" << dendl;
@@ -29,6 +31,8 @@ int ObjectCache::get(string& name, ObjectCacheInfo& info, uint32_t mask)
 
 void ObjectCache::put(string& name, ObjectCacheInfo& info)
 {
+  Mutex::Locker l(lock);
+
   RGW_LOG(10) << "cache put: name=" << name << dendl;
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end()) {
@@ -67,6 +71,8 @@ void ObjectCache::put(string& name, ObjectCacheInfo& info)
 
 void ObjectCache::remove(string& name)
 {
+  Mutex::Locker l(lock);
+
   map<string, ObjectCacheEntry>::iterator iter = cache_map.find(name);
   if (iter == cache_map.end())
     return;
index 9bd8af9cfc96abb2e9294cf27ce9ced8c4db858b..f3924266f25a2a5ff185c23f77ba1cffa890604c 100644 (file)
@@ -104,11 +104,12 @@ struct ObjectCacheEntry {
 class ObjectCache {
   std::map<string, ObjectCacheEntry> cache_map;
   std::list<string> lru;
+  Mutex lock;
 
   void touch_lru(string& name, std::list<string>::iterator& lru_iter);
   void remove_lru(string& name, std::list<string>::iterator& lru_iter);
 public:
-  ObjectCache() { }
+  ObjectCache() : lock("ObjectCache") { }
   int get(std::string& name, ObjectCacheInfo& bl, uint32_t mask);
   void put(std::string& name, ObjectCacheInfo& bl);
   void remove(std::string& name);