Lines Matching full:file
227 static long kvm_gmem_fallocate(struct file *file, int mode, loff_t offset, in kvm_gmem_fallocate() argument
242 ret = kvm_gmem_punch_hole(file_inode(file), offset, len); in kvm_gmem_fallocate()
244 ret = kvm_gmem_allocate(file_inode(file), offset, len); in kvm_gmem_fallocate()
247 file_modified(file); in kvm_gmem_fallocate()
251 static int kvm_gmem_release(struct inode *inode, struct file *file) in kvm_gmem_release() argument
253 struct kvm_gmem *gmem = file->private_data; in kvm_gmem_release()
260 * reference to the file and thus no new bindings can be created, but in kvm_gmem_release()
267 * kvm_gmem_get_pfn() cannot be using the file concurrently. in kvm_gmem_release()
276 WRITE_ONCE(slot->gmem.file, NULL); in kvm_gmem_release()
280 * Zap all SPTEs pointed at by this file. Do not free the backing in kvm_gmem_release()
281 * memory, as its lifetime is associated with the inode, not the file. in kvm_gmem_release()
300 static inline struct file *kvm_gmem_get_file(struct kvm_memory_slot *slot) in kvm_gmem_get_file()
303 * Do not return slot->gmem.file if it has already been closed; in kvm_gmem_get_file()
305 * kvm_gmem_release() clears slot->gmem.file. in kvm_gmem_get_file()
307 return get_file_active(&slot->gmem.file); in kvm_gmem_get_file()
366 static int kvm_gmem_mmap(struct file *file, struct vm_area_struct *vma) in kvm_gmem_mmap() argument
368 if (!kvm_gmem_supports_mmap(file_inode(file))) in kvm_gmem_mmap()
471 struct file *file; in __kvm_gmem_create() local
484 file = anon_inode_create_getfile(anon_name, &kvm_gmem_fops, gmem, in __kvm_gmem_create()
486 if (IS_ERR(file)) { in __kvm_gmem_create()
487 err = PTR_ERR(file); in __kvm_gmem_create()
491 file->f_flags |= O_LARGEFILE; in __kvm_gmem_create()
493 inode = file->f_inode; in __kvm_gmem_create()
494 WARN_ON(file->f_mapping != inode->i_mapping); in __kvm_gmem_create()
511 fd_install(fd, file); in __kvm_gmem_create()
546 struct file *file; in kvm_gmem_bind() local
551 file = fget(fd); in kvm_gmem_bind()
552 if (!file) in kvm_gmem_bind()
555 if (file->f_op != &kvm_gmem_fops) in kvm_gmem_bind()
558 gmem = file->private_data; in kvm_gmem_bind()
562 inode = file_inode(file); in kvm_gmem_bind()
582 * is not visible yet, kvm_gmem_get_pfn() is guaranteed to see the file. in kvm_gmem_bind()
584 WRITE_ONCE(slot->gmem.file, file); in kvm_gmem_bind()
593 * Drop the reference to the file, even on success. The file pins KVM, in kvm_gmem_bind()
595 * file is closed before memslots are destroyed. in kvm_gmem_bind()
599 fput(file); in kvm_gmem_bind()
608 struct file *file; in kvm_gmem_unbind() local
611 * Nothing to do if the underlying file was already closed (or is being in kvm_gmem_unbind()
614 file = kvm_gmem_get_file(slot); in kvm_gmem_unbind()
615 if (!file) in kvm_gmem_unbind()
618 gmem = file->private_data; in kvm_gmem_unbind()
620 filemap_invalidate_lock(file->f_mapping); in kvm_gmem_unbind()
627 WRITE_ONCE(slot->gmem.file, NULL); in kvm_gmem_unbind()
628 filemap_invalidate_unlock(file->f_mapping); in kvm_gmem_unbind()
630 fput(file); in kvm_gmem_unbind()
634 static struct folio *__kvm_gmem_get_pfn(struct file *file, in __kvm_gmem_get_pfn() argument
639 struct file *gmem_file = READ_ONCE(slot->gmem.file); in __kvm_gmem_get_pfn()
640 struct kvm_gmem *gmem = file->private_data; in __kvm_gmem_get_pfn()
643 if (file != gmem_file) { in __kvm_gmem_get_pfn()
648 gmem = file->private_data; in __kvm_gmem_get_pfn()
654 folio = kvm_gmem_get_folio(file_inode(file), index); in __kvm_gmem_get_pfn()
677 struct file *file = kvm_gmem_get_file(slot); in kvm_gmem_get_pfn() local
682 if (!file) in kvm_gmem_get_pfn()
685 folio = __kvm_gmem_get_pfn(file, slot, index, pfn, &is_prepared, max_order); in kvm_gmem_get_pfn()
702 fput(file); in kvm_gmem_get_pfn()
711 struct file *file; in kvm_gmem_populate() local
727 file = kvm_gmem_get_file(slot); in kvm_gmem_populate()
728 if (!file) in kvm_gmem_populate()
731 filemap_invalidate_lock(file->f_mapping); in kvm_gmem_populate()
746 folio = __kvm_gmem_get_pfn(file, slot, index, &pfn, &is_prepared, &max_order); in kvm_gmem_populate()
783 filemap_invalidate_unlock(file->f_mapping); in kvm_gmem_populate()
785 fput(file); in kvm_gmem_populate()