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