Vitaliy Filippov
0471b09b9c
Add license notices to all source code files
2020-09-17 23:07:06 +03:00
Vitaliy Filippov
416a80b099
Make blockstore object state a combination of type and workflow
2020-07-04 22:20:32 +03:00
Vitaliy Filippov
592bcd3699
Fix QEMU driver bugs (QEMU and qemu-img now work! hooray!)
2020-06-26 18:25:43 +03:00
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
2020-03-31 17:55:31 +03:00
Vitaliy Filippov
6982fe1255
Do not block reads by previous unfinished writes
2020-03-13 21:28:49 +03:00
Vitaliy Filippov
0e177c7a2a
Fix possible leak in blockstore_read
2020-02-21 19:38:43 +03:00
Vitaliy Filippov
b7ccd63104
Return version number from reads
2020-02-12 12:30:50 +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
4677ace4cc
Allow zero-length overwrites
2019-12-21 19:04:36 +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
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
9fa0d3325f
Support inmemory journal
2019-11-28 18:06:50 +03:00
Vitaliy Filippov
a7dc759f74
Compile fio engine
2019-11-26 01:50:26 +03:00
Vitaliy Filippov
50cf3667fa
Track unstable writes
2019-11-25 01:16:34 +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
c7d9dc027b
Remove extra states as they seem useless
2019-11-15 14:02:37 +03:00
Vitaliy Filippov
bc549553e4
Rename dirty_entry.size to len, remove some unneeded methods and fields, read metadata correctly
2019-11-14 01:13:07 +03:00
Vitaliy Filippov
1c6b9778a4
Handle all io_uring events using lambdas
2019-11-13 22:46:42 +03:00
Vitaliy Filippov
f892104aed
Begin journal flusher
2019-11-12 12:02:11 +03:00
Vitaliy Filippov
d2d8d6e7fb
Comments about stabilize operation, track unsynced_writes correctly
2019-11-11 02:53:19 +03:00
Vitaliy Filippov
ff57dd420e
Rename object_db to clean_db
2019-11-10 22:41:40 +03:00
Vitaliy Filippov
69581e6d0c
Send STABLE entry to the journal
2019-11-10 22:41:40 +03:00
Vitaliy Filippov
e5caffb6ac
Allow to read specific versions
2019-11-10 13:26:56 +03:00
Vitaliy Filippov
2d0334f9b9
Remove in_progress_ops
2019-11-10 12:52:37 +03:00
Vitaliy Filippov
24f5d71595
Move handle_event code into _read.cpp, _write.cpp; move sync code into _sync.cpp
2019-11-10 02:27:27 +03:00
Vitaliy Filippov
7456f0f7e2
Remove duplicate code
2019-11-08 19:54:57 +03:00
Vitaliy Filippov
90f081f398
Check for op->wait_for conditions
...
It's almost identical to just re-submit... so maybe it was pointless
2019-11-08 12:08:25 +03:00
Vitaliy Filippov
a5f2d8b85e
Ack writes
2019-11-08 02:31:07 +03:00
Vitaliy Filippov
40890aeec5
Rename dirty_queue to dirty_db and make it a single std::map
2019-11-08 00:20:10 +03:00
Vitaliy Filippov
5330461029
Move blockstore journal fields to journal_t, implement multiple write buffers for journal sectors
2019-11-07 23:42:24 +03:00
Vitaliy Filippov
84c62840bd
Begin write algorithm
2019-11-07 02:24:12 +03:00
Vitaliy Filippov
2f18a3d19e
Begin implementation of enqueue/dequeue
2019-11-06 19:27:48 +03:00
Vitaliy Filippov
3f5ad16748
Fix ringloop, implement first version of handle_event for reads
2019-11-05 23:06:06 +03:00
Vitaliy Filippov
82cf0a170e
Port everything to ring_loop
2019-11-05 02:43:21 +03:00
Vitaliy Filippov
351366d228
Add ring_loop
2019-11-05 02:12:04 +03:00
Vitaliy Filippov
c959948c82
Finish journal reader
2019-11-04 20:18:52 +03:00
Vitaliy Filippov
f4705d81d7
Split into multiple files, begin init_loop, adjust read
2019-11-03 02:30:11 +03:00