Commit Graph

56 Commits (blocking-uring-test)

Author SHA1 Message Date
Vitaliy Filippov 2be4824a7a Fix a small memory leak and BS_OP_SYNC mishandling, now fio does not hang during primary-osd test 2020-02-28 01:46:39 +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 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
2020-01-24 20:18:14 +03:00
Vitaliy Filippov d0ab2a20b2 Make fsync flags separate for data, metadata and journal 2020-01-17 13:41:37 +03:00
Vitaliy Filippov d5386aa958 Check presence in sync_to_repeat 2020-01-16 02:16:35 +03:00
Vitaliy Filippov 43f6cfeb73 Extract alignments to options 2020-01-16 00:54:25 +03:00
Vitaliy Filippov 36d8c8724f Fix sparse reads using bitmap, fix journal replay (we could sometimes lose its end) 2020-01-12 23:38:33 +03:00
Vitaliy Filippov cf819eb442 Implement sparse block bitmap to avoid zero-fill 2020-01-12 02:55:32 +03:00
Vitaliy Filippov b3f2102f33 Add queue stall tracking 2020-01-10 01:23:46 +03:00
Vitaliy Filippov bf3eecc159 Extract 512 to constants 2020-01-06 14:11:47 +03:00
Vitaliy Filippov 4677ace4cc Allow zero-length overwrites 2019-12-21 19:04:36 +03:00
Vitaliy Filippov 19abe6227e Fix submission ring overflow & ring_data_t reuse conflicts 2019-12-17 11:26:17 +03:00
Vitaliy Filippov a7e74670a5 Split blockstore implementation and interface header 2019-12-15 14:57:18 +03:00
Vitaliy Filippov 02a0eb49c2 Begin reply code 2019-12-14 20:51:49 +03:00
Vitaliy Filippov aaea3e1f99 Fix read_fulfill, use vector 2019-12-03 12:09:30 +03:00
Vitaliy Filippov 1f7381e220 Do not use goto resume_0 due to some strange -O3 bug which leads to hangs (it seems it optimizes flush_queue.size() away) 2019-12-03 02:23:29 +03:00
Vitaliy Filippov fd13965b90 Force start when journal is full 2019-12-03 02:23:29 +03:00
Vitaliy Filippov 2963ad98ec Start to flush only when there are <sync_threshold> journal entries to flush 2019-12-03 00:20:13 +03:00
Vitaliy Filippov aa3b252327 Fsync data before writing metadata 2019-12-03 00:20:13 +03:00
Vitaliy Filippov a165909745 FIXME 2019-12-02 18:16:23 +03:00
Vitaliy Filippov 76caecf7c7 Inmemory metadata mode 2019-12-02 15:42:42 +03:00
Vitaliy Filippov f4d06ba102 OP_DELETE flushing 2019-12-02 02:41:14 +03:00
Vitaliy Filippov 14b2f49f4d FIXME 2019-12-01 16:43:21 +03:00
Vitaliy Filippov 00eeedae90 Add "fsync disabled" mode 2019-12-01 16:41:07 +03:00
Vitaliy Filippov 40781c67b2 Trim journal on start 2019-11-29 02:13:32 +03:00
Vitaliy Filippov 45f34fb3b2 Fix linear overwrite, make metadata writes ordered, ignore older entries when recovering journal 2019-11-28 22:36:38 +03:00
Vitaliy Filippov 9fa0d3325f Support inmemory journal 2019-11-28 18:06:50 +03:00
Vitaliy Filippov e1ac4dba23 Fix safe stop procedure 2019-11-28 02:27:17 +03:00
Vitaliy Filippov d56cb290ee Two FIXMEs 2019-11-28 01:00:22 +03:00
Vitaliy Filippov 95396e2c83 Note read errors 2019-11-28 00:37:20 +03:00
Vitaliy Filippov 35a6ed728d Fix another stall due to bad unstable_writes tracking, do not try to write beyond the end of the journal 2019-11-28 00:28:08 +03:00
Vitaliy Filippov 2630e2e3b9 Fix metadata partition length, fix journal allocation at the end 2019-11-27 19:39:18 +03:00
Vitaliy Filippov 9ba243b3ee Add debug prints 2019-11-27 18:07:51 +03:00
Vitaliy Filippov e2b91968c5 Fix sync confirmations and some pipeline-stall bugs 2019-11-27 18:07:38 +03:00
Vitaliy Filippov 95b0395493 Remove trim_interval=1 2019-11-27 02:47:01 +03:00
Vitaliy Filippov ce5cd13bc8 Use fdatasync (just for testing over an FS) 2019-11-27 02:41:30 +03:00
Vitaliy Filippov 9568354d78 Fix old_clean_loc treatment (cannot persist sparse_hash_map iterator) 2019-11-27 02:16:43 +03:00
Vitaliy Filippov 2831d40edb Fix repeated syncs 2019-11-27 02:04:46 +03:00
Vitaliy Filippov ff7469ee91 Make allocator a class 2019-11-27 00:50:57 +03:00
Vitaliy Filippov be3015169f Safe stop procedure 2019-11-25 01:29:07 +03:00
Vitaliy Filippov 82a2b8e7d9 Fix some extra bugs and it seems now it is even able to trim the journal 2019-11-22 12:08:44 +03:00
Vitaliy Filippov 7e87290fca Clear second sector of the journal, init iov for callbacks 2019-11-21 22:06:00 +03:00
Vitaliy Filippov 201eeb8516 Rewrite metadata_init to the same "goto-coroutine" style 2019-11-21 21:51:52 +03:00
Vitaliy Filippov 2b12428cb1 Debug OP_STABLE so the basic case passes without problem 2019-11-21 02:09:18 +03:00
Vitaliy Filippov 299b7288d5 Fix journal loading 2019-11-21 00:52:52 +03:00
Vitaliy Filippov e40a71b2ce Check result to be equal to iov_len 2019-11-18 02:09:34 +03:00
Vitaliy Filippov c2de733e35 Copy io_uring_prep_* to my_uring_prep_* so they do not clear user_data 2019-11-17 21:39:30 +03:00
Vitaliy Filippov eec1c35ea4 Begin to debug ... all of this stuff :) 2019-11-16 02:32:29 +03:00
Vitaliy Filippov a4aaa3c7c7 First implementation of journal trimming
In theory it's possible to start testing blockstore at this point!
2019-11-15 16:12:55 +03:00
Vitaliy Filippov c38c8ab029 Prevent two parallel flushes of the same object 2019-11-15 13:58:35 +03:00