From 197e8ba7335cc039cedafea0ecada4a3396331ca Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Tue, 23 Sep 2025 14:05:45 +0530 Subject: [PATCH] crimson(WIP): Put a log before taking exclusive lock of object_context_loader Signed-off-by: Mohit Agrawal --- src/crimson/osd/object_context_loader.h | 11 +++++++++++ src/crimson/osd/pg.cc | 3 ++- src/crimson/osd/replicated_recovery_backend.cc | 12 ++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/crimson/osd/object_context_loader.h b/src/crimson/osd/object_context_loader.h index be6444f0496..863826a1aaa 100644 --- a/src/crimson/osd/object_context_loader.h +++ b/src/crimson/osd/object_context_loader.h @@ -181,6 +181,15 @@ public: } void release() { + LOG_PREFIX(ObjectContextLoader::release); + if (!head_state.is_empty()) { + SUBINFODPP(osd, + "MY_LOG Calling release_state for head {}, {}", loader.dpp, + *(head_state.obc), head_state.obc->obs); + } else { + SUBINFODPP(osd, "MY_LOG head_state is empty", loader.dpp); + } + release_state(head_state); release_state(target_state); } @@ -298,6 +307,8 @@ public: co_await load_and_lock(manager, State); co_await std::invoke( func, manager.get_head_obc(), manager.get_obc()); + LOG_PREFIX(ObjectContextLoader::with_obc); + SUBINFODPP(osd, "MY_LOG lambda completed for oid {}", dpp, oid); } // Use this variant in the case where the head object diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index b9bcfebd022..f5563f9270c 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -728,7 +728,8 @@ void PG::scrub_requested(scrub_level_t scrub_level, scrub_type_t scrub_type) /* We don't actually route the scrub request message into the state machine. * Instead, we handle it directly in PGScrubber::handle_scrub_requested). */ - ceph_assert(0 == "impossible in crimson"); + logger().info("Calling ceph_assert "); + //ceph_assert(0 == "impossible in crimson"); } void PG::log_state_enter(const char *state) { diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 226b66f1db2..5e3fdc11913 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -147,10 +147,13 @@ ReplicatedRecoveryBackend::maybe_pull_missing_obj( msg->map_epoch = pg.get_osdmap_epoch(); msg->min_epoch = pg.get_last_peering_reset(); msg->set_pulls({std::move(pull_op)}); - return shard_services.send_to_osd( + auto f = shard_services.send_to_osd( pull_info.from.osd, std::move(msg), pg.get_osdmap_epoch()); + LOG_PREFIX(ReplicatedRecoveryBackend::maybe_pull_missing_obj::send_to_osd); + INFODPP("MY_LOG Before return a send_to_osd future {}", pg, soid); + return f; }).si_then([this, soid]() -> prepare_pull_iertr::future<> { auto& recovery_waiter = get_recovering(soid); return recovery_waiter.wait_for_pull(); @@ -825,9 +828,9 @@ ReplicatedRecoveryBackend::_handle_pull_response( PullOp* response) { LOG_PREFIX(ReplicatedRecoveryBackend::handle_pull); - DEBUGDPP("{} {} data.size() is {} data_included: {}", + DEBUGDPP("MY_LOG {} {} data.size() is {} data_included: {} oid {}", pg, push_op.recovery_info, push_op.after_progress, - push_op.data.length(), push_op.data_included); + push_op.data.length(), push_op.data_included, push_op.soid); ceph::os::Transaction t; const hobject_t &hoid = push_op.soid; @@ -899,12 +902,13 @@ ReplicatedRecoveryBackend::_handle_pull_response( pull_info.stat.num_objects_recovered++; auto manager = pg.obc_loader.get_obc_manager( recovery_waiter.obc); + INFODPP("Trying to get exclusive lock {}", pg, recovery_waiter.obc->obs.oi.soid); manager.lock_excl_sync(); /* cannot already be locked */ co_await pg.get_recovery_handler()->on_local_recover( push_op.soid, get_recovering(push_op.soid).pull_info->recovery_info, false, t ); - DEBUGDPP("submitting transaction, complete", pg); + INFODPP("submitting transaction, complete", pg); co_await interruptor::make_interruptible( shard_services.get_store().do_transaction(coll, std::move(t))); } else { -- 2.39.5