Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
authorSteve French <sfrench@us.ibm.com>
Thu, 10 Nov 2005 23:34:57 +0000 (15:34 -0800)
committerSteve French <sfrench@us.ibm.com>
Thu, 10 Nov 2005 23:34:57 +0000 (15:34 -0800)
fs/Kconfig
fs/cifs/cifsfs.c
fs/cifs/cifsproto.h
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/inode.c
include/linux/connector.h

index 7d6ae369ce4404600489c238908087774bb424d1..1f0ebe61ad4099019dc4366265cb1f6f6c370e02 100644 (file)
@@ -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,29 @@ 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)"
index 877095a1192ad8e13b7bffe6e041ab578346ec46..682b0235ad9a170df904563eea37d9a132291ce2 100644 (file)
@@ -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,
 };
 
index d301149b1bb0f808fc519e5f66faf45a935ea121..1b73f4f4c5ce6d1cb88e95e53fa8420fe1382957 100644 (file)
@@ -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,
index 9312bfc5668202218f59efda0028f92ac5761f40..a53c596e1082fe3c90bc6e93c4736b120ef9d277 100644 (file)
@@ -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,
index 450ab75d654623d492c6969fc312bd041083fa2a..2cb620716bc14661295a8c4fe6782d0e9ac99f62 100644 (file)
@@ -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
index 912d401600f6e2f7abce605c63e115372b9ecdaa..923d071163b2769f86e4a5b47d2e77878d13a072 100644 (file)
@@ -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;
index c5769c6585f4cf9c623b8e086ba830310cff3256..ad1a22c1c42e24e2c2e0b93e4f090810ccb43a17 100644 (file)
@@ -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