Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932107AbZJFKQe (ORCPT ); Tue, 6 Oct 2009 06:16:34 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932081AbZJFKQe (ORCPT ); Tue, 6 Oct 2009 06:16:34 -0400 Received: from mail-qy0-f173.google.com ([209.85.221.173]:40438 "EHLO mail-qy0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932067AbZJFKQd (ORCPT ); Tue, 6 Oct 2009 06:16:33 -0400 Date: Tue, 6 Oct 2009 10:09:08 +0000 From: Frederik Deweerdt To: Gleb Natapov Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org Subject: Re: [PATCH][RFC] add MAP_UNLOCKED mmap flag Message-ID: <20091006100908.GB6650@gambetta> References: <20091006095111.GG9832@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091006095111.GG9832@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2186 Lines: 55 Hello Gleb, On Tue, Oct 06, 2009 at 11:51:11AM +0200, Gleb Natapov wrote: > If application does mlockall(MCL_FUTURE) it is no longer possible to > mmap file bigger than main memory or allocate big area of anonymous > memory. Sometimes it is desirable to lock everything related to program > execution into memory, but still be able to mmap big file or allocate > huge amount of memory and allow OS to swap them on demand. MAP_UNLOCKED > allows to do that. > > Signed-off-by: Gleb Natapov > diff --git a/include/asm-generic/mman.h b/include/asm-generic/mman.h > index 32c8bd6..0ab4c74 100644 > --- a/include/asm-generic/mman.h > +++ b/include/asm-generic/mman.h > @@ -12,6 +12,7 @@ > #define MAP_NONBLOCK 0x10000 /* do not block on IO */ > #define MAP_STACK 0x20000 /* give out an address that is best suited for process/thread stacks */ > #define MAP_HUGETLB 0x40000 /* create a huge page mapping */ > +#define MAP_UNLOKED 0x80000 /* pages are unlocked */ ^^^ You're missing a 'C' here and below. Also '/* force page unlocking */' seems a better comment? Regards, Frederik > > #define MCL_CURRENT 1 /* lock all current mappings */ > #define MCL_FUTURE 2 /* lock all future mappings */ > diff --git a/mm/mmap.c b/mm/mmap.c > index 73f5e4b..7c2abdb 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -985,6 +985,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, > if (!can_do_mlock()) > return -EPERM; > > + if (flags & MAP_UNLOKED) > + vm_flags &= ~VM_LOCKED; > + > /* mlock MCL_FUTURE? */ > if (vm_flags & VM_LOCKED) { > unsigned long locked, lock_limit; > -- > Gleb. > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/