overlayfs: make use of ->free_inode()
synchronous parts are left in ->destroy_inode() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
b3b4a6e356
commit
0b269ded4e
|
@ -190,11 +190,13 @@ static struct inode *ovl_alloc_inode(struct super_block *sb)
|
||||||
return &oi->vfs_inode;
|
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)
|
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);
|
ovl_dir_cache_free(inode);
|
||||||
else
|
else
|
||||||
iput(oi->lowerdata);
|
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)
|
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 = {
|
static const struct super_operations ovl_super_operations = {
|
||||||
.alloc_inode = ovl_alloc_inode,
|
.alloc_inode = ovl_alloc_inode,
|
||||||
|
.free_inode = ovl_free_inode,
|
||||||
.destroy_inode = ovl_destroy_inode,
|
.destroy_inode = ovl_destroy_inode,
|
||||||
.drop_inode = generic_delete_inode,
|
.drop_inode = generic_delete_inode,
|
||||||
.put_super = ovl_put_super,
|
.put_super = ovl_put_super,
|
||||||
|
|
Loading…
Reference in New Issue