Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
Browse files Browse the repository at this point in the history
  • Loading branch information
Linus Torvalds committed Nov 11, 2005
2 parents a5cf8b7 + 1b397f4 commit 5e04e7f
Show file tree
Hide file tree
Showing 10 changed files with 96 additions and 21 deletions.
53 changes: 43 additions & 10 deletions fs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1601,9 +1601,10 @@ config CIFS
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). Currently
you must use the smbfs client filesystem to access older SMB servers
such as Windows 9x and OS/2.
server support for Linux and many other operating systems). Limited
support for Windows ME and similar servers is provided as well.
You must use the smbfs client filesystem to access older SMB servers
such as OS/2 and DOS.

The intent of the cifs module is to provide an advanced
network file system client for mounting to CIFS compliant servers,
Expand All @@ -1614,7 +1615,7 @@ config CIFS
cifs if running only a (Samba) server. It is possible to enable both
smbfs and cifs (e.g. if you are using CIFS for accessing Windows 2003
and Samba 3 servers, and smbfs for accessing old servers). If you need
to mount to Samba or Windows 2003 servers from this machine, say Y.
to mount to Samba or Windows from this machine, say Y.

config CIFS_STATS
bool "CIFS statistics"
Expand All @@ -1623,8 +1624,22 @@ config CIFS_STATS
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 "CIFS 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_XATTR
bool "CIFS extended attributes (EXPERIMENTAL)"
bool "CIFS extended attributes"
depends on CIFS
help
Extended attributes are name:value pairs associated with inodes by
Expand All @@ -1636,11 +1651,11 @@ config CIFS_XATTR
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 (EXPERIMENTAL)"
bool "CIFS POSIX Extensions"
depends on CIFS_XATTR
help
Enabling this option will cause the cifs client to attempt to
Expand All @@ -1653,10 +1668,28 @@ config CIFS_POSIX

config CIFS_EXPERIMENTAL
bool "CIFS Experimental Features (EXPERIMENTAL)"
depends on CIFS
depends on CIFS && EXPERIMENTAL
help
Enables cifs features under testing. These features are
experimental and currently include support for writepages
(multipage writebehind performance improvements) and directory
change notification ie fcntl(F_DNOTIFY) as well as some security
improvements. Some also depend on setting at runtime 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.

config CIFS_UPCALL
bool "CIFS Kerberos/SPNEGO advanced session setup (EXPERIMENTAL)"
depends on CIFS_EXPERIMENTAL
select CONNECTOR
help
Enables cifs features under testing. These features
are highly experimental. If unsure, say N.
Enables an upcall mechanism for CIFS which will be used to contact
userspace helper utilities to provide SPNEGO packaged Kerberos
tickets which are needed to mount to certain secure servers
(for which more secure Kerberos authentication is required). If
unsure, say N.

config NCP_FS
tristate "NCP file system support (to mount NetWare volumes)"
Expand Down
2 changes: 1 addition & 1 deletion fs/cifs/CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Version 1.39
------------
Defer close of a file handle slightly if pending writes depend on that file handle
(this reduces the EBADF bad file handle errors that can be logged under heavy
stress on writes).
stress on writes). Modify cifs Kconfig options to expose CONFIG_CIFS_STATS2

Version 1.38
------------
Expand Down
5 changes: 3 additions & 2 deletions fs/cifs/cifs_unicode.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,11 @@ cifs_strtoUCS(wchar_t * to, const char *from, int len,
cERROR(1,
("cifs_strtoUCS: char2uni returned %d",
charlen));
to[i] = cpu_to_le16(0x003f); /* a question mark */
/* A question mark */
to[i] = (wchar_t)cpu_to_le16(0x003f);
charlen = 1;
} else
to[i] = cpu_to_le16(to[i]);
to[i] = (wchar_t)cpu_to_le16(to[i]);

}

Expand Down
11 changes: 8 additions & 3 deletions fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ static struct quotactl_ops cifs_quotactl_ops = {
};
#endif

#ifdef CONFIG_CIFS_EXPERIMENTAL
static void cifs_umount_begin(struct super_block * sblock)
{
struct cifs_sb_info *cifs_sb;
Expand All @@ -422,16 +423,18 @@ static void cifs_umount_begin(struct super_block * sblock)
tcon->tidStatus = CifsExiting;
up(&tcon->tconSem);

/* cancel_brl_requests(tcon); */
/* cancel_notify_requests(tcon); */
if(tcon->ses && tcon->ses->server)
{
cERROR(1,("wake up tasks now - umount begin not complete"));
cFYI(1,("wake up tasks now - umount begin not complete"));
wake_up_all(&tcon->ses->server->request_q);
}
/* BB FIXME - finish add checks for tidStatus BB */

return;
}

#endif

static int cifs_remount(struct super_block *sb, int *flags, char *data)
{
Expand All @@ -450,7 +453,9 @@ struct super_operations cifs_super_ops = {
unless later we add lazy close of inodes or unless the kernel forgets to call
us with the same number of releases (closes) as opens */
.show_options = cifs_show_options,
/* .umount_begin = cifs_umount_begin, */ /* BB finish in the future */
#ifdef CONFIG_CIFS_EXPERIMENTAL
.umount_begin = cifs_umount_begin,
#endif
.remount_fs = cifs_remount,
};

Expand Down
2 changes: 1 addition & 1 deletion fs/cifs/cifsproto.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,11 +242,11 @@ extern int CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon,
const int netfid, const unsigned int count,
const __u64 offset, unsigned int *nbytes,
struct kvec *iov, const int nvec, const int long_op);
#endif /* CONFIG_CIFS_EXPERIMENTAL */
extern int CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
const unsigned char *searchName, __u64 * inode_number,
const struct nls_table *nls_codepage,
int remap_special_chars);
#endif /* CONFIG_CIFS_EXPERIMENTAL */
extern int cifs_convertUCSpath(char *target, const __le16 *source, int maxlen,
const struct nls_table * codepage);
extern int cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
Expand Down
2 changes: 0 additions & 2 deletions fs/cifs/cifssmb.c
Original file line number Diff line number Diff line change
Expand Up @@ -2959,7 +2959,6 @@ CIFSFindClose(const int xid, struct cifsTconInfo *tcon, const __u16 searchHandle
return rc;
}

#ifdef CONFIG_CIFS_EXPERIMENTAL
int
CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
const unsigned char *searchName,
Expand Down Expand Up @@ -3053,7 +3052,6 @@ CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
goto GetInodeNumberRetry;
return rc;
}
#endif /* CIFS_EXPERIMENTAL */

int
CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
Expand Down
37 changes: 37 additions & 0 deletions fs/cifs/cn_cifs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* fs/cifs/cn_cifs.h
*
* Copyright (c) International Business Machines Corp., 2002
* Author(s): Steve French (sfrench@us.ibm.com)
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
* the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#ifndef _CN_CIFS_H
#define _CN_CIFS_H
#ifdef CONFIG_CIFS_UPCALL
#include <linux/types.h>
#include <linux/connector.h>

struct cifs_upcall {
char signature[4]; /* CIFS */
enum command {
CIFS_GET_IP = 0x00000001, /* get ip address for hostname */
CIFS_GET_SECBLOB = 0x00000002, /* get SPNEGO wrapped blob */
} command;
/* union cifs upcall data follows */
};
#endif /* CIFS_UPCALL */
#endif /* _CN_CIFS_H */
1 change: 1 addition & 0 deletions fs/cifs/connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "ntlmssp.h"
#include "nterr.h"
#include "rfc1002pdu.h"
#include "cn_cifs.h"

#define CIFS_PORT 445
#define RFC1001_PORT 139
Expand Down
2 changes: 0 additions & 2 deletions fs/cifs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,6 @@ int cifs_get_inode_info(struct inode **pinode,
there Windows server or network appliances for which
IndexNumber field is not guaranteed unique? */

#ifdef CONFIG_CIFS_EXPERIMENTAL
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM){
int rc1 = 0;
__u64 inode_num;
Expand All @@ -299,7 +298,6 @@ int cifs_get_inode_info(struct inode **pinode,
} else /* do we need cast or hash to ino? */
(*pinode)->i_ino = inode_num;
} /* else ino incremented to unique num in new_inode*/
#endif /* CIFS_EXPERIMENTAL */
insert_inode_hash(*pinode);
}
inode = *pinode;
Expand Down
2 changes: 2 additions & 0 deletions include/linux/connector.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
*/
#define CN_IDX_PROC 0x1
#define CN_VAL_PROC 0x1
#define CN_IDX_CIFS 0x2
#define CN_VAL_CIFS 0x1

#define CN_NETLINK_USERS 1

Expand Down

0 comments on commit 5e04e7f

Please sign in to comment.