Commit Graph

379 Commits (62343c8022ed948e7c70d77bd39f8291b44b878f)

Author SHA1 Message Date
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
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 e052959d7b Remove "packets" 2019-12-13 20:16:08 +03:00