Re: [PATCH 3/4] mm/memory: convert do_shared_fault() to folios

zhangpeng (AS)
2023-07-03T09:29:51Z

On 2023/7/3 13:58, Sidhartha Kumar wrote:

> Saves three implicit calls to compound_head().
>
> Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>

Reviewed-by: ZhangPeng <zhangpeng362@huawei.com>

> ---
> mm/memory.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 93480e846ace6..33bf13431974c 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -4594,6 +4594,7 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
> {
> struct vm_area_struct *vma = vmf->vma;
> vm_fault_t ret, tmp;
> + struct folio *folio = page_folio(vmf->page);
>
> ret = __do_fault(vmf);
> if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY)))
> @@ -4604,11 +4605,11 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
> * about to become writable
> */
> if (vma->vm_ops->page_mkwrite) {
> - unlock_page(vmf->page);
> + folio_unlock(folio);
> tmp = do_page_mkwrite(vmf);
> if (unlikely(!tmp ||
> (tmp & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))) {
> - put_page(vmf->page);
> + folio_put(folio);
> return tmp;
> }
> }
> @@ -4616,8 +4617,8 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
> ret |= finish_fault(vmf);
> if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE |
> VM_FAULT_RETRY))) {
> - unlock_page(vmf->page);
> - put_page(vmf->page);
> + folio_unlock(folio);
> + folio_put(folio);
> return ret;
> }
>