mirror of
https://github.com/adulau/aha.git
synced 2025-01-02 14:13:18 +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
51
fs/Kconfig
51
fs/Kconfig
|
@ -1601,9 +1601,10 @@ config CIFS
|
||||||
PC operating systems. The CIFS protocol is fully supported by
|
PC operating systems. The CIFS protocol is fully supported by
|
||||||
file servers such as Windows 2000 (including Windows 2003, NT 4
|
file servers such as Windows 2000 (including Windows 2003, NT 4
|
||||||
and Windows XP) as well by Samba (which provides excellent CIFS
|
and Windows XP) as well by Samba (which provides excellent CIFS
|
||||||
server support for Linux and many other operating systems). Currently
|
server support for Linux and many other operating systems). Limited
|
||||||
you must use the smbfs client filesystem to access older SMB servers
|
support for Windows ME and similar servers is provided as well.
|
||||||
such as Windows 9x and OS/2.
|
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
|
The intent of the cifs module is to provide an advanced
|
||||||
network file system client for mounting to CIFS compliant servers,
|
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
|
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
|
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
|
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
|
config CIFS_STATS
|
||||||
bool "CIFS statistics"
|
bool "CIFS statistics"
|
||||||
|
@ -1623,8 +1624,22 @@ config CIFS_STATS
|
||||||
Enabling this option will cause statistics for each server share
|
Enabling this option will cause statistics for each server share
|
||||||
mounted by the cifs client to be displayed in /proc/fs/cifs/Stats
|
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
|
config CIFS_XATTR
|
||||||
bool "CIFS extended attributes (EXPERIMENTAL)"
|
bool "CIFS extended attributes"
|
||||||
depends on CIFS
|
depends on CIFS
|
||||||
help
|
help
|
||||||
Extended attributes are name:value pairs associated with inodes by
|
Extended attributes are name:value pairs associated with inodes by
|
||||||
|
@ -1640,7 +1655,7 @@ config CIFS_XATTR
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config CIFS_POSIX
|
config CIFS_POSIX
|
||||||
bool "CIFS POSIX Extensions (EXPERIMENTAL)"
|
bool "CIFS POSIX Extensions"
|
||||||
depends on CIFS_XATTR
|
depends on CIFS_XATTR
|
||||||
help
|
help
|
||||||
Enabling this option will cause the cifs client to attempt to
|
Enabling this option will cause the cifs client to attempt to
|
||||||
|
@ -1653,10 +1668,28 @@ config CIFS_POSIX
|
||||||
|
|
||||||
config CIFS_EXPERIMENTAL
|
config CIFS_EXPERIMENTAL
|
||||||
bool "CIFS Experimental Features (EXPERIMENTAL)"
|
bool "CIFS Experimental Features (EXPERIMENTAL)"
|
||||||
depends on CIFS
|
depends on CIFS && EXPERIMENTAL
|
||||||
help
|
help
|
||||||
Enables cifs features under testing. These features
|
Enables cifs features under testing. These features are
|
||||||
are highly experimental. If unsure, say N.
|
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
|
config NCP_FS
|
||||||
tristate "NCP file system support (to mount NetWare volumes)"
|
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
|
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
|
(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
|
Version 1.38
|
||||||
------------
|
------------
|
||||||
|
|
|
@ -74,10 +74,11 @@ cifs_strtoUCS(wchar_t * to, const char *from, int len,
|
||||||
cERROR(1,
|
cERROR(1,
|
||||||
("cifs_strtoUCS: char2uni returned %d",
|
("cifs_strtoUCS: char2uni returned %d",
|
||||||
charlen));
|
charlen));
|
||||||
to[i] = cpu_to_le16(0x003f); /* a question mark */
|
/* A question mark */
|
||||||
|
to[i] = (wchar_t)cpu_to_le16(0x003f);
|
||||||
charlen = 1;
|
charlen = 1;
|
||||||
} else
|
} 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
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
||||||
static void cifs_umount_begin(struct super_block * sblock)
|
static void cifs_umount_begin(struct super_block * sblock)
|
||||||
{
|
{
|
||||||
struct cifs_sb_info *cifs_sb;
|
struct cifs_sb_info *cifs_sb;
|
||||||
|
@ -422,16 +423,18 @@ static void cifs_umount_begin(struct super_block * sblock)
|
||||||
tcon->tidStatus = CifsExiting;
|
tcon->tidStatus = CifsExiting;
|
||||||
up(&tcon->tconSem);
|
up(&tcon->tconSem);
|
||||||
|
|
||||||
|
/* cancel_brl_requests(tcon); */
|
||||||
|
/* cancel_notify_requests(tcon); */
|
||||||
if(tcon->ses && tcon->ses->server)
|
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);
|
wake_up_all(&tcon->ses->server->request_q);
|
||||||
}
|
}
|
||||||
/* BB FIXME - finish add checks for tidStatus BB */
|
/* BB FIXME - finish add checks for tidStatus BB */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int cifs_remount(struct super_block *sb, int *flags, char *data)
|
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
|
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 */
|
us with the same number of releases (closes) as opens */
|
||||||
.show_options = cifs_show_options,
|
.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,
|
.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 int netfid, const unsigned int count,
|
||||||
const __u64 offset, unsigned int *nbytes,
|
const __u64 offset, unsigned int *nbytes,
|
||||||
struct kvec *iov, const int nvec, const int long_op);
|
struct kvec *iov, const int nvec, const int long_op);
|
||||||
|
#endif /* CONFIG_CIFS_EXPERIMENTAL */
|
||||||
extern int CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
|
extern int CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
|
||||||
const unsigned char *searchName, __u64 * inode_number,
|
const unsigned char *searchName, __u64 * inode_number,
|
||||||
const struct nls_table *nls_codepage,
|
const struct nls_table *nls_codepage,
|
||||||
int remap_special_chars);
|
int remap_special_chars);
|
||||||
#endif /* CONFIG_CIFS_EXPERIMENTAL */
|
|
||||||
extern int cifs_convertUCSpath(char *target, const __le16 *source, int maxlen,
|
extern int cifs_convertUCSpath(char *target, const __le16 *source, int maxlen,
|
||||||
const struct nls_table * codepage);
|
const struct nls_table * codepage);
|
||||||
extern int cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
|
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;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
|
||||||
int
|
int
|
||||||
CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
|
CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
|
||||||
const unsigned char *searchName,
|
const unsigned char *searchName,
|
||||||
|
@ -3053,7 +3052,6 @@ GetInodeNumOut:
|
||||||
goto GetInodeNumberRetry;
|
goto GetInodeNumberRetry;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
#endif /* CIFS_EXPERIMENTAL */
|
|
||||||
|
|
||||||
int
|
int
|
||||||
CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses,
|
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 "ntlmssp.h"
|
||||||
#include "nterr.h"
|
#include "nterr.h"
|
||||||
#include "rfc1002pdu.h"
|
#include "rfc1002pdu.h"
|
||||||
|
#include "cn_cifs.h"
|
||||||
|
|
||||||
#define CIFS_PORT 445
|
#define CIFS_PORT 445
|
||||||
#define RFC1001_PORT 139
|
#define RFC1001_PORT 139
|
||||||
|
|
|
@ -283,7 +283,6 @@ int cifs_get_inode_info(struct inode **pinode,
|
||||||
there Windows server or network appliances for which
|
there Windows server or network appliances for which
|
||||||
IndexNumber field is not guaranteed unique? */
|
IndexNumber field is not guaranteed unique? */
|
||||||
|
|
||||||
#ifdef CONFIG_CIFS_EXPERIMENTAL
|
|
||||||
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM){
|
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM){
|
||||||
int rc1 = 0;
|
int rc1 = 0;
|
||||||
__u64 inode_num;
|
__u64 inode_num;
|
||||||
|
@ -299,7 +298,6 @@ int cifs_get_inode_info(struct inode **pinode,
|
||||||
} else /* do we need cast or hash to ino? */
|
} else /* do we need cast or hash to ino? */
|
||||||
(*pinode)->i_ino = inode_num;
|
(*pinode)->i_ino = inode_num;
|
||||||
} /* else ino incremented to unique num in new_inode*/
|
} /* else ino incremented to unique num in new_inode*/
|
||||||
#endif /* CIFS_EXPERIMENTAL */
|
|
||||||
insert_inode_hash(*pinode);
|
insert_inode_hash(*pinode);
|
||||||
}
|
}
|
||||||
inode = *pinode;
|
inode = *pinode;
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
*/
|
*/
|
||||||
#define CN_IDX_PROC 0x1
|
#define CN_IDX_PROC 0x1
|
||||||
#define CN_VAL_PROC 0x1
|
#define CN_VAL_PROC 0x1
|
||||||
|
#define CN_IDX_CIFS 0x2
|
||||||
|
#define CN_VAL_CIFS 0x1
|
||||||
|
|
||||||
#define CN_NETLINK_USERS 1
|
#define CN_NETLINK_USERS 1
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue