Re: [PATCH 09/20] mm: Factor out functionality to finish page faults
From: Ross Zwisler <hidden>
Date: 2016-10-17 17:40:42
Also in:
linux-fsdevel, nvdimm
On Tue, Sep 27, 2016 at 06:08:13PM +0200, Jan Kara wrote:
Introduce function finish_fault() as a helper function for finishing page faults. It is rather thin wrapper around alloc_set_pte() but since we'd want to call this from DAX code or filesystems, it is still useful to avoid some boilerplate code. Signed-off-by: Jan Kara <jack@suse.cz> ---
quoted hunk ↗ jump to hunk
diff --git a/mm/memory.c b/mm/memory.c index 17db88a38e8a..f54cfad7fe04 100644 --- a/mm/memory.c +++ b/mm/memory.c@@ -3029,6 +3029,36 @@ int alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg, return 0; } + +/** + * finish_fault - finish page fault once we have prepared the page to fault + * + * @vmf: structure describing the fault + * + * This function handles all that is needed to finish a page fault once the + * page to fault in is prepared. It handles locking of PTEs, inserts PTE for + * given page, adds reverse page mapping, handles memcg charges and LRU + * addition. The function returns 0 on success, VM_FAULT_ code in case of + * error. + * + * The function expects the page to be locked. + */ +int finish_fault(struct vm_fault *vmf) +{ + struct page *page; + int ret; + + /* Did we COW the page? */ + if (vmf->flags & FAULT_FLAG_WRITE && !(vmf->vma->vm_flags & VM_SHARED))
Oh, sorry, I did have one bit of feedback. Maybe added parens around the flag check for readability: if ((vmf->flags & FAULT_FLAG_WRITE) && !(vmf->vma->vm_flags & VM_SHARED)) Aside from that one nit: Reviewed-by: Ross Zwisler <redacted> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>