]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd/PrimaryLogPG: avoid redundant container clones and lookups
authorGarry Drankovich <garry.drankovich@clyso.com>
Wed, 2 Apr 2025 21:31:02 +0000 (00:31 +0300)
committerGarry Drankovich <garry.drankovich@clyso.com>
Fri, 12 Sep 2025 15:14:42 +0000 (18:14 +0300)
Signed-off-by: Garry Drankovich <garry.drankovich@clyso.com>
src/osd/PGTransaction.h
src/osd/PrimaryLogPG.cc

index 928d9483966ae71362d6a25822f2619243fa3828..8e067321a07a0d622e5bbcf3b15ea14cd681bfc5 100644 (file)
@@ -322,16 +322,16 @@ public:
 
   void update_snaps(
     const hobject_t &hoid,         ///< [in] object for snaps
-    const std::set<snapid_t> &old_snaps,///< [in] old snaps value
-    const std::set<snapid_t> &new_snaps ///< [in] new snaps value
+    std::set<snapid_t> &&old_snaps,///< [in] old snaps value
+    std::set<snapid_t> &&new_snaps ///< [in] new snaps value
     ) {
     auto &op = get_object_op(hoid);
     ceph_assert(!op.updated_snaps);
     ceph_assert(op.buffer_updates.empty());
     ceph_assert(!op.truncate);
     op.updated_snaps = make_pair(
-      old_snaps,
-      new_snaps);
+      std::move(old_snaps),
+      std::move(new_snaps));
   }
 
   /// Clears, truncates
index 9db4cb9ddd52a251472670970ed5d70fdcf0f08e..2ef83f319374585fe8b690afff3d714bed27a61e 100644 (file)
@@ -4835,8 +4835,8 @@ int PrimaryLogPG::trim_object(
     t->remove(coid);
     t->update_snaps(
       coid,
-      old_snaps,
-      new_snaps);
+      std::move(old_snaps),
+      std::move(new_snaps));
 
     coi = object_info_t(coid);
 
@@ -4870,8 +4870,8 @@ int PrimaryLogPG::trim_object(
 
     t->update_snaps(
       coid,
-      old_snaps,
-      new_snaps);
+      std::move(old_snaps),
+      std::move(new_snaps));
   }
 
   // save head snapset
@@ -15892,9 +15892,10 @@ boost::statechart::result PrimaryLogPG::AwaitAsyncWork::react(const DoSnapWork&)
 
     pg->snap_trimq.erase(snap_to_trim);
 
-    if (pg->snap_trimq_repeat.count(snap_to_trim)) {
+    if (auto it = pg->snap_trimq_repeat.find(snap_to_trim);
+        it != pg->snap_trimq_repeat.end()) {
       ldout(pg->cct, 10) << " removing from snap_trimq_repeat" << dendl;
-      pg->snap_trimq_repeat.erase(snap_to_trim);
+      pg->snap_trimq_repeat.erase(it);
     } else {
       ldout(pg->cct, 10) << "adding snap " << snap_to_trim
                         << " to purged_snaps"