Vitaliy Filippov
7eb8a66d0e
Include xxhash3 x86dispatch
2026-04-04 13:42:05 +03:00
Vitaliy Filippov
e14231e263
Implement protocol-level checksums (xxhash3)
2026-04-03 21:26:25 +03:00
Vitaliy Filippov
435c43e4c8
Do not use scrap_buffer in the client (it would block protocol checksum support)
2026-04-03 21:22:42 +03:00
Vitaliy Filippov
1f5a832e28
Add basic AES-XTS client-side encryption support
2026-04-03 21:22:42 +03:00
Vitaliy Filippov
73e9de5143
Rework msgr send/receive to allow encryption support
2026-04-03 21:22:42 +03:00
Vitaliy Filippov
2a5028d17f
Use robin_hood_map in messenger
2026-03-30 02:06:10 +03:00
Vitaliy Filippov
07915c2881
Use surrogate peer IDs instead of FDs
2026-03-30 02:06:10 +03:00
Vitaliy Filippov
f7cbb6ed56
Remove FD from the event loop in destroy_client, not in stop_client
2026-03-28 14:18:20 +03:00
Vitaliy Filippov
310c512b43
Correctly delete handle_immediate_ops when stopping a client
...
Fixes map::at crash in some cases
2026-03-02 01:48:19 +03:00
Vitaliy Filippov
2ed6760447
Remove ODP support
2026-02-17 02:35:46 +03:00
Vitaliy Filippov
aacfdf0dec
Rename try_recv_rdma to init_recv_rdma
2025-12-07 21:06:36 +03:00
Vitaliy Filippov
2ebe3a468c
Mark all symbols hidden by default, export only required ones
2025-08-24 16:55:58 +03:00
Vitaliy Filippov
6022a61329
Decouple break_pg_locks from outbound OSD disconnections
2025-06-05 02:48:54 +03:00
Vitaliy Filippov
67071158bd
Cancel outbound operations only in the osd_client_t destructor
...
This is required to prevent disconnected peers from sometimes receiving messages
suited for other peers - stop_client was freeing the operations even though they
were still references in the io_uring requests in progress. This was leading to
OSDs sometimes receiving garbage and "broken sequencing" errors in logs as the
memory was usually already reallocated for other operations
2025-06-05 02:09:41 +03:00
Vitaliy Filippov
cd028612c8
Use a separate osd_client_t::in_osd_num for inbound OSD connections
2025-06-05 02:09:41 +03:00
Vitaliy Filippov
b2416afb28
Lock PGs on secondary OSDs to allow local reads and guarantee splitbrain prevention
2025-05-10 15:18:00 +03:00
Vitaliy Filippov
2ab0ae3bc9
Check operation sequencing and stop clients when it breaks
2025-05-02 17:01:50 +03:00
Vitaliy Filippov
9556eeae45
Implement io_uring zero-copy send support
2025-05-01 18:47:10 +03:00
Vitaliy Filippov
df2847df2d
Wait for RDMA-CM EVENT_ESTABLISHED after rdma_accept(), handle rdma_accept() before acking the event
2025-04-15 15:19:36 +03:00
Vitaliy Filippov
80e5f8ba76
Add missing WITH_RDMACM defines
2025-04-12 19:06:27 +03:00
Vitaliy Filippov
3e5f0be52c
Use separate port numbers for RDMA-CM
2025-04-01 16:16:03 +03:00
Vitaliy Filippov
8508e78288
Add an alternative RDMA implementation via RDMA-CM
...
Required for non-RoCE cards: iWARP and, possibly, Infiniband
2025-03-31 21:01:25 +03:00
Vitaliy Filippov
f32dea02bf
Support multiple RDMA networks
2025-03-31 21:01:25 +03:00
Vitaliy Filippov
a103065d12
Support multiple OSD networks and separate OSD cluster network
2025-03-31 21:01:15 +03:00
Vitaliy Filippov
63b85b6bfb
Fix clang warnings/errors
2024-12-19 15:30:31 +03:00
Vitaliy Filippov
7de38250ad
Auto-select RDMA device based on osd_network
2024-11-16 18:38:57 +03:00
Vitaliy Filippov
c312557ace
Do not execute remaining operations if the client is stopped during read
2024-11-10 16:44:13 +03:00
Vitaliy Filippov
abbba6ade4
Support handling TCP I/O in simple separate io_uring-based I/O threads
...
Required mainly for clients, allows to scale parallel client I/O with TCP
from 100-150k iops to ~400k iops and from 2-3 GB/s to at least 7-8 GB/s
with 4 I/O threads, at the same time increasing Q=1 latency by 2x thread
switching delay, which is ~10 us when CPU powersaving is disabled and may
be as high as 200 us when it's enabled.
2024-07-04 13:29:20 +03:00
Vitaliy Filippov
c79b38bd26
Move all sources to subdirs
2024-05-15 11:06:01 +03:00