diff options
Diffstat (limited to 'fs/debugfs/inode.c')
| -rw-r--r-- | fs/debugfs/inode.c | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 95b5e78c22b1..f25daa207421 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -163,19 +163,24 @@ static int debugfs_show_options(struct seq_file *m, struct dentry *root)  	return 0;  } -static void debugfs_evict_inode(struct inode *inode) +static void debugfs_i_callback(struct rcu_head *head)  { -	truncate_inode_pages_final(&inode->i_data); -	clear_inode(inode); +	struct inode *inode = container_of(head, struct inode, i_rcu);  	if (S_ISLNK(inode->i_mode))  		kfree(inode->i_link); +	free_inode_nonrcu(inode); +} + +static void debugfs_destroy_inode(struct inode *inode) +{ +	call_rcu(&inode->i_rcu, debugfs_i_callback);  }  static const struct super_operations debugfs_super_operations = {  	.statfs		= simple_statfs,  	.remount_fs	= debugfs_remount,  	.show_options	= debugfs_show_options, -	.evict_inode	= debugfs_evict_inode, +	.destroy_inode	= debugfs_destroy_inode,  };  static void debugfs_release_dentry(struct dentry *dentry)  | 
