[CIFS] Fix oops in experimental notify code (when CONFIG_CIFS_EXPERIMENTAL
authorSteve French <sfrench@us.ibm.com>
Tue, 11 Oct 2005 02:52:13 +0000 (19:52 -0700)
committerSteve French <sfrench@us.ibm.com>
Tue, 11 Oct 2005 02:52:13 +0000 (19:52 -0700)
was turned on).

Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/CHANGES
fs/cifs/README
fs/cifs/cifsfs.c
fs/cifs/fcntl.c

index 1c249a2..b2a9383 100644 (file)
@@ -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
 ------------
index 5d9a953..e7a3ce6 100644 (file)
@@ -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
index 3bc9db5..d2d16a9 100644 (file)
@@ -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
  */
index d527e2c..a7a47bb 100644 (file)
@@ -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;