Commit Graph

36 Commits (5596ad89978e3be27c536ac975a598626b3f3310)

Author SHA1 Message Date
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