]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/mds/DamageTable.cc
import ceph quincy 17.2.6
[ceph.git] / ceph / src / mds / DamageTable.cc
index 150ad5764825712d592e0ac98220d121dfa57a0e..22802079d85d4879b64bfdf71d3cbc4167b9cf69 100644 (file)
@@ -147,12 +147,11 @@ bool DamageTable::notify_dentry(
     return true;
   }
 
-  auto key = DirFragIdent(ino, frag);
-  if (dentries.count(key) == 0) {
-    DamageEntryRef entry = std::make_shared<DentryDamage>(
-        ino, frag, dname, snap_id);
+  auto& df_dentries = dentries[DirFragIdent(ino, frag)];
+  if (auto [it, inserted] = df_dentries.try_emplace(DentryIdent(dname, snap_id)); inserted) {
+    auto entry = std::make_shared<DentryDamage>(ino, frag, dname, snap_id);
     entry->path = path;
-    dentries[key][DentryIdent(dname, snap_id)] = entry;
+    it->second = entry;
     by_id[entry->id] = std::move(entry);
   }
 
@@ -175,11 +174,10 @@ bool DamageTable::notify_dirfrag(inodeno_t ino, frag_t frag,
     return true;
   }
 
-  auto key = DirFragIdent(ino, frag);
-  if (dirfrags.count(key) == 0) {
+  if (auto [it, inserted] = dirfrags.try_emplace(DirFragIdent(ino, frag)); inserted) {
     DamageEntryRef entry = std::make_shared<DirFragDamage>(ino, frag);
     entry->path = path;
-    dirfrags[key] = entry;
+    it->second = entry;
     by_id[entry->id] = std::move(entry);
   }
 
@@ -192,10 +190,10 @@ bool DamageTable::notify_remote_damaged(inodeno_t ino, std::string_view path)
     return true;
   }
 
-  if (remotes.count(ino) == 0) {
+  if (auto [it, inserted] = remotes.try_emplace(ino); inserted) {
     auto entry = std::make_shared<BacktraceDamage>(ino);
     entry->path = path;
-    remotes[ino] = entry;
+    it->second = entry;
     by_id[entry->id] = std::move(entry);
   }