Re: [PATCH -next 3/7] mm: memory: convert do_cow_fault to use folios

From: Kefeng Wang
Date: Mon Jan 16 2023 - 06:31:55 EST




On 2023/1/13 23:37, Matthew Wilcox wrote:
On Thu, Jan 12, 2023 at 04:30:02PM +0800, Kefeng Wang wrote:
- vmf->cow_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, vmf->address);
- if (!vmf->cow_page)
+ cow_folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vmf->address,
+ false);
+ if (!cow_folio)

I have a patch I've been sitting on that converts vmf->cow_page to be
a folio. I think this series is well and truly wrecked at this point,
so let me go back and dig it out; see if it still makes sense.


For now, as vmf->page and vmf->cow_page used in do_cow_page(), it only supports cow on a page, and after converting, the folio still is 0 order,

I'm a bit unsure about it because maybe we want to allocate
high(ish)-order folios on COW fault, and if we do, then maybe we want
to align them in some way with the virtual addresses, or the other
folios in the VMA. And then we might want to indicate the precise
page for this page fault rather than have this page fault be the
start of a multi-order folio.

This means that if high(ish)-order folios/multi-order folio on cow, it
needs additional jobs and precise page for this pagefault, but for order-0, the converting is right but could break/mislead future logical? not very clear about this part, but let's wait for your patches.