]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: ObjectCache::put avoids separate find + insert
authorCasey Bodley <cbodley@redhat.com>
Wed, 30 May 2018 13:15:57 +0000 (09:15 -0400)
committerCasey Bodley <cbodley@redhat.com>
Wed, 30 May 2018 13:16:01 +0000 (09:16 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_cache.cc

index b43d5e5c9f73d25e05c3288c384b6cce78087e84..797e22bc3dc4beba2bfa70305b3df992c5538004 100644 (file)
@@ -124,14 +124,12 @@ void ObjectCache::put(const string& name, ObjectCacheInfo& info, rgw_cache_entry
 
   ldout(cct, 10) << "cache put: name=" << name << " info.flags=0x"
                  << std::hex << info.flags << std::dec << dendl;
-  auto iter = cache_map.find(name);
-  if (iter == cache_map.end()) {
-    ObjectCacheEntry entry;
+
+  auto [iter, inserted] = cache_map.emplace(name, ObjectCacheEntry{});
+  ObjectCacheEntry& entry = iter->second;
+  if (inserted) {
     entry.lru_iter = lru.end();
-    cache_map.insert(pair<string, ObjectCacheEntry>(name, entry));
-    iter = cache_map.find(name);
   }
-  ObjectCacheEntry& entry = iter->second;
   ObjectCacheInfo& target = entry.info;
 
   invalidate_lru(entry);