|
|
@@ -528,13 +528,16 @@ static void ceph_i_callback(struct rcu_head *head)
|
|
|
kmem_cache_free(ceph_inode_cachep, ci);
|
|
|
}
|
|
|
|
|
|
-void ceph_destroy_inode(struct inode *inode)
|
|
|
+void ceph_evict_inode(struct inode *inode)
|
|
|
{
|
|
|
struct ceph_inode_info *ci = ceph_inode(inode);
|
|
|
struct ceph_inode_frag *frag;
|
|
|
struct rb_node *n;
|
|
|
|
|
|
- dout("destroy_inode %p ino %llx.%llx\n", inode, ceph_vinop(inode));
|
|
|
+ dout("evict_inode %p ino %llx.%llx\n", inode, ceph_vinop(inode));
|
|
|
+
|
|
|
+ truncate_inode_pages_final(&inode->i_data);
|
|
|
+ clear_inode(inode);
|
|
|
|
|
|
ceph_fscache_unregister_inode_cookie(ci);
|
|
|
|
|
|
@@ -576,7 +579,10 @@ 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));
|
|
|
+}
|
|
|
|
|
|
+void ceph_destroy_inode(struct inode *inode)
|
|
|
+{
|
|
|
call_rcu(&inode->i_rcu, ceph_i_callback);
|
|
|
}
|
|
|
|