Commit Graph
29 Commits
Author SHA1 Message Date
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