44[ ![ CodeCov] ( https://codecov.io/gh/eBay/homestore/branch/master/graph/badge.svg )] ( https://codecov.io/gh/eBay/homestore )
55[ ![ License] ( https://img.shields.io/badge/License-Apache%202.0-blue.svg )] ( LICENSE )
66
7- > A modern storage engine for Linux - crash-consistent storage services over a C++23 coroutine, run-to-completion I/O stack.
7+ > A modern storage engine for Linux - crash-consistent storage services over a C++23 coroutine, non-blocking-reactor I/O stack.
88
99HomeStore is a generic ** storage engine** on which different storage solutions - Block, K/V, Object, or
1010Database - are built. It hands an application a small set of composable, crash-resilient ** services**
11- (metadata, index, data, log, replication) and runs them with ** run-to-completion ** async I/O on
11+ (metadata, index, data, log, replication) and runs them with ** non-blocking ** async I/O on
1212[ IOManager] ( https://github.com/eBay/IOManager ) reactors, so a storage solution never hands work off to a
1313separate thread pool. A reference Object solution is [ HomeObject] ( https://github.com/eBay/HomeObject ) .
1414
@@ -19,8 +19,10 @@ composed on the sisl `async` substrate over [NVIDIA stdexec](https://github.com/
1919
2020- ** Composable services** - bring up only what a solution needs: ` with_index_service ` ,
2121 ` with_log_service ` , ` with_data_service ` , ` with_repl_data_service ` , ` with_fault_containment ` .
22- - ** Run-to-completion I/O** - the device layer drives ` io_uring ` through IOManager reactors; devices on
23- the same reactor interact without locks, with no executor queue or thread hop.
22+ - ** Non-blocking, reactor-local I/O** - the device layer drives ` io_uring ` through IOManager reactors;
23+ the reactor never blocks, and devices on the same reactor interact without locks — no executor queue or
24+ thread hop. (A ` co_await ` is still a suspension point: state is stable across a synchronous segment, not
25+ across an await.)
2426- ** Coroutine data path** - ` BlkDataService ` / ` ReplDev ` reads and writes are awaitables; ` co_await `
2527 yields an ` iomgr::io_result ` (` std::expected<size_t, std::error_condition> ` ).
2628- ** Replication** - replicated devices over Raft via [ nuraft_mesg] ( https://github.com/eBay/nuraft_mesg ) ,
@@ -116,7 +118,7 @@ HomeStore/
116118 ├─ CPManager ── consistent checkpoints across services
117119 │ data/replication paths: co_await → iomgr::io_result
118120 ▼
119- IOManager v13 reactors ── io_uring drive backend (run-to-completion )
121+ IOManager v13 reactors ── io_uring drive backend (non-blocking )
120122 ▼
121123 block devices / files
122124```
@@ -240,7 +242,7 @@ conan build -s:h build_type=Debug --build missing .
240242
241243### Core
242244
243- - ** [ IOManager] ( https://github.com/eBay/IOManager ) ** (v13+) - run-to-completion reactors and the
245+ - ** [ IOManager] ( https://github.com/eBay/IOManager ) ** (v13+) - non-blocking reactors and the
244246 ` io_uring ` coroutine drive path (` iomgr::io_result ` ).
245247- ** [ sisl] ( https://github.com/eBay/sisl ) ** (v14+) - logging, options, metrics, the ` async ` coroutine
246248 substrate, and FDS containers.
0 commit comments