Vitaliy Filippov
84919a10a9
Extract msgr_iothread to separate .{cpp,h}
2026-05-18 01:17:56 +03:00
Vitaliy Filippov
f78d7d4efc
Do not capture client pointer in ping lambda
2026-05-11 16:30:01 +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
44c895dc30
Fix clients possibly not destroyed after being switched to RDMA
...
It could in theory lead to hung operations on RDMA client disconnections.
Workflow (probable):
* OSD switches an outbound connection to PEER_RDMA and removes the FD from epoll
* But a receive request in io_uring is still active
* Receive response is never handled, refs remains > 0
* The connection is dropped, but osd_client_t is not destroyed because refs > 0
* Outbound ops are not canceled, suboperations hang, primary operations hang too
2026-03-17 01:04:17 +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
65872f5d0e
Remove RDMA context FD handlers during msgr destroy
2025-11-08 14:11:03 +03:00
Vitaliy Filippov
0be86a306d
Remove old liburing version support as it's now included
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
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
5692630005
Move check_sequencing indication into config response features subkey
2025-05-05 02:07:50 +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
80e5f8ba76
Add missing WITH_RDMACM defines
2025-04-12 19:06:27 +03:00
Vitaliy Filippov
013f688ffe
Run check_peer_config on RDMA-CM connections too
2025-04-02 01:32:28 +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
ccc32b9e68
Use TCP on RDMA connection failure
2025-03-23 12:04:23 +03:00
Vitaliy Filippov
8b0389b4e8
Log RDMA ibv_modify_qp() errors
2025-03-22 15:58:13 +03:00
Vitaliy Filippov
7de38250ad
Auto-select RDMA device based on osd_network
2024-11-16 18:38:57 +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