mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
3bc303c254
This is the fourth respin of the patch to convert oplock breaks to use the slow_work facility. A customer of ours was testing a backport of one of the earlier patchsets, and hit a "Busy inodes after umount..." problem. An oplock break job had raced with a umount, and the superblock got torn down and its memory reused. When the oplock break job tried to dereference the inode->i_sb, the kernel oopsed. This patchset has the oplock break job hold an inode and vfsmount reference until the oplock break completes. With this, there should be no need to take a tcon reference (the vfsmount implicitly holds one already). Currently, when an oplock break comes in there's a chance that the oplock break job won't occur if the allocation of the oplock_q_entry fails. There are also some rather nasty races in the allocation and handling these structs. Rather than allocating oplock queue entries when an oplock break comes in, add a few extra fields to the cifsFileInfo struct. Get rid of the dedicated cifs_oplock_thread as well and queue the oplock break job to the slow_work thread pool. This approach also has the advantage that the oplock break jobs can potentially run in parallel rather than be serialized like they are today. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
147 lines
6.2 KiB
Plaintext
147 lines
6.2 KiB
Plaintext
config CIFS
|
|
tristate "CIFS support (advanced network filesystem, SMBFS successor)"
|
|
depends on INET
|
|
select NLS
|
|
select SLOW_WORK
|
|
help
|
|
This is the client VFS module for the Common Internet File System
|
|
(CIFS) protocol which is the successor to the Server Message Block
|
|
(SMB) protocol, the native file sharing mechanism for most early
|
|
PC operating systems. The CIFS protocol is fully supported by
|
|
file servers such as Windows 2000 (including Windows 2003, NT 4
|
|
and Windows XP) as well by Samba (which provides excellent CIFS
|
|
server support for Linux and many other operating systems). Limited
|
|
support for OS/2 and Windows ME and similar servers is provided as
|
|
well.
|
|
|
|
The cifs module provides an advanced network file system
|
|
client for mounting to CIFS compliant servers. It includes
|
|
support for DFS (hierarchical name space), secure per-user
|
|
session establishment via Kerberos or NTLM or NTLMv2,
|
|
safe distributed caching (oplock), optional packet
|
|
signing, Unicode and other internationalization improvements.
|
|
If you need to mount to Samba or Windows from this machine, say Y.
|
|
|
|
config CIFS_STATS
|
|
bool "CIFS statistics"
|
|
depends on CIFS
|
|
help
|
|
Enabling this option will cause statistics for each server share
|
|
mounted by the cifs client to be displayed in /proc/fs/cifs/Stats
|
|
|
|
config CIFS_STATS2
|
|
bool "Extended statistics"
|
|
depends on CIFS_STATS
|
|
help
|
|
Enabling this option will allow more detailed statistics on SMB
|
|
request timing to be displayed in /proc/fs/cifs/DebugData and also
|
|
allow optional logging of slow responses to dmesg (depending on the
|
|
value of /proc/fs/cifs/cifsFYI, see fs/cifs/README for more details).
|
|
These additional statistics may have a minor effect on performance
|
|
and memory utilization.
|
|
|
|
Unless you are a developer or are doing network performance analysis
|
|
or tuning, say N.
|
|
|
|
config CIFS_WEAK_PW_HASH
|
|
bool "Support legacy servers which use weaker LANMAN security"
|
|
depends on CIFS
|
|
help
|
|
Modern CIFS servers including Samba and most Windows versions
|
|
(since 1997) support stronger NTLM (and even NTLMv2 and Kerberos)
|
|
security mechanisms. These hash the password more securely
|
|
than the mechanisms used in the older LANMAN version of the
|
|
SMB protocol but LANMAN based authentication is needed to
|
|
establish sessions with some old SMB servers.
|
|
|
|
Enabling this option allows the cifs module to mount to older
|
|
LANMAN based servers such as OS/2 and Windows 95, but such
|
|
mounts may be less secure than mounts using NTLM or more recent
|
|
security mechanisms if you are on a public network. Unless you
|
|
have a need to access old SMB servers (and are on a private
|
|
network) you probably want to say N. Even if this support
|
|
is enabled in the kernel build, LANMAN authentication will not be
|
|
used automatically. At runtime LANMAN mounts are disabled but
|
|
can be set to required (or optional) either in
|
|
/proc/fs/cifs (see fs/cifs/README for more detail) or via an
|
|
option on the mount command. This support is disabled by
|
|
default in order to reduce the possibility of a downgrade
|
|
attack.
|
|
|
|
If unsure, say N.
|
|
|
|
config CIFS_UPCALL
|
|
bool "Kerberos/SPNEGO advanced session setup"
|
|
depends on CIFS && KEYS
|
|
help
|
|
Enables an upcall mechanism for CIFS which accesses
|
|
userspace helper utilities to provide SPNEGO packaged (RFC 4178)
|
|
Kerberos tickets which are needed to mount to certain secure servers
|
|
(for which more secure Kerberos authentication is required). If
|
|
unsure, say N.
|
|
|
|
config CIFS_XATTR
|
|
bool "CIFS extended attributes"
|
|
depends on CIFS
|
|
help
|
|
Extended attributes are name:value pairs associated with inodes by
|
|
the kernel or by users (see the attr(5) manual page, or visit
|
|
<http://acl.bestbits.at/> for details). CIFS maps the name of
|
|
extended attributes beginning with the user namespace prefix
|
|
to SMB/CIFS EAs. EAs are stored on Windows servers without the
|
|
user namespace prefix, but their names are seen by Linux cifs clients
|
|
prefaced by the user namespace prefix. The system namespace
|
|
(used by some filesystems to store ACLs) is not supported at
|
|
this time.
|
|
|
|
If unsure, say N.
|
|
|
|
config CIFS_POSIX
|
|
bool "CIFS POSIX Extensions"
|
|
depends on CIFS_XATTR
|
|
help
|
|
Enabling this option will cause the cifs client to attempt to
|
|
negotiate a newer dialect with servers, such as Samba 3.0.5
|
|
or later, that optionally can handle more POSIX like (rather
|
|
than Windows like) file behavior. It also enables
|
|
support for POSIX ACLs (getfacl and setfacl) to servers
|
|
(such as Samba 3.10 and later) which can negotiate
|
|
CIFS POSIX ACL support. If unsure, say N.
|
|
|
|
config CIFS_DEBUG2
|
|
bool "Enable additional CIFS debugging routines"
|
|
depends on CIFS
|
|
help
|
|
Enabling this option adds a few more debugging routines
|
|
to the cifs code which slightly increases the size of
|
|
the cifs module and can cause additional logging of debug
|
|
messages in some error paths, slowing performance. This
|
|
option can be turned off unless you are debugging
|
|
cifs problems. If unsure, say N.
|
|
|
|
config CIFS_DFS_UPCALL
|
|
bool "DFS feature support"
|
|
depends on CIFS && KEYS
|
|
help
|
|
Distributed File System (DFS) support is used to access shares
|
|
transparently in an enterprise name space, even if the share
|
|
moves to a different server. This feature also enables
|
|
an upcall mechanism for CIFS which contacts userspace helper
|
|
utilities to provide server name resolution (host names to
|
|
IP addresses) which is needed for implicit mounts of DFS junction
|
|
points. If unsure, say N.
|
|
|
|
config CIFS_EXPERIMENTAL
|
|
bool "CIFS Experimental Features (EXPERIMENTAL)"
|
|
depends on CIFS && EXPERIMENTAL
|
|
help
|
|
Enables cifs features under testing. These features are
|
|
experimental and currently include DFS support and directory
|
|
change notification ie fcntl(F_DNOTIFY), as well as the upcall
|
|
mechanism which will be used for Kerberos session negotiation
|
|
and uid remapping. Some of these features also may depend on
|
|
setting a value of 1 to the pseudo-file /proc/fs/cifs/Experimental
|
|
(which is disabled by default). See the file fs/cifs/README
|
|
for more details. If unsure, say N.
|
|
|