mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
517ec63004
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
194 lines
5.9 KiB
XML
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>
|