-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add filesystem UIO driver #142
Conversation
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Signed-off-by: Bill Nguyen <[email protected]>
Why do we need a dependency? |
It is a wrapper library around the raw |
How difficult is it to do that? I would really like to avoid adding any more dependencies. |
It is possible, but will be time consuming, error-prone and make the code harder to read as we would have to manipulate the raw shared data structures with the kernel, submission/completion queues and its objects, and put memory barriers at the correct place for every operation. |
This driver is for LionsOS and should not be in libvmm then. |
Okay I'll have to have a look at how complicated it is. |
I'll close the PR since it should be going to LionsOS. libvmm is supposed to be OS agnostic. |
This PR adds:
liburing
.The basic idea is:
io_uring
, the driver will enqueue all the Linux FS calls intoio_uring
's submission queue and signal the kernel.io_uring
was used to improve performance by allowing us to perform multiple I/O operations with only 1 syscall.Note:
io_uring
. This includes:FS_CMD_DIR_*
)For these calls, the driver will "flush" the
io_uring
submission queue, wait for the flushed operations to finish and invoke the required operation. Acting as a barrier to ensure correctness in mixing synchonrous and asynchronous operations.