<refnamediv>
<refname>vfs_aio_pthread</refname>
- <refpurpose>implement async I/O in Samba vfs using a pthread pool</refpurpose>
+ <refpurpose>implement async open in Samba vfs using a pthread pool</refpurpose>
</refnamediv>
<refsynopsisdiv>
<manvolnum>7</manvolnum></citerefentry> suite.</para>
<para>The <command>aio_pthread</command> VFS module enables asynchronous
- I/O for Samba on platforms which have the pthreads API 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.</para>
-
- <para>To work around all these limitations, the aio_pthread module
- was written. It uses a pthread pool instead of the
- internal Posix AIO interface to allow read and write calls
- to be process asynchronously. A pthread pool is created
- which expands dynamically by creating new threads as work is
- given to it to a maximum of 100 threads per smbd process.
- To change this limit see the "aio num threads" parameter
- below. New threads are not created if idle threads are
- available when a new read or write request is received,
- the new work is given to an existing idle thread. Threads
- terminate themselves if idle for one second.
+ opens (for new files) with <smbconfoption name="aio_pthread:aio open">yes</smbconfoption>
+ on platforms which have the pthreads API available,
+ support the openat() syscall and support per thread credentials (modern Linux kernels).
</para>
- <para>
- Note that the smb.conf parameters <command>aio read size</command>
- and <command>aio write size</command> must also be set appropriately
- for this module to be active.
- </para>
+ <para>The module makes use of the global thread pool which uses the
+ <smbconfoption name="aio max threads"/> option.</para>
<para>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.</para>
+ the Samba VFS open interface is not thread-safe. This
+ module makes direct openat() system calls and does
+ NOT call the Samba VFS open interfaces.</para>
</refsect1>
<programlisting>
<smbconfsection name="[cooldata]"/>
<smbconfoption name="path">/data/ice</smbconfoption>
- <smbconfoption name="aio read size">1024</smbconfoption>
- <smbconfoption name="aio write size">1024</smbconfoption>
<smbconfoption name="vfs objects">aio_pthread</smbconfoption>
+ <smbconfoption name="aio_pthread:aio open">yes</smbconfoption>
</programlisting>
</refsect1>
<variablelist>
<varlistentry>
- <term>aio_pthread:aio num threads = INTEGER</term>
+ <term>aio_pthread:aio open = BOOL</term>
<listitem>
- <para>Limit the maximum number of threads per smbd that
- will be created in the thread pool to service IO requests.
+ <para>Try async opens for creating new files.
</para>
- <para>By default this is set to 100.</para>
+ <para>The default is 'no'.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
+
<refsect1>
<title>VERSION</title>