Vitaliy Filippov
720985e4c7
Fix NULL rmw buffer after the latest changes and add a testcase for it
2020-10-24 18:29:19 +03:00
Vitaliy Filippov
4872f617a4
Clear connect timeout in stop_client() to stop races during disconnections
2020-10-24 10:37:16 +03:00
Vitaliy Filippov
e8ac08be14
Allow to overwrite incomplete objects or parts of objects to recover them
2020-10-24 02:14:41 +03:00
Vitaliy Filippov
660c2412fb
Improve debugging output for incomplete/degraded
2020-10-24 01:28:47 +03:00
Vitaliy Filippov
faa5e1436f
Attempt journal trim even without new flushes
...
This is the new guaranteed unblocking method which replaces old trims
in init and rollback, and also fixes a possible stall when just several
writes in the beginning of the journal are flushed without triggering
a subsequent trim.
2020-10-24 01:28:47 +03:00
Vitaliy Filippov
5fbe36198a
Fix journal trimming
...
1) Update journal's used_start in memory only after updating journal superblock.
Doing the opposite is incorrect because part of the journal will be lost if writers
overwrite its old beginning.
2) Sync journal device after updating the superblock.
3) Do not trim in rollback and init because trimming there would also require
updating the superblock. And the only reason to trim in both those places was
to unblock writers. And a guaranteed unblocking method will follow in the next
commit :)
2020-10-24 01:08:33 +03:00
Vitaliy Filippov
99c45bb5ed
Fix debugging output during journal loading
2020-10-24 01:08:33 +03:00
Vitaliy Filippov
701eb79422
Stabilize writes before deleting extra chunks to not stall peer journals
2020-10-23 22:45:05 +03:00
Vitaliy Filippov
220bda0667
Fix possible buffer over(under)flow when handling LIST
2020-10-23 02:17:44 +03:00
Vitaliy Filippov
1e8f0328e0
Cancel outbound operations after re-peering PGs
2020-10-22 22:54:38 +00:00
Vitaliy Filippov
f011e0c675
Do not block stabilize by list and list by write
2020-10-22 22:13:40 +00:00
Vitaliy Filippov
1a694c387e
Print slow ops in log
2020-10-20 23:41:23 +00:00
Vitaliy Filippov
738ad5af79
Fix infinite looping in continue_recovery_op() when pg_cancel_write_queue() is called
2020-10-20 22:23:15 +00:00
Vitaliy Filippov
9abf3c17c9
Correct fix for "Pool %u PG %u configuration is invalid" during startup
...
Establish watcher connection after loading PGs
2020-10-20 21:09:14 +00:00
Vitaliy Filippov
d2b901aa09
Fix default auto-created failure domains
2020-10-20 21:07:40 +00:00
Vitaliy Filippov
befff09370
Fix possible crash due to uninitialized ring_data_t in ringloop
2020-10-20 10:44:38 +03:00
Vitaliy Filippov
d1645551d4
Implement write batching
...
Also fix possible race condition which could in theory lead to "command out of sync"
and a buffer overflow that could happen on incorrect server response.
2020-10-20 03:29:17 +03:00
Vitaliy Filippov
7cb561f95a
Add etcd to the example service generator
2020-10-20 01:50:56 +03:00
Vitaliy Filippov
ae480196e2
Add a note about etcd bug, fix simple-offsets.js cmdline
2020-10-19 17:05:45 +03:00
Vitaliy Filippov
398c86f943
Improve PG-related log messages
2020-10-18 12:17:22 +00:00
Vitaliy Filippov
bec5f921a6
Fix buffer overflows in the no_same_sector_overwrites mode
2020-10-17 23:30:16 +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
c696a82083
Replace assert with if + error message (may happen on metadata corruption)
2020-10-17 23:30:16 +00:00
Vitaliy Filippov
900171586b
XOR 2+1 test results
2020-10-17 14:58:08 +03:00
Vitaliy Filippov
70612e5df0
Do not handle change events before loading config
2020-10-17 11:18:39 +00:00
Vitaliy Filippov
d952c24979
Use timeout in rw callback
2020-10-17 11:00:55 +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
9350656af6
Fix osd tags
2020-10-16 23:28:48 +00:00
Vitaliy Filippov
ece14a7d65
Hide "Connected with..." client messages by default
2020-10-11 02:22:46 +03:00
Vitaliy Filippov
be5f314c32
Change notes about gcc requirement to 9+, fio to 3.16+
2020-10-11 02:00:39 +03:00
Vitaliy Filippov
15dba96375
Implement inode removal tool. Removes multiple objects from multiple OSDs in parallel
2020-10-10 01:08:19 +03:00
Vitaliy Filippov
3d05aa9362
Make it build with GCC 10, fio 3.20+ (atomics...) and QEMU 5.1
2020-10-06 02:35:11 +03:00
Vitaliy Filippov
94efb54feb
Implement OSD tags (device classes), fix pool failure_domain configuration
2020-10-04 17:31:50 +03:00
Vitaliy Filippov
aa2a0ee00f
Do not group adjacent stripes by default as it's pointless on SSDs
2020-10-02 10:17:54 +03:00
Vitaliy Filippov
9f2a948712
Make pg_stripe_size a per-pool config
2020-10-01 18:51:49 +03:00
Vitaliy Filippov
ba74eece4a
More fixes to the failure model (why am I doing this?..)
2020-10-01 18:38:30 +03:00
Vitaliy Filippov
2fdd8a1b38
More correct failure model (I hope so)
2020-10-01 02:33:48 +03:00
Vitaliy Filippov
526983f7a9
Add usable CLI commands for NBD proxy (map/unmap/list)
2020-09-29 02:06:19 +03:00
Vitaliy Filippov
8e36f04482
One more experiment with cluster AFR%
2020-09-27 19:42:42 +03:00
Vitaliy Filippov
f460d8c1c8
Add note about NBD
2020-09-26 00:11:55 +03:00
Vitaliy Filippov
7619a789c0
Set request size in NBD
2020-09-26 00:01:23 +03:00
Vitaliy Filippov
e65a28e27e
Implement a simple NBD proxy (does not daemonize yet)
2020-09-25 20:51:01 +03:00
Vitaliy Filippov
6852f299ae
Add functions to calculate AFR for a cluster
2020-09-24 23:15:26 +03:00
Vitaliy Filippov
1967269c13
Resume operations in cluster_client when PGs are loaded (fixes a hang in qemu-img)
2020-09-20 01:50:19 +03:00
Vitaliy Filippov
7574183ba6
Make qemu driver build with QEMU 3.x
2020-09-20 01:50:19 +03:00
Vitaliy Filippov
108cd6312d
Correct some typos in README, add note about qemu-img
2020-09-20 01:50:19 +03:00
Vitaliy Filippov
588b9e6393
Add README
2020-09-17 23:07:50 +03:00
Vitaliy Filippov
0471b09b9c
Add license notices to all source code files
2020-09-17 23:07:06 +03:00
Vitaliy Filippov
ef911555ed
Add cpp-btree and json11 submodules
2020-09-17 23:07:06 +03:00
Vitaliy Filippov
9d20839a02
Add license texts
2020-09-17 23:07:06 +03:00