]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commit
crimson/rbd: add librbd_crimson Phase 1 skeleton wip-baum-20260225-01
authorAlexander Indenbaum <aindenba@redhat.com>
Mon, 23 Feb 2026 16:07:38 +0000 (18:07 +0200)
committerAlexander Indenbaum <aindenba@redhat.com>
Wed, 25 Feb 2026 09:06:35 +0000 (11:06 +0200)
commitc2cbe8008ae08e9c1ea2c2dfd39595d92ad861c0
tree92b23e7da4939ef0d6f6f86374ed4676ae46afaf
parent1ce79f53269b101e592b88d188706553bcb0f0cb
crimson/rbd: add librbd_crimson Phase 1 skeleton

Implement rbd_open, rbd_close, rbd_stat, rbd_get_size; cluster, image header
read (cls/rbd); name→id via rbd_id.<name>. Cluster/ioctx C API stubbed for Phase 6.

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: add Phase 2 async I/O - rbd_aio_read, rbd_aio_write

Add block-to-object mapping (extent_to_object_extents), completion API, and
rbd_aio_read/readv, rbd_aio_write/writev using IoCtx read/write.

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: add Phase 3 - rbd_aio_discard, rbd_aio_flush, rbd_aio_write_zeroes, rbd_flush

Implement UNMAP, FLUSH, WRITE_ZEROES; map discard/write_zeroes to IoCtx; flush is no-op (no client cache).

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
librbd_crimson: add crimson-rbd-demo integration test, fix build

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: implement cluster C API

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: add rbd_metadata_get, rbd_metadata_set, rbd_resize

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: add C API integration test, unit tests, and coverage matrix

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
crimson/rbd: add external-thread API for SPDK Phase A1 integration

Add C API for running Seastar reactors inside SPDK reactor threads:
- rbd_crimson_configure_external_threads(): configure before spdk_reactors_start()
- rbd_crimson_register_reactor(): register reactor on each SPDK reactor thread
- rbd_crimson_run_one_tick(): advance reactor once per loop iteration
- rbd_crimson_reactor_cleanup(): per-thread cleanup
- rbd_crimson_cleanup_all(): global cleanup after spdk_reactors_fini

Implement in api/external_thread.cc by wrapping Seastar app_template
and reactor APIs. Lets SPDK link librbd_crimson for Phase A1 without
depending on Seastar directly.

Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
27 files changed:
ceph.spec.in
src/crimson/CMakeLists.txt
src/crimson/rbd/CMakeLists.txt [new file with mode: 0644]
src/crimson/rbd/api/cluster.cc [new file with mode: 0644]
src/crimson/rbd/api/crimson_rbd_impl.h [new file with mode: 0644]
src/crimson/rbd/api/crimson_rbd_internal.h [new file with mode: 0644]
src/crimson/rbd/api/external_thread.cc [new file with mode: 0644]
src/crimson/rbd/api/io.cc [new file with mode: 0644]
src/crimson/rbd/api/metadata.cc [new file with mode: 0644]
src/crimson/rbd/api/open.cc [new file with mode: 0644]
src/crimson/rbd/cluster.cc [new file with mode: 0644]
src/crimson/rbd/cluster.h [new file with mode: 0644]
src/crimson/rbd/completion.cc [new file with mode: 0644]
src/crimson/rbd/completion.h [new file with mode: 0644]
src/crimson/rbd/image.cc [new file with mode: 0644]
src/crimson/rbd/image.h [new file with mode: 0644]
src/crimson/rbd/image_header.cc [new file with mode: 0644]
src/crimson/rbd/image_header.h [new file with mode: 0644]
src/crimson/rbd/utils.cc [new file with mode: 0644]
src/crimson/rbd/utils.h [new file with mode: 0644]
src/crimson/tools/CMakeLists.txt
src/crimson/tools/rbd_demo.cc [new file with mode: 0644]
src/include/CMakeLists.txt
src/include/rbd/rbd_crimson.h [new file with mode: 0644]
src/seastar
src/test/crimson/CMakeLists.txt
src/test/crimson/test_rbd.cc [new file with mode: 0644]