copy_page_range() with VM_LOCKED

From: Will Newton
Date: Mon Mar 10 2008 - 12:26:34 EST


Hi all,

In order to optimize fork performance copy_page_range avoids copying
page tables under certain circumstances:

if (!(vma->vm_flags &
(VM_HUGETLB|VM_NONLINEAR|VM_PFNMAP|VM_INSERTPAGE))) {
if (!vma->anon_vma)
return 0;
}

I have a VM_LOCKED vma that I would really, really like not to fault
on, but because copy_page_range does not copy the page tables of the
vma I do end up faulting in my VM_LOCKED vma. Now as far as I'm aware
mmap with MAP_LOCKED only promises the page will not be paged out, not
that the page will never fault but I would like to get that behaviour.

Would it be possible to add VM_LOCKED to the above conditional so
copy_page_range would always copy VM_LOCKED vma page tables or would
that be considered insane and broken?

Thanks,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/