]> err.no Git - linux-2.6/commitdiff
[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 1c249a2abae384981db8d9c45c2c6d5f4540168a..b2a938378bef66be4d48df34693ceef475e8918b 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 5d9a953888d9e9d5ea55a0ff3df1e6f3dc40ba8a..e7a3ce62d71b35c14a5507703eb93286e802afc9 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 3bc9db522600b542cb5ea98e00b108539478f706..d2d16a9c1f05d340f6d7fae4f3cb2c731f0729b8 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 d527e2c76073e6c16fdd6192c2bb948c77b268e0..a7a47bb36bf30888ea87bd62592ed732bba05d25 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;