Installation guide

7. Direct I/O
Direct I/O is a feature of the file system whereby file reads and writes go directly from the applic-
ations 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
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 be-
ginning of a source file before any includes, or define it on the cc line when compiling.
7.2. GFS File Attribute
The gfs_tool command can be used to assign (set) a direct I/O attribute flag, directio, to a
GFS file. The directio flag can also be cleared.
Usage
Setting the directio Flag
gfs_tool setflag directio File
Clearing the directio Flag
gfs_tool clearflag directio File
File
Specifies the file where the directio flag is assigned.
Example
7.1. O_DIRECT
28