From 7eed358e57dd55153b06bd39161008958d07dc45 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Tue, 16 Aug 2022 17:10:10 +0300 Subject: [PATCH] os/bluestore: avoid duplicate lookup when adding entry to OnodeSpace Signed-off-by: Igor Fedotov --- src/os/bluestore/BlueStore.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 036ec8b81be95..345840cc67426 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1928,15 +1928,15 @@ BlueStore::OnodeRef BlueStore::OnodeSpace::add_onode(const ghobject_t& oid, OnodeRef& o) { std::lock_guard l(cache->lock); - auto p = onode_map.find(oid); - if (p != onode_map.end()) { + // add entry or return existing one + auto p = onode_map.emplace(oid, o); + if (!p.second) { ldout(cache->cct, 30) << __func__ << " " << oid << " " << o - << " raced, returning existing " << p->second + << " raced, returning existing " << p.first->second << dendl; - return p->second; + return p.first->second; } ldout(cache->cct, 20) << __func__ << " " << oid << " " << o << dendl; - onode_map[oid] = o; cache->_add(o.get(), 1); cache->_trim(); return o; -- 2.39.5