From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754533AbZBWLWP (ORCPT ); Mon, 23 Feb 2009 06:22:15 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753086AbZBWLV7 (ORCPT ); Mon, 23 Feb 2009 06:21:59 -0500 Received: from gir.skynet.ie ([193.1.99.77]:33878 "EHLO gir.skynet.ie" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752923AbZBWLV7 (ORCPT ); Mon, 23 Feb 2009 06:21:59 -0500 Date: Mon, 23 Feb 2009 11:21:56 +0000 From: Mel Gorman To: Ravikiran G Thirumalai Cc: akpm@linux-foundation.org, wli@movementarian.org, linux-mm@kvack.org, shai@scalex86.org, linux-kernel@vger.kernel.org Subject: Re: [patch 2/2] mm: Reintroduce and deprecate rlimit based access for SHM_HUGETLB Message-ID: <20090223112156.GB6740@csn.ul.ie> References: <20090221015457.GA32674@localdomain> <20090221015748.GB32674@localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20090221015748.GB32674@localdomain> User-Agent: Mutt/1.5.17+20080114 (2008-01-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 20, 2009 at 05:57:48PM -0800, Ravikiran G Thirumalai wrote: > Allow non root users with sufficient mlock rlimits to be able to allocate > hugetlb backed shm for now. Deprecate this though. This is being > deprecated because the mlock based rlimit checks for SHM_HUGETLB > is not consistent with mmap based huge page allocations. > > Signed-off-by: Ravikiran Thirumalai > Cc: Mel Gorman > Cc: Wli > > Index: linux-2.6-tip/fs/hugetlbfs/inode.c > =================================================================== > --- linux-2.6-tip.orig/fs/hugetlbfs/inode.c 2009-02-10 13:30:05.000000000 -0800 > +++ linux-2.6-tip/fs/hugetlbfs/inode.c 2009-02-11 21:58:23.000000000 -0800 > @@ -948,6 +948,7 @@ static int can_do_hugetlb_shm(void) > struct file *hugetlb_file_setup(const char *name, size_t size) > { > int error = -ENOMEM; > + int unlock_shm = 0; > struct file *file; > struct inode *inode; > struct dentry *dentry, *root; > @@ -957,8 +958,14 @@ struct file *hugetlb_file_setup(const ch > if (!hugetlbfs_vfsmount) > return ERR_PTR(-ENOENT); > > - if (!can_do_hugetlb_shm()) > - return ERR_PTR(-EPERM); > + if (!can_do_hugetlb_shm()) { > + if (user_shm_lock(size, user)) { > + unlock_shm = 1; > + WARN_ONCE(1, > + "Using mlock ulimits for SHM_HUGETLB deprecated\n"); > + } else > + return ERR_PTR(-EPERM); > + } > Seems to do what is promised by the patch and basic tests worked out for me. I think the behaviour has changed slightly in that we are getting EPERM now where we might have seen ENOMEM before but that should be ok. > root = hugetlbfs_vfsmount->mnt_root; > quick_string.name = name; > @@ -997,6 +1004,8 @@ out_inode: > out_dentry: > dput(dentry); > out_shm_unlock: > + if (unlock_shm) > + user_shm_unlock(size, user); > return ERR_PTR(error); > } > > Index: linux-2.6-tip/Documentation/feature-removal-schedule.txt > =================================================================== > --- linux-2.6-tip.orig/Documentation/feature-removal-schedule.txt 2009-02-09 16:45:47.000000000 -0800 > +++ linux-2.6-tip/Documentation/feature-removal-schedule.txt 2009-02-11 21:35:28.000000000 -0800 > @@ -335,3 +335,14 @@ Why: In 2.6.18 the Secmark concept was i > Secmark, it is time to deprecate the older mechanism and start the > process of removing the old code. > Who: Paul Moore > +--------------------------- > + > +What: Ability for non root users to shm_get hugetlb pages based on mlock > + resource limits > +When: 2.6.31 > +Why: Non root users need to be part of /proc/sys/vm/hugetlb_shm_group or > + have CAP_IPC_LOCK to be able to allocate shm segments backed by > + huge pages. The mlock based rlimit check to allow shm hugetlb is > + inconsistent with mmap based allocations. Hence it is being > + deprecated. > +Who: Ravikiran Thirumalai > Reviewed-by: Mel Gorman -- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab