]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
overlayfs: make use of ->free_inode()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 16 Apr 2019 02:52:17 +0000 (22:52 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 2 May 2019 02:43:27 +0000 (22:43 -0400)
synchronous parts are left in ->destroy_inode()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/overlayfs/super.c

index 0116735cc32147ca3972275e2baa8a52d296f63f..5ec4fc2f5d7e7cd0b9ccf8816e84bda38805306d 100644 (file)
@@ -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,