]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/smbfs/inode.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / staging / smbfs / inode.c
index 540a984bb5160d5942902575803c6c79b087d507..0778589d9e9e46c8f9546a150df815edec25bae7 100644 (file)
@@ -62,11 +62,18 @@ static struct inode *smb_alloc_inode(struct super_block *sb)
        return &ei->vfs_inode;
 }
 
-static void smb_destroy_inode(struct inode *inode)
+static void smb_i_callback(struct rcu_head *head)
 {
+       struct inode *inode = container_of(head, struct inode, i_rcu);
+       INIT_LIST_HEAD(&inode->i_dentry);
        kmem_cache_free(smb_inode_cachep, SMB_I(inode));
 }
 
+static void smb_destroy_inode(struct inode *inode)
+{
+       call_rcu(&inode->i_rcu, smb_i_callback);
+}
+
 static void init_once(void *foo)
 {
        struct smb_inode_info *ei = (struct smb_inode_info *) foo;
@@ -607,6 +614,10 @@ static int smb_fill_super(struct super_block *sb, void *raw_data, int silent)
                printk(KERN_ERR "smbfs: failed to start smbiod\n");
                goto out_no_smbiod;
        }
+       if (server->mnt->flags & SMB_MOUNT_CASE)
+               sb->s_d_op = &smbfs_dentry_operations_case;
+       else
+               sb->s_d_op = &smbfs_dentry_operations;
 
        /*
         * Keep the super block locked while we get the root inode.