Skip to content
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

Make IO asynchronous #90

Merged
merged 58 commits into from
Mar 23, 2024
Merged

Make IO asynchronous #90

merged 58 commits into from
Mar 23, 2024

Conversation

heatd
Copy link
Owner

@heatd heatd commented Dec 31, 2023

No description provided.

@heatd heatd force-pushed the pedro/async-io branch 2 times, most recently from d445e5c to cca0025 Compare January 5, 2024 22:28
heatd added 2 commits January 5, 2024 22:29
They were old and unused code.

Signed-off-by: Pedro Falcato <[email protected]>
@heatd heatd force-pushed the pedro/async-io branch 2 times, most recently from 3d6520b to 79b495d Compare January 5, 2024 22:58
IO is now more prepared to be asynchronous. Some headers have been
pulled apart.

Signed-off-by: Pedro Falcato <[email protected]>
heatd added 9 commits January 18, 2024 12:08
This makes most text editors (nano, bim) work well on the vterm with
TERM=linux. irssi still has some issues.

Signed-off-by: Pedro Falcato <[email protected]>
Waking the address while holding the inode spinlock will result in a
deadlock, as wait_for callers (on the inode) will sometimes want to hold
the inode lock.

Signed-off-by: Pedro Falcato <[email protected]>
Oopsie.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
This commit fixes up a variety of headers for C support on things such
as filesystem drivers. It has a couple of hacks, and some stuff just
isn't there yet (struct process, for one).

Signed-off-by: Pedro Falcato <[email protected]>
heatd added 2 commits January 26, 2024 17:54
The date calculation had lots of problems, and was giving out an extra
day. Fix it, and add it to time.cpp instead of having it in PC's rtc
driver.

Signed-off-by: Pedro Falcato <[email protected]>
@heatd heatd force-pushed the pedro/async-io branch 3 times, most recently from d6a69a0 to 2691d3a Compare January 26, 2024 20:33
Lots of hacks, and most functions will probably not be callable from C
(due to missing extern "C").

Signed-off-by: Pedro Falcato <[email protected]>
With a fix for bio_submit_req_wait while we're at it.

Signed-off-by: Pedro Falcato <[email protected]>
Add a page owner tracker that one can optionally enable during
debug.

Signed-off-by: Pedro Falcato <[email protected]>
Replace errno usage in read_disk (and its callers) with expected<T, E>.

Signed-off-by: Pedro Falcato <[email protected]>
No functional change.

Signed-off-by: Pedro Falcato <[email protected]>
This lets us generically merge bios into requests, which are essentially
a list of bios for the same sector range (and the same OP) which drivers
will be able to ingest instead of bios. Queue properties let us merge
these and split these according to the underlying hardware.

Signed-off-by: Pedro Falcato <[email protected]>
Add a .mailmap with myself (to rectify old author names)

Signed-off-by: Pedro Falcato <[email protected]>
Spinlock was brought over from Carbon, and is old and unused.

Signed-off-by: Pedro Falcato <[email protected]>
Add local_lock, a nice abstraction over preemption disabling and irq
disabling.

Signed-off-by: Pedro Falcato <[email protected]>
Make deferred completion use struct request, make io-queue use struct
request, and convert nvme to it as an initial first step.

Signed-off-by: Pedro Falcato <[email protected]>
@heatd heatd force-pushed the pedro/async-io branch 3 times, most recently from 0b678f4 to 9541afb Compare March 23, 2024 20:42
@heatd heatd marked this pull request as ready for review March 23, 2024 20:44
heatd added 15 commits March 23, 2024 21:09
Add blk_plug as in Linux fashion. This lets us plug up
(related) IO requests in a hope to merge quite a few of them into one
another.

Signed-off-by: Pedro Falcato <[email protected]>
If the fs is relatively unfragmented, plugging requests should have a
really great effect in reducing the amount of tiny writes we do.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
Add BIO bouncing for devices that don't support 64-bit DMA, and
primitive bio chaining.

Signed-off-by: Pedro Falcato <[email protected]>
IDE ATA doesn't support 64-bit DMA.

Signed-off-by: Pedro Falcato <[email protected]>
Add dma_boundary. Individual SGLs are not allowed to cross this.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
@heatd heatd merged commit 4e5a901 into master Mar 23, 2024
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant