]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/pg*: Move resolve_oid() to object_context
authorMatan Breizman <mbreizma@redhat.com>
Mon, 31 Oct 2022 13:14:36 +0000 (13:14 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 22 Nov 2022 09:35:38 +0000 (09:35 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/object_context.cc
src/crimson/osd/object_context.h
src/crimson/osd/pg.cc
src/crimson/osd/pg.h

index 5ecc184f31fabf25234ceb6366f3e6b7f419288b..48e239ec9730c6474b6e48122c4a973440db498c 100644 (file)
@@ -6,6 +6,12 @@
 #include "common/Formatter.h"
 #include "crimson/common/config_proxy.h"
 
+namespace {
+  seastar::logger& logger() {
+    return crimson::get_logger(ceph_subsys_osd);
+  }
+}
+
 namespace crimson::osd {
 
 ObjectContextRegistry::ObjectContextRegistry(crimson::common::ConfigProxy &conf)
@@ -36,5 +42,42 @@ void ObjectContextRegistry::handle_conf_change(
   obc_lru.set_target_size(conf.get_val<uint64_t>("crimson_osd_obc_lru_size"));
 }
 
+std::optional<hobject_t> resolve_oid(
+  const SnapSet &ss,
+  const hobject_t &oid)
+{
+  logger().debug("{} oid.snap={},head snapset.seq={}",
+                 __func__, oid.snap, ss.seq);
+  if (oid.snap > ss.seq) {
+    // Because oid.snap > ss.seq, we are trying to read from a snapshot
+    // taken after the most recent write to this object. Read from head.
+    return oid.get_head();
+  } else {
+    // which clone would it be?
+    auto clone = std::lower_bound(
+      begin(ss.clones), end(ss.clones),
+      oid.snap);
+    if (clone == end(ss.clones)) {
+      // Doesn't exist, > last clone, < ss.seq
+      return std::nullopt;
+    }
+    auto citer = ss.clone_snaps.find(*clone);
+    // TODO: how do we want to handle this kind of logic error?
+    ceph_assert(citer != ss.clone_snaps.end());
+
+    if (std::find(
+      citer->second.begin(),
+      citer->second.end(),
+      oid.snap) == citer->second.end()) {
+       logger().debug("{} {} does not contain {} -- DNE",
+                      __func__, ss.clone_snaps, oid.snap);
+       return std::nullopt;
+    } else {
+      auto soid = oid;
+      soid.snap = *clone;
+      return std::optional<hobject_t>(soid);
+    }
+  }
+}
 
 }
index a77fd0bc6a4384a6132814a911a4e52aea99131a..c42f8647a0fa48bd8df547a11fad402d9a302fcf 100644 (file)
@@ -268,4 +268,7 @@ public:
                           const std::set <std::string> &changed) final;
 };
 
+std::optional<hobject_t> resolve_oid(const SnapSet &ss,
+                                     const hobject_t &oid);
+
 } // namespace crimson::osd
index e554bd7d9bc3f66837d66b25822120d677fde9a1..eb30c981721695e8baf3844c18b24aa5b5119b55 100644 (file)
@@ -995,44 +995,6 @@ RWState::State PG::get_lock_type(const OpInfo &op_info)
   }
 }
 
-std::optional<hobject_t> PG::resolve_oid(
-  const SnapSet &ss,
-  const hobject_t &oid)
-{
-  logger().debug("{} oid.snap={},head snapset.seq={}",
-                 __func__, oid.snap, ss.seq);
-  if (oid.snap > ss.seq) {
-    // Because oid.snap > ss.seq, we are trying to read from a snapshot
-    // taken after the most recent write to this object. Read from head.
-    return oid.get_head();
-  } else {
-    // which clone would it be?
-    auto clone = std::lower_bound(
-      begin(ss.clones), end(ss.clones),
-      oid.snap);
-    if (clone == end(ss.clones)) {
-      // Doesn't exist, > last clone, < ss.seq
-      return std::nullopt;
-    }
-    auto citer = ss.clone_snaps.find(*clone);
-    // TODO: how do we want to handle this kind of logic error?
-    ceph_assert(citer != ss.clone_snaps.end());
-
-    if (std::find(
-         citer->second.begin(),
-         citer->second.end(),
-         oid.snap) == citer->second.end()) {
-      logger().debug("{} {} does not contain {} -- DNE",
-                     __func__, ss.clone_snaps, oid.snap);
-      return std::nullopt;
-    } else {
-      auto soid = oid;
-      soid.snap = *clone;
-      return std::optional<hobject_t>(soid);
-    }
-  }
-}
-
 PG::load_obc_iertr::future<>
 PG::with_locked_obc(const hobject_t &hobj,
                     const OpInfo &op_info,
index 56235b73b35ff913835e71ebce399bb3ad3db74c..a353634ba19f01914863aa3281a03ef05428a127 100644 (file)
@@ -506,9 +506,6 @@ public:
 
   static hobject_t get_oid(const hobject_t& hobj);
   static RWState::State get_lock_type(const OpInfo &op_info);
-  static std::optional<hobject_t> resolve_oid(
-    const SnapSet &snapset,
-    const hobject_t &oid);
 
   using load_obc_ertr = crimson::errorator<
     crimson::ct_error::enoent,