mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
This commit is contained in:
commit
5e04e7fe77
10 changed files with 96 additions and 21 deletions
53
fs/Kconfig
53
fs/Kconfig
|
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 highly experimental. If unsure, say N.
|
||||
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 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)"
|
||||
|
|
|
@ -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
|
||||
------------
|
||||
|
|
|
@ -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]);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
@ -3053,7 +3052,6 @@ GetInodeNumOut:
|
|||
goto GetInodeNumberRetry;
|
||||
return rc;
|
||||
}
|
||||
#endif /* CIFS_EXPERIMENTAL */
|
||||
|
||||
int
|
||||
CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
|
||||
|
|
37
fs/cifs/cn_cifs.h
Normal file
37
fs/cifs/cn_cifs.h
Normal file
|
@ -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 */
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue