From 52d604b415eb5d07e7e4ff69088c893c72f57cdb Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Thu, 16 Dec 2010 16:41:39 +1100 Subject: [PATCH] --- yaml --- r: 229037 b: refs/heads/master c: d95b7aaf9ab6738bef1ebcc52ab66563085e44ac h: refs/heads/master i: 229035: a3ff1947ad6303b701a049054a28b713f1cbf6e6 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_iget.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3cd4cec79b15..bc06e11d37c6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6e857567dbbfe14dd6cc3f7414671b047b1ff5c7 +refs/heads/master: d95b7aaf9ab6738bef1ebcc52ab66563085e44ac diff --git a/trunk/fs/xfs/xfs_iget.c b/trunk/fs/xfs/xfs_iget.c index cdb1c2505fc6..9fae47556604 100644 --- a/trunk/fs/xfs/xfs_iget.c +++ b/trunk/fs/xfs/xfs_iget.c @@ -104,6 +104,18 @@ xfs_inode_alloc( return ip; } +void +__xfs_inode_free( + struct rcu_head *head) +{ + struct inode *inode = container_of((void *)head, + struct inode, i_dentry); + struct xfs_inode *ip = XFS_I(inode); + + INIT_LIST_HEAD(&inode->i_dentry); + kmem_zone_free(xfs_inode_zone, ip); +} + void xfs_inode_free( struct xfs_inode *ip) @@ -147,7 +159,7 @@ xfs_inode_free( ASSERT(!spin_is_locked(&ip->i_flags_lock)); ASSERT(completion_done(&ip->i_flush)); - kmem_zone_free(xfs_inode_zone, ip); + call_rcu((struct rcu_head *)&VFS_I(ip)->i_dentry, __xfs_inode_free); } /*