]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/DBObjectMap: use single-key LevelDB::get method
authorPiotr Dałek <piotr.dalek@ts.fujitsu.com>
Fri, 23 Oct 2015 13:44:47 +0000 (15:44 +0200)
committerSage Weil <sage@redhat.com>
Mon, 9 Nov 2015 14:03:22 +0000 (09:03 -0500)
Make FileStore use single-key ::get() method for some performance
increase in k/v-heavy workloads.

Signed-off-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
src/os/DBObjectMap.cc

index 3a878ccb56997a1aed3df9a9a038844b504ae76c..08593044b05775f5b0573f1fc88b77c01ca9c58c 100644 (file)
@@ -1089,17 +1089,16 @@ DBObjectMap::Header DBObjectMap::_lookup_map_header(
     }
   }
 
-  map<string, bufferlist> out;
-  set<string> to_get;
-  to_get.insert(map_header_key(oid));
-  int r = db->get(HOBJECT_TO_SEQ, to_get, &out);
-  if (r < 0 || out.empty()) {
+  bufferlist out;
+  int r = db->get(HOBJECT_TO_SEQ, map_header_key(oid), &out);
+  if (r < 0 || out.length()==0) {
     delete header;
     return Header();
   }
 
   Header ret(header, RemoveOnDelete(this));
-  bufferlist::iterator iter = out.begin()->second.begin();
+  bufferlist::iterator iter = out.begin();
+
   ret->decode(iter);
   {
     Mutex::Locker l(cache_lock);