Commit Graph

35 Commits (5596ad89978e3be27c536ac975a598626b3f3310)

Author SHA1 Message Date
Vitaliy Filippov 660c2412fb Improve debugging output for incomplete/degraded 3 years ago
Vitaliy Filippov 398c86f943 Improve PG-related log messages 3 years ago
Vitaliy Filippov 5335c8de8e Do not use unordered_map for list_ops/list_results 3 years ago
Vitaliy Filippov 0471b09b9c Add license notices to all source code files 3 years ago
Vitaliy Filippov 44973e7f27 Fix replicated pool bugs 3 years ago
Vitaliy Filippov 4f9b5286a0 Add replicated pool support to OSD logic
...in theory :-D now it needs some testing
3 years ago
Vitaliy Filippov a7929931eb Implement PG epochs to prevent the "version split"
The "version split" is when:
- A block is written to 1 OSD out of 3, all of them die
- OSDs 2 and 3 come up, the same block is written to both of them
- The remaining OSD comes up. Now all 3 OSDs have the same version of the same object,
  but with different data.
3 years ago
Vitaliy Filippov a56f8cd14e Simplify handle_primary_subop() arguments 3 years ago
Vitaliy Filippov 6488d0044a Ignore EPOLL_CTL_DEL ENOENT, fix detection of the rollback version 3 years ago
Vitaliy Filippov 393fe75900 Fix creepy (osd_op_t*)(long) casts 3 years ago
Vitaliy Filippov f6a01a4819 Extract "state-watching" etcd client into a separate file 3 years ago
Vitaliy Filippov 6355b968f4 Track osd_set history and all_peers separately 3 years ago
Vitaliy Filippov bd0fe6e4cc Fix PGs not stopping during sync, fix state reporting autovivification of erased PGs 3 years ago
Vitaliy Filippov 7b57eeeeb3 Implement PG state locking and PG moving in response to etcd events 3 years ago
Vitaliy Filippov 8c03e3ebab Lock Blockstore devices exclusively by default 3 years ago
Vitaliy Filippov 2a640ba2e8 Remove range port selection (leads to races) 3 years ago
Vitaliy Filippov ff38b464a5 Add consul & connect timeouts, report state before loading PGs, move init_primary to osd_cluster 3 years ago
Vitaliy Filippov 37b27c3025 Implement basic OSD status reporting to Consul 3 years ago
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
3 years ago
Vitaliy Filippov 250f22c0b6 Implement basic degraded object recovery (integrated into primary_write) 3 years ago
Vitaliy Filippov 036f4c5bf3 Fix unstable flushing, include extra OSDs with old object versions in osd_set 3 years ago
Vitaliy Filippov fd8e1a8418 Slightly reorganize object state check code 3 years ago
Vitaliy Filippov a08e0bfacd Treat misplaced and degraded as separate state parts 3 years ago
Vitaliy Filippov 1ec9794376 Extract flushing into a separate file 3 years ago
Vitaliy Filippov d8164e9d84 Print PG states on every change 3 years ago
Vitaliy Filippov 21d0b06959 Implement flushing (stabilize/rollback) of unstable entries on start of the PG 3 years ago
Vitaliy Filippov e19d9fde5f Fix peering_pg, begin tests 3 years ago
Vitaliy Filippov b27ad550cf Use btree_map instead of sparsepp 3 years ago
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
3 years ago
Vitaliy Filippov 74673c761f Make basic primary-write work 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 a66b34e04d Implement event-driven PG peering 3 years ago
Vitaliy Filippov 9fb2d3f840 Fill out the rest of the degraded read logic; now we need to make it a "coroutine" 3 years ago
Vitaliy Filippov 1447c44b68 Calculate required stabilize/rollback actions, add more map perf tests 3 years ago
Vitaliy Filippov 98efdb78bd Extract object state calculation to a separate file and slightly test it 3 years ago