]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson: Move send_to_osd call outside with_obc lambda 65849/head
authorMohit Agrawal <moagrawa@redhat.com>
Thu, 16 Oct 2025 10:58:08 +0000 (16:28 +0530)
committerMohit Agrawal <moagrawa@redhat.com>
Wed, 5 Nov 2025 23:57:34 +0000 (05:27 +0530)
commit9a459ebc98c3a5c7a4fb01877487695669e6b17e
treebccbabd20934d9c84c4bcbb54afc9e4bc4a9918f
parent4d2729da8759335cd9173a195b1abfdcf4365746
crimson: Move send_to_osd call outside with_obc lambda

The with_obc() function acquires a lock before invoking the
lambda it wraps. Earlier the lambda itself called send_to_osd()
which returns a future to with_obc. If a future is not resolved
immediately and a response could arrive and trigger
handle_pull_response() which attempts to acquire an exclusive lock.

Because a future is not returned yet to with_obc() so the original
lock is still holding by with_obc and handle_pull_response() throw
an assertion failure due to that osd is crashed.

Solution: Move send_to_osd() call outside with_obc lambda so that
the lock is released before handle_pull_response() is triggered.

Fixed: https://tracker.ceph.com/issues/71861
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
src/crimson/osd/replicated_recovery_backend.cc