Commit graph

146 commits

Author SHA1 Message Date
Jorge López
e5a12bdf01
Rename linux backend to io_uring and darwin to unix. Add new feature flag to IO backend selection 2025-01-07 15:19:29 +01:00
psvri
e7d4fa0a53 Minor clippy fixes 2025-01-01 16:11:52 +05:30
PThorpe92
4e77840ee5
Setup io_uring with sqpoll enabled 2024-12-29 15:34:17 -05:00
adamnemecek
97647ff056 Clean up code to use Self
Closes #556
2024-12-29 10:07:38 +02:00
Dezhi Wu
bea49549ed feat(core/io): Add support for file creation in open_file function
`cargo test` is always failing on FreeBSD, the following is one of the
errors:

```
---- tests::test_simple_overflow_page stdout ----
thread 'tests::test_simple_overflow_page' panicked at test/src/lib.rs:32:84:
called `Result::unwrap()` on an `Err` value: IOError(Os { code: 2, kind: NotFound, message: "No such file or directory" })
```

After some digging, I found that the `open_file` function in
`core/io/generic.rs` does not respect the `OpenFlags::Create` flag. This
commit adds support for file creation in the `open_file` function.

`cargo test` now passes on FreeBSD.
2024-12-22 11:04:15 +08:00
Ziyak Jehangir
99d1b0e5a3
cleanup: replace &(*x) with x.as_ref() for smart pointer derefs 2024-12-19 19:36:04 +05:30
PThorpe92
7fc9835899
Optimize replace byte vec with boxed array in memory page 2024-12-14 23:39:51 -05:00
PThorpe92
ce2851ac8d
Fix properly opening new connection in shell 2024-12-14 21:20:10 -05:00
PThorpe92
89819eebf6
Expose memoryIO from limbo_core 2024-12-14 20:52:45 -05:00
PThorpe92
a323db6f46
Add in-memory IO implementation 2024-12-14 20:52:44 -05:00
Lauri Virtanen
a7100d8e9b
Autofix clippy issues with cargo fix --clippy 2024-11-24 20:24:47 +02:00
Pere Diaz Bou
e2276c2e9d O_DIRECT disable on WAL 2024-11-13 13:45:42 +00:00
Pere Diaz Bou
cbfb45e55b more trace logs 2024-11-13 11:31:22 +00:00
Pere Diaz Bou
78118bae81 fmt 2024-11-13 09:34:36 +00:00
Pere Diaz Bou
8d1d2d36cc core/linux: aligned wal header read 2024-11-12 17:53:59 +00:00
Pere Diaz Bou
74974d07e7 clippy fix 2024-11-08 11:14:29 +01:00
Pere Diaz Bou
7d8fc80f4b use len instead of size 2024-11-07 14:01:35 +01:00
Pere Diaz Bou
ce1367b76a move wal creation 2024-11-07 13:51:02 +01:00
Pere Diaz Bou
218c32e0e6 remove unix import in windoews 2024-11-07 13:34:48 +01:00
Pere Diaz Bou
0b46648c0e write wal header on init 2024-11-07 13:29:57 +01:00
Pere Diaz Bou
0d857661f2 windows complete completion 2024-11-07 09:57:24 +01:00
Pere Diaz Bou
2514287263 windows fix 2024-11-06 18:11:15 +01:00
Pere Diaz Bou
cef78d54de fix generic 2024-11-06 17:53:14 +01:00
Pere Diaz Bou
eb8c462c5f fix io submission on cacheflush 2024-11-06 16:25:42 +00:00
Pere Diaz Bou
da7717edfb fix generic io match 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
5207e49399 remove extra borrow mut 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
0f4270b48f rebase submit entry 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
70a4ccd8bb fix linux completion match 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
fc65c5096d cacheflush state machine 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
129cc1cd6d fix open_file generic 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
f009eb35c6 suspendable checkpoint 2024-11-05 15:29:54 +01:00
Pere Diaz Bou
c0e51c4ca6 wip wal 2024-11-05 15:29:53 +01:00
Arpit Saxena
b7debabd81 Wrap IoUring to ensure pending_ops is always correctly updated
Adds a struct WrappedIOUring which contains a IoUring and a pending_ops
field. Entry submission and popping from the queue is done through
functions operating on it, which also maintains pending_ops count

NOTE: This is a bit weird/hacky since in get_completion we create a
CompletionQueue and just call its next(). If it were a normal iterator
it would always return the same first item. However it is a queue posing
as an iterator which makes this work.
2024-09-28 00:10:05 +05:30
Arpit Saxena
a7d735d368 Maintain pending io_uring ops count for early return on run_once
Add a `pending_ops` field to `InnerLinuxIO` struct which is incremented
for each operation submitted to the ring and decremented when they are
taken off the completion queue. With this, we can exit from run_once if
there are no pending operations. Otherwise, in that case, it would hang
indefinitely due to call of `ring.submit_and_wait(1)`
2024-09-27 23:32:19 +05:30
mazchew
671b61ba19 add time querying to io trait 2024-08-25 22:55:15 +08:00
mazchew
156005694a added rng to io trait for simulation 2024-08-22 23:24:02 +08:00
sonhmai
0e7bd95e4e core: fix clippy 2024-08-03 20:14:26 +07:00
Pekka Enberg
82ff5b9c9b core: Remove useless use of format!() 2024-08-01 09:16:02 +03:00
Pekka Enberg
8f6a2fc814 core: Fix I/O compliation on Windows
...just steal the generic implementation of pread() and pwrite().
2024-07-31 19:58:37 +03:00
Pekka Enberg
e00690bf9b core: Fix I/O build on Darwin 2024-07-31 19:52:59 +03:00
Pere Diaz Bou
b8e08dcdc4 core: more2 fix completion darwin io 2024-07-31 18:07:22 +02:00
Pere Diaz Bou
10da6a673d core: more fix completion darwin io 2024-07-31 18:04:26 +02:00
Pere Diaz Bou
38c407a286 core: fix completion darwin io 2024-07-31 18:01:38 +02:00
Pere Diaz Bou
82ee0e4a00 core: fix completion generic io 2024-07-31 17:58:45 +02:00
Pere Diaz Bou
d088640855 core: cqe result
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
2024-07-31 17:27:02 +02:00
Pere Diaz Bou
84bf0ea96a core: remove a bunch of warnings
Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
2024-07-31 17:27:02 +02:00
Pere Diaz Bou
845a1ea175 core: cacheflush and fix *Completion casting 2024-07-31 17:27:02 +02:00
Pere Diaz Bou
bbf238a6a4 core/io: save raw buffers on page
necessary for future lazy addressing of values and writes to page data
2024-07-31 17:27:02 +02:00
Pekka Enberg
351242561d Kill anyhow usage
Switch anyhow to explicit `LimboError` type using thiserror crate, which
lets us make error handling more structured.
2024-07-25 17:15:08 +03:00
jussisaurio
dcd08e3b38 Extract modules expr,select,where_clause from translate.rs 2024-07-18 14:31:26 +03:00