Refactoring asynchronous I/O
John Baldwin
jhb at freebsd.org
Wed Jan 27 17:52:34 UTC 2016
On Wednesday, January 27, 2016 01:52:05 PM Slawa Olhovchenkov wrote:
> On Tue, Jan 26, 2016 at 05:39:03PM -0800, John Baldwin wrote:
>
> > The original motivation for my changes is to support efficient zero-copy
> > receive for TOE using Chelsio T4/T5 adapters. However, read() is ill
>
> I undertuns that not you work, but: what about (teoretical) async
> open/close/unlink/etc?
Implementing more asynchronous operations is orthogonal to this. It
would perhaps be a bit simpler to implement these in the new model
since most of the logic would live in a vnode-specific aio_queue
method in vfs_vnops.c. However, the current AIO approach is to add a
new system call for each async system call (e.g. aio_open()). You
would then create an internal LIO opcode (e.g. LIO_OPEN). The vnode
aio hook would then have to support LIO_OPEN requests and return the
opened fd via aio_complete(). Async stat / open might be nice for
network filesystems in particular. I've known of programs forking
separate threads just to do open/fstat of NFS files to achieve the
equivalent of aio_open() / aio_stat().
--
John Baldwin
More information about the freebsd-arch
mailing list