Messages in this thread | | | Date | Wed, 12 Apr 2023 10:47:52 +0200 | Subject | Re: RFC for new feature to move pages from one vma to another without split | From | David Hildenbrand <> |
| |
On 06.04.23 19:29, Peter Xu wrote: > Hi, Lokesh, > > Sorry for a late reply. Copy Blake Caldwell and Mike too. > > On Thu, Feb 16, 2023 at 02:27:11PM -0800, Lokesh Gidra wrote: >> I) SUMMARY: >> Requesting comments on a new feature which remaps pages from one >> private anonymous mapping to another, without altering the vmas >> involved. Two alternatives exist but both have drawbacks: >> 1. userfaultfd ioctls allocate new pages, copy data and free the old >> ones even when updates could be done in-place; >> 2. mremap results in vma splitting in most of the cases due to 'pgoff' mismatch. > > Personally it was always a mistery to me on how vm_pgoff works with > anonymous vmas and why it needs to be setup with vm_start >> PAGE_SHIFT. > > Just now I tried to apply below oneliner change: > > @@ -1369,7 +1369,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, > /* > * Set pgoff according to addr for anon_vma. > */ > - pgoff = addr >> PAGE_SHIFT; > + pgoff = 0; > break; > default: > return -EINVAL; > > The kernel even boots without a major problem so far..
I think it's for RMAP purposes.
Take a look at linear_page_index() and how it's, for example, used in ksm_might_need_to_copy() alongside page->index.
-- Thanks,
David / dhildenb
| |