On Mon, Nov 04, 2019 at 12:33:09PM -0800, David Rientjes wrote:
On Sun, 3 Nov 2019, John Hubbard wrote:
Introduce pin_user_pages*() variations of get_user_pages*() calls, and also pin_longterm_pages*() variations.
These variants all set FOLL_PIN, which is also introduced, and thoroughly documented.
The pin_longterm*() variants also set FOLL_LONGTERM, in addition to FOLL_PIN:
pin_user_pages() pin_user_pages_remote() pin_user_pages_fast() pin_longterm_pages() pin_longterm_pages_remote() pin_longterm_pages_fast()
All pages that are pinned via the above calls, must be unpinned via put_user_page().
Hi John,
I'm curious what consideration is given to what pageblock migrate types that FOLL_PIN and FOLL_LONGTERM pages originate from, assuming that longterm would want to originate from MIGRATE_UNMOVABLE pageblocks for the purposes of anti-fragmentation?
We do not control page block, GUP can happens on _any_ page that is map inside a process (anonymous private vma or regular file back one).
Cheers, Jérôme