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. 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.