From 3e6c83bd8cde6cafa6e7122edbb4888ceaf7b971 Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Thu, 16 Oct 2025 15:26:21 +0530 Subject: [PATCH] Revert "crimson: Implement a lock_excl_wait wrapper" This reverts commit e54f648b1cf3a58638d394c5eedfc9cb67032990. --- src/crimson/osd/object_context_loader.h | 16 ---------------- src/crimson/osd/replicated_recovery_backend.cc | 8 ++------ 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/src/crimson/osd/object_context_loader.h b/src/crimson/osd/object_context_loader.h index 2e830406de1..be6444f0496 100644 --- a/src/crimson/osd/object_context_loader.h +++ b/src/crimson/osd/object_context_loader.h @@ -60,18 +60,6 @@ public: state = RWState::RWEXCL; } - seastar::future<> lock_excl_wait() { - // Try immediate lock first - if (obc->lock.try_lock_for_excl()) { - state = RWState::RWEXCL; - return seastar::now(); - } - // Otherwise, wait asynchronously - return obc->lock.lock_for_excl().then([this] { - state = RWState::RWEXCL; - }); - } - void demote_excl_to(RWState::State lock_type) { assert(state == RWState::RWEXCL); switch (lock_type) { @@ -180,10 +168,6 @@ public: target_state.lock_excl_sync(); } - seastar::future<> lock_excl_wait() { - return target_state.lock_excl_wait(); - } - ObjectContextRef &get_obc() { ceph_assert(!target_state.is_empty()); ceph_assert(target_state.obc->is_loaded()); diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index 9956780a0f8..226b66f1db2 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -899,9 +899,7 @@ ReplicatedRecoveryBackend::_handle_pull_response( pull_info.stat.num_objects_recovered++; auto manager = pg.obc_loader.get_obc_manager( recovery_waiter.obc); - // Call lock_excl_wait if the lock is already held by load_and_lock_(head|clone) - // and has not been released yet. - co_await interruptor::make_interruptible(manager.lock_excl_wait()); + 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 @@ -1026,9 +1024,7 @@ ReplicatedRecoveryBackend::handle_push( auto ptiter = replica_push_targets.find(push_op.recovery_info.soid); ceph_assert(ptiter != replica_push_targets.end()); auto manager = pg.obc_loader.get_obc_manager(ptiter->second); - // Call lock_excl_wait if the lock is already held by load_and_lock_(head|clone) - // and has not been released yet. - co_await interruptor::make_interruptible(manager.lock_excl_wait()); + manager.lock_excl_sync(); /* cannot already be locked */ co_await pg.get_recovery_handler()->on_local_recover( push_op.recovery_info.soid, push_op.recovery_info, -- 2.39.5