In a later patch, guest_memfd will be using a custom truncation routine. This is a preparatory patch, which implements .evict_inode for guest_memfd, but just performs exactly what would have been done if .evict_inode were not implemented.
No functional change intended. Signed-off-by: Ackerley Tng <[email protected]> --- virt/kvm/guest_memfd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c index 2488d7b8f2b0d..57dec458bfa77 100644 --- a/virt/kvm/guest_memfd.c +++ b/virt/kvm/guest_memfd.c @@ -978,11 +978,23 @@ static void kvm_gmem_free_inode(struct inode *inode) kmem_cache_free(kvm_gmem_inode_cachep, GMEM_I(inode)); } +static void kvm_gmem_evict_inode(struct inode *inode) +{ + struct address_space *mapping = inode->i_mapping; + + truncate_inode_pages_final_prepare(mapping); + + truncate_inode_pages_range(mapping, 0, inode->i_size); + + clear_inode(inode); +} + static const struct super_operations kvm_gmem_super_operations = { .statfs = simple_statfs, .alloc_inode = kvm_gmem_alloc_inode, .destroy_inode = kvm_gmem_destroy_inode, .free_inode = kvm_gmem_free_inode, + .evict_inode = kvm_gmem_evict_inode, }; static int kvm_gmem_init_fs_context(struct fs_context *fc) -- 2.53.0.345.g96ddfc5eaa-goog

