Re: [PATCH 3/4] add replace_page(): change the page pte is pointing to.

Andrew Morton
2009-04-14T22:15:46Z

On Thu, 9 Apr 2009 06:58:40 +0300
Izik Eidus <ieidus@redhat.com> wrote:

> replace_page() allow changing the mapping of pte from one physical page
> into diffrent physical page.

At a high level, this is very similar to what page migration does. Yet
this implementation shares nothing with the page migration code.

Can this situation be improved?

> this function is working by removing oldpage from the rmap and calling
> put_page on it, and by setting the pte to point into newpage and by
> inserting it to the rmap using page_add_file_rmap().
>
> note: newpage must be non anonymous page, the reason for this is:
> replace_page() is built to allow mapping one page into more than one
> virtual addresses, the mapping of this page can happen in diffrent
> offsets inside each vma, and therefore we cannot trust the page->index
> anymore.
>
> the side effect of this issue is that newpage cannot be anything but
> kernel allocated page that is not swappable.
>