On Tue, 9 Jan 2001, Ingo Molnar wrote:
> this is why i ment that *right now* kiobufs are not suited for networking,
> at least the way we do it. Maybe if kiobufs had the same kind of internal
> structure as sk_frag (ie. array of (page,offset,size) triples, not array
> of pages), that would work out better.
That I can agree with, and it would make my life easier since I really
only care about the completion of an entire io, not the individual
fragments of it.
> Please take a look at next release of TUX. Probably the last missing piece
> was that i added O_NONBLOCK to generic_file_read() && sendfile(), so not
> fully cached requests can be offloaded to IO threads.
> Otherwise the current lowlevel filesystem infrastructure is not suited for
> implementing "process-less async IO "- and kiovecs wont be able to help
> that either. Unless we implement async, IRQ-driven bmap(), we'll always
> need some sort of process context to set up IO.
I've already got fully async read and write working via a helper thread
for doing the bmaps when the page is not uptodate in the page cache. The
primatives for async locking of pages and waiting on events such that
converting ext2 to performing full async bmap should be trivial. Note
that O_NONBLOCK is not good enough because you can't implement an
asynchronous O_SYNC write with it.