Vitaliy Filippov
b27ad550cf
Use btree_map instead of sparsepp
2020-03-04 17:12:27 +03:00
Vitaliy Filippov
8e63995306
Allow to specify data area size
2020-03-04 02:32:49 +03:00
Vitaliy Filippov
c9f3654905
Add ringloop.h to dependencies
2020-03-03 17:23:33 +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
7eac7b6d55
Use writev in libfio_sec_osd
2020-03-02 21:17:21 +03:00
Vitaliy Filippov
79839ec31d
Start sending immediately instead of waiting for another loop
2020-03-02 00:20:28 +03:00
Vitaliy Filippov
9d96e4bf0b
Add simple "stub bench" using sync I/O
2020-03-01 23:00:46 +03:00
Vitaliy Filippov
9e18293497
Allow to specify multiple peers
2020-03-01 00:46:07 +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
1733de2db6
Test & fix single-PG primary OSD
...
- Add support for benchmarking single primary OSD in fio_sec_osd
- Do not wait for the next event in flushers (return resume_0 back)
- Fix flushing of zero-length writes
- Print PG object count when peering
- Print journal free space when starting and when congested
2020-02-26 19:05:29 +03:00
Vitaliy Filippov
df66a76ce2
...and make it work :)
2020-02-25 22:52:03 +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
fe3c47812c
Rename osd_exec_secondary to osd_secondary
2020-02-23 23:43:57 +03:00
Vitaliy Filippov
88e56a564f
Rename osd_read_stripe_t to osd_rmw_stripe_t
2020-02-23 23:43:57 +03:00
Vitaliy Filippov
c71b67f2f7
Move SYNC_STAB_ALL into blockstore implementation
2020-02-23 23:43:57 +03:00
Vitaliy Filippov
4a52a15564
Rename osd_op_t.op to req
2020-02-23 23:21:17 +03:00
Vitaliy Filippov
72a89be912
Move uint8_t[] buffers into any_op_t/any_reply_t
2020-02-23 23:21:17 +03:00
Vitaliy Filippov
d4fd9d982a
Implement read-modify-write calculation and extract it into a separate file
2020-02-23 02:11:43 +03:00
Vitaliy Filippov
0e177c7a2a
Fix possible leak in blockstore_read
2020-02-21 19:38:43 +03:00
Vitaliy Filippov
ffe073473a
Remove hardcode of the EC(2+1) scheme, now it supports EC(k+1), fix some bugs
2020-02-13 19:13:17 +03:00
Vitaliy Filippov
b7ccd63104
Return version number from reads
2020-02-12 12:30:50 +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
327f310868
Remove copy-pasted read/write _blocking
2020-02-09 19:23:03 +03:00
Vitaliy Filippov
1513d0490a
Test and fix degraded-read
2020-02-09 19:17:35 +03:00
Vitaliy Filippov
97d3fc593c
Test and fix primary-read
2020-02-09 19:17:32 +03:00
Vitaliy Filippov
235d15422c
Mostly finish primary-OSD-read
2020-02-03 14:18:21 +03:00
Vitaliy Filippov
9fb2d3f840
Fill out the rest of the degraded read logic; now we need to make it a "coroutine"
2020-02-02 00:05:56 +03:00
Vitaliy Filippov
206c4eb655
WIP submit subops
2020-01-31 14:07:16 +03:00
Vitaliy Filippov
74d0196ba5
Stripe read reconstruction
2020-01-31 13:46:23 +03:00
Vitaliy Filippov
ec50957c41
WIP primary OSD read
2020-01-30 22:06:46 +03:00
Vitaliy Filippov
f4707709c6
Move ack_sync() near sync_state = SYNC_DONE so it does not hang with disable_journal_fsync
2020-01-29 16:55:06 +03:00
Vitaliy Filippov
1e286eed08
Wait for writes to complete before issuing an fsync in blockstore_sync
...
Also fix a dormant bug (OP_SYNC could clear unsynced_*_writes and not be added into syncs_in_progress)
2020-01-29 16:42:40 +03:00
Vitaliy Filippov
dcc9e75c63
Wait for write completion before fsync in blockstore_init
2020-01-29 16:40:21 +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
1447c44b68
Calculate required stabilize/rollback actions, add more map perf tests
2020-01-27 01:34:30 +03:00
Vitaliy Filippov
079f129390
Add rollback op to the OSD code
2020-01-25 02:04:58 +03:00
Vitaliy Filippov
2b09710d6f
Implement blockstore rollback operation
...
Rollback operation is required for the primary OSD to kill unstable
object versions in OSD peers so they don't occupy journal space
2020-01-24 20:18:14 +03:00
Vitaliy Filippov
98efdb78bd
Extract object state calculation to a separate file and slightly test it
2020-01-24 12:56:51 +03:00
Vitaliy Filippov
d2a3f0c6dd
Begin object state calculation
2020-01-23 22:05:27 +03:00