Messages in this thread | | | Date | Wed, 8 Dec 2010 15:42:18 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH 5/6] mlock: do not hold mmap_sem for extended periods of time |
| |
On Thu, 2 Dec 2010 16:16:51 -0800 Michel Lespinasse <walken@google.com> wrote:
> __get_user_pages gets a new 'nonblocking' parameter to signal that the > caller is prepared to re-acquire mmap_sem and retry the operation if needed. > This is used to split off long operations if they are going to block on > a disk transfer, or when we detect contention on the mmap_sem.
Doesn't apply to linux-next because the KVM guys snuck in a new FAULT_FLAG_MINOR (who knew?). With a bonus, undocumented, exported-to-modules get_user_pages_noio().
I liked your code better so I munged __get_user_pages() together thusly:
cond_resched(); while (!(page = follow_page(vma, start, foll_flags))) { int ret; unsigned int fault_flags = 0;
if (foll_flags & FOLL_WRITE) fault_flags |= FAULT_FLAG_WRITE; if (nonblocking) fault_flags |= FAULT_FLAG_ALLOW_RETRY; if (foll_flags & FOLL_MINOR) fault_flags |= FAULT_FLAG_MINOR;
ret = handle_mm_fault(mm, vma, start, fault_flags);
please review the end result..
| |