There has been little (visible) progress with the asynchronous I/O code
since the AIO core was merged into the 2.5.32 kernel. AIO author Ben
LaHaise has not been idle, however. Slowly the other pieces of the AIO
package are beginning to show up for the 2.5 tree.
One piece is this patch which adds
"synchronous IOCBs" to the mix. One might wonder why an asynchronous I/O
infrastructure needs I/O control blocks which have a synchronous option.
The answer is that the synchronous IOCB is needed to achieve the goal of
making most or all low-level I/O operations in the kernel be asynchronous.
Once the I/O primitives expect an IOCB, and they work in an asynchronous
mode, it is easy to layer the older, synchronous versions on top through
the use of a synchronous IOCB. For now, synchronous IOCBs are only used in
the generic_file_read() function.
The next step, perhaps, is this patch from
Badari Pulavarty; which reworks the direct I/O (DIO) infrastructure. The
DIO code handles direct operations on block devices - such as when a
"raw" device is used, or when a file is opened with the O_DIRECT
option. The DIO operations, with this patch, are all asynchronous, with
synchronous IOCBs used when synchronous behavior is required. With this
change, the task of making the block I/O subsystem be asynchronous
internally is nearly complete. Other subsystems (i.e. char devices,
networking) remain to be converted over to the AIO scheme, however.
to post comments)