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.