summaryrefslogtreecommitdiff
path: root/docs-xml/manpages/vfs_fileid.8.xml
blob: 8ab1e30c490f22cb54e8895ac8dd8a63475875c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?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>
		</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>