X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=fs%2Fext3%2Fsuper.c;h=b7d0554631e413c20afeff107beb855419abfceb;hp=ebc3a9c77067d3b6a60cd869c1bd4922f85efca4;hb=40c73abbb37e399eba274fe49e520ffa3dd65bdb;hpb=d96336b05d718b03ff03c94c0dc0cc283a29d534 diff --git a/fs/ext3/super.c b/fs/ext3/super.c index ebc3a9c77067..b7d0554631e4 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c @@ -497,6 +497,13 @@ static struct inode *ext3_alloc_inode(struct super_block *sb) return &ei->vfs_inode; } +static void ext3_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(ext3_inode_cachep, EXT3_I(inode)); +} + static void ext3_destroy_inode(struct inode *inode) { if (!list_empty(&(EXT3_I(inode)->i_orphan))) { @@ -507,7 +514,7 @@ static void ext3_destroy_inode(struct inode *inode) false); dump_stack(); } - kmem_cache_free(ext3_inode_cachep, EXT3_I(inode)); + call_rcu(&inode->i_rcu, ext3_i_callback); } static void init_once(void *foo)