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
0d90966739
Add last_sync checking to fio_engine, too
2020-01-16 01:03:18 +03:00
Vitaliy Filippov
43f6cfeb73
Extract alignments to options
2020-01-16 00:54:25 +03:00
Vitaliy Filippov
57ecbb2cda
Parse OSD commandline options
2020-01-15 23:20:11 +03:00
Vitaliy Filippov
8ea1ccc192
Add an OSD stub to compare sync socket I/O with io_uring + skip multiple fsyncs that fio issues
2020-01-15 22:04:58 +03:00
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
2020-01-15 02:53:01 +03:00
Vitaliy Filippov
111516381f
Add FIXME
2020-01-14 18:41:56 +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
5739b02de8
Add sparse read to ./blockstore_test, link blockstore to libblockstore.so
2020-01-12 19:59:19 +03:00
Vitaliy Filippov
cf819eb442
Implement sparse block bitmap to avoid zero-fill
2020-01-12 02:55:32 +03:00
Vitaliy Filippov
4b05bde3a2
Block writes earlier than sync/stabilize would be blocked, too
2020-01-10 20:05:17 +03:00
Vitaliy Filippov
b3f2102f33
Add queue stall tracking
2020-01-10 01:23:46 +03:00
Vitaliy Filippov
522a9db0e2
Enable TCP_NODELAY
2020-01-09 20:32:58 +03:00
Vitaliy Filippov
a1550bdfac
EPOLL_CTL_DEL does not require &ev
2020-01-09 18:39:58 +03:00
Vitaliy Filippov
7dba43b3c6
Allow to exclude blockstore from OSD op processing for tests
2020-01-08 12:06:05 +03:00
Vitaliy Filippov
ba23824561
Allow to disable zero fill
2020-01-06 21:02:15 +03:00
Vitaliy Filippov
bf3eecc159
Extract 512 to constants
2020-01-06 14:11:47 +03:00
Vitaliy Filippov
f3e3f8f005
Fix colocated offsets
2020-01-06 02:57:08 +03:00
Vitaliy Filippov
2709574c93
Add offset options
2020-01-06 02:12:56 +03:00
Vitaliy Filippov
d35ce8ab3d
Fix compile errors for newer gcc
2020-01-06 02:09:59 +03:00
Vitaliy Filippov
b6f0c1cde5
Async connection to peers
2020-01-04 01:23:25 +03:00
Vitaliy Filippov
b87092fcfe
Split osd.cpp into multiple files
2019-12-28 01:25:55 +03:00
Vitaliy Filippov
3134b7729a
Add PG structures, begin peer connection handling code
2019-12-27 12:05:44 +03:00
Vitaliy Filippov
8a386270bd
Use json11, add show_config operation, begin primary operations
2019-12-23 21:56:03 +03:00
Vitaliy Filippov
4677ace4cc
Allow zero-length overwrites
2019-12-21 19:04:36 +03:00
Vitaliy Filippov
4de5290619
Implement safe(?) stop
2019-12-19 22:16:04 +03:00
Vitaliy Filippov
5ebc110d35
Implement LIST operation in the OSD
2019-12-19 22:04:18 +03:00
Vitaliy Filippov
e88ad3f2ff
Implement object list operation in blockstore
2019-12-19 20:50:20 +03:00
Vitaliy Filippov
e8f7905e08
Allow to set write/delete version explicitly
2019-12-19 19:17:54 +03:00
Vitaliy Filippov
d3d21e6e0f
Rename OP_ to BS_OP_
2019-12-19 13:56:26 +03:00
Vitaliy Filippov
19abe6227e
Fix submission ring overflow & ring_data_t reuse conflicts
2019-12-17 11:26:17 +03:00
Vitaliy Filippov
4fb0579b1b
Change epoll polling
...
1) it is incorrect to call level-triggered epoll in a loop without reading everything
2) it fixes the FIXME
2019-12-17 01:56:46 +03:00
Vitaliy Filippov
c7ae3c001c
Add FIO engine for testing Blockstore through the Secondary OSD interface
2019-12-16 14:03:36 +03:00
Vitaliy Filippov
e60e6978ac
Extract object_id and obj_ver_id to separate header
2019-12-16 12:39:15 +03:00
Vitaliy Filippov
3061b8cf51
Add sync&stabilize test operation
2019-12-15 15:30:51 +03:00
Vitaliy Filippov
9af000e9de
Init storage note
2019-12-15 15:11:26 +03:00
Vitaliy Filippov
71635f2327
Use std::hash<object_id> instead of oid_hash
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
a7e74670a5
Split blockstore implementation and interface header
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
749ab6e2c6
Rename blockstore_operation to blockstore_op_t
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
f2e9749c93
Fix disconnection detection
2019-12-15 14:57:18 +03:00
Vitaliy Filippov
49f8011917
Add osd header and osd executable
2019-12-15 01:11:51 +03:00
Vitaliy Filippov
d3c6314d01
Finish reply code, make it compile
2019-12-14 20:51:59 +03:00
Vitaliy Filippov
02a0eb49c2
Begin reply code
2019-12-14 20:51:49 +03:00
Vitaliy Filippov
e052959d7b
Remove "packets"
2019-12-13 20:16:08 +03:00
Vitaliy Filippov
f6eb4326b3
Begin op enqueueing into the blockstore
2019-12-13 20:12:31 +03:00
Vitaliy Filippov
283d03ef18
Fix "address already in use" in test example, begin client read loop
2019-12-13 14:05:15 +03:00
Vitaliy Filippov
6239f6748a
io_uring recvmsg test
2019-12-13 00:02:48 +03:00
Vitaliy Filippov
00ee6b7961
Accept connections
2019-12-12 11:32:20 +03:00
Vitaliy Filippov
a8deb7d88c
Begin OSD
2019-12-11 14:18:19 +03:00
Vitaliy Filippov
a68bf129c4
Begin OSD ops header
2019-12-10 12:07:24 +03:00
Vitaliy Filippov
a180b4961f
Hide block_* fields
2019-12-10 00:13:59 +03:00
Vitaliy Filippov
aaea3e1f99
Fix read_fulfill, use vector
2019-12-03 12:09:30 +03:00
Vitaliy Filippov
a2ed38fb6b
Fix segfault
2019-12-03 02:27:25 +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
d24860b51a
Allow to specify blockstore block size in fio options
2019-12-02 15:50:55 +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
a7a0946ba8
WIP OP_DELETE
2019-12-01 17:25:59 +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
76655929c4
Add readonly flag
2019-12-01 16:41:07 +03:00
Vitaliy Filippov
9260cd263a
Verify data crc32 when reading journal
2019-11-30 23:32:10 +03:00
Vitaliy Filippov
2039df76a5
Fix journal reading and make it more similar to writing :)
2019-11-30 02:27:31 +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
b6fff5a77e
Fix metadata area size calculation, print free space, wait for free space
...
FIXME: Now it crashes with -ENOSPC on linear overwrite
2019-11-28 20:23:27 +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
cbf5173d1b
Allow to specify device paths in fio options
2019-11-28 00:50:52 +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
876231d26b
no new
2019-11-27 18:14:01 +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
78807eb244
Fix journal space check (do not overwrite the beginning of the journal)
2019-11-27 11:35:11 +03:00
Vitaliy Filippov
ffff742078
Use tcmalloc
2019-11-27 11:26:47 +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
06634054c9
Note to add no-fsync mode in the future
2019-11-27 02:27:38 +03:00
Vitaliy Filippov
74d8ea2f01
Calculate data crc32c
2019-11-27 02:20:38 +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
1080cbdf12
Fix used journal sector tracking again
2019-11-27 01:20:09 +03:00
Vitaliy Filippov
6ac1d5db08
Fix allocator bug
2019-11-27 01:12:25 +03:00
Vitaliy Filippov
ff7469ee91
Make allocator a class
2019-11-27 00:50:57 +03:00
Vitaliy Filippov
b8e53f8c67
Fix op validation, fix journal sector usage tracking
...
Now it runs for a while with fio but then crashes with ENOSPC because
of an apparent bug in the allocator
2019-11-26 20:38:25 +03:00
Vitaliy Filippov
a6770f619a
Fix crash while reading metadata
2019-11-26 12:06:42 +03:00
Vitaliy Filippov
a8f250c68f
fio engine starts now
2019-11-26 02:18:42 +03:00
Vitaliy Filippov
a7dc759f74
Compile fio engine
2019-11-26 01:50:26 +03:00
Vitaliy Filippov
3e46728321
Continue fio engine
2019-11-26 00:03:09 +03:00
Vitaliy Filippov
b67406e764
Start fio engine
2019-11-26 00:03:04 +03:00
Vitaliy Filippov
d0fdcbd7ff
Add optimized crc32c
2019-11-25 02:30:06 +03:00
Vitaliy Filippov
be3015169f
Safe stop procedure
2019-11-25 01:29:07 +03:00