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:


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.

More Linux Commands

perlsec(1) - Perl security (Commands - Linux manual page)...
Perl is designed to make it easy to program securely even when running with extra privileges, like setuid or setgid programs. Unlike most command line shells, w

glGetColorTableParameter(3gl) - get color lookup table param
Returns parameters specific to color table target. When pname is set to GL_COLOR_TABLE_SCALE or GL_COLOR_TABLE_BIAS, glGetColorTableParameter returns the color

sane-hp5590(5) - SANE backend for Hewlett-Packard 4500C/4570
The sane-hp5590 library implements a SANE (Scanner Access Now Easy) backend that provides access to the following Hewlett-Packard Workgroup/Document scanners: S

subwin(3ncurses) - create curses windows - Linux man page...
Calling newwin creates and returns a pointer to a new window with the given number of lines and columns. The upper left-hand corner of the window is at line beg

glNormal3s(3gl) - set the current normal vector (Man Page)
The current normal is set to the given coordinates whenever glNormal is issued. Byte, short, or integer arguments are converted to floating-point with a linear

i386(8) - change reported architecture in new program enviro
i386.8 - setarch currently only affects the output of uname -m. For example, on an AMD64 system, running setarch i386 program will cause program to see i686 ins

perlfaq1(1) - General Questions About Perl - Linux man page
This section of the FAQ answers very general, high-level questions about Perl. What is Perl? Perl is a high-level programming language with an eclectic heritage

XDestroyWindowEvent(3) - DestroyNotify event structure......
The structure for DestroyNotify events contains: typedef struct { int type; /* DestroyNotify */ unsigned long serial; /* # of last request processed by server *

aio_read(3) - asynchronous read (Library - Linux man page)
The aio_read() function queues the I/O request described by the buffer pointed to by aiocbp. This function is the asynchronous analog of read(2). The arguments

watch(1) - execute a program periodically, showing output fu
watch runs command repeatedly, displaying its output and errors (the first screenfull). This allows you to watch the program output change over time. By default

XvShmCreateImage(3) - create an XvImage - Linux manual page
XvCreateImage(3) is similar to XCreateImage(3). XvShmCreateImage(3) is similar to XShmCreateImage(3). The library will allocate the XvImage structure and fill o

Tk_Draw3DPolygon(3) - draw borders with three-dimensional ap
These procedures provide facilities for drawing window borders in a way that produces a three-dimensional appearance. Tk_Alloc3DBorderFromObj allocates colors a

We can't live, work or learn in freedom unless the software we use is free.