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
Vitaliy Filippov
a8bc44064d
Read object lists from peers and own blockstore
2020-01-22 02:36:14 +03:00
Vitaliy Filippov
8c05ee252c
Test object list sorting, begin peering code
2020-01-21 22:33:02 +03:00
Vitaliy Filippov
d0ab2a20b2
Make fsync flags separate for data, metadata and journal
2020-01-17 13:41:37 +03:00
Vitaliy Filippov
d5386aa958
Check presence in sync_to_repeat
2020-01-16 02:16:35 +03:00
Vitaliy Filippov
0d90966739
Add last_sync checking to fio_engine, too
2020-01-16 01:03:18 +03:00
Vitaliy Filippov
43f6cfeb73
Extract alignments to options
2020-01-16 00:54:25 +03:00
Vitaliy Filippov
57ecbb2cda
Parse OSD commandline options
2020-01-15 23:20:11 +03:00
Vitaliy Filippov
8ea1ccc192
Add an OSD stub to compare sync socket I/O with io_uring + skip multiple fsyncs that fio issues
2020-01-15 22:04:58 +03:00
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
2020-01-15 02:53:01 +03:00
Vitaliy Filippov
111516381f
Add FIXME
2020-01-14 18:41:56 +03:00
Vitaliy Filippov
36d8c8724f
Fix sparse reads using bitmap, fix journal replay (we could sometimes lose its end)
2020-01-12 23:38:33 +03:00
Vitaliy Filippov
5739b02de8
Add sparse read to ./blockstore_test, link blockstore to libblockstore.so
2020-01-12 19:59:19 +03:00
Vitaliy Filippov
cf819eb442
Implement sparse block bitmap to avoid zero-fill
2020-01-12 02:55:32 +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
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
7dba43b3c6
Allow to exclude blockstore from OSD op processing for tests
2020-01-08 12:06:05 +03:00
Vitaliy Filippov
ba23824561
Allow to disable zero fill
2020-01-06 21:02:15 +03:00
Vitaliy Filippov
bf3eecc159
Extract 512 to constants
2020-01-06 14:11:47 +03:00
Vitaliy Filippov
f3e3f8f005
Fix colocated offsets
2020-01-06 02:57:08 +03:00
Vitaliy Filippov
2709574c93
Add offset options
2020-01-06 02:12:56 +03:00
Vitaliy Filippov
d35ce8ab3d
Fix compile errors for newer gcc
2020-01-06 02:09:59 +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
4677ace4cc
Allow zero-length overwrites
2019-12-21 19:04:36 +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
e88ad3f2ff
Implement object list operation in blockstore
2019-12-19 20:50:20 +03:00
Vitaliy Filippov
e8f7905e08
Allow to set write/delete version explicitly
2019-12-19 19:17:54 +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
c7ae3c001c
Add FIO engine for testing Blockstore through the Secondary OSD interface
2019-12-16 14:03:36 +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
3061b8cf51
Add sync&stabilize test operation
2019-12-15 15:30:51 +03:00
Vitaliy Filippov
9af000e9de
Init storage note
2019-12-15 15:11:26 +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