]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/.../replicated_recovery_backend: take excl lock while pushes commit 61561/head
authorSamuel Just <sjust@redhat.com>
Wed, 22 Jan 2025 02:41:48 +0000 (18:41 -0800)
committerSamuel Just <sjust@redhat.com>
Thu, 30 Jan 2025 22:52:46 +0000 (14:52 -0800)
Fixes: https://tracker.ceph.com/issues/69412
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/replicated_recovery_backend.cc

index 85582e04033de973ece9ec0d9ae9744af304b5e2..d9a4481200a288952081bc8b835b44c7637876c9 100644 (file)
@@ -905,6 +905,9 @@ ReplicatedRecoveryBackend::_handle_pull_response(
 
   if (complete) {
     pull_info.stat.num_objects_recovered++;
+    auto manager = pg.obc_loader.get_obc_manager(
+      recovery_waiter.obc);
+    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