]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/freevxfs/vxfs_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 / freevxfs / vxfs_inode.c
index 8c04eac5079d34d5ecdec820e23990294cc1d2ba..2ba6719ac6127950fa33f59ec0883d6f6a42362b 100644 (file)
@@ -337,6 +337,13 @@ vxfs_iget(struct super_block *sbp, ino_t ino)
        return ip;
 }
 
+static void vxfs_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(vxfs_inode_cachep, inode->i_private);
+}
+
 /**
  * vxfs_evict_inode - remove inode from main memory
  * @ip:                inode to discard.
@@ -350,5 +357,5 @@ vxfs_evict_inode(struct inode *ip)
 {
        truncate_inode_pages(&ip->i_data, 0);
        end_writeback(ip);
-       kmem_cache_free(vxfs_inode_cachep, ip->i_private);
+       call_rcu(&ip->i_rcu, vxfs_i_callback);
 }