vfs: push dentry_unhash on rmdir into file systems
[deliverable/linux.git] / fs / cifs / inode.c
index 6c9ee8014ff0426e6aaed09f77a8ebffe9a406b3..cee5896bcf56e414c72b586c1cd71ce9fd3dcdaf 100644 (file)
@@ -44,13 +44,17 @@ static void cifs_set_ops(struct inode *inode)
                                inode->i_fop = &cifs_file_direct_nobrl_ops;
                        else
                                inode->i_fop = &cifs_file_direct_ops;
+               } else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_STRICT_IO) {
+                       if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
+                               inode->i_fop = &cifs_file_strict_nobrl_ops;
+                       else
+                               inode->i_fop = &cifs_file_strict_ops;
                } else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
                        inode->i_fop = &cifs_file_nobrl_ops;
                else { /* not direct, send byte range locks */
                        inode->i_fop = &cifs_file_ops;
                }
 
-
                /* check if server can support readpages */
                if (cifs_sb_master_tcon(cifs_sb)->ses->server->maxBuf <
                                PAGE_CACHE_SIZE + MAX_CIFS_HDR_SIZE)
@@ -1457,6 +1461,8 @@ int cifs_rmdir(struct inode *inode, struct dentry *direntry)
 
        cFYI(1, "cifs_rmdir, inode = 0x%p", inode);
 
+       dentry_unhash(direntry);
+
        xid = GetXid();
 
        full_path = build_path_from_dentry(direntry);
@@ -1679,7 +1685,7 @@ cifs_inode_needs_reval(struct inode *inode)
 /*
  * Zap the cache. Called when invalid_mapping flag is set.
  */
-static void
+void
 cifs_invalidate_mapping(struct inode *inode)
 {
        int rc;
This page took 0.027356 seconds and 5 git commands to generate.