The filesystem AIO patchset
---------------------------
Buffered filesystem AIO (i.e. AIO reads/writes to files opened without
O_DIRECT) is still synchronous (io_submit blocks till I/O is completed
before returning) in the current 2.6.x kernels. This set of patches
makes AIO reads/writes asynchronous using a retry-based model that
converts major blocking points (waits for data blocks to be read
in and written out) in the read/write path to retry-exits. Filesystems
supported currently are ext2, ext3, jfs, xfs.
(See the AIO web page at http://lse.sf.net/io/aio.html for the status
of AIO in the mainline kernel and links to papers, tests and other
references)
Patches should be applied in the order specified in the series
file. You'll need to compile your applications with libaio to
use AIO.
The patches are grouped under the following categories:
- minimal
Minimal set of patches covering the core infrastructure and
converting the most significant blocking points seen during
early testing, i.e. waiting for pages to become uptodate during
a read, and waiting for pages to complete writeback during an
O_SYNC write.
- addon
Patches that address more blocking points, like:
- waiting to read existing disk blocks to do partial block writes
- waiting in blk_congestion_wait in the write path
- waiting in get block in prepare_write (ext2 only)
slides/ : has some of the slides we presented during the AIO talks
at OLS 2003 and OLS 2004