ceph: use ->free_inode()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 10 Apr 2019 19:18:50 +0000 (15:18 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 2 May 2019 02:43:26 +0000 (22:43 -0400)
a lot of non-delayed work in this case; all of that is left in
->destroy_inode()

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

index 2d61ddda9bf5653fb559fb320422fd84ec470419..dc0a36d0adf84c054f569ab2c97b1c673f24a307 100644 (file)
@@ -519,9 +519,8 @@ struct inode *ceph_alloc_inode(struct super_block *sb)
        return &ci->vfs_inode;
 }
 
-static void ceph_i_callback(struct rcu_head *head)
+void ceph_free_inode(struct inode *inode)
 {
-       struct inode *inode = container_of(head, struct inode, i_rcu);
        struct ceph_inode_info *ci = ceph_inode(inode);
 
        kfree(ci->i_symlink);
@@ -581,8 +580,6 @@ void ceph_destroy_inode(struct inode *inode)
                ceph_buffer_put(ci->i_xattrs.prealloc_blob);
 
        ceph_put_string(rcu_dereference_raw(ci->i_layout.pool_ns));
-
-       call_rcu(&inode->i_rcu, ceph_i_callback);
 }
 
 int ceph_drop_inode(struct inode *inode)
index 6d5bb2f74612003edbcd6204b3c6dcdb86f0ef80..285edda4fc3b4ec122975062f09d6497e41a0cbe 100644 (file)
@@ -848,6 +848,7 @@ static void ceph_umount_begin(struct super_block *sb)
 static const struct super_operations ceph_super_ops = {
        .alloc_inode    = ceph_alloc_inode,
        .destroy_inode  = ceph_destroy_inode,
+       .free_inode     = ceph_free_inode,
        .write_inode    = ceph_write_inode,
        .drop_inode     = ceph_drop_inode,
        .sync_fs        = ceph_sync_fs,
index 16c03188578ea7eee4fee4fdbb7de38fd4e7b3a9..c5b4a05905c01f7ce738a7123fe6db23945c2c7e 100644 (file)
@@ -874,6 +874,7 @@ extern const struct inode_operations ceph_file_iops;
 
 extern struct inode *ceph_alloc_inode(struct super_block *sb);
 extern void ceph_destroy_inode(struct inode *inode);
+extern void ceph_free_inode(struct inode *inode);
 extern int ceph_drop_inode(struct inode *inode);
 
 extern struct inode *ceph_get_inode(struct super_block *sb,