Vitaliy Filippov
220bda0667
Fix possible buffer over(under)flow when handling LIST
3 years ago
Vitaliy Filippov
f011e0c675
Do not block stabilize by list and list by write
3 years ago
Vitaliy Filippov
0471b09b9c
Add license notices to all source code files
3 years ago
Vitaliy Filippov
e051db5a73
Check for unsuccessful memory allocations
3 years ago
Vitaliy Filippov
0918ea08fa
Implement min/max inode filters in LIST operation
3 years ago
Vitaliy Filippov
ec7acc8f3a
Add WRITE_STABLE operation for future replication support
3 years ago
Vitaliy Filippov
05ea97119f
Fix BS_OP_LIST to account for deleted objects: only list the newest stable entry of each object
...
This allows list responses to be unaffected by journal flushes, which, in turn,
fixes PG peering when a peer OSD is replaying journal and journal contains deletions
3 years ago
Vitaliy Filippov
165c204555
Fix BS_OP_DELETE (the implementation was untested up to this point)
3 years ago
Vitaliy Filippov
e6a4b634f8
Fix possible write stall
...
The stall occurred during fio Q=128 random write tests with low flusher_count (4).
It was caused by flushers being unable to flush the beginning of the journal
because it contained older writes to an object that also had writes in the very end
of the journal, after dirty_start.
3 years ago
Vitaliy Filippov
c22e096943
Output journal offsets in debug trace in hex, add detailed "still waiting" messages
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
92c800bb64
Forget unstable writes when re-peering, rename parity_block_size -> pg_stripe_size, pg_parity_size -> pg_block_size
3 years ago
Vitaliy Filippov
46f9bd2a69
Make blockstore list operation return consistent snapshots
3 years ago
Vitaliy Filippov
6982fe1255
Do not block reads by previous unfinished writes
3 years ago
Vitaliy Filippov
3dd1b22d55
Fix segfault with concurrent OP_SYNCs
3 years ago
Vitaliy Filippov
3f522c66e6
Implement immediate commit mode
3 years ago
Vitaliy Filippov
c3737ae3ff
Add journal fsync to stabilize/rollback
3 years ago
Vitaliy Filippov
844cacd357
Allow incorrectly forbidden BS_OP_LIST in readonly mode
3 years ago
Vitaliy Filippov
9cb07d844b
Make [un]register_consumer operate on pointers, rename get_loop_again() to has_work()
3 years ago
Vitaliy Filippov
2be4824a7a
Fix a small memory leak and BS_OP_SYNC mishandling, now fio does not hang during primary-osd test
3 years ago
Vitaliy Filippov
c71b67f2f7
Move SYNC_STAB_ALL into blockstore implementation
3 years ago
Vitaliy Filippov
d4fd9d982a
Implement read-modify-write calculation and extract it into a separate file
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
47663bd1dc
Add (empty) osd_primary.cpp, rename osd_read to osd_receive, add FIXMEs for fsync
3 years ago
Vitaliy Filippov
2b09710d6f
Implement blockstore rollback operation
...
Rollback operation is required for the primary OSD to kill unstable
object versions in OSD peers so they don't occupy journal space
3 years ago
Vitaliy Filippov
a8bc44064d
Read object lists from peers and own blockstore
3 years ago
Vitaliy Filippov
43f6cfeb73
Extract alignments to options
3 years ago
Vitaliy Filippov
a3d3949dce
Do not overwrite same journal sector multiple times
...
It doesn't reduce actual WA, but it reduces tail latency (Q=32, 10% / 50% / 90% / 99% / 99.95%):
- write: 766us/979us/1090us/1303us/1729us vs 1074us/1450us/2212us/3261us/4113us
- sync: 701us/881us/1188us/1762us/2540us vs 269us/955us/1663us/2638us/4146us
3 years ago
Vitaliy Filippov
cf819eb442
Implement sparse block bitmap to avoid zero-fill
3 years ago
Vitaliy Filippov
4b05bde3a2
Block writes earlier than sync/stabilize would be blocked, too
3 years ago
Vitaliy Filippov
b3f2102f33
Add queue stall tracking
3 years ago
Vitaliy Filippov
bf3eecc159
Extract 512 to constants
3 years ago
Vitaliy Filippov
e88ad3f2ff
Implement object list operation in blockstore
3 years ago
Vitaliy Filippov
d3d21e6e0f
Rename OP_ to BS_OP_
3 years ago
Vitaliy Filippov
19abe6227e
Fix submission ring overflow & ring_data_t reuse conflicts
3 years ago
Vitaliy Filippov
a7e74670a5
Split blockstore implementation and interface header
3 years ago