Commit Graph

36 Commits (4a2dcf7b6b9032400ef8f293b6c3ed59b3097df1)

Author SHA1 Message Date
Vitaliy Filippov 4a2dcf7b6b Update the license to VNPL 1.1
VNPL 1.1 is slightly reworded to make it clear that proprietary software
interacting with Vitastor and providing some kind of service to end users isn't
a "Proxy Program" if it's not specially designed to be used with Vitastor.

For example, Windows OS running in a virtual machine stored in a Vitastor
cluster clearly isn't.
2021-02-25 23:55:33 +03:00
Vitaliy Filippov 660c2412fb Improve debugging output for incomplete/degraded 2020-10-24 01:28:47 +03:00
Vitaliy Filippov 398c86f943 Improve PG-related log messages 2020-10-18 12:17:22 +00:00
Vitaliy Filippov 5335c8de8e Do not use unordered_map for list_ops/list_results 2020-10-17 23:30:16 +00:00
Vitaliy Filippov 0471b09b9c Add license notices to all source code files 2020-09-17 23:07:06 +03:00
Vitaliy Filippov 44973e7f27 Fix replicated pool bugs 2020-09-05 21:45:04 +03:00
Vitaliy Filippov 4f9b5286a0 Add replicated pool support to OSD logic
...in theory :-D now it needs some testing
2020-09-05 01:42:11 +03:00
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.
2020-07-04 00:55:27 +03:00
Vitaliy Filippov a56f8cd14e Simplify handle_primary_subop() arguments 2020-06-02 18:44:23 +03:00
Vitaliy Filippov 6488d0044a Ignore EPOLL_CTL_DEL ENOENT, fix detection of the rollback version 2020-05-23 15:43:37 +03:00
Vitaliy Filippov 393fe75900 Fix creepy (osd_op_t*)(long) casts 2020-05-23 15:43:37 +03:00
Vitaliy Filippov f6a01a4819 Extract "state-watching" etcd client into a separate file 2020-05-22 12:38:40 +03:00
Vitaliy Filippov 6355b968f4 Track osd_set history and all_peers separately 2020-05-04 15:28:07 +03:00
Vitaliy Filippov bd0fe6e4cc Fix PGs not stopping during sync, fix state reporting autovivification of erased PGs 2020-05-01 01:33:14 +03:00
Vitaliy Filippov 7b57eeeeb3 Implement PG state locking and PG moving in response to etcd events 2020-04-29 22:23:38 +03:00
Vitaliy Filippov 8c03e3ebab Lock Blockstore devices exclusively by default 2020-04-21 01:59:11 +03:00
Vitaliy Filippov 2a640ba2e8 Remove range port selection (leads to races) 2020-04-21 00:10:59 +03:00
Vitaliy Filippov ff38b464a5 Add consul & connect timeouts, report state before loading PGs, move init_primary to osd_cluster 2020-04-20 15:43:07 +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 250f22c0b6 Implement basic degraded object recovery (integrated into primary_write) 2020-03-25 01:17:50 +03:00
Vitaliy Filippov 036f4c5bf3 Fix unstable flushing, include extra OSDs with old object versions in osd_set 2020-03-23 20:28:47 +03:00
Vitaliy Filippov fd8e1a8418 Slightly reorganize object state check code 2020-03-23 00:42:17 +03:00
Vitaliy Filippov a08e0bfacd Treat misplaced and degraded as separate state parts 2020-03-23 00:40:31 +03:00
Vitaliy Filippov 1ec9794376 Extract flushing into a separate file 2020-03-15 18:39:31 +03:00
Vitaliy Filippov d8164e9d84 Print PG states on every change 2020-03-14 22:19:45 +03:00
Vitaliy Filippov 21d0b06959 Implement flushing (stabilize/rollback) of unstable entries on start of the PG 2020-03-14 02:49:34 +03:00
Vitaliy Filippov e19d9fde5f Fix peering_pg, begin tests 2020-03-06 02:02:49 +03:00
Vitaliy Filippov b27ad550cf Use btree_map instead of sparsepp 2020-03-04 17:12:27 +03:00
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
2020-02-26 19:05:29 +03:00
Vitaliy Filippov 74673c761f Make basic primary-write work 2020-02-25 02:55:58 +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 a66b34e04d Implement event-driven PG peering 2020-02-11 13:41:34 +03:00
Vitaliy Filippov 9fb2d3f840 Fill out the rest of the degraded read logic; now we need to make it a "coroutine" 2020-02-02 00:05:56 +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 98efdb78bd Extract object state calculation to a separate file and slightly test it 2020-01-24 12:56:51 +03:00