summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-10-10 19:52:13 -0700
committerSteve French <sfrench@us.ibm.com>2005-10-10 19:52:13 -0700
commit4ca9c190d902caa7efb899a4c7fc8c6e6d926e95 (patch)
tree2c2cce67494a43c7cd35063435ac0d18a85dbe4d
parent34210f33025a3256b9ac3f0a182f02f1879140cb (diff)
[CIFS] Fix oops in experimental notify code (when CONFIG_CIFS_EXPERIMENTAL
was turned on). Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/README2
-rw-r--r--fs/cifs/cifsfs.c4
-rw-r--r--fs/cifs/fcntl.c4
4 files changed, 12 insertions, 1 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 1c249a2abae..b2a938378be 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -8,7 +8,8 @@ allowing an SMBs TCP length to be up to a few bytes longer than it should be.
wsize and rsize can now be larger than negotiated buffer size if server
supports large readx/writex, even when directio mount flag not specified.
Write size will in many cases now be 16K instead of 4K which greatly helps
-file copy performance on lightly loaded networks.
+file copy performance on lightly loaded networks. Fix oops in dnotify
+when experimental config flag enabled.
Version 1.37
------------
diff --git a/fs/cifs/README b/fs/cifs/README
index 5d9a953888d..e7a3ce62d71 100644
--- a/fs/cifs/README
+++ b/fs/cifs/README
@@ -296,6 +296,8 @@ A partial list of the supported mount options follows:
unused.
rsize default read size (usually 16K)
wsize default write size (usually 16K, 32K is often better over GigE)
+ maximum wsize currently allowed by CIFS is 57344 (14 4096 byte
+ pages)
rw mount the network share read-write (note that the
server may still consider the share read-only)
ro mount network share read-only
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 3bc9db52260..d2d16a9c1f0 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -901,6 +901,10 @@ init_cifs(void)
INIT_LIST_HEAD(&GlobalSMBSessionList);
INIT_LIST_HEAD(&GlobalTreeConnectionList);
INIT_LIST_HEAD(&GlobalOplock_Q);
+#ifdef CONFIG_CIFS_EXPERIMENTAL
+ INIT_LIST_HEAD(&GlobalDnotifyReqList);
+ INIT_LIST_HEAD(&GlobalDnotifyRsp_Q);
+#endif
/*
* Initialize Global counters
*/
diff --git a/fs/cifs/fcntl.c b/fs/cifs/fcntl.c
index d527e2c7607..a7a47bb36bf 100644
--- a/fs/cifs/fcntl.c
+++ b/fs/cifs/fcntl.c
@@ -78,6 +78,10 @@ int cifs_dir_notify(struct file * file, unsigned long arg)
__u32 filter = FILE_NOTIFY_CHANGE_NAME | FILE_NOTIFY_CHANGE_ATTRIBUTES;
__u16 netfid;
+
+ if(experimEnabled == 0)
+ return 0;
+
xid = GetXid();
cifs_sb = CIFS_SB(file->f_dentry->d_sb);
pTcon = cifs_sb->tcon;