From: Piotr Dałek Date: Fri, 23 Oct 2015 13:44:47 +0000 (+0200) Subject: os/DBObjectMap: use single-key LevelDB::get method X-Git-Tag: v10.0.1~116^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a3f88918c91e6a765dd735d88ec0f03bfe5face4;p=ceph.git os/DBObjectMap: use single-key LevelDB::get method Make FileStore use single-key ::get() method for some performance increase in k/v-heavy workloads. Signed-off-by: Piotr Dałek --- diff --git a/src/os/DBObjectMap.cc b/src/os/DBObjectMap.cc index 3a878ccb5699..08593044b057 100644 --- a/src/os/DBObjectMap.cc +++ b/src/os/DBObjectMap.cc @@ -1089,17 +1089,16 @@ DBObjectMap::Header DBObjectMap::_lookup_map_header( } } - map out; - set 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);