summaryrefslogtreecommitdiffstats
path: root/docs-xml/manpages/vfs_fileid.8.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs-xml/manpages/vfs_fileid.8.xml')
-rw-r--r--docs-xml/manpages/vfs_fileid.8.xml282
1 files changed, 282 insertions, 0 deletions
diff --git a/docs-xml/manpages/vfs_fileid.8.xml b/docs-xml/manpages/vfs_fileid.8.xml
new file mode 100644
index 0000000..ed4d434
--- /dev/null
+++ b/docs-xml/manpages/vfs_fileid.8.xml
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
+<refentry id="vfs_fileid.8">
+
+<refmeta>
+ <refentrytitle>vfs_fileid</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="source">Samba</refmiscinfo>
+ <refmiscinfo class="manual">System Administration tools</refmiscinfo>
+ <refmiscinfo class="version">&doc.version;</refmiscinfo>
+</refmeta>
+
+
+<refnamediv>
+ <refname>vfs_fileid</refname>
+ <refpurpose>Generates file_id structs with unique device id values for
+ cluster setups. It also adds ways to deliberately break lock coherency for specific inodes</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <cmdsynopsis>
+ <command>vfs objects = fileid</command>
+ </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This VFS module is part of the
+ <citerefentry><refentrytitle>samba</refentrytitle>
+ <manvolnum>7</manvolnum></citerefentry>
+ suite.</para>
+
+ <para>Samba uses file_id structs to uniquely identify files
+ for locking purpose. By default the file_id contains the device
+ and inode number returned by the <command>stat()</command> system call.
+ As the file_id is a unique identifier of a file, it must be the same
+ on all nodes in a cluster setup. This module overloads the
+ <command>SMB_VFS_FILE_ID_CREATE()</command> operation and
+ generates the device number based on the configured algorithm
+ (see the "fileid:algorithm" option).
+ </para>
+
+ <para>When using the fsname or fsid algorithm a
+ <command>stat()</command> and <command>statfs()</command> call is
+ required for all mounted file systems to generate the file_id. If e.g.
+ an NFS file system is unresponsive such a call might block and the smbd
+ process will become unresponsive. Use the "fileid:fstype deny",
+ "fileid:fstype allow", "fileid:mntdir deny", or "fileid:mntdir allow"
+ options to ignore potentially unresponsive file systems.
+ </para>
+</refsect1>
+
+
+<refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>fileid:algorithm = ALGORITHM</term>
+ <listitem>
+ <para>Available algorithms are <command>fsname</command>,
+ <command>fsid</command>, <command>next_module</command>. The default value is
+ <command>fsname</command>. As well as the following legacy
+ algorithms: <command>fsname_nodirs</command>, <command>fsname_norootdir</command>,
+ <command>fsname_norootdir_ext</command> and <command>hostname</command>.
+ </para>
+
+ <para>The <command>fsname</command> algorithm generates
+ device id by hashing the kernel device name.
+ </para>
+
+ <para>The <command>fsid</command> algorithm generates
+ the device id from the <command>f_fsid</command> returned
+ from the <command>statfs()</command> syscall.
+ </para>
+
+ <para>The <command>next_module</command> algorithm lets the next vfs module
+ in the module chain generate the id. This is mainly used in combination
+ with the various 'nolock' features the fileid module provides.
+ </para>
+
+ <para>The legacy <command>hostname</command> algorithm generates unique
+ devid by hashing the hostname and low level device id.
+ It also implies <command>fileid:nolock_all_inodes=yes</command>.
+ This can be used to deliberately break lock coherency in a cluster
+ and with <command>fileid:nolock_max_slots</command> also between local processes
+ within a node. NOTE: Do not use this without knowing what you are doing!
+ It breaks SMB semantics and it can lead to data corruption!
+ This implies <command>fileid:nolock_all_inodes=yes</command>.
+ </para>
+
+ <para>The legacy <command>fsname_nodirs</command> algorithm is an alias
+ for using the <command>fsname</command> algorithm together with
+ <command>fileid:nolock_all_dirs=yes</command>.
+ NOTE: Do not use this without knowing what you are doing!
+ It breaks SMB semantics!
+ See <command>fileid:nolock_paths</command> for a more fine grained
+ approach.
+ </para>
+
+ <para>The legacy <command>fsname_norootdir</command> algorithm is an alias
+ for using the <command>fsname</command> algorithm together with
+ <command>fileid:nolock_paths= <quote>.</quote> </command>. It means
+ this can be used to deliberately break lock coherency
+ in a cluster for the root directory of a share.
+ </para>
+
+ <para>The legacy <command>fsname_norootdir_ext</command> algorithm is an alias
+ for using the <command>fsname</command> algorithm together with
+ <command>fileid:nolock_paths= <quote>.</quote></command> and
+ <command>fileid:nolock_max_slots = 18446744073709551615</command>.
+ It means this can be used to deliberately break lock coherency
+ completely for the root directory of a share. Even local processes
+ are no longer lock coherent.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:mapping = ALGORITHM</term>
+ <listitem>
+ <para>This option is the legacy version of the
+ <command>fileid:algorithm</command> option, which was used in earlier
+ versions of fileid mapping feature in custom Samba 3.0 versions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:fstype deny = LIST</term>
+ <listitem>
+ <para>List of file system types to be ignored for file_id
+ generation.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:fstype allow = LIST</term>
+ <listitem>
+ <para>List of file system types to be allowed for file_id
+ generation. If this option is set, file system types not listed
+ here are ignored.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:mntdir deny = LIST</term>
+ <listitem>
+ <para>List of file system mount points to be ignored for
+ file_id generation.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:mntdir allow = LIST</term>
+ <listitem>
+ <para>List of file system mount points to be allowed for file_id
+ generation. If this option is set, file system mount points
+ not listed here are ignored.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:nolock_max_slots = NUMBER(1-18446744073709551615)</term>
+ <listitem>
+ <para>This option alters the behavior of the <command>nolock</command> algorithm
+ in a way that it also breaks the lock coherency between individual processes
+ on the same host. The default is to have just 1 concurrent slot available per host.
+ By increasing the number of slots you can specify how many concurrent processes
+ can work on a given inode without contention, the number should typically be larger
+ than the number of logical cpus, maybe 2 times num_cpus.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:nolock_all_dirs = BOOL</term>
+ <listitem>
+ <para>This option triggers the use of the fileid nolock behavior
+ for all directory inodes, which can be used to deliberately break
+ the lock coherency for all directories.
+ NOTE: Do not use this without knowing what you are doing!
+ It breaks SMB semantics!
+ See <command>fileid:nolock_paths</command> for a more fine grained
+ approach.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:nolock_all_inodes = BOOL</term>
+ <listitem>
+ <para>This option triggers the use of the fileid nolock algorithm
+ for all directoriy inode, which can be used to deliberately break
+ the lock coherency for all directories.
+ NOTE: Do not use this without knowing what you are doing!
+ It breaks SMB semantics and it can lead to data corruption!
+ See <command>fileid:nolock_paths</command> for a more fine grained
+ approach.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:nolock_paths = LIST</term>
+ <listitem>
+ <para>This option specifies a path list referring to files and/or directories,
+ which should use fileid nolock algorithm in order to deliberately break
+ the lock coherency for them. The specified paths can be relative to
+ the share root directory or absolute. The names are case sensitive unix pathnames!
+ Note all paths are only evaluated at tree connect time, when the share is being connected, from there on
+ only the related device and inode numbers from the stat() syscall are compared.
+ Non existing paths will generate a log level 0 message.
+ NOTE: This option should be used with care as it breaks SMB semantics!
+ But it may help in situation where a specific (commonly read-only) inode is highly contended.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>fileid:nolockinode = NUMBER</term>
+ <listitem>
+ <para>This legacy option triggers use of the fileid nolock behavior
+ for the configured inode, while ignoring and device id. This can be used to deliberately break
+ lock coherency for the corresponding file or directory in a
+ cluster. Using the <command>fileid:nolock_paths</command> option is much more flexible and simpler to use.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</refsect1>
+
+<refsect1>
+ <title>EXAMPLES</title>
+
+ <para>Usage of the <command>fileid</command> module with the
+ <command>fsid</command> algorithm:</para>
+
+<programlisting>
+ <smbconfsection name="[global]"/>
+ <smbconfoption name="vfs objects">fileid</smbconfoption>
+ <smbconfoption name="fileid:algorithm">fsid</smbconfoption>
+</programlisting>
+
+ <para>Usage of the <command>fileid</command> module in order
+ avoid load on heavily contended (most likely read-only) inodes.</para>
+
+<programlisting>
+ <smbconfsection name="[global]"/>
+ <smbconfoption name="vfs objects">fileid</smbconfoption>
+ <smbconfoption name="fileid:algorithm">next_module</smbconfoption>
+ <smbconfoption name="fileid:nolock_paths">. ContendedFolder1 /path/to/contended.exe</smbconfoption>
+ <smbconfoption name="fileid:nolock_max_slots">256</smbconfoption>
+</programlisting>
+
+</refsect1>
+
+<refsect1>
+ <title>VERSION</title>
+
+ <para>This man page is part of version &doc.version; of the Samba suite.
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>AUTHOR</title>
+
+ <para>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.</para>
+
+</refsect1>
+
+</refentry>