]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/logfs/inode.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / logfs / inode.c
index d8c71ece098fb2d5ce87afe1fbb16a1fc130d336..03b8c240aeda37ea287b36f8ebaeeae1ee23a479 100644 (file)
@@ -141,13 +141,20 @@ struct inode *logfs_safe_iget(struct super_block *sb, ino_t ino, int *is_cached)
        return __logfs_iget(sb, ino);
 }
 
+static void logfs_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(logfs_inode_cache, logfs_inode(inode));
+}
+
 static void __logfs_destroy_inode(struct inode *inode)
 {
        struct logfs_inode *li = logfs_inode(inode);
 
        BUG_ON(li->li_block);
        list_del(&li->li_freeing_list);
-       kmem_cache_free(logfs_inode_cache, li);
+       call_rcu(&inode->i_rcu, logfs_i_callback);
 }
 
 static void logfs_destroy_inode(struct inode *inode)