PThorpe92
ad2ae3e22f
Use fallback to regular fd if file registration is unavailable in io_uring
2025-07-16 23:08:46 -04:00
PThorpe92
fb78cdade0
Increase ring size from 128 -> 512
2025-07-16 22:44:20 -04:00
PThorpe92
4d09f1ab65
Enable coop_taskrun flag to disable excessive interrupts for completions
2025-07-16 22:43:44 -04:00
PThorpe92
95c343586c
Enable single_issuer flag for io_uring to signal submissions from single thread
2025-07-16 22:42:40 -04:00
PThorpe92
9dfadf7872
Add registered file descriptors to io_uring IO module
2025-07-16 22:41:47 -04:00
Nils Koch
1a91966c7e
fix clippy errors for rust 1.88.0 (manual fix)
2025-07-12 18:58:55 +03:00
pedrocarlo
1dc28e32f0
fix io_uring completion + clippy
2025-06-26 22:17:28 -03:00
pedrocarlo
bac5e4b563
refactor File and Database Storage to remove Arc<Connection> and return Arc<Connection> for caller to wait for completion
2025-06-26 22:17:28 -03:00
pedrocarlo
64d9193e7b
refactor Completion to have a type field and lift common is_complete property
2025-06-26 22:17:27 -03:00
Pekka Enberg
05df548b10
core/io: Add wait_for_completion() to I/O dispatcher
2025-05-27 13:47:40 +03:00
Pekka Enberg
eca9a5b703
core/io: Switch to Arc<Completion>
2025-05-27 11:28:49 +03:00
pedrocarlo
0c22382f3c
shared lock on file and throw ReadOnly error in transaction
2025-05-02 16:30:48 -03:00
Diego Reis
09d83aadf3
Fix dumb conflict errors
2025-04-13 11:10:06 -03:00
Diego Reis
d9bf383507
core/io: Untie MemoryIO's lifetime of the IO layer
2025-04-13 11:10:06 -03:00
Diego Reis
b519509349
core/io: Add internal in-memory MemoryIO to all IO layers
...
Honestly I don't have 100% sure if this is a good idea, the reasoning is that in any IO we'll want to do memory only operations like creating tables etc, so may want a common way to access it
2025-04-13 11:10:05 -03:00
Avinash Sajjanshetty
2873c36b31
Implement trait Clock for implemented IOs
...
Replace `chrono::Local::now()` to return `Instant` but containing
same info
2025-04-06 23:34:13 +05:30
Daniel Boll
fc50609491
Fix io_uring WAL write corruption by ensuring buffer lifetime
...
Ensure the Arc<RefCell<Buffer>> in UringFile::pwrite remains alive until
the io_uring write completes by referencing it in the completion callback.
This prevents WAL file corruption where the correct buffer data was
overwritten with stale memory (e.g., 00 18 27 xx instead of 37 7f 06 82).
Validation:
- Tested with limbo -v io_uring and WAL operations.
- Verified with xxd and wal-browser.
Signed-off-by: Daniel Boll <danielboll.academico@gmail.com >
2025-03-19 23:55:43 -03:00
Pere Diaz Bou
d1c7d758c4
fix uring Sync,Sync unsafe impl
2025-03-05 14:07:48 +01:00
Pekka Enberg
01671d1d1e
Merge 'Performance improvements for Unix I/O backend' from Preston Thorpe
...
This PR reworks the unix I/O backend, removing runtime reference
counting/borrow checking and optimizing away the hashmap in favor of a
static array, with an unlikely fallback vec.
The only reason the fallback vec is there is because unlike the
`io_uring` module, we cannot simply index into the array with the fd as
the OS could theoretically give us a fd up to I believe 1024 so keeping
an array of that size for a few elements is unnecessary.
Closes #940
2025-02-12 09:29:41 +02:00
PThorpe92
9098237a12
Add as_read method to completion enum
2025-02-11 09:09:47 -05:00
Doug Anderson444
0aa5de6d9f
rm log, switch all to tracing
2025-02-11 09:03:36 -04:00
PThorpe92
75898027a0
Remove unnecessary reference counting from completion io callbacks
2025-02-08 08:20:19 -05:00
PThorpe92
575a524d04
Replace hashmap for io_uring pending ops with static array
2025-02-07 09:05:08 -05:00
Jorge López
55e06b0c72
core/io: make file locks non-blocking so they fail right away
2025-01-14 11:01:11 +01:00
Pekka Enberg
5c9505e8f7
Revert "core/io/io_uring: replace nix and libc calls with their rustix counterparts."
...
This reverts commit b146f5d4cb because it
causes tests to hang.
2025-01-14 10:25:23 +02:00
Jorge López
5e9cb58f04
core/io/io_uring: remove unnecessary path prefix for log macros, and replace one unwrap with ?
2025-01-13 20:21:37 +01:00
Jorge López
b146f5d4cb
core/io/io_uring: replace nix and libc calls with their rustix counterparts.
...
core: remove dependency on nix. We keep depending on libc, though, because crate io_uring requires libc's iovec.
2025-01-13 20:21:37 +01:00
Jorge López
7808665c92
core: make MAX_IOVECS u32 instead of usize, to match the type expected by io_uring
2025-01-13 20:21:37 +01:00
Jorge López
5a45df84db
core: add debug line when an IO backend is created. A user can check that the correct one has been selected.
2025-01-11 16:08:41 +01:00
Jorge López
511c0b495d
Rename LinuxIOError to UringIOError to match the IO backend renames
2025-01-07 15:19:31 +01:00
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
Pekka Enberg
58eab38066
I/O layer cleanups
2023-09-10 21:02:23 +03:00
Pekka Enberg
72e92820d6
Share I/O ring across multiple files
2023-09-10 20:57:54 +03:00
Pekka Enberg
60abb68cef
io_uring support
2023-09-09 12:36:54 +03:00