Vitaliy Filippov
dfb6e15eaa
Implement graceful stopping of PGs
2020-04-03 13:03:42 +03:00
Vitaliy Filippov
afe2e76c87
Implement regular automatic syncs, split osd_t constructor into some methods
2020-04-02 22:16:46 +03:00
Vitaliy Filippov
0f43f6d3f6
Fix crashes, print some stats
...
Notably:
- fix the `delete op` inside lambda callback crash (it frees the lambda itself
which results in use-after-free with g++)
- fix stop_client() reenterability
- fix a bug in the blockstore layer which resulted in always returning version=0
for zero-length reads
- change error codes for blockstore_stabilize
2020-03-31 17:55:31 +03:00
Vitaliy Filippov
8a8b619875
Handle secondary OSD connection errors [in theory]
2020-03-30 19:51:34 +03:00
Vitaliy Filippov
dbd8418798
Reply using a single finish_op() method, allow to call OSD ops from inside the OSD
2020-03-24 00:18:52 +03:00
Vitaliy Filippov
21d0b06959
Implement flushing (stabilize/rollback) of unstable entries on start of the PG
2020-03-14 02:49:34 +03:00
Vitaliy Filippov
31f9445030
Use immediate_commit to benefit the primary OSD
2020-03-10 02:20:16 +03:00
Vitaliy Filippov
9cb07d844b
Make [un]register_consumer operate on pointers, rename get_loop_again() to has_work()
2020-03-04 21:00:20 +03:00
Vitaliy Filippov
8315407558
Incoming data pre-buffering
2020-03-04 17:34:45 +03:00
Vitaliy Filippov
2a5ca4ff6f
Measure OP_STAB in both ways
2020-03-03 02:18:59 +03:00
Vitaliy Filippov
2575431176
Fix EPOLLET race on Linux 5.5+
2020-03-03 01:47:56 +03:00
Vitaliy Filippov
20125db181
Use clock_gettime()
2020-03-03 00:54:42 +03:00
Vitaliy Filippov
56765ab750
Send all iovecs at once
2020-02-29 02:27:19 +03:00
Vitaliy Filippov
fd05e13bc4
Use EPOLLET
...
Its latency is slightly better, too
2020-02-29 01:56:59 +03:00
Vitaliy Filippov
c41fd7ea18
Measure sending subops with data
2020-02-29 01:46:03 +03:00
Vitaliy Filippov
c6334afc94
Measure OSD op/subop latency
...
Something is wrong: loopback RTT between OSDs is sometimes as high as 70us (should be 20us or less probably)
2020-02-28 12:26:49 +03:00
Vitaliy Filippov
2be4824a7a
Fix a small memory leak and BS_OP_SYNC mishandling, now fio does not hang during primary-osd test
2020-02-28 01:46:39 +03:00
Vitaliy Filippov
a406c62a71
Implement basic primary-sync-stabilize
2020-02-25 20:10:21 +03:00
Vitaliy Filippov
74673c761f
Make basic primary-write work
2020-02-25 02:55:58 +03:00
Vitaliy Filippov
09588a349f
Transform primary_r/w into "coroutines"
2020-02-24 02:40:52 +03:00
Vitaliy Filippov
4c0178f180
Fix some memory freeing
2020-02-24 01:04:23 +03:00
Vitaliy Filippov
5dd04abbac
Make bs_op pointer
2020-02-23 23:46:00 +03:00
Vitaliy Filippov
4a52a15564
Rename osd_op_t.op to req
2020-02-23 23:21:17 +03:00
Vitaliy Filippov
1100ad44bd
Cancel outbound operations when disconnecting a peer
2020-02-11 21:17:10 +03:00
Vitaliy Filippov
a66b34e04d
Implement event-driven PG peering
2020-02-11 13:41:34 +03:00
Vitaliy Filippov
97d3fc593c
Test and fix primary-read
2020-02-09 19:17:32 +03:00
Vitaliy Filippov
ec50957c41
WIP primary OSD read
2020-01-30 22:06:46 +03:00
Vitaliy Filippov
47663bd1dc
Add (empty) osd_primary.cpp, rename osd_read to osd_receive, add FIXMEs for fsync
2020-01-28 22:40:50 +03:00
Vitaliy Filippov
8c05ee252c
Test object list sorting, begin peering code
2020-01-21 22:33:02 +03:00
Vitaliy Filippov
522a9db0e2
Enable TCP_NODELAY
2020-01-09 20:32:58 +03:00
Vitaliy Filippov
a1550bdfac
EPOLL_CTL_DEL does not require &ev
2020-01-09 18:39:58 +03:00
Vitaliy Filippov
b6f0c1cde5
Async connection to peers
2020-01-04 01:23:25 +03:00
Vitaliy Filippov
b87092fcfe
Split osd.cpp into multiple files
2019-12-28 01:25:55 +03:00
Vitaliy Filippov
3134b7729a
Add PG structures, begin peer connection handling code
2019-12-27 12:05:44 +03:00
Vitaliy Filippov
8a386270bd
Use json11, add show_config operation, begin primary operations
2019-12-23 21:56:03 +03:00
Vitaliy Filippov
4de5290619
Implement safe(?) stop
2019-12-19 22:16:04 +03:00
Vitaliy Filippov
5ebc110d35
Implement LIST operation in the OSD
2019-12-19 22:04:18 +03:00
Vitaliy Filippov
d3d21e6e0f
Rename OP_ to BS_OP_
2019-12-19 13:56:26 +03:00
Vitaliy Filippov
19abe6227e
Fix submission ring overflow & ring_data_t reuse conflicts
2019-12-17 11:26:17 +03:00
Vitaliy Filippov
4fb0579b1b
Change epoll polling
...
1) it is incorrect to call level-triggered epoll in a loop without reading everything
2) it fixes the FIXME
2019-12-17 01:56:46 +03:00
Vitaliy Filippov
3061b8cf51
Add sync&stabilize test operation
2019-12-15 15:30:51 +03:00
Vitaliy Filippov
a7e74670a5
Split blockstore implementation and interface header
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
749ab6e2c6
Rename blockstore_operation to blockstore_op_t
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
f2e9749c93
Fix disconnection detection
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
49f8011917
Add osd header and osd executable
2019-12-15 01:11:51 +03:00
Vitaliy Filippov
d3c6314d01
Finish reply code, make it compile
2019-12-14 20:51:59 +03:00
Vitaliy Filippov
02a0eb49c2
Begin reply code
2019-12-14 20:51:49 +03:00
Vitaliy Filippov
f6eb4326b3
Begin op enqueueing into the blockstore
2019-12-13 20:12:31 +03:00
Vitaliy Filippov
283d03ef18
Fix "address already in use" in test example, begin client read loop
2019-12-13 14:05:15 +03:00
Vitaliy Filippov
00ee6b7961
Accept connections
2019-12-12 11:32:20 +03:00