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
530975aed7
Make it also build with GCC 8 and on Debian Buster
2020-11-09 00:07:07 +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
776fe954a5
Fix crashes on multiple OSD reconnects
...
Identify clients by pointers instead of peer_fd as peer may be dropped
and reconnected between callbacks
Yeah maybe I need some Rust, but ... maybe in the future :)
2020-10-17 10:53:04 +00:00
Vitaliy Filippov
9f2a948712
Make pg_stripe_size a per-pool config
2020-10-01 18:51:49 +03: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
168cc2c803
Add pool support to OSD, part 1
...
This just fixes all the code so it builds and works like before,
but doesn't yet bring the support for replicated pools.
2020-09-04 17:04:17 +03:00
Vitaliy Filippov
293cb5bd1d
Parse pool configuration in etcd_state_client
2020-09-02 21:54:32 +03:00
Vitaliy Filippov
2e8c69fc5b
Rename OSD_OP_SECONDARY_* to OSD_OP_SEC_*
2020-08-31 23:57:50 +03:00
Vitaliy Filippov
badf68c039
Support iovecs for read operations
2020-06-19 19:47:05 +03:00
Vitaliy Filippov
64afec03ec
In theory, implement syncs and replay for the non-immediate commit mode
2020-06-15 00:04:16 +03:00
Vitaliy Filippov
c573bc6bb3
(Probably almost) implement cluster client
2020-06-07 00:09:36 +03:00
Vitaliy Filippov
45b1c2fbf1
Fix canceling of write operations on PG re-peer (which led to use-after-free, too...)
2020-06-01 16:18:14 +03:00
Vitaliy Filippov
0aca6e9ca8
Extract peer connect and read-write loop into a separate file (to be shared with the client library)
2020-05-26 22:11:30 +03:00
Vitaliy Filippov
256a7f2667
Free op->bs_op manually
2020-05-25 15:31:22 +03:00
Vitaliy Filippov
9f842ec9a5
Remove connect callback because it is always the same
2020-05-22 12:45:12 +03:00
Vitaliy Filippov
f71d0c117b
Measure & report op bandwidth, include local blockstore ops in stats
2020-05-11 02:58:13 +03:00
Vitaliy Filippov
e8149e5848
Implement OSD_OP_DELETE
2020-05-05 00:39:51 +03:00
Vitaliy Filippov
6355b968f4
Track osd_set history and all_peers separately
2020-05-04 15:28:07 +03:00
Vitaliy Filippov
1bc08174f9
Sync before listing objects so flushes do not fail thereafter
2020-05-01 12:56:49 +03:00
Vitaliy Filippov
cd87333091
Fix PG state comparison leading to unclean PGs not flushing
...
(a & b == b) -> ((a & b) == b) !
2020-05-01 12:56:46 +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
2a640ba2e8
Remove range port selection (leads to races)
2020-04-21 00:10:59 +03:00
Vitaliy Filippov
6a21ea207e
Check peer config (at least, number) after connecting
2020-04-21 00:08:54 +03:00
Vitaliy Filippov
642802b595
Auto-select port numbers
2020-04-20 17:45:27 +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
663153713b
Reconnect to peers after connecting drops
2020-04-19 01:01:26 +03:00
Vitaliy Filippov
f95299b769
Take PG history into account when starting PGs
2020-04-19 00:20:18 +03:00
Vitaliy Filippov
9126ffb0f9
Fix PG loading - now it works, at least once
2020-04-17 02:33:44 +03:00
Vitaliy Filippov
2a8e40835e
Fix reporting to Consul, report even if we are purely secondary
2020-04-17 01:59:06 +03:00
Vitaliy Filippov
309486d746
Implement loading PGs from Consul (in theory)
2020-04-16 23:22:32 +03:00
Vitaliy Filippov
37b27c3025
Implement basic OSD status reporting to Consul
2020-04-14 14:52:06 +03:00
Vitaliy Filippov
d11e8dcb5e
Do not flush or recover in readonly mode
2020-04-11 12:06:18 +03:00
Vitaliy Filippov
298b013eae
Add simple http request function
2020-04-11 12:05:58 +03:00
Vitaliy Filippov
6212195440
Implement parallel recovery
2020-04-04 19:23:12 +03:00
Vitaliy Filippov
dfb6e15eaa
Implement graceful stopping of PGs
2020-04-03 13:03:42 +03:00
Vitaliy Filippov
afe2e76c87
Implement regular automatic syncs, split osd_t constructor into some methods
2020-04-02 22:16:46 +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
92c800bb64
Forget unstable writes when re-peering, rename parity_block_size -> pg_stripe_size, pg_parity_size -> pg_block_size
2020-03-31 02:09:25 +03:00
Vitaliy Filippov
8a8b619875
Handle secondary OSD connection errors [in theory]
2020-03-30 19:51:34 +03:00
Vitaliy Filippov
c0a22d825d
Fix degraded object recovery (it seems to work now)
2020-03-25 02:17:41 +03:00
Vitaliy Filippov
250f22c0b6
Implement basic degraded object recovery (integrated into primary_write)
2020-03-25 01:17:50 +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
8315407558
Incoming data pre-buffering
2020-03-04 17:34:45 +03:00
Vitaliy Filippov
9e18293497
Allow to specify multiple peers
2020-03-01 00:46:07 +03:00