]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/seastore: batch same-collection transactions
authorMatan Breizman <mbreizma@redhat.com>
Tue, 14 Jul 2026 14:14:55 +0000 (14:14 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Sun, 19 Jul 2026 13:29:04 +0000 (13:29 +0000)
commit548f65f03edc78b0ea549f9503a400159effd24e
tree20bb75258fb36f2ebd04171fae8a4b17c527799c
parent1cdfb58f24929e977c169a6db3ff91a2ad4f81d1
crimson/seastore: batch same-collection transactions

Previously, the per-collection ordering_lock provided both ordering and
single-holder exclusion, causing same-collection transactions to be serialized
one at a time.

Replace that with a per-collection queue and a single dispatch loop. When a
collection has a batch in flight, newly arriving transactions are queued.
The dispatch loop later drains the queue and merges transactions into one
SeaStore transaction (batch). Resulting in a one build, one ool_write and one journal record for the entire batch.

Only one batch is in flight per collection, so same-collection concurrency is
still prevented and ordering is preserved by the queue.

Callbacks are unchanged: FuturizedStore drains each caller's on_commit before
enqueueing, so only ops are merged. Each caller's promise is fulfilled when the
merged batch commits.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore.h