vfs_aio_linux - implement async I/O in Samba vfs using Linux kernel aio calls
vfs objects = aio_linux
This VFS module is part of the
samba(7) suite.
The aio_linux VFS module enables asynchronous I/O for Samba on Linux kernels
that have the kernel AIO calls available without using the Posix AIO
interface. Posix AIO can suffer from severe limitations. For example, on some
Linux versions the real-time signals that it uses are broken under heavy load.
Other systems only allow AIO when special kernel modules are loaded or only
allow a certain system-wide amount of async requests being scheduled. Systems
based on glibc (most Linux systems) only allow a single outstanding request
per file descriptor which essentially makes Posix AIO useless on systems using
the glibc implementation.
To work around all these limitations, the aio_linux module was written. It uses
the Linux kernel AIO interface instead of the internal Posix AIO interface to
allow read and write calls to be processed asynchronously. A queue size of 128
events is used by default. To change this limit set the "aio num
events" parameter below.
Note that the smb.conf parameters aio read size and aio write size must also be
set appropriately for this module to be active.
This module MUST be listed last in any module stack as the Samba VFS
pread/pwrite interface is not thread-safe. This module makes direct pread and
pwrite system calls and does NOT call the Samba VFS pread and pwrite
interfaces.
Straight forward use:
[cooldata]
path = /data/ice
aio read size = 1024
aio write size = 1024
vfs objects = aio_linux
aio_linux:aio num events = INTEGER
Set the maximum size of the event queue that is used to
limit outstanding IO requests.
By default this is set to 128.
This man page is correct for version 4.0 of the Samba suite.
The original Samba software and related utilities were created by Andrew
Tridgell. Samba is now developed by the Samba Team as an Open Source project
similar to the way the Linux kernel is developed.