Commit 0b269ded authored by Al Viro's avatar Al Viro
Browse files

overlayfs: make use of ->free_inode()



synchronous parts are left in ->destroy_inode()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b3b4a6e3
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -190,11 +190,13 @@ static struct inode *ovl_alloc_inode(struct super_block *sb)
	return &oi->vfs_inode;
}

static void ovl_i_callback(struct rcu_head *head)
static void ovl_free_inode(struct inode *inode)
{
	struct inode *inode = container_of(head, struct inode, i_rcu);
	struct ovl_inode *oi = OVL_I(inode);

	kmem_cache_free(ovl_inode_cachep, OVL_I(inode));
	kfree(oi->redirect);
	mutex_destroy(&oi->lock);
	kmem_cache_free(ovl_inode_cachep, oi);
}

static void ovl_destroy_inode(struct inode *inode)
@@ -207,10 +209,6 @@ static void ovl_destroy_inode(struct inode *inode)
		ovl_dir_cache_free(inode);
	else
		iput(oi->lowerdata);
	kfree(oi->redirect);
	mutex_destroy(&oi->lock);

	call_rcu(&inode->i_rcu, ovl_i_callback);
}

static void ovl_free_fs(struct ovl_fs *ofs)
@@ -377,6 +375,7 @@ static int ovl_remount(struct super_block *sb, int *flags, char *data)

static const struct super_operations ovl_super_operations = {
	.alloc_inode	= ovl_alloc_inode,
	.free_inode	= ovl_free_inode,
	.destroy_inode	= ovl_destroy_inode,
	.drop_inode	= generic_delete_inode,
	.put_super	= ovl_put_super,