Vitaliy Filippov
f3a7ccff50
Use 4K blockstore block by default, use MEM_ALIGNMENT in osd code
2020-04-14 19:19:56 +03:00
Vitaliy Filippov
37b27c3025
Implement basic OSD status reporting to Consul
2020-04-14 14:52:06 +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
6982fe1255
Do not block reads by previous unfinished writes
2020-03-13 21:28:49 +03:00
Vitaliy Filippov
a406c62a71
Implement basic primary-sync-stabilize
2020-02-25 20:10:21 +03:00
Vitaliy Filippov
c71b67f2f7
Move SYNC_STAB_ALL into blockstore implementation
2020-02-23 23:43:57 +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
ec50957c41
WIP primary OSD read
2020-01-30 22:06:46 +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
43f6cfeb73
Extract alignments to options
2020-01-16 00:54:25 +03:00
Vitaliy Filippov
4b05bde3a2
Block writes earlier than sync/stabilize would be blocked, too
2020-01-10 20:05:17 +03:00
Vitaliy Filippov
b3f2102f33
Add queue stall tracking
2020-01-10 01:23:46 +03:00
Vitaliy Filippov
bf3eecc159
Extract 512 to constants
2020-01-06 14:11:47 +03:00
Vitaliy Filippov
e88ad3f2ff
Implement object list operation in blockstore
2019-12-19 20:50:20 +03:00
Vitaliy Filippov
d3d21e6e0f
Rename OP_ to BS_OP_
2019-12-19 13:56:26 +03:00
Vitaliy Filippov
e60e6978ac
Extract object_id and obj_ver_id to separate header
2019-12-16 12:39:15 +03:00
Vitaliy Filippov
71635f2327
Use std::hash<object_id> instead of oid_hash
2019-12-15 14:57:18 +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
a180b4961f
Hide block_* fields
2019-12-10 00:13:59 +03:00
Vitaliy Filippov
aaea3e1f99
Fix read_fulfill, use vector
2019-12-03 12:09:30 +03:00
Vitaliy Filippov
aa3b252327
Fsync data before writing metadata
2019-12-03 00:20:13 +03:00
Vitaliy Filippov
76caecf7c7
Inmemory metadata mode
2019-12-02 15:42:42 +03:00
Vitaliy Filippov
a7a0946ba8
WIP OP_DELETE
2019-12-01 17:25:59 +03:00
Vitaliy Filippov
00eeedae90
Add "fsync disabled" mode
2019-12-01 16:41:07 +03:00
Vitaliy Filippov
76655929c4
Add readonly flag
2019-12-01 16:41:07 +03:00
Vitaliy Filippov
9260cd263a
Verify data crc32 when reading journal
2019-11-30 23:32:10 +03:00
Vitaliy Filippov
b6fff5a77e
Fix metadata area size calculation, print free space, wait for free space
...
FIXME: Now it crashes with -ENOSPC on linear overwrite
2019-11-28 20:23:27 +03:00
Vitaliy Filippov
cbf5173d1b
Allow to specify device paths in fio options
2019-11-28 00:50:52 +03:00
Vitaliy Filippov
9ba243b3ee
Add debug prints
2019-11-27 18:07:51 +03:00
Vitaliy Filippov
e2b91968c5
Fix sync confirmations and some pipeline-stall bugs
2019-11-27 18:07:38 +03:00
Vitaliy Filippov
ff7469ee91
Make allocator a class
2019-11-27 00:50:57 +03:00
Vitaliy Filippov
a7dc759f74
Compile fio engine
2019-11-26 01:50:26 +03:00
Vitaliy Filippov
be3015169f
Safe stop procedure
2019-11-25 01:29:07 +03:00
Vitaliy Filippov
50cf3667fa
Track unstable writes
2019-11-25 01:16:34 +03:00
Vitaliy Filippov
2b12428cb1
Debug OP_STABLE so the basic case passes without problem
2019-11-21 02:09:18 +03:00
Vitaliy Filippov
5b8df6768b
Try to submit a test write operation
2019-11-18 02:36:53 +03:00
Vitaliy Filippov
c7d9dc027b
Remove extra states as they seem useless
2019-11-15 14:02:37 +03:00
Vitaliy Filippov
c38c8ab029
Prevent two parallel flushes of the same object
2019-11-15 13:58:35 +03:00
Vitaliy Filippov
71194f014a
Update dirty_db and clean_db after flushing an entry
2019-11-15 02:26:18 +03:00
Vitaliy Filippov
0627dd0f5e
Used journal sector tracking
2019-11-15 02:04:19 +03:00
Vitaliy Filippov
bc549553e4
Rename dirty_entry.size to len, remove some unneeded methods and fields, read metadata correctly
2019-11-14 01:13:07 +03:00
Vitaliy Filippov
1c6b9778a4
Handle all io_uring events using lambdas
2019-11-13 22:46:42 +03:00
Vitaliy Filippov
214da03735
Move flusher into a separate file
2019-11-13 17:46:05 +03:00
Vitaliy Filippov
75398414d1
Add grouping flusher class
2019-11-13 17:41:57 +03:00
Vitaliy Filippov
db66b3916e
Begin metadata read-modify-write
2019-11-13 16:07:29 +03:00
Vitaliy Filippov
bb55a7fbf4
Zero-fill new objects and write them to the main storage
2019-11-12 20:49:57 +03:00
Vitaliy Filippov
4afa95b0e3
FSM is a dreadful unreadable thing, reimplement using gotos
2019-11-12 18:16:41 +03:00