4.7. Direct I/O
4.7. Direct I/O Direct I/O is a feature of the file system whereby file reads and writes go directly from the applications to the storage device, bypassing the operating system read and write caches. Direct I/O is used only by applications (such as databases) that manage their own caches. An application invokes direct I/O by opening a file with the O_DIRECT flag. Alternatively, GFS can attach a direct I/O attribute to a file, in which case direct I/O is used regardless of how the file is opened. When a file is opened with O_DIRECT , or when a GFS direct I/O attribute is attached to a file, all I/O operations must be done in block-size multiples of 512 bytes. The memory being read from or written to must also be 512-byte aligned. One of the following methods can be used to enable direct I/O on a file: O_DIRECT GFS file attribute GFS directory attribute 4.7.1. O_DIRECT If an application uses the O_DIRECT flag on an open() system call, direct I/O is used for the opened file. To cause the O_DIRECT flag to be defined with recent glibc libraries, define _GNU_SOURCE at the beginning of a source file before any includes, or define it on the cc line when compiling.