On Fri, Jul 24, 2015 at 05:28:42PM -0400, Eric B Munson wrote: > The previous patch introduced a flag that specified pages in a VMA > should be placed on the unevictable LRU, but they should not be made > present when the area is created. This patch adds the ability to set > this state via the new mlock system calls. > > We add MLOCK_ONFAULT for mlock2 and MCL_ONFAULT for mlockall. > MLOCK_ONFAULT will set the VM_LOCKONFAULT flag as well as the VM_LOCKED > flag for the target region. MCL_CURRENT and MCL_ONFAULT are used to > lock current mappings. With MCL_CURRENT all pages are made present and > with MCL_ONFAULT they are locked when faulted in. When specified with > MCL_FUTURE all new mappings will be marked with VM_LOCKONFAULT. > > Currently, mlockall() clears all VMA lock flags and then sets the > requested flags. For instance, if a process has MCL_FUTURE and > MCL_CURRENT set, but they want to clear MCL_FUTURE this would be > accomplished by calling mlockall(MCL_CURRENT). This still holds with > the introduction of MCL_ONFAULT. Each call to mlockall() resets all > VMA flags to the values specified in the current call. The new mlock2 > system call behaves in the same way. If a region is locked with > MLOCK_ONFAULT and a user wants to force it to be populated now, a second > call to mlock2(MLOCK_LOCKED) will accomplish this. > > munlock() will unconditionally clear both vma flags. munlockall() > unconditionally clears for VMA flags on all VMAs and in the > mm->def_flags field. > > Signed-off-by: Eric B Munson <emunson@xxxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxx> > Cc: Vlastimil Babka <vbabka@xxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> > Cc: "Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> > Cc: linux-alpha@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: linux-mips@xxxxxxxxxxxxxx > Cc: linux-parisc@xxxxxxxxxxxxxxx > Cc: linuxppc-dev@xxxxxxxxxxxxxxxx > Cc: sparclinux@xxxxxxxxxxxxxxx > Cc: linux-xtensa@xxxxxxxxxxxxxxxx > Cc: linux-arch@xxxxxxxxxxxxxxx > Cc: linux-api@xxxxxxxxxxxxxxx > Cc: linux-mm@xxxxxxxxx > --- > Changes from V4: > * Split addition of VMA flag > > Changes from V3: > * Do extensive search for VM_LOCKED and ensure that VM_LOCKONFAULT is also handled > where appropriate > arch/alpha/include/uapi/asm/mman.h | 2 ++ > arch/mips/include/uapi/asm/mman.h | 2 ++ > arch/parisc/include/uapi/asm/mman.h | 2 ++ > arch/powerpc/include/uapi/asm/mman.h | 2 ++ > arch/sparc/include/uapi/asm/mman.h | 2 ++ > arch/tile/include/uapi/asm/mman.h | 3 +++ > arch/xtensa/include/uapi/asm/mman.h | 2 ++ Again, you can save few lines by moving some code into mman-common.h. Otherwise looks good. -- Kirill A. Shutemov -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html