]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd: Use coroutines to perform synchronous reads in EC without blocking any threads 67079/head
authorMatty Williams <Matty.Williams@ibm.com>
Fri, 1 May 2026 11:08:30 +0000 (12:08 +0100)
committerMatty Williams <Matty.Williams@ibm.com>
Tue, 5 May 2026 15:35:31 +0000 (16:35 +0100)
commit52f862cebbc9085d9d318cc4bd00418657f8a9c4
treed1518a64eddbe2fa9b3efc37e7a034b884ed7e7a
parentd41db7301e2b75ce9b25421e034afffb7aeb1671
osd: Use coroutines to perform synchronous reads in EC without blocking any threads

Coroutines.h file added containing type and struct definitions.
Coroutine spawned in PrimaryLogPG::do_op if the message contains a CEPH_OSD_OP_CALL op.
ECBackend::objects_read_sync yields while running ECBackend::objects_read_async. Coroutine is resumed once the read is complete.
When a coroutine op is being processed, all other ops to the same PG are blocked.

Fixes: https://tracker.ceph.com/issues/74531
Signed-off-by: Matty Williams <Matty.Williams@ibm.com>
19 files changed:
src/CMakeLists.txt
src/osd/CMakeLists.txt
src/osd/Coroutines.h [new file with mode: 0644]
src/osd/ECBackend.cc
src/osd/ECBackend.h
src/osd/ECBackendL.cc
src/osd/ECBackendL.h
src/osd/ECSwitch.h
src/osd/OpRequest.h
src/osd/PGBackend.h
src/osd/PrimaryLogPG.cc
src/osd/PrimaryLogPG.h
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h
src/osd/osd_op_util.cc
src/osd/osd_op_util.h
src/test/osd/MockPGBackend.h
src/test/osd/PGBackendTestFixture.cc
src/test/osd/TestBackendBasics.cc