From: Radoslaw Zarzynski Date: Thu, 9 May 2024 10:25:08 +0000 (+0000) Subject: crimson/osd: delegate md loading outside of ObjectContextLoader::load_obc() X-Git-Tag: v21.0.0~3^2~47 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9ce78ae56b59418bc8697db7abd0c91f9d9df9ea;p=ceph.git crimson/osd: delegate md loading outside of ObjectContextLoader::load_obc() Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/object_context_loader.cc b/src/crimson/osd/object_context_loader.cc index d7689a0455da..08c0e1fd038d 100644 --- a/src/crimson/osd/object_context_loader.cc +++ b/src/crimson/osd/object_context_loader.cc @@ -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.head_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 _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<> { diff --git a/src/crimson/osd/object_context_loader.h b/src/crimson/osd/object_context_loader.h index be6444f0496e..c1d27bde8897 100644 --- a/src/crimson/osd/object_context_loader.h +++ b/src/crimson/osd/object_context_loader.h @@ -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 md); }; using ObjectContextManager = ObjectContextLoader::Manager;