1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00
samba-mirror/docs-xml/manpages/vfs_fileid.8.xml
Ralph Boehme 517ec63004 vfs_fileid: add "fsname_norootdir_ext" option
This can be used to deliberately break lock coherency between all smbd processes
in the whole cluster for the root directory of a share.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>

Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Sep 25 00:48:45 UTC 2019 on sn-devel-184
2019-09-25 00:48:45 +00:00

194 lines
5.9 KiB
XML

<?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</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>fsname_nodirs</command>, <command>fsid</command> and
<command>hostname</command>. The default value is
<command>fsname</command>.
</para>
<para>The <command>fsname</command> algorithm generates
device id by hashing the kernel device name.
</para>
<para>The <command>fsname_nodirs</command> algorithm generates
device id by hashing the kernel device name for files and by hashing
the hostname for directories. This can be used to deliberately
break lock coherency for directories in a cluster.
</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>hostname</command> algorithm generates device
id by hashing the hostname. This can be used to deliberately
break lock coherency in a cluster.
</para>
<para>The <command>fsname_norootdir</command> algorithm
generates device ids by hashing the kernel device name, except
for the root directory of shares where it will use the hostname
algorithm. This can be used to deliberately break lock coherency
in a cluster for the root directory of a share.
</para>
<para>The <command>fsname_norootdir_ext</command> algorithm
generates device ids by hashing the kernel device name, except
for the root directory of shares where it will use the hostname
algorithm. Additionally it generates an extid based on the
process pid. This can be used to deliberately break lock
coherency between all smbd processes in the whole cluster for
the root directory of a share.
</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:nolockinode</term>
<listitem>
<para>This option triggers use of the fileid hostname algorithm
for the configured inode which can be used to deliberately break
lock coherency for the corresponding file or directory in a
cluster.
</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>
</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>