Skip to content

Commit 3f0ba8e

Browse files
committed
Readme
1 parent eeb33e5 commit 3f0ba8e

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
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
99
HomeStore is a generic **storage engine** on which different storage solutions - Block, K/V, Object, or
1010
Database - 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
1313
separate 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

Comments
 (0)