Vitaliy Filippov
d4fd9d982a
Implement read-modify-write calculation and extract it into a separate file
3 years ago
Vitaliy Filippov
ffe073473a
Remove hardcode of the EC(2+1) scheme, now it supports EC(k+1), fix some bugs
3 years ago
Vitaliy Filippov
b7ccd63104
Return version number from reads
3 years ago
Vitaliy Filippov
ec50957c41
WIP primary OSD read
3 years ago
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)
3 years ago
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
3 years ago
Vitaliy Filippov
98efdb78bd
Extract object state calculation to a separate file and slightly test it
3 years ago
Vitaliy Filippov
8c05ee252c
Test object list sorting, begin peering code
3 years ago
Vitaliy Filippov
d0ab2a20b2
Make fsync flags separate for data, metadata and journal
3 years ago
Vitaliy Filippov
43f6cfeb73
Extract alignments to options
3 years ago
Vitaliy Filippov
a3d3949dce
Do not overwrite same journal sector multiple times
...
It doesn't reduce actual WA, but it reduces tail latency (Q=32, 10% / 50% / 90% / 99% / 99.95%):
- write: 766us/979us/1090us/1303us/1729us vs 1074us/1450us/2212us/3261us/4113us
- sync: 701us/881us/1188us/1762us/2540us vs 269us/955us/1663us/2638us/4146us
3 years ago
Vitaliy Filippov
cf819eb442
Implement sparse block bitmap to avoid zero-fill
3 years ago
Vitaliy Filippov
4b05bde3a2
Block writes earlier than sync/stabilize would be blocked, too
3 years ago
Vitaliy Filippov
b3f2102f33
Add queue stall tracking
3 years ago
Vitaliy Filippov
ba23824561
Allow to disable zero fill
3 years ago
Vitaliy Filippov
bf3eecc159
Extract 512 to constants
3 years ago
Vitaliy Filippov
e88ad3f2ff
Implement object list operation in blockstore
3 years ago
Vitaliy Filippov
19abe6227e
Fix submission ring overflow & ring_data_t reuse conflicts
3 years ago
Vitaliy Filippov
71635f2327
Use std::hash<object_id> instead of oid_hash
3 years ago
Vitaliy Filippov
a7e74670a5
Split blockstore implementation and interface header
3 years ago
Vitaliy Filippov
749ab6e2c6
Rename blockstore_operation to blockstore_op_t
3 years ago
Vitaliy Filippov
a180b4961f
Hide block_* fields
3 years ago
Vitaliy Filippov
aaea3e1f99
Fix read_fulfill, use vector
3 years ago
Vitaliy Filippov
aa3b252327
Fsync data before writing metadata
3 years ago
Vitaliy Filippov
76caecf7c7
Inmemory metadata mode
3 years ago
Vitaliy Filippov
a7a0946ba8
WIP OP_DELETE
3 years ago
Vitaliy Filippov
00eeedae90
Add "fsync disabled" mode
3 years ago
Vitaliy Filippov
76655929c4
Add readonly flag
3 years ago
Vitaliy Filippov
9260cd263a
Verify data crc32 when reading journal
3 years ago
Vitaliy Filippov
b6fff5a77e
Fix metadata area size calculation, print free space, wait for free space
...
FIXME: Now it crashes with -ENOSPC on linear overwrite
3 years ago
Vitaliy Filippov
cbf5173d1b
Allow to specify device paths in fio options
3 years ago
Vitaliy Filippov
9ba243b3ee
Add debug prints
3 years ago
Vitaliy Filippov
e2b91968c5
Fix sync confirmations and some pipeline-stall bugs
3 years ago
Vitaliy Filippov
ff7469ee91
Make allocator a class
3 years ago
Vitaliy Filippov
a7dc759f74
Compile fio engine
3 years ago
Vitaliy Filippov
be3015169f
Safe stop procedure
3 years ago
Vitaliy Filippov
50cf3667fa
Track unstable writes
3 years ago
Vitaliy Filippov
2b12428cb1
Debug OP_STABLE so the basic case passes without problem
3 years ago
Vitaliy Filippov
5b8df6768b
Try to submit a test write operation
3 years ago
Vitaliy Filippov
c7d9dc027b
Remove extra states as they seem useless
3 years ago
Vitaliy Filippov
c38c8ab029
Prevent two parallel flushes of the same object
3 years ago
Vitaliy Filippov
71194f014a
Update dirty_db and clean_db after flushing an entry
3 years ago
Vitaliy Filippov
0627dd0f5e
Used journal sector tracking
3 years ago
Vitaliy Filippov
bc549553e4
Rename dirty_entry.size to len, remove some unneeded methods and fields, read metadata correctly
3 years ago
Vitaliy Filippov
1c6b9778a4
Handle all io_uring events using lambdas
3 years ago
Vitaliy Filippov
214da03735
Move flusher into a separate file
3 years ago
Vitaliy Filippov
75398414d1
Add grouping flusher class
3 years ago
Vitaliy Filippov
db66b3916e
Begin metadata read-modify-write
3 years ago
Vitaliy Filippov
bb55a7fbf4
Zero-fill new objects and write them to the main storage
3 years ago
Vitaliy Filippov
4afa95b0e3
FSM is a dreadful unreadable thing, reimplement using gotos
3 years ago