POSIX Asynchronous I/O for Linux

pingouin POSIX Asynchronous I/O for Linux (PAIOL) is an attempt to write a POSIX AIO compliant API based on Linux kernel 2.6 native AIO API.

This library can work without patching the kernel. Kernel patches are only needed if you want to use POSIX AIO features not available from user-space or to improve performance.

Latest News
square Wed, 21 Feb 2007: Release 0.8.2
  • A lot of fixes both in the library code and the testcases
  • Support for listio syscall
  • Library is now MT safe
  • Kernel patches ported to 2.6.20
square Mon, 20 Mar 2006: Release 0.8
  • Fixed x86_64 implementation.
  • Fixed testcases use of volatile variables
square Mon, 7 Nov 2005: Release 0.7
  • Merged IO_CMD_EVENT and IO_CMD_CHECKPOINT into IO_CMD_GROUP for listio support.
  • Fixed buf type from unsigned char * to char * for gcc4 in check/aio_fsync.c.
  • Do not use the aiocb->data to store a pointer to the aiocb. This field was used in update_events() in src/aio_event.c to retrieve the aiocb from the io_event. We can instead use event->obj.
  • Added missing comma in aio_syscall4 in src/syscall_x86.h.
  • Added --enable-debug option to configure for compiling the library with debug symbols. Changed configure.ac and src/Makefile.am
  • Changed __aio_thread_init() to take a sigevent as arg instead of an aiocb.
  • Added new listio testcases in check.
  • Added support patches for the 2.6.14 kernel including Ben LaHaise's additions for request completion notification.
  • Updated support patches for the 2.6.10 and 2.6.12 kernels.
square Mon, 25 Jul 2005: Release 0.6
  • Fixed compilation errors when none of the kernel patches are applied i.e. no support for AIO and LIO completion signal and no support for io_setup (0, ...).
  • Bug fixes concerning buffered AIO support in aio_read and aio_write.
  • Fixed the type of the buffer (from unsigned char * to char *) used for the AIO request in a few places in testbed for consistency. These were causing compile time errors under gcc 4.0.
  • Bug fix in kernel patches. In sys_io_submit, the iocb address was passed to create_lio instead of whatever the user passed in the sigevent sigev_value.
  • Removed automatic checking of kernel support for buffered AIO in configure.ac. The feature must be manually enabled or disabled. Default right now is disabled.
  • Added mini testsuite so that doing a `make check` after building the library makes sure everything is in order before installing. Currently the aio_fsync and aio_cancel checks fail due to lack of support from the kernel.
  • Added support patches for the 2.6.12 kernel.
  • Releases (Library and kernel patches) are now available on Sourceforge.
square Older news available here.
Library - kernel patches
Download on Sourceforge. SourceForge.net Logo
POSIX Test Suite
square posixtestsuite-1.5.0-aio.patch Udpdated AIO test suite in Open Posix Test Suite (patch now included in OPTS 1.5.1)
MySQL PAIO patch
square MySQL 4.1.12 patch This patchset provides POSIX AIO support to the MysQL InnoDB engine.
The first patch in the series adds generic POSIX AIO support to the InnoDB engine. The second patch adds detection of libposix-aio for use in place of librt.
QEMU PAIO patches
square QEMU libposix-aio patch This patch allow to link qemu against libposix-aio instead of librt. It adds a parameter, "--enable-libposix-aio", to enable this feature.
square QEMU IDE direct I/O patch As memory provided to the IDE device is aligned, this patch uses it instead of internal IDE virtual device buffer.
Benchmark results
square Sysbench - oltp
Old resources
square Old library releases and kernel patches
square Sébastien Dugué
square Laurent Vivier [GPG key]
square README
square POSIX AIO for linux data structure [DIA]
square LIOEVENT patch description
square ...
square Kernel Asynchronous I/O (AIO) Support for Linux
square The Open Group Base Specifications :
square The Single UNIX Specification, Version 3
square POSIX Option Groups
square Open POSIX Test Suite

Page maintained by: Sébastien Dugué. Valid XHTML 1.0! Valid CSS!