Lines Matching refs:vmf

2584 static int lock_page_maybe_drop_mmap(struct vm_fault *vmf, struct page *page,  in lock_page_maybe_drop_mmap()  argument
2595 if (vmf->flags & FAULT_FLAG_RETRY_NOWAIT) in lock_page_maybe_drop_mmap()
2598 *fpin = maybe_unlock_mmap_for_io(vmf, *fpin); in lock_page_maybe_drop_mmap()
2599 if (vmf->flags & FAULT_FLAG_KILLABLE) { in lock_page_maybe_drop_mmap()
2608 mmap_read_unlock(vmf->vma->vm_mm); in lock_page_maybe_drop_mmap()
2624 static struct file *do_sync_mmap_readahead(struct vm_fault *vmf) in do_sync_mmap_readahead() argument
2626 struct file *file = vmf->vma->vm_file; in do_sync_mmap_readahead()
2629 DEFINE_READAHEAD(ractl, file, mapping, vmf->pgoff); in do_sync_mmap_readahead()
2634 if (vmf->vma->vm_flags & VM_RAND_READ) in do_sync_mmap_readahead()
2639 if (vmf->vma->vm_flags & VM_SEQ_READ) { in do_sync_mmap_readahead()
2640 fpin = maybe_unlock_mmap_for_io(vmf, fpin); in do_sync_mmap_readahead()
2660 fpin = maybe_unlock_mmap_for_io(vmf, fpin); in do_sync_mmap_readahead()
2661 ra->start = max_t(long, 0, vmf->pgoff - ra->ra_pages / 2); in do_sync_mmap_readahead()
2674 static struct file *do_async_mmap_readahead(struct vm_fault *vmf, in do_async_mmap_readahead() argument
2677 struct file *file = vmf->vma->vm_file; in do_async_mmap_readahead()
2682 pgoff_t offset = vmf->pgoff; in do_async_mmap_readahead()
2685 if (vmf->vma->vm_flags & VM_RAND_READ || !ra->ra_pages) in do_async_mmap_readahead()
2691 fpin = maybe_unlock_mmap_for_io(vmf, fpin); in do_async_mmap_readahead()
2723 vm_fault_t filemap_fault(struct vm_fault *vmf) in filemap_fault() argument
2726 struct file *file = vmf->vma->vm_file; in filemap_fault()
2731 pgoff_t offset = vmf->pgoff; in filemap_fault()
2737 if (vmf->flags & FAULT_FLAG_SPECULATIVE) { in filemap_fault()
2765 if (!(vmf->vma->vm_flags & VM_RAND_READ) && ra->ra_pages) { in filemap_fault()
2771 vmf->page = page; in filemap_fault()
2782 trace_android_vh_filemap_fault_get_page(vmf, &page, &retry); in filemap_fault()
2792 if (likely(page) && !(vmf->flags & FAULT_FLAG_TRIED)) { in filemap_fault()
2797 fpin = do_async_mmap_readahead(vmf, page); in filemap_fault()
2801 count_memcg_event_mm(vmf->vma->vm_mm, PGMAJFAULT); in filemap_fault()
2803 fpin = do_sync_mmap_readahead(vmf); in filemap_fault()
2807 vmf->gfp_mask); in filemap_fault()
2815 if (!lock_page_maybe_drop_mmap(vmf, page, &fpin)) in filemap_fault()
2855 vmf->page = page; in filemap_fault()
2866 fpin = maybe_unlock_mmap_for_io(vmf, fpin); in filemap_fault()
2890 trace_android_vh_filemap_fault_cache_page(vmf, page); in filemap_fault()
2899 static bool filemap_map_pmd(struct vm_fault *vmf, struct page *page) in filemap_map_pmd() argument
2901 struct mm_struct *mm = vmf->vma->vm_mm; in filemap_map_pmd()
2904 if (pmd_trans_huge(*vmf->pmd)) { in filemap_map_pmd()
2910 if (pmd_none(*vmf->pmd) && PageTransHuge(page)) { in filemap_map_pmd()
2911 vm_fault_t ret = do_set_pmd(vmf, page); in filemap_map_pmd()
2919 if (pmd_none(*vmf->pmd)) { in filemap_map_pmd()
2920 vmf->ptl = pmd_lock(mm, vmf->pmd); in filemap_map_pmd()
2921 if (likely(pmd_none(*vmf->pmd))) { in filemap_map_pmd()
2923 pmd_populate(mm, vmf->pmd, vmf->prealloc_pte); in filemap_map_pmd()
2924 vmf->prealloc_pte = NULL; in filemap_map_pmd()
2926 spin_unlock(vmf->ptl); in filemap_map_pmd()
2930 if (pmd_devmap_trans_unstable(vmf->pmd)) { in filemap_map_pmd()
3006 vm_fault_t filemap_map_pages(struct vm_fault *vmf, in filemap_map_pages() argument
3009 struct vm_area_struct *vma = vmf->vma; in filemap_map_pages()
3017 vm_fault_t ret = (vmf->flags & FAULT_FLAG_SPECULATIVE) ? in filemap_map_pages()
3025 if (!(vmf->flags & FAULT_FLAG_SPECULATIVE) && in filemap_map_pages()
3026 filemap_map_pmd(vmf, head)) { in filemap_map_pages()
3032 if (!pte_map_lock_addr(vmf, addr)) { in filemap_map_pages()
3047 vmf->pte += xas.xa_index - last_pgoff; in filemap_map_pages()
3050 if (!pte_none(*vmf->pte)) in filemap_map_pages()
3054 if (vmf->address == addr) in filemap_map_pages()
3057 do_set_pte(vmf, page, addr); in filemap_map_pages()
3059 update_mmu_cache(vma, addr, vmf->pte); in filemap_map_pages()
3066 pte_unmap_unlock(vmf->pte, vmf->ptl); in filemap_map_pages()
3074 vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) in filemap_page_mkwrite() argument
3076 struct page *page = vmf->page; in filemap_page_mkwrite()
3077 struct inode *inode = file_inode(vmf->vma->vm_file); in filemap_page_mkwrite()
3081 file_update_time(vmf->vma->vm_file); in filemap_page_mkwrite()
3132 vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) in filemap_page_mkwrite() argument