X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=fs%2Fadfs%2Fsuper.c;h=47dffc513a263a0f1943ce9c510a9d80ea3e3195;hb=fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9;hp=959dbff2d42dc4a0a0026e3b3aad5f7f0008a7f3;hpb=1bb95834bbcdc969e477a9284cf96c17a4c2616f;p=deliverable%2Flinux.git diff --git a/fs/adfs/super.c b/fs/adfs/super.c index 959dbff2d42d..47dffc513a26 100644 --- a/fs/adfs/super.c +++ b/fs/adfs/super.c @@ -240,11 +240,18 @@ static struct inode *adfs_alloc_inode(struct super_block *sb) return &ei->vfs_inode; } -static void adfs_destroy_inode(struct inode *inode) +static void adfs_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(adfs_inode_cachep, ADFS_I(inode)); } +static void adfs_destroy_inode(struct inode *inode) +{ + call_rcu(&inode->i_rcu, adfs_i_callback); +} + static void init_once(void *foo) { struct adfs_inode_info *ei = (struct adfs_inode_info *) foo;