aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2013-09-05 08:38:11 -0400
committerSteve French <smfrench@gmail.com>2013-09-08 15:24:10 -0400
commit30706a545417af50f07b8e47cc2189a2e20a4636 (patch)
tree1dc52316aaa356ba728ec0b612799c314fb9d410 /Documentation
parent73e216a8a42c0ef3d08071705c946c38fdbe12b0 (diff)
cifs: create a new Documentation/ directory and move docfiles into it
Currently, we have a number of documentation files that live under fs/cifs/. Generally, these don't get picked up by distro packagers, since they're in a non-standard location. Move them to a new spot under Documentation/ instead. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/filesystems/cifs/AUTHORS55
-rw-r--r--Documentation/filesystems/cifs/CHANGES1065
-rw-r--r--Documentation/filesystems/cifs/README753
-rw-r--r--Documentation/filesystems/cifs/TODO129
-rw-r--r--Documentation/filesystems/cifs/cifs.txt (renamed from Documentation/filesystems/cifs.txt)0
5 files changed, 2002 insertions, 0 deletions
diff --git a/Documentation/filesystems/cifs/AUTHORS b/Documentation/filesystems/cifs/AUTHORS
new file mode 100644
index 000000000000..ea940b1db77b
--- /dev/null
+++ b/Documentation/filesystems/cifs/AUTHORS
@@ -0,0 +1,55 @@
1Original Author
2===============
3Steve French (sfrench@samba.org)
4
5The author wishes to express his appreciation and thanks to:
6Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS
7improvements. Thanks to IBM for allowing me time and test resources to pursue
8this project, to Jim McDonough from IBM (and the Samba Team) for his help, to
9the IBM Linux JFS team for explaining many esoteric Linux filesystem features.
10Jeremy Allison of the Samba team has done invaluable work in adding the server
11side of the original CIFS Unix extensions and reviewing and implementing
12portions of the newer CIFS POSIX extensions into the Samba 3 file server. Thank
13Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client)
14for proving years ago that very good smb/cifs clients could be done on Unix-like
15operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John
16Newbigin and others for their work on the Linux smbfs module. Thanks to
17the other members of the Storage Network Industry Association CIFS Technical
18Workgroup for their work specifying this highly complex protocol and finally
19thanks to the Samba team for their technical advice and encouragement.
20
21Patch Contributors
22------------------
23Zwane Mwaikambo
24Andi Kleen
25Amrut Joshi
26Shobhit Dayal
27Sergey Vlasov
28Richard Hughes
29Yury Umanets
30Mark Hamzy (for some of the early cifs IPv6 work)
31Domen Puncer
32Jesper Juhl (in particular for lots of whitespace/formatting cleanup)
33Vince Negri and Dave Stahl (for finding an important caching bug)
34Adrian Bunk (kcalloc cleanups)
35Miklos Szeredi
36Kazeon team for various fixes especially for 2.4 version.
37Asser Ferno (Change Notify support)
38Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup
39Gunter Kukkukk (testing and suggestions for support of old servers)
40Igor Mammedov (DFS support)
41Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
42
43Test case and Bug Report contributors
44-------------------------------------
45Thanks to those in the community who have submitted detailed bug reports
46and debug of problems they have found: Jochen Dolze, David Blaine,
47Rene Scharfe, Martin Josefsson, Alexander Wild, Anthony Liguori,
48Lars Muller, Urban Widmark, Massimiliano Ferrero, Howard Owen,
49Olaf Kirch, Kieron Briggs, Nick Millington and others. Also special
50mention to the Stanford Checker (SWAT) which pointed out many minor
51bugs in error paths. Valuable suggestions also have come from Al Viro
52and Dave Miller.
53
54And thanks to the IBM LTC and Power test teams and SuSE testers for
55finding multiple bugs during excellent stress test runs.
diff --git a/Documentation/filesystems/cifs/CHANGES b/Documentation/filesystems/cifs/CHANGES
new file mode 100644
index 000000000000..bc0025cdd1c9
--- /dev/null
+++ b/Documentation/filesystems/cifs/CHANGES
@@ -0,0 +1,1065 @@
1Version 1.62
2------------
3Add sockopt=TCP_NODELAY mount option. EA (xattr) routines hardened
4to more strictly handle corrupt frames.
5
6Version 1.61
7------------
8Fix append problem to Samba servers (files opened with O_APPEND could
9have duplicated data). Fix oops in cifs_lookup. Workaround problem
10mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session.
11Disable use of server inode numbers when server only
12partially supports them (e.g. for one server querying inode numbers on
13FindFirst fails but QPathInfo queries works). Fix oops with dfs in
14cifs_put_smb_ses. Fix mmap to work on directio mounts (needed
15for OpenOffice when on forcedirectio mount e.g.)
16
17Version 1.60
18-------------
19Fix memory leak in reconnect. Fix oops in DFS mount error path.
20Set s_maxbytes to smaller (the max that vfs can handle) so that
21sendfile will now work over cifs mounts again. Add noforcegid
22and noforceuid mount parameters. Fix small mem leak when using
23ntlmv2. Fix 2nd mount to same server but with different port to
24be allowed (rather than reusing the 1st port) - only when the
25user explicitly overrides the port on the 2nd mount.
26
27Version 1.59
28------------
29Client uses server inode numbers (which are persistent) rather than
30client generated ones by default (mount option "serverino" turned
31on by default if server supports it). Add forceuid and forcegid
32mount options (so that when negotiating unix extensions specifying
33which uid mounted does not immediately force the server's reported
34uids to be overridden). Add support for scope mount parm. Improve
35hard link detection to use same inode for both. Do not set
36read-only dos attribute on directories (for chmod) since Windows
37explorer special cases this attribute bit for directories for
38a different purpose.
39
40Version 1.58
41------------
42Guard against buffer overruns in various UCS-2 to UTF-8 string conversions
43when the UTF-8 string is composed of unusually long (more than 4 byte) converted
44characters. Add support for mounting root of a share which redirects immediately
45to DFS target. Convert string conversion functions from Unicode to more
46accurately mark string length before allocating memory (which may help the
47rare cases where a UTF-8 string is much larger than the UCS2 string that
48we converted from). Fix endianness of the vcnum field used during
49session setup to distinguish multiple mounts to same server from different
50userids. Raw NTLMSSP fixed (it requires /proc/fs/cifs/experimental
51flag to be set to 2, and mount must enable krb5 to turn on extended security).
52Performance of file create to Samba improved (posix create on lookup
53removes 1 of 2 network requests sent on file create)
54
55Version 1.57
56------------
57Improve support for multiple security contexts to the same server. We
58used to use the same "vcnumber" for all connections which could cause
59the server to treat subsequent connections, especially those that
60are authenticated as guest, as reconnections, invalidating the earlier
61user's smb session. This fix allows cifs to mount multiple times to the
62same server with different userids without risking invalidating earlier
63established security contexts. fsync now sends SMB Flush operation
64to better ensure that we wait for server to write all of the data to
65server disk (not just write it over the network). Add new mount
66parameter to allow user to disable sending the (slow) SMB flush on
67fsync if desired (fsync still flushes all cached write data to the server).
68Posix file open support added (turned off after one attempt if server
69fails to support it properly, as with Samba server versions prior to 3.3.2)
70Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too
71little memory for the "nativeFileSystem" field returned by the server
72during mount). Endian convert inode numbers if necessary (makes it easier
73to compare inode numbers on network files from big endian systems).
74
75Version 1.56
76------------
77Add "forcemandatorylock" mount option to allow user to use mandatory
78rather than posix (advisory) byte range locks, even though server would
79support posix byte range locks. Fix query of root inode when prefixpath
80specified and user does not have access to query information about the
81top of the share. Fix problem in 2.6.28 resolving DFS paths to
82Samba servers (worked to Windows). Fix rmdir so that pending search
83(readdir) requests do not get invalid results which include the now
84removed directory. Fix oops in cifs_dfs_ref.c when prefixpath is not reachable
85when using DFS. Add better file create support to servers which support
86the CIFS POSIX protocol extensions (this adds support for new flags
87on create, and improves semantics for write of locked ranges).
88
89Version 1.55
90------------
91Various fixes to make delete of open files behavior more predictable
92(when delete of an open file fails we mark the file as "delete-on-close"
93in a way that more servers accept, but only if we can first rename the
94file to a temporary name). Add experimental support for more safely
95handling fcntl(F_SETLEASE). Convert cifs to using blocking tcp
96sends, and also let tcp autotune the socket send and receive buffers.
97This reduces the number of EAGAIN errors returned by TCP/IP in
98high stress workloads (and the number of retries on socket writes
99when sending large SMBWriteX requests). Fix case in which a portion of
100data can in some cases not get written to the file on the server before the
101file is closed. Fix DFS parsing to properly handle path consumed field,
102and to handle certain codepage conversions better. Fix mount and
103umount race that can cause oops in mount or umount or reconnect.
104
105Version 1.54
106------------
107Fix premature write failure on congested networks (we would give up
108on EAGAIN from the socket too quickly on large writes).
109Cifs_mkdir and cifs_create now respect the setgid bit on parent dir.
110Fix endian problems in acl (mode from/to cifs acl) on bigendian
111architectures. Fix problems with preserving timestamps on copying open
112files (e.g. "cp -a") to Windows servers. For mkdir and create honor setgid bit
113on parent directory when server supports Unix Extensions but not POSIX
114create. Update cifs.upcall version to handle new Kerberos sec flags
115(this requires update of cifs.upcall program from Samba). Fix memory leak
116on dns_upcall (resolving DFS referralls). Fix plain text password
117authentication (requires setting SecurityFlags to 0x30030 to enable
118lanman and plain text though). Fix writes to be at correct offset when
119file is open with O_APPEND and file is on a directio (forcediretio) mount.
120Fix bug in rewinding readdir directory searches. Add nodfs mount option.
121
122Version 1.53
123------------
124DFS support added (Microsoft Distributed File System client support needed
125for referrals which enable a hierarchical name space among servers).
126Disable temporary caching of mode bits to servers which do not support
127storing of mode (e.g. Windows servers, when client mounts without cifsacl
128mount option) and add new "dynperm" mount option to enable temporary caching
129of mode (enable old behavior). Fix hang on mount caused when server crashes
130tcp session during negotiate protocol.
131
132Version 1.52
133------------
134Fix oops on second mount to server when null auth is used.
135Enable experimental Kerberos support. Return writebehind errors on flush
136and sync so that events like out of disk space get reported properly on
137cached files. Fix setxattr failure to certain Samba versions. Fix mount
138of second share to disconnected server session (autoreconnect on this).
139Add ability to modify cifs acls for handling chmod (when mounted with
140cifsacl flag). Fix prefixpath path separator so we can handle mounts
141with prefixpaths longer than one directory (one path component) when
142mounted to Windows servers. Fix slow file open when cifsacl
143enabled. Fix memory leak in FindNext when the SMB call returns -EBADF.
144
145
146Version 1.51
147------------
148Fix memory leak in statfs when mounted to very old servers (e.g.
149Windows 9x). Add new feature "POSIX open" which allows servers
150which support the current POSIX Extensions to provide better semantics
151(e.g. delete for open files opened with posix open). Take into
152account umask on posix mkdir not just older style mkdir. Add
153ability to mount to IPC$ share (which allows CIFS named pipes to be
154opened, read and written as if they were files). When 1st tree
155connect fails (e.g. due to signing negotiation failure) fix
156leak that causes cifsd not to stop and rmmod to fail to cleanup
157cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on
158bigendian architectures. Fix possible memory corruption when
159EAGAIN returned on kern_recvmsg. Return better error if server
160requires packet signing but client has disabled it. When mounted
161with cifsacl mount option - mode bits are approximated based
162on the contents of the ACL of the file or directory. When cifs
163mount helper is missing convert make sure that UNC name
164has backslash (not forward slash) between ip address of server
165and the share name.
166
167Version 1.50
168------------
169Fix NTLMv2 signing. NFS server mounted over cifs works (if cifs mount is
170done with "serverino" mount option). Add support for POSIX Unlink
171(helps with certain sharing violation cases when server such as
172Samba supports newer POSIX CIFS Protocol Extensions). Add "nounix"
173mount option to allow disabling the CIFS Unix Extensions for just
174that mount. Fix hang on spinlock in find_writable_file (race when
175reopening file after session crash). Byte range unlock request to
176windows server could unlock more bytes (on server copy of file)
177than intended if start of unlock request is well before start of
178a previous byte range lock that we issued.
179
180Version 1.49
181------------
182IPv6 support. Enable ipv6 addresses to be passed on mount (put the ipv6
183address after the "ip=" mount option, at least until mount.cifs is fixed to
184handle DNS host to ipv6 name translation). Accept override of uid or gid
185on mount even when Unix Extensions are negotiated (it used to be ignored
186when Unix Extensions were ignored). This allows users to override the
187default uid and gid for files when they are certain that the uids or
188gids on the server do not match those of the client. Make "sec=none"
189mount override username (so that null user connection is attempted)
190to match what documentation said. Support for very large reads, over 127K,
191available to some newer servers (such as Samba 3.0.26 and later but
192note that it also requires setting CIFSMaxBufSize at module install
193time to a larger value which may hurt performance in some cases).
194Make sign option force signing (or fail if server does not support it).
195
196Version 1.48
197------------
198Fix mtime bouncing around from local idea of last write times to remote time.
199Fix hang (in i_size_read) when simultaneous size update of same remote file
200on smp system corrupts sequence number. Do not reread unnecessarily partial page
201(which we are about to overwrite anyway) when writing out file opened rw.
202When DOS attribute of file on non-Unix server's file changes on the server side
203from read-only back to read-write, reflect this change in default file mode
204(we had been leaving a file's mode read-only until the inode were reloaded).
205Allow setting of attribute back to ATTR_NORMAL (removing readonly dos attribute
206when archive dos attribute not set and we are changing mode back to writeable
207on server which does not support the Unix Extensions). Remove read only dos
208attribute on chmod when adding any write permission (ie on any of
209user/group/other (not all of user/group/other ie 0222) when
210mounted to windows. Add support for POSIX MkDir (slight performance
211enhancement and eliminates the network race between the mkdir and set
212path info of the mode).
213
214
215Version 1.47
216------------
217Fix oops in list_del during mount caused by unaligned string.
218Fix file corruption which could occur on some large file
219copies caused by writepages page i/o completion bug.
220Seek to SEEK_END forces check for update of file size for non-cached
221files. Allow file size to be updated on remote extend of locally open,
222non-cached file. Fix reconnect to newer Samba servers (or other servers
223which support the CIFS Unix/POSIX extensions) so that we again tell the
224server the Unix/POSIX cifs capabilities which we support (SetFSInfo).
225Add experimental support for new POSIX Open/Mkdir (which returns
226stat information on the open, and allows setting the mode).
227
228Version 1.46
229------------
230Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps.
231Allow null user to be specified on mount ("username="). Do not return
232EINVAL on readdir when filldir fails due to overwritten blocksize
233(fixes FC problem). Return error in rename 2nd attempt retry (ie report
234if rename by handle also fails, after rename by path fails, we were
235not reporting whether the retry worked or not). Fix NTLMv2 to
236work to Windows servers (mount with option "sec=ntlmv2").
237
238Version 1.45
239------------
240Do not time out lockw calls when using posix extensions. Do not
241time out requests if server still responding reasonably fast
242on requests on other threads. Improve POSIX locking emulation,
243(lock cancel now works, and unlock of merged range works even
244to Windows servers now). Fix oops on mount to lanman servers
245(win9x, os/2 etc.) when null password. Do not send listxattr
246(SMB to query all EAs) if nouser_xattr specified. Fix SE Linux
247problem (instantiate inodes/dentries in right order for readdir).
248
249Version 1.44
250------------
251Rewritten sessionsetup support, including support for legacy SMB
252session setup needed for OS/2 and older servers such as Windows 95 and 98.
253Fix oops on ls to OS/2 servers. Add support for level 1 FindFirst
254so we can do search (ls etc.) to OS/2. Do not send NTCreateX
255or recent levels of FindFirst unless server says it supports NT SMBs
256(instead use legacy equivalents from LANMAN dialect). Fix to allow
257NTLMv2 authentication support (now can use stronger password hashing
258on mount if corresponding /proc/fs/cifs/SecurityFlags is set (0x4004).
259Allow override of global cifs security flags on mount via "sec=" option(s).
260
261Version 1.43
262------------
263POSIX locking to servers which support CIFS POSIX Extensions
264(disabled by default controlled by proc/fs/cifs/Experimental).
265Handle conversion of long share names (especially Asian languages)
266to Unicode during mount. Fix memory leak in sess struct on reconnect.
267Fix rare oops after acpi suspend. Fix O_TRUNC opens to overwrite on
268cifs open which helps rare case when setpathinfo fails or server does
269not support it.
270
271Version 1.42
272------------
273Fix slow oplock break when mounted to different servers at the same time and
274the tids match and we try to find matching fid on wrong server. Fix read
275looping when signing required by server (2.6.16 kernel only). Fix readdir
276vs. rename race which could cause each to hang. Return . and .. even
277if server does not. Allow searches to skip first three entries and
278begin at any location. Fix oops in find_writeable_file.
279
280Version 1.41
281------------
282Fix NTLMv2 security (can be enabled in /proc/fs/cifs) so customers can
283configure stronger authentication. Fix sfu symlinks so they can
284be followed (not just recognized). Fix wraparound of bcc on
285read responses when buffer size over 64K and also fix wrap of
286max smb buffer size when CIFSMaxBufSize over 64K. Fix oops in
287cifs_user_read and cifs_readpages (when EAGAIN on send of smb
288on socket is returned over and over). Add POSIX (advisory) byte range
289locking support (requires server with newest CIFS UNIX Extensions
290to the protocol implemented). Slow down negprot slightly in port 139
291RFC1001 case to give session_init time on buggy servers.
292
293Version 1.40
294------------
295Use fsuid (fsgid) more consistently instead of uid (gid). Improve performance
296of readpages by eliminating one extra memcpy. Allow update of file size
297from remote server even if file is open for write as long as mount is
298directio. Recognize share mode security and send NTLM encrypted password
299on tree connect if share mode negotiated.
300
301Version 1.39
302------------
303Defer close of a file handle slightly if pending writes depend on that handle
304(this reduces the EBADF bad file handle errors that can be logged under heavy
305stress on writes). Modify cifs Kconfig options to expose CONFIG_CIFS_STATS2
306Fix SFU style symlinks and mknod needed for servers which do not support the
307CIFS Unix Extensions. Fix setfacl/getfacl on bigendian. Timeout negative
308dentries so files that the client sees as deleted but that later get created
309on the server will be recognized. Add client side permission check on setattr.
310Timeout stuck requests better (where server has never responded or sent corrupt
311responses)
312
313Version 1.38
314------------
315Fix tcp socket retransmission timeouts (e.g. on ENOSPACE from the socket)
316to be smaller at first (but increasing) so large write performance performance
317over GigE is better. Do not hang thread on illegal byte range lock response
318from Windows (Windows can send an RFC1001 size which does not match smb size) by
319allowing an SMBs TCP length to be up to a few bytes longer than it should be.
320wsize and rsize can now be larger than negotiated buffer size if server
321supports large readx/writex, even when directio mount flag not specified.
322Write size will in many cases now be 16K instead of 4K which greatly helps
323file copy performance on lightly loaded networks. Fix oops in dnotify
324when experimental config flag enabled. Make cifsFYI more granular.
325
326Version 1.37
327------------
328Fix readdir caching when unlink removes file in current search buffer,
329and this is followed by a rewind search to just before the deleted entry.
330Do not attempt to set ctime unless atime and/or mtime change requested
331(most servers throw it away anyway). Fix length check of received smbs
332to be more accurate. Fix big endian problem with mapchars mount option,
333and with a field returned by statfs.
334
335Version 1.36
336------------
337Add support for mounting to older pre-CIFS servers such as Windows9x and ME.
338For these older servers, add option for passing netbios name of server in
339on mount (servernetbiosname). Add suspend support for power management, to
340avoid cifsd thread preventing software suspend from working.
341Add mount option for disabling the default behavior of sending byte range lock
342requests to the server (necessary for certain applications which break with
343mandatory lock behavior such as Evolution), and also mount option for
344requesting case insensitive matching for path based requests (requesting
345case sensitive is the default).
346
347Version 1.35
348------------
349Add writepage performance improvements. Fix path name conversions
350for long filenames on mounts which were done with "mapchars" mount option
351specified. Ensure multiplex ids do not collide. Fix case in which
352rmmod can oops if done soon after last unmount. Fix truncated
353search (readdir) output when resume filename was a long filename.
354Fix filename conversion when mapchars mount option was specified and
355filename was a long filename.
356
357Version 1.34
358------------
359Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
360Do not oops if root user kills cifs oplock kernel thread or
361kills the cifsd thread (NB: killing the cifs kernel threads is not
362recommended, unmount and rmmod cifs will kill them when they are
363no longer needed). Fix readdir to ASCII servers (ie older servers
364which do not support Unicode) and also require asterisk.
365Fix out of memory case in which data could be written one page
366off in the page cache.
367
368Version 1.33
369------------
370Fix caching problem, in which readdir of directory containing a file
371which was cached could cause the file's time stamp to be updated
372without invalidating the readahead data (so we could get stale
373file data on the client for that file even as the server copy changed).
374Cleanup response processing so cifsd can not loop when abnormally
375terminated.
376
377
378Version 1.32
379------------
380Fix oops in ls when Transact2 FindFirst (or FindNext) returns more than one
381transact response for an SMB request and search entry split across two frames.
382Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server)
383as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
384unless server explicitly claims to support them in CIFS Unix extensions
385POSIX ACL capability bit. Fix packet signing when multiuser mounting with
386different users from the same client to the same server. Fix oops in
387cifs_close. Add mount option for remapping reserved characters in
388filenames (also allow recognizing files with created by SFU which have any
389of these seven reserved characters, except backslash, to be recognized).
390Fix invalid transact2 message (we were sometimes trying to interpret
391oplock breaks as SMB responses). Add ioctl for checking that the
392current uid matches the uid of the mounter (needed by umount.cifs).
393Reduce the number of large buffer allocations in cifs response processing
394(significantly reduces memory pressure under heavy stress with multiple
395processes accessing the same server at the same time).
396
397Version 1.31
398------------
399Fix updates of DOS attributes and time fields so that files on NT4 servers
400do not get marked delete on close. Display sizes of cifs buffer pools in
401cifs stats. Fix oops in unmount when cifsd thread being killed by
402shutdown. Add generic readv/writev and aio support. Report inode numbers
403consistently in readdir and lookup (when serverino mount option is
404specified use the inode number that the server reports - for both lookup
405and readdir, otherwise by default the locally generated inode number is used
406for inodes created in either path since servers are not always able to
407provide unique inode numbers when exporting multiple volumes from under one
408sharename).
409
410Version 1.30
411------------
412Allow new nouser_xattr mount parm to disable xattr support for user namespace.
413Do not flag user_xattr mount parm in dmesg. Retry failures setting file time
414(mostly affects NT4 servers) by retry with handle based network operation.
415Add new POSIX Query FS Info for returning statfs info more accurately.
416Handle passwords with multiple commas in them.
417
418Version 1.29
419------------
420Fix default mode in sysfs of cifs module parms. Remove old readdir routine.
421Fix capabilities flags for large readx so as to allow reads larger than 64K.
422
423Version 1.28
424------------
425Add module init parm for large SMB buffer size (to allow it to be changed
426from its default of 16K) which is especially useful for large file copy
427when mounting with the directio mount option. Fix oops after
428returning from mount when experimental ExtendedSecurity enabled and
429SpnegoNegotiated returning invalid error. Fix case to retry better when
430peek returns from 1 to 3 bytes on socket which should have more data.
431Fixed path based calls (such as cifs lookup) to handle path names
432longer than 530 (now can handle PATH_MAX). Fix pass through authentication
433from Samba server to DC (Samba required dummy LM password).
434
435Version 1.27
436------------
437Turn off DNOTIFY (directory change notification support) by default
438(unless built with the experimental flag) to fix hang with KDE
439file browser. Fix DNOTIFY flag mappings. Fix hang (in wait_event
440waiting on an SMB response) in SendReceive when session dies but
441reconnects quickly from another task. Add module init parms for
442minimum number of large and small network buffers in the buffer pools,
443and for the maximum number of simultaneous requests.
444
445Version 1.26
446------------
447Add setfacl support to allow setting of ACLs remotely to Samba 3.10 and later
448and other POSIX CIFS compliant servers. Fix error mapping for getfacl
449to EOPNOTSUPP when server does not support posix acls on the wire. Fix
450improperly zeroed buffer in CIFS Unix extensions set times call.
451
452Version 1.25
453------------
454Fix internationalization problem in cifs readdir with filenames that map to
455longer UTF-8 strings than the string on the wire was in Unicode. Add workaround
456for readdir to netapp servers. Fix search rewind (seek into readdir to return
457non-consecutive entries). Do not do readdir when server negotiates
458buffer size to small to fit filename. Add support for reading POSIX ACLs from
459the server (add also acl and noacl mount options).
460
461Version 1.24
462------------
463Optionally allow using server side inode numbers, rather than client generated
464ones by specifying mount option "serverino" - this is required for some apps
465to work which double check hardlinked files and have persistent inode numbers.
466
467Version 1.23
468------------
469Multiple bigendian fixes. On little endian systems (for reconnect after
470network failure) fix tcp session reconnect code so we do not try first
471to reconnect on reverse of port 445. Treat reparse points (NTFS junctions)
472as directories rather than symlinks because we can do follow link on them.
473
474Version 1.22
475------------
476Add config option to enable XATTR (extended attribute) support, mapping
477xattr names in the "user." namespace space to SMB/CIFS EAs. Lots of
478minor fixes pointed out by the Stanford SWAT checker (mostly missing
479or out of order NULL pointer checks in little used error paths).
480
481Version 1.21
482------------
483Add new mount parm to control whether mode check (generic_permission) is done
484on the client. If Unix extensions are enabled and the uids on the client
485and server do not match, client permission checks are meaningless on
486server uids that do not exist on the client (this does not affect the
487normal ACL check which occurs on the server). Fix default uid
488on mknod to match create and mkdir. Add optional mount parm to allow
489override of the default uid behavior (in which the server sets the uid
490and gid of newly created files). Normally for network filesystem mounts
491user want the server to set the uid/gid on newly created files (rather than
492using uid of the client processes you would in a local filesystem).
493
494Version 1.20
495------------
496Make transaction counts more consistent. Merge /proc/fs/cifs/SimultaneousOps
497info into /proc/fs/cifs/DebugData. Fix oops in rare oops in readdir
498(in build_wildcard_path_from_dentry). Fix mknod to pass type field
499(block/char/fifo) properly. Remove spurious mount warning log entry when
500credentials passed as mount argument. Set major/minor device number in
501inode for block and char devices when unix extensions enabled.
502
503Version 1.19
504------------
505Fix /proc/fs/cifs/Stats and DebugData display to handle larger
506amounts of return data. Properly limit requests to MAX_REQ (50
507is the usual maximum active multiplex SMB/CIFS requests per server).
508Do not kill cifsd (and thus hurt the other SMB session) when more than one
509session to the same server (but with different userids) exists and one
510of the two user's smb sessions is being removed while leaving the other.
511Do not loop reconnecting in cifsd demultiplex thread when admin
512kills the thread without going through unmount.
513
514Version 1.18
515------------
516Do not rename hardlinked files (since that should be a noop). Flush
517cached write behind data when reopening a file after session abend,
518except when already in write. Grab per socket sem during reconnect
519to avoid oops in sendmsg if overlapping with reconnect. Do not
520reset cached inode file size on readdir for files open for write on
521client.
522
523
524Version 1.17
525------------
526Update number of blocks in file so du command is happier (in Linux a fake
527blocksize of 512 is required for calculating number of blocks in inode).
528Fix prepare write of partial pages to read in data from server if possible.
529Fix race on tcpStatus field between unmount and reconnection code, causing
530cifsd process sometimes to hang around forever. Improve out of memory
531checks in cifs_filldir
532
533Version 1.16
534------------
535Fix incorrect file size in file handle based setattr on big endian hardware.
536Fix oops in build_path_from_dentry when out of memory. Add checks for invalid
537and closing file structs in writepage/partialpagewrite. Add statistics
538for each mounted share (new menuconfig option). Fix endianness problem in
539volume information displayed in /proc/fs/cifs/DebugData (only affects
540affects big endian architectures). Prevent renames while constructing
541path names for open, mkdir and rmdir.
542
543Version 1.15
544------------
545Change to mempools for alloc smb request buffers and multiplex structs
546to better handle low memory problems (and potential deadlocks).
547
548Version 1.14
549------------
550Fix incomplete listings of large directories on Samba servers when Unix
551extensions enabled. Fix oops when smb_buffer can not be allocated. Fix
552rename deadlock when writing out dirty pages at same time.
553
554Version 1.13
555------------
556Fix open of files in which O_CREATE can cause the mode to change in
557some cases. Fix case in which retry of write overlaps file close.
558Fix PPC64 build error. Reduce excessive stack usage in smb password
559hashing. Fix overwrite of Linux user's view of file mode to Windows servers.
560
561Version 1.12
562------------
563Fixes for large file copy, signal handling, socket retry, buffer
564allocation and low memory situations.
565
566Version 1.11
567------------
568Better port 139 support to Windows servers (RFC1001/RFC1002 Session_Initialize)
569also now allowing support for specifying client netbiosname. NT4 support added.
570
571Version 1.10
572------------
573Fix reconnection (and certain failed mounts) to properly wake up the
574blocked users thread so it does not seem hung (in some cases was blocked
575until the cifs receive timeout expired). Fix spurious error logging
576to kernel log when application with open network files killed.
577
578Version 1.09
579------------
580Fix /proc/fs module unload warning message (that could be logged
581to the kernel log). Fix intermittent failure in connectathon
582test7 (hardlink count not immediately refreshed in case in which
583inode metadata can be incorrectly kept cached when time near zero)
584
585Version 1.08
586------------
587Allow file_mode and dir_mode (specified at mount time) to be enforced
588locally (the server already enforced its own ACLs too) for servers
589that do not report the correct mode (do not support the
590CIFS Unix Extensions).
591
592Version 1.07
593------------
594Fix some small memory leaks in some unmount error paths. Fix major leak
595of cache pages in readpages causing multiple read oriented stress
596testcases (including fsx, and even large file copy) to fail over time.
597
598Version 1.06
599------------
600Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server.
601This allows files that differ only in case and improves performance of file
602creation and file open to such servers. Fix semaphore conflict which causes
603slow delete of open file to Samba (which unfortunately can cause an oplock
604break to self while vfs_unlink held i_sem) which can hang for 20 seconds.
605
606Version 1.05
607------------
608fixes to cifs_readpages for fsx test case
609
610Version 1.04
611------------
612Fix caching data integrity bug when extending file size especially when no
613oplock on file. Fix spurious logging of valid already parsed mount options
614that are parsed outside of the cifs vfs such as nosuid.
615
616
617Version 1.03
618------------
619Connect to server when port number override not specified, and tcp port
620unitialized. Reset search to restart at correct file when kernel routine
621filldir returns error during large directory searches (readdir).
622
623Version 1.02
624------------
625Fix caching problem when files opened by multiple clients in which
626page cache could contain stale data, and write through did
627not occur often enough while file was still open when read ahead
628(read oplock) not allowed. Treat "sep=" when first mount option
629as an override of comma as the default separator between mount
630options.
631
632Version 1.01
633------------
634Allow passwords longer than 16 bytes. Allow null password string.
635
636Version 1.00
637------------
638Gracefully clean up failed mounts when attempting to mount to servers such as
639Windows 98 that terminate tcp sessions during protocol negotiation. Handle
640embedded commas in mount parsing of passwords.
641
642Version 0.99
643------------
644Invalidate local inode cached pages on oplock break and when last file
645instance is closed so that the client does not continue using stale local
646copy rather than later modified server copy of file. Do not reconnect
647when server drops the tcp session prematurely before negotiate
648protocol response. Fix oops in reopen_file when dentry freed. Allow
649the support for CIFS Unix Extensions to be disabled via proc interface.
650
651Version 0.98
652------------
653Fix hang in commit_write during reconnection of open files under heavy load.
654Fix unload_nls oops in a mount failure path. Serialize writes to same socket
655which also fixes any possible races when cifs signatures are enabled in SMBs
656being sent out of signature sequence number order.
657
658Version 0.97
659------------
660Fix byte range locking bug (endian problem) causing bad offset and
661length.
662
663Version 0.96
664------------
665Fix oops (in send_sig) caused by CIFS unmount code trying to
666wake up the demultiplex thread after it had exited. Do not log
667error on harmless oplock release of closed handle.
668
669Version 0.95
670------------
671Fix unsafe global variable usage and password hash failure on gcc 3.3.1
672Fix problem reconnecting secondary mounts to same server after session
673failure. Fix invalid dentry - race in mkdir when directory gets created
674by another client between the lookup and mkdir.
675
676Version 0.94
677------------
678Fix to list processing in reopen_files. Fix reconnection when server hung
679but tcpip session still alive. Set proper timeout on socket read.
680
681Version 0.93
682------------
683Add missing mount options including iocharset. SMP fixes in write and open.
684Fix errors in reconnecting after TCP session failure. Fix module unloading
685of default nls codepage
686
687Version 0.92
688------------
689Active smb transactions should never go negative (fix double FreeXid). Fix
690list processing in file routines. Check return code on kmalloc in open.
691Fix spinlock usage for SMP.
692
693Version 0.91
694------------
695Fix oops in reopen_files when invalid dentry. drop dentry on server rename
696and on revalidate errors. Fix cases where pid is now tgid. Fix return code
697on create hard link when server does not support them.
698
699Version 0.90
700------------
701Fix scheduling while atomic error in getting inode info on newly created file.
702Fix truncate of existing files opened with O_CREAT but not O_TRUNC set.
703
704Version 0.89
705------------
706Fix oops on write to dead tcp session. Remove error log write for case when file open
707O_CREAT but not O_EXCL
708
709Version 0.88
710------------
711Fix non-POSIX behavior on rename of open file and delete of open file by taking
712advantage of trans2 SetFileInfo rename facility if available on target server.
713Retry on ENOSPC and EAGAIN socket errors.
714
715Version 0.87
716------------
717Fix oops on big endian readdir. Set blksize to be even power of two (2**blkbits) to fix
718allocation size miscalculation. After oplock token lost do not read through
719cache.
720
721Version 0.86
722------------
723Fix oops on empty file readahead. Fix for file size handling for locally cached files.
724
725Version 0.85
726------------
727Fix oops in mkdir when server fails to return inode info. Fix oops in reopen_files
728during auto reconnection to server after server recovered from failure.
729
730Version 0.84
731------------
732Finish support for Linux 2.5 open/create changes, which removes the
733redundant NTCreate/QPathInfo/close that was sent during file create.
734Enable oplock by default. Enable packet signing by default (needed to
735access many recent Windows servers)
736
737Version 0.83
738------------
739Fix oops when mounting to long server names caused by inverted parms to kmalloc.
740Fix MultiuserMount (/proc/fs/cifs configuration setting) so that when enabled
741we will choose a cifs user session (smb uid) that better matches the local
742uid if a) the mount uid does not match the current uid and b) we have another
743session to the same server (ip address) for a different mount which
744matches the current local uid.
745
746Version 0.82
747------------
748Add support for mknod of block or character devices. Fix oplock
749code (distributed caching) to properly send response to oplock
750break from server.
751
752Version 0.81
753------------
754Finish up CIFS packet digital signing for the default
755NTLM security case. This should help Windows 2003
756network interoperability since it is common for
757packet signing to be required now. Fix statfs (stat -f)
758which recently started returning errors due to
759invalid value (-1 instead of 0) being set in the
760struct kstatfs f_ffiles field.
761
762Version 0.80
763-----------
764Fix oops on stopping oplock thread when removing cifs when
765built as module.
766
767Version 0.79
768------------
769Fix mount options for ro (readonly), uid, gid and file and directory mode.
770
771Version 0.78
772------------
773Fix errors displayed on failed mounts to be more understandable.
774Fixed various incorrect or misleading smb to posix error code mappings.
775
776Version 0.77
777------------
778Fix display of NTFS DFS junctions to display as symlinks.
779They are the network equivalent. Fix oops in
780cifs_partialpagewrite caused by missing spinlock protection
781of openfile linked list. Allow writebehind caching errors to
782be returned to the application at file close.
783
784Version 0.76
785------------
786Clean up options displayed in /proc/mounts by show_options to
787be more consistent with other filesystems.
788
789Version 0.75
790------------
791Fix delete of readonly file to Windows servers. Reflect
792presence or absence of read only dos attribute in mode
793bits for servers that do not support CIFS Unix extensions.
794Fix shortened results on readdir of large directories to
795servers supporting CIFS Unix extensions (caused by
796incorrect resume key).
797
798Version 0.74
799------------
800Fix truncate bug (set file size) that could cause hangs e.g. running fsx
801
802Version 0.73
803------------
804unload nls if mount fails.
805
806Version 0.72
807------------
808Add resume key support to search (readdir) code to workaround
809Windows bug. Add /proc/fs/cifs/LookupCacheEnable which
810allows disabling caching of attribute information for
811lookups.
812
813Version 0.71
814------------
815Add more oplock handling (distributed caching code). Remove
816dead code. Remove excessive stack space utilization from
817symlink routines.
818
819Version 0.70
820------------
821Fix oops in get dfs referral (triggered when null path sent in to
822mount). Add support for overriding rsize at mount time.
823
824Version 0.69
825------------
826Fix buffer overrun in readdir which caused intermittent kernel oopses.
827Fix writepage code to release kmap on write data. Allow "-ip=" new
828mount option to be passed in on parameter distinct from the first part
829(server name portion of) the UNC name. Allow override of the
830tcp port of the target server via new mount option "-port="
831
832Version 0.68
833------------
834Fix search handle leak on rewind. Fix setuid and gid so that they are
835reflected in the local inode immediately. Cleanup of whitespace
836to make 2.4 and 2.5 versions more consistent.
837
838
839Version 0.67
840------------
841Fix signal sending so that captive thread (cifsd) exits on umount
842(which was causing the warning in kmem_cache_free of the request buffers
843at rmmod time). This had broken as a sideeffect of the recent global
844kernel change to daemonize. Fix memory leak in readdir code which
845showed up in "ls -R" (and applications that did search rewinding).
846
847Version 0.66
848------------
849Reconnect tids and fids after session reconnection (still do not
850reconnect byte range locks though). Fix problem caching
851lookup information for directory inodes, improving performance,
852especially in deep directory trees. Fix various build warnings.
853
854Version 0.65
855------------
856Finish fixes to commit write for caching/readahead consistency. fsx
857now works to Samba servers. Fix oops caused when readahead
858was interrupted by a signal.
859
860Version 0.64
861------------
862Fix data corruption (in partial page after truncate) that caused fsx to
863fail to Windows servers. Cleaned up some extraneous error logging in
864common error paths. Add generic sendfile support.
865
866Version 0.63
867------------
868Fix memory leak in AllocMidQEntry.
869Finish reconnection logic, so connection with server can be dropped
870(or server rebooted) and the cifs client will reconnect.
871
872Version 0.62
873------------
874Fix temporary socket leak when bad userid or password specified
875(or other SMBSessSetup failure). Increase maximum buffer size to slightly
876over 16K to allow negotiation of up to Samba and Windows server default read
877sizes. Add support for readpages
878
879Version 0.61
880------------
881Fix oops when username not passed in on mount. Extensive fixes and improvements
882to error logging (strip redundant newlines, change debug macros to ensure newline
883passed in and to be more consistent). Fix writepage wrong file handle problem,
884a readonly file handle could be incorrectly used to attempt to write out
885file updates through the page cache to multiply open files. This could cause
886the iozone benchmark to fail on the fwrite test. Fix bug mounting two different
887shares to the same Windows server when using different usernames
888(doing this to Samba servers worked but Windows was rejecting it) - now it is
889possible to use different userids when connecting to the same server from a
890Linux client. Fix oops when treeDisconnect called during unmount on
891previously freed socket.
892
893Version 0.60
894------------
895Fix oops in readpages caused by not setting address space operations in inode in
896rare code path.
897
898Version 0.59
899------------
900Includes support for deleting of open files and renaming over existing files (per POSIX
901requirement). Add readlink support for Windows junction points (directory symlinks).
902
903Version 0.58
904------------
905Changed read and write to go through pagecache. Added additional address space operations.
906Memory mapped operations now working.
907
908Version 0.57
909------------
910Added writepage code for additional memory mapping support. Fixed leak in xids causing
911the simultaneous operations counter (/proc/fs/cifs/SimultaneousOps) to increase on
912every stat call. Additional formatting cleanup.
913
914Version 0.56
915------------
916Fix bigendian bug in order of time conversion. Merge 2.5 to 2.4 version. Formatting cleanup.
917
918Version 0.55
919------------
920Fixes from Zwane Mwaikambo for adding missing return code checking in a few places.
921Also included a modified version of his fix to protect global list manipulation of
922the smb session and tree connection and mid related global variables.
923
924Version 0.54
925------------
926Fix problem with captive thread hanging around at unmount time. Adjust to 2.5.42-pre
927changes to superblock layout. Remove wasteful allocation of smb buffers (now the send
928buffer is reused for responses). Add more oplock handling. Additional minor cleanup.
929
930Version 0.53
931------------
932More stylistic updates to better match kernel style. Add additional statistics
933for filesystem which can be viewed via /proc/fs/cifs. Add more pieces of NTLMv2
934and CIFS Packet Signing enablement.
935
936Version 0.52
937------------
938Replace call to sleep_on with safer wait_on_event.
939Make stylistic changes to better match kernel style recommendations.
940Remove most typedef usage (except for the PDUs themselves).
941
942Version 0.51
943------------
944Update mount so the -unc mount option is no longer required (the ip address can be specified
945in a UNC style device name. Implementation of readpage/writepage started.
946
947Version 0.50
948------------
949Fix intermittent problem with incorrect smb header checking on badly
950fragmented tcp responses
951
952Version 0.49
953------------
954Fixes to setting of allocation size and file size.
955
956Version 0.48
957------------
958Various 2.5.38 fixes. Now works on 2.5.38
959
960Version 0.47
961------------
962Prepare for 2.5 kernel merge. Remove ifdefs.
963
964Version 0.46
965------------
966Socket buffer management fixes. Fix dual free.
967
968Version 0.45
969------------
970Various big endian fixes for hardlinks and symlinks and also for dfs.
971
972Version 0.44
973------------
974Various big endian fixes for servers with Unix extensions such as Samba
975
976Version 0.43
977------------
978Various FindNext fixes for incorrect filenames on large directory searches on big endian
979clients. basic posix file i/o tests now work on big endian machines, not just le
980
981Version 0.42
982------------
983SessionSetup and NegotiateProtocol now work from Big Endian machines.
984Various Big Endian fixes found during testing on the Linux on 390. Various fixes for compatibility with older
985versions of 2.4 kernel (now builds and works again on kernels at least as early as 2.4.7).
986
987Version 0.41
988------------
989Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked
990files now return the correct number of links on fstat as they are repeatedly linked and unlinked.
991
992Version 0.40
993------------
994Implemented "Raw" (i.e. not encapsulated in SPNEGO) NTLMSSP (i.e. the Security Provider Interface used to negotiate
995session advanced session authentication). Raw NTLMSSP is preferred by Windows 2000 Professional and Windows XP.
996Began implementing support for SPNEGO encapsulation of NTLMSSP based session authentication blobs
997(which is the mechanism preferred by Windows 2000 server in the absence of Kerberos).
998
999Version 0.38
1000------------
1001Introduced optional mount helper utility mount.cifs and made coreq changes to cifs vfs to enable
1002it. Fixed a few bugs in the DFS code (e.g. bcc two bytes too short and incorrect uid in PDU).
1003
1004Version 0.37
1005------------
1006Rewrote much of connection and mount/unmount logic to handle bugs with
1007multiple uses to same share, multiple users to same server etc.
1008
1009Version 0.36
1010------------
1011Fixed major problem with dentry corruption (missing call to dput)
1012
1013Version 0.35
1014------------
1015Rewrite of readdir code to fix bug. Various fixes for bigendian machines.
1016Begin adding oplock support. Multiusermount and oplockEnabled flags added to /proc/fs/cifs
1017although corresponding function not fully implemented in the vfs yet
1018
1019Version 0.34
1020------------
1021Fixed dentry caching bug, misc. cleanup
1022
1023Version 0.33
1024------------
1025Fixed 2.5 support to handle build and configure changes as well as misc. 2.5 changes. Now can build
1026on current 2.5 beta version (2.5.24) of the Linux kernel as well as on 2.4 Linux kernels.
1027Support for STATUS codes (newer 32 bit NT error codes) added. DFS support begun to be added.
1028
1029Version 0.32
1030------------
1031Unix extensions (symlink, readlink, hardlink, chmod and some chgrp and chown) implemented
1032and tested against Samba 2.2.5
1033
1034
1035Version 0.31
1036------------
10371) Fixed lockrange to be correct (it was one byte too short)
1038
10392) Fixed GETLK (i.e. the fcntl call to test a range of bytes in a file to see if locked) to correctly
1040show range as locked when there is a conflict with an existing lock.
1041
10423) default file perms are now 2767 (indicating support for mandatory locks) instead of 777 for directories
1043in most cases. Eventually will offer optional ability to query server for the correct perms.
1044
10453) Fixed eventual trap when mounting twice to different shares on the same server when the first succeeded
1046but the second one was invalid and failed (the second one was incorrectly disconnecting the tcp and smb
1047session)
1048
10494) Fixed error logging of valid mount options
1050
10515) Removed logging of password field.
1052
10536) Moved negotiate, treeDisconnect and uloggoffX (only tConx and SessSetup remain in connect.c) to cifssmb.c
1054and cleaned them up and made them more consistent with other cifs functions.
1055
10567) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways
1057(with or without Unix extensions) but FindNext and QueryPathInfo with the Unix extensions are not completed,
1058nor is the symlink support using the Unix extensions
1059
10608) Started adding the readlink and follow_link code
1061
1062Version 0.3
1063-----------
1064Initial drop
1065
diff --git a/Documentation/filesystems/cifs/README b/Documentation/filesystems/cifs/README
new file mode 100644
index 000000000000..2d5622f60e11
--- /dev/null
+++ b/Documentation/filesystems/cifs/README
@@ -0,0 +1,753 @@
1The CIFS VFS support for Linux supports many advanced network filesystem
2features such as hierarchical dfs like namespace, hardlinks, locking and more.
3It was designed to comply with the SNIA CIFS Technical Reference (which
4supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
5practical interoperability with Windows 2000, Windows XP, Samba and equivalent
6servers. This code was developed in participation with the Protocol Freedom
7Information Foundation.
8
9Please see
10 http://protocolfreedom.org/ and
11 http://samba.org/samba/PFIF/
12for more details.
13
14
15For questions or bug reports please contact:
16 sfrench@samba.org (sfrench@us.ibm.com)
17
18Build instructions:
19==================
20For Linux 2.4:
211) Get the kernel source (e.g.from http://www.kernel.org)
22and download the cifs vfs source (see the project page
23at http://us1.samba.org/samba/Linux_CIFS_client.html)
24and change directory into the top of the kernel directory
25then patch the kernel (e.g. "patch -p1 < cifs_24.patch")
26to add the cifs vfs to your kernel configure options if
27it has not already been added (e.g. current SuSE and UL
28users do not need to apply the cifs_24.patch since the cifs vfs is
29already in the kernel configure menu) and then
30mkdir linux/fs/cifs and then copy the current cifs vfs files from
31the cifs download to your kernel build directory e.g.
32
33 cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs
34
352) make menuconfig (or make xconfig)
363) select cifs from within the network filesystem choices
374) save and exit
385) make dep
396) make modules (or "make" if CIFS VFS not to be built as a module)
40
41For Linux 2.6:
421) Download the kernel (e.g. from http://www.kernel.org)
43and change directory into the top of the kernel directory tree
44(e.g. /usr/src/linux-2.5.73)
452) make menuconfig (or make xconfig)
463) select cifs from within the network filesystem choices
474) save and exit
485) make
49
50
51Installation instructions:
52=========================
53If you have built the CIFS vfs as module (successfully) simply
54type "make modules_install" (or if you prefer, manually copy the file to
55the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.o).
56
57If you have built the CIFS vfs into the kernel itself, follow the instructions
58for your distribution on how to install a new kernel (usually you
59would simply type "make install").
60
61If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on
62the CIFS VFS web site) copy it to the same directory in which mount.smbfs and
63similar files reside (usually /sbin). Although the helper software is not
64required, mount.cifs is recommended. Eventually the Samba 3.0 utility program
65"net" may also be helpful since it may someday provide easier mount syntax for
66users who are used to Windows e.g.
67 net use <mount point> <UNC name or cifs URL>
68Note that running the Winbind pam/nss module (logon service) on all of your
69Linux clients is useful in mapping Uids and Gids consistently across the
70domain to the proper network user. The mount.cifs mount helper can be
71trivially built from Samba 3.0 or later source e.g. by executing:
72
73 gcc samba/source/client/mount.cifs.c -o mount.cifs
74
75If cifs is built as a module, then the size and number of network buffers
76and maximum number of simultaneous requests to one server can be configured.
77Changing these from their defaults is not recommended. By executing modinfo
78 modinfo kernel/fs/cifs/cifs.ko
79on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
80at module initialization time (by running insmod cifs.ko) can be seen.
81
82Allowing User Mounts
83====================
84To permit users to mount and unmount over directories they own is possible
85with the cifs vfs. A way to enable such mounting is to mark the mount.cifs
86utility as suid (e.g. "chmod +s /sbin/mount.cifs). To enable users to
87umount shares they mount requires
881) mount.cifs version 1.4 or later
892) an entry for the share in /etc/fstab indicating that a user may
90unmount it e.g.
91//server/usersharename /mnt/username cifs user 0 0
92
93Note that when the mount.cifs utility is run suid (allowing user mounts),
94in order to reduce risks, the "nosuid" mount flag is passed in on mount to
95disallow execution of an suid program mounted on the remote target.
96When mount is executed as root, nosuid is not passed in by default,
97and execution of suid programs on the remote target would be enabled
98by default. This can be changed, as with nfs and other filesystems,
99by simply specifying "nosuid" among the mount options. For user mounts
100though to be able to pass the suid flag to mount requires rebuilding
101mount.cifs with the following flag:
102
103 gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs
104
105There is a corresponding manual page for cifs mounting in the Samba 3.0 and
106later source tree in docs/manpages/mount.cifs.8
107
108Allowing User Unmounts
109======================
110To permit users to ummount directories that they have user mounted (see above),
111the utility umount.cifs may be used. It may be invoked directly, or if
112umount.cifs is placed in /sbin, umount can invoke the cifs umount helper
113(at least for most versions of the umount utility) for umount of cifs
114mounts, unless umount is invoked with -i (which will avoid invoking a umount
115helper). As with mount.cifs, to enable user unmounts umount.cifs must be marked
116as suid (e.g. "chmod +s /sbin/umount.cifs") or equivalent (some distributions
117allow adding entries to a file to the /etc/permissions file to achieve the
118equivalent suid effect). For this utility to succeed the target path
119must be a cifs mount, and the uid of the current user must match the uid
120of the user who mounted the resource.
121
122Also note that the customary way of allowing user mounts and unmounts is
123(instead of using mount.cifs and unmount.cifs as suid) to add a line
124to the file /etc/fstab for each //server/share you wish to mount, but
125this can become unwieldy when potential mount targets include many
126or unpredictable UNC names.
127
128Samba Considerations
129====================
130To get the maximum benefit from the CIFS VFS, we recommend using a server that
131supports the SNIA CIFS Unix Extensions standard (e.g. Samba 2.2.5 or later or
132Samba 3.0) but the CIFS vfs works fine with a wide variety of CIFS servers.
133Note that uid, gid and file permissions will display default values if you do
134not have a server that supports the Unix extensions for CIFS (such as Samba
1352.2.5 or later). To enable the Unix CIFS Extensions in the Samba server, add
136the line:
137
138 unix extensions = yes
139
140to your smb.conf file on the server. Note that the following smb.conf settings
141are also useful (on the Samba server) when the majority of clients are Unix or
142Linux:
143
144 case sensitive = yes
145 delete readonly = yes
146 ea support = yes
147
148Note that server ea support is required for supporting xattrs from the Linux
149cifs client, and that EA support is present in later versions of Samba (e.g.
1503.0.6 and later (also EA support works in all versions of Windows, at least to
151shares on NTFS filesystems). Extended Attribute (xattr) support is an optional
152feature of most Linux filesystems which may require enabling via
153make menuconfig. Client support for extended attributes (user xattr) can be
154disabled on a per-mount basis by specifying "nouser_xattr" on mount.
155
156The CIFS client can get and set POSIX ACLs (getfacl, setfacl) to Samba servers
157version 3.10 and later. Setting POSIX ACLs requires enabling both XATTR and
158then POSIX support in the CIFS configuration options when building the cifs
159module. POSIX ACL support can be disabled on a per mount basic by specifying
160"noacl" on mount.
161
162Some administrators may want to change Samba's smb.conf "map archive" and
163"create mask" parameters from the default. Unless the create mask is changed
164newly created files can end up with an unnecessarily restrictive default mode,
165which may not be what you want, although if the CIFS Unix extensions are
166enabled on the server and client, subsequent setattr calls (e.g. chmod) can
167fix the mode. Note that creating special devices (mknod) remotely
168may require specifying a mkdev function to Samba if you are not using
169Samba 3.0.6 or later. For more information on these see the manual pages
170("man smb.conf") on the Samba server system. Note that the cifs vfs,
171unlike the smbfs vfs, does not read the smb.conf on the client system
172(the few optional settings are passed in on mount via -o parameters instead).
173Note that Samba 2.2.7 or later includes a fix that allows the CIFS VFS to delete
174open files (required for strict POSIX compliance). Windows Servers already
175supported this feature. Samba server does not allow symlinks that refer to files
176outside of the share, so in Samba versions prior to 3.0.6, most symlinks to
177files with absolute paths (ie beginning with slash) such as:
178 ln -s /mnt/foo bar
179would be forbidden. Samba 3.0.6 server or later includes the ability to create
180such symlinks safely by converting unsafe symlinks (ie symlinks to server
181files that are outside of the share) to a samba specific format on the server
182that is ignored by local server applications and non-cifs clients and that will
183not be traversed by the Samba server). This is opaque to the Linux client
184application using the cifs vfs. Absolute symlinks will work to Samba 3.0.5 or
185later, but only for remote clients using the CIFS Unix extensions, and will
186be invisbile to Windows clients and typically will not affect local
187applications running on the same server as Samba.
188
189Use instructions:
190================
191Once the CIFS VFS support is built into the kernel or installed as a module
192(cifs.o), you can use mount syntax like the following to access Samba or Windows
193servers:
194
195 mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword
196
197Before -o the option -v may be specified to make the mount.cifs
198mount helper display the mount steps more verbosely.
199After -o the following commonly used cifs vfs specific options
200are supported:
201
202 user=<username>
203 pass=<password>
204 domain=<domain name>
205
206Other cifs mount options are described below. Use of TCP names (in addition to
207ip addresses) is available if the mount helper (mount.cifs) is installed. If
208you do not trust the server to which are mounted, or if you do not have
209cifs signing enabled (and the physical network is insecure), consider use
210of the standard mount options "noexec" and "nosuid" to reduce the risk of
211running an altered binary on your local system (downloaded from a hostile server
212or altered by a hostile router).
213
214Although mounting using format corresponding to the CIFS URL specification is
215not possible in mount.cifs yet, it is possible to use an alternate format
216for the server and sharename (which is somewhat similar to NFS style mount
217syntax) instead of the more widely used UNC format (i.e. \\server\share):
218 mount -t cifs tcp_name_of_server:share_name /mnt -o user=myname,pass=mypasswd
219
220When using the mount helper mount.cifs, passwords may be specified via alternate
221mechanisms, instead of specifying it after -o using the normal "pass=" syntax
222on the command line:
2231) By including it in a credential file. Specify credentials=filename as one
224of the mount options. Credential files contain two lines
225 username=someuser
226 password=your_password
2272) By specifying the password in the PASSWD environment variable (similarly
228the user name can be taken from the USER environment variable).
2293) By specifying the password in a file by name via PASSWD_FILE
2304) By specifying the password in a file by file descriptor via PASSWD_FD
231
232If no password is provided, mount.cifs will prompt for password entry
233
234Restrictions
235============
236Servers must support either "pure-TCP" (port 445 TCP/IP CIFS connections) or RFC
2371001/1002 support for "Netbios-Over-TCP/IP." This is not likely to be a
238problem as most servers support this.
239
240Valid filenames differ between Windows and Linux. Windows typically restricts
241filenames which contain certain reserved characters (e.g.the character :
242which is used to delimit the beginning of a stream name by Windows), while
243Linux allows a slightly wider set of valid characters in filenames. Windows
244servers can remap such characters when an explicit mapping is specified in
245the Server's registry. Samba starting with version 3.10 will allow such
246filenames (ie those which contain valid Linux characters, which normally
247would be forbidden for Windows/CIFS semantics) as long as the server is
248configured for Unix Extensions (and the client has not disabled
249/proc/fs/cifs/LinuxExtensionsEnabled).
250
251
252CIFS VFS Mount Options
253======================
254A partial list of the supported mount options follows:
255 user The user name to use when trying to establish
256 the CIFS session.
257 password The user password. If the mount helper is
258 installed, the user will be prompted for password
259 if not supplied.
260 ip The ip address of the target server
261 unc The target server Universal Network Name (export) to
262 mount.
263 domain Set the SMB/CIFS workgroup name prepended to the
264 username during CIFS session establishment
265 forceuid Set the default uid for inodes to the uid
266 passed in on mount. For mounts to servers
267 which do support the CIFS Unix extensions, such as a
268 properly configured Samba server, the server provides
269 the uid, gid and mode so this parameter should not be
270 specified unless the server and clients uid and gid
271 numbering differ. If the server and client are in the
272 same domain (e.g. running winbind or nss_ldap) and
273 the server supports the Unix Extensions then the uid
274 and gid can be retrieved from the server (and uid
275 and gid would not have to be specifed on the mount.
276 For servers which do not support the CIFS Unix
277 extensions, the default uid (and gid) returned on lookup
278 of existing files will be the uid (gid) of the person
279 who executed the mount (root, except when mount.cifs
280 is configured setuid for user mounts) unless the "uid="
281 (gid) mount option is specified. Also note that permission
282 checks (authorization checks) on accesses to a file occur
283 at the server, but there are cases in which an administrator
284 may want to restrict at the client as well. For those
285 servers which do not report a uid/gid owner
286 (such as Windows), permissions can also be checked at the
287 client, and a crude form of client side permission checking
288 can be enabled by specifying file_mode and dir_mode on
289 the client. (default)
290 forcegid (similar to above but for the groupid instead of uid) (default)
291 noforceuid Fill in file owner information (uid) by requesting it from
292 the server if possible. With this option, the value given in
293 the uid= option (on mount) will only be used if the server
294 can not support returning uids on inodes.
295 noforcegid (similar to above but for the group owner, gid, instead of uid)
296 uid Set the default uid for inodes, and indicate to the
297 cifs kernel driver which local user mounted. If the server
298 supports the unix extensions the default uid is
299 not used to fill in the owner fields of inodes (files)
300 unless the "forceuid" parameter is specified.
301 gid Set the default gid for inodes (similar to above).
302 file_mode If CIFS Unix extensions are not supported by the server
303 this overrides the default mode for file inodes.
304 fsc Enable local disk caching using FS-Cache (off by default). This
305 option could be useful to improve performance on a slow link,
306 heavily loaded server and/or network where reading from the
307 disk is faster than reading from the server (over the network).
308 This could also impact scalability positively as the
309 number of calls to the server are reduced. However, local
310 caching is not suitable for all workloads for e.g. read-once
311 type workloads. So, you need to consider carefully your
312 workload/scenario before using this option. Currently, local
313 disk caching is functional for CIFS files opened as read-only.
314 dir_mode If CIFS Unix extensions are not supported by the server
315 this overrides the default mode for directory inodes.
316 port attempt to contact the server on this tcp port, before
317 trying the usual ports (port 445, then 139).
318 iocharset Codepage used to convert local path names to and from
319 Unicode. Unicode is used by default for network path
320 names if the server supports it. If iocharset is
321 not specified then the nls_default specified
322 during the local client kernel build will be used.
323 If server does not support Unicode, this parameter is
324 unused.
325 rsize default read size (usually 16K). The client currently
326 can not use rsize larger than CIFSMaxBufSize. CIFSMaxBufSize
327 defaults to 16K and may be changed (from 8K to the maximum
328 kmalloc size allowed by your kernel) at module install time
329 for cifs.ko. Setting CIFSMaxBufSize to a very large value
330 will cause cifs to use more memory and may reduce performance
331 in some cases. To use rsize greater than 127K (the original
332 cifs protocol maximum) also requires that the server support
333 a new Unix Capability flag (for very large read) which some
334 newer servers (e.g. Samba 3.0.26 or later) do. rsize can be
335 set from a minimum of 2048 to a maximum of 130048 (127K or
336 CIFSMaxBufSize, whichever is smaller)
337 wsize default write size (default 57344)
338 maximum wsize currently allowed by CIFS is 57344 (fourteen
339 4096 byte pages)
340 actimeo=n attribute cache timeout in seconds (default 1 second).
341 After this timeout, the cifs client requests fresh attribute
342 information from the server. This option allows to tune the
343 attribute cache timeout to suit the workload needs. Shorter
344 timeouts mean better the cache coherency, but increased number
345 of calls to the server. Longer timeouts mean reduced number
346 of calls to the server at the expense of less stricter cache
347 coherency checks (i.e. incorrect attribute cache for a short
348 period of time).
349 rw mount the network share read-write (note that the
350 server may still consider the share read-only)
351 ro mount network share read-only
352 version used to distinguish different versions of the
353 mount helper utility (not typically needed)
354 sep if first mount option (after the -o), overrides
355 the comma as the separator between the mount
356 parms. e.g.
357 -o user=myname,password=mypassword,domain=mydom
358 could be passed instead with period as the separator by
359 -o sep=.user=myname.password=mypassword.domain=mydom
360 this might be useful when comma is contained within username
361 or password or domain. This option is less important
362 when the cifs mount helper cifs.mount (version 1.1 or later)
363 is used.
364 nosuid Do not allow remote executables with the suid bit
365 program to be executed. This is only meaningful for mounts
366 to servers such as Samba which support the CIFS Unix Extensions.
367 If you do not trust the servers in your network (your mount
368 targets) it is recommended that you specify this option for
369 greater security.
370 exec Permit execution of binaries on the mount.
371 noexec Do not permit execution of binaries on the mount.
372 dev Recognize block devices on the remote mount.
373 nodev Do not recognize devices on the remote mount.
374 suid Allow remote files on this mountpoint with suid enabled to
375 be executed (default for mounts when executed as root,
376 nosuid is default for user mounts).
377 credentials Although ignored by the cifs kernel component, it is used by
378 the mount helper, mount.cifs. When mount.cifs is installed it
379 opens and reads the credential file specified in order
380 to obtain the userid and password arguments which are passed to
381 the cifs vfs.
382 guest Although ignored by the kernel component, the mount.cifs
383 mount helper will not prompt the user for a password
384 if guest is specified on the mount options. If no
385 password is specified a null password will be used.
386 perm Client does permission checks (vfs_permission check of uid
387 and gid of the file against the mode and desired operation),
388 Note that this is in addition to the normal ACL check on the
389 target machine done by the server software.
390 Client permission checking is enabled by default.
391 noperm Client does not do permission checks. This can expose
392 files on this mount to access by other users on the local
393 client system. It is typically only needed when the server
394 supports the CIFS Unix Extensions but the UIDs/GIDs on the
395 client and server system do not match closely enough to allow
396 access by the user doing the mount, but it may be useful with
397 non CIFS Unix Extension mounts for cases in which the default
398 mode is specified on the mount but is not to be enforced on the
399 client (e.g. perhaps when MultiUserMount is enabled)
400 Note that this does not affect the normal ACL check on the
401 target machine done by the server software (of the server
402 ACL against the user name provided at mount time).
403 serverino Use server's inode numbers instead of generating automatically
404 incrementing inode numbers on the client. Although this will
405 make it easier to spot hardlinked files (as they will have
406 the same inode numbers) and inode numbers may be persistent,
407 note that the server does not guarantee that the inode numbers
408 are unique if multiple server side mounts are exported under a
409 single share (since inode numbers on the servers might not
410 be unique if multiple filesystems are mounted under the same
411 shared higher level directory). Note that some older
412 (e.g. pre-Windows 2000) do not support returning UniqueIDs
413 or the CIFS Unix Extensions equivalent and for those
414 this mount option will have no effect. Exporting cifs mounts
415 under nfsd requires this mount option on the cifs mount.
416 This is now the default if server supports the
417 required network operation.
418 noserverino Client generates inode numbers (rather than using the actual one
419 from the server). These inode numbers will vary after
420 unmount or reboot which can confuse some applications,
421 but not all server filesystems support unique inode
422 numbers.
423 setuids If the CIFS Unix extensions are negotiated with the server
424 the client will attempt to set the effective uid and gid of
425 the local process on newly created files, directories, and
426 devices (create, mkdir, mknod). If the CIFS Unix Extensions
427 are not negotiated, for newly created files and directories
428 instead of using the default uid and gid specified on
429 the mount, cache the new file's uid and gid locally which means
430 that the uid for the file can change when the inode is
431 reloaded (or the user remounts the share).
432 nosetuids The client will not attempt to set the uid and gid on
433 on newly created files, directories, and devices (create,
434 mkdir, mknod) which will result in the server setting the
435 uid and gid to the default (usually the server uid of the
436 user who mounted the share). Letting the server (rather than
437 the client) set the uid and gid is the default. If the CIFS
438 Unix Extensions are not negotiated then the uid and gid for
439 new files will appear to be the uid (gid) of the mounter or the
440 uid (gid) parameter specified on the mount.
441 netbiosname When mounting to servers via port 139, specifies the RFC1001
442 source name to use to represent the client netbios machine
443 name when doing the RFC1001 netbios session initialize.
444 direct Do not do inode data caching on files opened on this mount.
445 This precludes mmapping files on this mount. In some cases
446 with fast networks and little or no caching benefits on the
447 client (e.g. when the application is doing large sequential
448 reads bigger than page size without rereading the same data)
449 this can provide better performance than the default
450 behavior which caches reads (readahead) and writes
451 (writebehind) through the local Linux client pagecache
452 if oplock (caching token) is granted and held. Note that
453 direct allows write operations larger than page size
454 to be sent to the server.
455 strictcache Use for switching on strict cache mode. In this mode the
456 client read from the cache all the time it has Oplock Level II,
457 otherwise - read from the server. All written data are stored
458 in the cache, but if the client doesn't have Exclusive Oplock,
459 it writes the data to the server.
460 rwpidforward Forward pid of a process who opened a file to any read or write
461 operation on that file. This prevent applications like WINE
462 from failing on read and write if we use mandatory brlock style.
463 acl Allow setfacl and getfacl to manage posix ACLs if server
464 supports them. (default)
465 noacl Do not allow setfacl and getfacl calls on this mount
466 user_xattr Allow getting and setting user xattrs (those attributes whose
467 name begins with "user." or "os2.") as OS/2 EAs (extended
468 attributes) to the server. This allows support of the
469 setfattr and getfattr utilities. (default)
470 nouser_xattr Do not allow getfattr/setfattr to get/set/list xattrs
471 mapchars Translate six of the seven reserved characters (not backslash)
472 *?<>|:
473 to the remap range (above 0xF000), which also
474 allows the CIFS client to recognize files created with
475 such characters by Windows's POSIX emulation. This can
476 also be useful when mounting to most versions of Samba
477 (which also forbids creating and opening files
478 whose names contain any of these seven characters).
479 This has no effect if the server does not support
480 Unicode on the wire.
481 nomapchars Do not translate any of these seven characters (default).
482 nocase Request case insensitive path name matching (case
483 sensitive is the default if the server supports it).
484 (mount option "ignorecase" is identical to "nocase")
485 posixpaths If CIFS Unix extensions are supported, attempt to
486 negotiate posix path name support which allows certain
487 characters forbidden in typical CIFS filenames, without
488 requiring remapping. (default)
489 noposixpaths If CIFS Unix extensions are supported, do not request
490 posix path name support (this may cause servers to
491 reject creatingfile with certain reserved characters).
492 nounix Disable the CIFS Unix Extensions for this mount (tree
493 connection). This is rarely needed, but it may be useful
494 in order to turn off multiple settings all at once (ie
495 posix acls, posix locks, posix paths, symlink support
496 and retrieving uids/gids/mode from the server) or to
497 work around a bug in server which implement the Unix
498 Extensions.
499 nobrl Do not send byte range lock requests to the server.
500 This is necessary for certain applications that break
501 with cifs style mandatory byte range locks (and most
502 cifs servers do not yet support requesting advisory
503 byte range locks).
504 forcemandatorylock Even if the server supports posix (advisory) byte range
505 locking, send only mandatory lock requests. For some
506 (presumably rare) applications, originally coded for
507 DOS/Windows, which require Windows style mandatory byte range
508 locking, they may be able to take advantage of this option,
509 forcing the cifs client to only send mandatory locks
510 even if the cifs server would support posix advisory locks.
511 "forcemand" is accepted as a shorter form of this mount
512 option.
513 nostrictsync If this mount option is set, when an application does an
514 fsync call then the cifs client does not send an SMB Flush
515 to the server (to force the server to write all dirty data
516 for this file immediately to disk), although cifs still sends
517 all dirty (cached) file data to the server and waits for the
518 server to respond to the write. Since SMB Flush can be
519 very slow, and some servers may be reliable enough (to risk
520 delaying slightly flushing the data to disk on the server),
521 turning on this option may be useful to improve performance for
522 applications that fsync too much, at a small risk of server
523 crash. If this mount option is not set, by default cifs will
524 send an SMB flush request (and wait for a response) on every
525 fsync call.
526 nodfs Disable DFS (global name space support) even if the
527 server claims to support it. This can help work around
528 a problem with parsing of DFS paths with Samba server
529 versions 3.0.24 and 3.0.25.
530 remount remount the share (often used to change from ro to rw mounts
531 or vice versa)
532 cifsacl Report mode bits (e.g. on stat) based on the Windows ACL for
533 the file. (EXPERIMENTAL)
534 servern Specify the server 's netbios name (RFC1001 name) to use
535 when attempting to setup a session to the server.
536 This is needed for mounting to some older servers (such
537 as OS/2 or Windows 98 and Windows ME) since they do not
538 support a default server name. A server name can be up
539 to 15 characters long and is usually uppercased.
540 sfu When the CIFS Unix Extensions are not negotiated, attempt to
541 create device files and fifos in a format compatible with
542 Services for Unix (SFU). In addition retrieve bits 10-12
543 of the mode via the SETFILEBITS extended attribute (as
544 SFU does). In the future the bottom 9 bits of the
545 mode also will be emulated using queries of the security
546 descriptor (ACL).
547 mfsymlinks Enable support for Minshall+French symlinks
548 (see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks)
549 This option is ignored when specified together with the
550 'sfu' option. Minshall+French symlinks are used even if
551 the server supports the CIFS Unix Extensions.
552 sign Must use packet signing (helps avoid unwanted data modification
553 by intermediate systems in the route). Note that signing
554 does not work with lanman or plaintext authentication.
555 seal Must seal (encrypt) all data on this mounted share before
556 sending on the network. Requires support for Unix Extensions.
557 Note that this differs from the sign mount option in that it
558 causes encryption of data sent over this mounted share but other
559 shares mounted to the same server are unaffected.
560 locallease This option is rarely needed. Fcntl F_SETLEASE is
561 used by some applications such as Samba and NFSv4 server to
562 check to see whether a file is cacheable. CIFS has no way
563 to explicitly request a lease, but can check whether a file
564 is cacheable (oplocked). Unfortunately, even if a file
565 is not oplocked, it could still be cacheable (ie cifs client
566 could grant fcntl leases if no other local processes are using
567 the file) for cases for example such as when the server does not
568 support oplocks and the user is sure that the only updates to
569 the file will be from this client. Specifying this mount option
570 will allow the cifs client to check for leases (only) locally
571 for files which are not oplocked instead of denying leases
572 in that case. (EXPERIMENTAL)
573 sec Security mode. Allowed values are:
574 none attempt to connection as a null user (no name)
575 krb5 Use Kerberos version 5 authentication
576 krb5i Use Kerberos authentication and packet signing
577 ntlm Use NTLM password hashing (default)
578 ntlmi Use NTLM password hashing with signing (if
579 /proc/fs/cifs/PacketSigningEnabled on or if
580 server requires signing also can be the default)
581 ntlmv2 Use NTLMv2 password hashing
582 ntlmv2i Use NTLMv2 password hashing with packet signing
583 lanman (if configured in kernel config) use older
584 lanman hash
585hard Retry file operations if server is not responding
586soft Limit retries to unresponsive servers (usually only
587 one retry) before returning an error. (default)
588
589The mount.cifs mount helper also accepts a few mount options before -o
590including:
591
592 -S take password from stdin (equivalent to setting the environment
593 variable "PASSWD_FD=0"
594 -V print mount.cifs version
595 -? display simple usage information
596
597With most 2.6 kernel versions of modutils, the version of the cifs kernel
598module can be displayed via modinfo.
599
600Misc /proc/fs/cifs Flags and Debug Info
601=======================================
602Informational pseudo-files:
603DebugData Displays information about active CIFS sessions and
604 shares, features enabled as well as the cifs.ko
605 version.
606Stats Lists summary resource usage information as well as per
607 share statistics, if CONFIG_CIFS_STATS in enabled
608 in the kernel configuration.
609
610Configuration pseudo-files:
611PacketSigningEnabled If set to one, cifs packet signing is enabled
612 and will be used if the server requires
613 it. If set to two, cifs packet signing is
614 required even if the server considers packet
615 signing optional. (default 1)
616SecurityFlags Flags which control security negotiation and
617 also packet signing. Authentication (may/must)
618 flags (e.g. for NTLM and/or NTLMv2) may be combined with
619 the signing flags. Specifying two different password
620 hashing mechanisms (as "must use") on the other hand
621 does not make much sense. Default flags are
622 0x07007
623 (NTLM, NTLMv2 and packet signing allowed). The maximum
624 allowable flags if you want to allow mounts to servers
625 using weaker password hashes is 0x37037 (lanman,
626 plaintext, ntlm, ntlmv2, signing allowed). Some
627 SecurityFlags require the corresponding menuconfig
628 options to be enabled (lanman and plaintext require
629 CONFIG_CIFS_WEAK_PW_HASH for example). Enabling
630 plaintext authentication currently requires also
631 enabling lanman authentication in the security flags
632 because the cifs module only supports sending
633 laintext passwords using the older lanman dialect
634 form of the session setup SMB. (e.g. for authentication
635 using plain text passwords, set the SecurityFlags
636 to 0x30030):
637
638 may use packet signing 0x00001
639 must use packet signing 0x01001
640 may use NTLM (most common password hash) 0x00002
641 must use NTLM 0x02002
642 may use NTLMv2 0x00004
643 must use NTLMv2 0x04004
644 may use Kerberos security 0x00008
645 must use Kerberos 0x08008
646 may use lanman (weak) password hash 0x00010
647 must use lanman password hash 0x10010
648 may use plaintext passwords 0x00020
649 must use plaintext passwords 0x20020
650 (reserved for future packet encryption) 0x00040
651
652cifsFYI If set to non-zero value, additional debug information
653 will be logged to the system error log. This field
654 contains three flags controlling different classes of
655 debugging entries. The maximum value it can be set
656 to is 7 which enables all debugging points (default 0).
657 Some debugging statements are not compiled into the
658 cifs kernel unless CONFIG_CIFS_DEBUG2 is enabled in the
659 kernel configuration. cifsFYI may be set to one or
660 nore of the following flags (7 sets them all):
661
662 log cifs informational messages 0x01
663 log return codes from cifs entry points 0x02
664 log slow responses (ie which take longer than 1 second)
665 CONFIG_CIFS_STATS2 must be enabled in .config 0x04
666
667
668traceSMB If set to one, debug information is logged to the
669 system error log with the start of smb requests
670 and responses (default 0)
671LookupCacheEnable If set to one, inode information is kept cached
672 for one second improving performance of lookups
673 (default 1)
674OplockEnabled If set to one, safe distributed caching enabled.
675 (default 1)
676LinuxExtensionsEnabled If set to one then the client will attempt to
677 use the CIFS "UNIX" extensions which are optional
678 protocol enhancements that allow CIFS servers
679 to return accurate UID/GID information as well
680 as support symbolic links. If you use servers
681 such as Samba that support the CIFS Unix
682 extensions but do not want to use symbolic link
683 support and want to map the uid and gid fields
684 to values supplied at mount (rather than the
685 actual values, then set this to zero. (default 1)
686
687These experimental features and tracing can be enabled by changing flags in
688/proc/fs/cifs (after the cifs module has been installed or built into the
689kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable
690tracing to the kernel message log type:
691
692 echo 7 > /proc/fs/cifs/cifsFYI
693
694cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel
695logging of various informational messages. 2 enables logging of non-zero
696SMB return codes while 4 enables logging of requests that take longer
697than one second to complete (except for byte range lock requests).
698Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the
699source code (typically by setting it in the beginning of cifsglob.h),
700and setting it to seven enables all three. Finally, tracing
701the start of smb requests and responses can be enabled via:
702
703 echo 1 > /proc/fs/cifs/traceSMB
704
705Per share (per client mount) statistics are available in /proc/fs/cifs/Stats
706if the kernel was configured with cifs statistics enabled. The statistics
707represent the number of successful (ie non-zero return code from the server)
708SMB responses to some of the more common commands (open, delete, mkdir etc.).
709Also recorded is the total bytes read and bytes written to the server for
710that share. Note that due to client caching effects this can be less than the
711number of bytes read and written by the application running on the client.
712The statistics for the number of total SMBs and oplock breaks are different in
713that they represent all for that share, not just those for which the server
714returned success.
715
716Also note that "cat /proc/fs/cifs/DebugData" will display information about
717the active sessions and the shares that are mounted.
718
719Enabling Kerberos (extended security) works but requires version 1.2 or later
720of the helper program cifs.upcall to be present and to be configured in the
721/etc/request-key.conf file. The cifs.upcall helper program is from the Samba
722project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not
723require this helper. Note that NTLMv2 security (which does not require the
724cifs.upcall helper program), instead of using Kerberos, is sufficient for
725some use cases.
726
727DFS support allows transparent redirection to shares in an MS-DFS name space.
728In addition, DFS support for target shares which are specified as UNC
729names which begin with host names (rather than IP addresses) requires
730a user space helper (such as cifs.upcall) to be present in order to
731translate host names to ip address, and the user space helper must also
732be configured in the file /etc/request-key.conf. Samba, Windows servers and
733many NAS appliances support DFS as a way of constructing a global name
734space to ease network configuration and improve reliability.
735
736To use cifs Kerberos and DFS support, the Linux keyutils package should be
737installed and something like the following lines should be added to the
738/etc/request-key.conf file:
739
740create cifs.spnego * * /usr/local/sbin/cifs.upcall %k
741create dns_resolver * * /usr/local/sbin/cifs.upcall %k
742
743CIFS kernel module parameters
744=============================
745These module parameters can be specified or modified either during the time of
746module loading or during the runtime by using the interface
747 /proc/module/cifs/parameters/<param>
748
749i.e. echo "value" > /sys/module/cifs/parameters/<param>
750
7511. enable_oplocks - Enable or disable oplocks. Oplocks are enabled by default.
752 [Y/y/1]. To disable use any of [N/n/0].
753
diff --git a/Documentation/filesystems/cifs/TODO b/Documentation/filesystems/cifs/TODO
new file mode 100644
index 000000000000..355abcdcda98
--- /dev/null
+++ b/Documentation/filesystems/cifs/TODO
@@ -0,0 +1,129 @@
1Version 1.53 May 20, 2008
2
3A Partial List of Missing Features
4==================================
5
6Contributions are welcome. There are plenty of opportunities
7for visible, important contributions to this module. Here
8is a partial list of the known problems and missing features:
9
10a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown
11so that these operations can be supported to Windows servers
12
13b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS
14SecurityDescriptors
15
16c) Better pam/winbind integration (e.g. to handle uid mapping
17better)
18
19d) Cleanup now unneeded SessSetup code in
20fs/cifs/connect.c and add back in NTLMSSP code if any servers
21need it
22
23e) fix NTLMv2 signing when two mounts with different users to same
24server.
25
26f) Directory entry caching relies on a 1 second timer, rather than
27using FindNotify or equivalent. - (started)
28
29g) quota support (needs minor kernel change since quota calls
30to make it to network filesystems or deviceless filesystems)
31
32h) investigate sync behavior (including syncpage) and check
33for proper behavior of intr/nointr
34
35i) improve support for very old servers (OS/2 and Win9x for example)
36Including support for changing the time remotely (utimes command).
37
38j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the
39extra copy in/out of the socket buffers in some cases.
40
41k) Better optimize open (and pathbased setfilesize) to reduce the
42oplock breaks coming from windows srv. Piggyback identical file
43opens on top of each other by incrementing reference count rather
44than resending (helps reduce server resource utilization and avoid
45spurious oplock breaks).
46
47l) Improve performance of readpages by sending more than one read
48at a time when 8 pages or more are requested. In conjuntion
49add support for async_cifs_readpages.
50
51m) Add support for storing symlink info to Windows servers
52in the Extended Attribute format their SFU clients would recognize.
53
54n) Finish fcntl D_NOTIFY support so kde and gnome file list windows
55will autorefresh (partially complete by Asser). Needs minor kernel
56vfs change to support removing D_NOTIFY on a file.
57
58o) Add GUI tool to configure /proc/fs/cifs settings and for display of
59the CIFS statistics (started)
60
61p) implement support for security and trusted categories of xattrs
62(requires minor protocol extension) to enable better support for SELINUX
63
64q) Implement O_DIRECT flag on open (already supported on mount)
65
66r) Create UID mapping facility so server UIDs can be mapped on a per
67mount or a per server basis to client UIDs or nobody if no mapping
68exists. This is helpful when Unix extensions are negotiated to
69allow better permission checking when UIDs differ on the server
70and client. Add new protocol request to the CIFS protocol
71standard for asking the server for the corresponding name of a
72particular uid.
73
74s) Add support for CIFS Unix and also the newer POSIX extensions to the
75server side for Samba 4.
76
77t) In support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers)
78need to add ability to set time to server (utimes command)
79
80u) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too)
81
82v) mount check for unmatched uids
83
84w) Add support for new vfs entry point for fallocate
85
86x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of
87processes can proceed better in parallel (on the server)
88
89y) Fix Samba 3 to handle reads/writes over 127K (and remove the cifs mount
90restriction of wsize max being 127K)
91
92KNOWN BUGS (updated April 24, 2007)
93====================================
94See http://bugzilla.samba.org - search on product "CifsVFS" for
95current bug list.
96
971) existing symbolic links (Windows reparse points) are recognized but
98can not be created remotely. They are implemented for Samba and those that
99support the CIFS Unix extensions, although earlier versions of Samba
100overly restrict the pathnames.
1012) follow_link and readdir code does not follow dfs junctions
102but recognizes them
1033) create of new files to FAT partitions on Windows servers can
104succeed but still return access denied (appears to be Windows
105server not cifs client problem) and has not been reproduced recently.
106NTFS partitions do not have this problem.
1074) Unix/POSIX capabilities are reset after reconnection, and affect
108a few fields in the tree connection but we do do not know which
109superblocks to apply these changes to. We should probably walk
110the list of superblocks to set these. Also need to check the
111flags on the second mount to the same share, and see if we
112can do the same trick that NFS does to remount duplicate shares.
113
114Misc testing to do
115==================
1161) check out max path names and max path name components against various server
117types. Try nested symlinks (8 deep). Return max path name in stat -f information
118
1192) Modify file portion of ltp so it can run against a mounted network
120share and run it against cifs vfs in automated fashion.
121
1223) Additional performance testing and optimization using iozone and similar -
123there are some easy changes that can be done to parallelize sequential writes,
124and when signing is disabled to request larger read sizes (larger than
125negotiated size) and send larger write sizes to modern servers.
126
1274) More exhaustively test against less common servers. More testing
128against Windows 9x, Windows ME servers.
129
diff --git a/Documentation/filesystems/cifs.txt b/Documentation/filesystems/cifs/cifs.txt
index 49cc923a93e3..49cc923a93e3 100644
--- a/Documentation/filesystems/cifs.txt
+++ b/Documentation/filesystems/cifs/cifs.txt