]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: delegate md loading outside of ObjectContextLoader::load_obc()
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 9 May 2024 10:25:08 +0000 (10:25 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 14:47:44 +0000 (14:47 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/object_context_loader.cc
src/crimson/osd/object_context_loader.h

index d7689a0455da366b629ad81e8a36d2033a78bb91..cb763f432ba36da1cb0ba600e76d9f90dd4ad6b8 100644 (file)
@@ -31,7 +31,9 @@ ObjectContextLoader::load_and_lock_head(Manager &manager, RWState::State lock_ty
   } else {
     manager.target_state.lock_excl_sync();
     manager.target_state.obc->loading_started = true;
-    co_await load_obc(manager.target_state.obc);
+    co_await load_obc(
+      manager.target_state.obc,
+      backend.load_metadata(manager.target_state.obc->get_oid()));
     manager.target_state.demote_excl_to(lock_type);
   }
   releaser.cancel();
@@ -58,7 +60,9 @@ ObjectContextLoader::load_and_lock_clone(
     ceph_assert(lock_head);
     manager.head_state.lock_excl_sync();
     manager.head_state.obc->loading_started = true;
-    co_await load_obc(manager.head_state.obc);
+    co_await load_obc(
+      manager.head_state.obc,
+      backend.load_metadata(manager.target_state.obc->get_oid()));
     manager.head_state.demote_excl_to(RWState::RWREAD);
   } else if (lock_head) {
     co_await manager.head_state.lock_to(RWState::RWREAD);
@@ -123,7 +127,9 @@ ObjectContextLoader::load_and_lock_clone(
     } else {
       manager.target_state.lock_excl_sync();
       manager.target_state.obc->loading_started = true;
-      co_await load_obc(manager.target_state.obc);
+      co_await load_obc(
+        manager.target_state.obc,
+        backend.load_metadata(manager.target_state.obc->get_oid()));
       manager.target_state.obc->set_clone_ssc(manager.head_state.obc->ssc);
       manager.target_state.demote_excl_to(RWState::RWREAD);
     }
@@ -147,10 +153,12 @@ ObjectContextLoader::load_and_lock(Manager &manager, RWState::State lock_type)
 }
 
 ObjectContextLoader::load_obc_iertr::future<>
-ObjectContextLoader::load_obc(ObjectContextRef obc)
+ObjectContextLoader::load_obc(
+  ObjectContextRef obc,
+  PGBackend::load_metadata_iertr::future<PGBackend::loaded_object_md_t::ref> _md)
 {
   LOG_PREFIX(ObjectContextLoader::load_obc);
-  return backend.load_metadata(obc->get_oid())
+  return std::move(_md)
     .safe_then_interruptible(
       [FNAME, this, obc=std::move(obc)](auto md)
       -> load_obc_ertr::future<> {
index be6444f0496ebdaa01e38787aa4fa5fb3665d49c..c1d27bde8897fa3ade8117c7000d63b747ad1e1d 100644 (file)
@@ -330,7 +330,9 @@ private:
   DoutPrefixProvider& dpp;
   obc_accessing_list_t obc_set_accessing;
 
-  load_obc_iertr::future<> load_obc(ObjectContextRef obc);
+  load_obc_iertr::future<> load_obc(
+    ObjectContextRef obc,
+    PGBackend::load_metadata_iertr::future<PGBackend::loaded_object_md_t::ref> md);
 };
 
 using ObjectContextManager = ObjectContextLoader::Manager;