From: Andrew Morton <akpm@linux-foundation.org>
To: Christoph Lameter <clameter@sgi.com>
Cc: Nick Piggin <npiggin@suse.de>,
linux-kernel@vger.kernel.org, pj@sgi.com,
Hugh Dickins <hugh@veritas.com>
Subject: Re: Pagecache: find_or_create_page does not call a proper page allocator function
Date: Mon, 23 Apr 2007 14:29:19 -0700 [thread overview]
Message-ID: <20070423142919.5809e03f.akpm@linux-foundation.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0704231408530.691@schroedinger.engr.sgi.com>
On Mon, 23 Apr 2007 14:11:57 -0700 (PDT)
Christoph Lameter <clameter@sgi.com> wrote:
> The find_or_create function calls alloc_page with a local gfp mask instead
> of using page_cache_alloc. This means that the page allocation will not
> obey cpuset memory spreading and page allocation will not properly use the
> gfp flags in the address space. Highmem is not set correctly.
>
> It turns out that there is no function to allocate a page for the page cache
> with a gfp mask. So we create one ORing the context gfp flags with the gfp flags
> from the mapping.
>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
>
> ---
> include/linux/pagemap.h | 10 ++++++++--
> mm/filemap.c | 3 ++-
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> Index: linux-2.6.21-rc7/include/linux/pagemap.h
> ===================================================================
> --- linux-2.6.21-rc7.orig/include/linux/pagemap.h 2007-04-23 13:52:20.000000000 -0700
> +++ linux-2.6.21-rc7/include/linux/pagemap.h 2007-04-23 14:01:09.000000000 -0700
> @@ -60,14 +60,20 @@ static inline struct page *__page_cache_
> }
> #endif
>
> +static inline struct page *page_cache_alloc_mask(struct address_space *x,
> + gfp_t gfp)
> +{
> + return __page_cache_alloc(mapping_gfp_mask(x) | gfp);
> +}
Usually we use the term "mask" to imply an AND function, not an OR
function.
There are few calls to page_cache_alloc(). Would it not be simpler to just
add the additional argument to page_cache_alloc() (called "extra_gfp",
please) and to update all callers? And to remove page_cache_alloc_cold()
and replace all it callers with page_cache_alloc(mapping, __GFP_COLD)?
The way we actually get rid of an API call instead of adding another one.
next prev parent reply other threads:[~2007-04-23 21:29 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-23 21:11 Pagecache: find_or_create_page does not call a proper page allocator function Christoph Lameter
2007-04-23 21:29 ` Andrew Morton [this message]
2007-04-23 21:37 ` Christoph Lameter
2007-04-23 22:33 ` Christoph Lameter
2007-04-23 22:42 ` Christoph Lameter
2007-04-23 22:42 ` Andrew Morton
2007-04-24 13:09 ` Hugh Dickins
2007-04-24 17:11 ` Andrew Morton
2007-04-24 19:06 ` Hugh Dickins
2007-04-24 19:55 ` Christoph Lameter
2007-04-24 20:16 ` Hugh Dickins
2007-04-24 20:30 ` Christoph Lameter
2007-04-24 20:42 ` Andrew Morton
2007-04-24 20:44 ` Christoph Lameter
2007-04-24 20:53 ` Andrew Morton
2007-04-24 20:58 ` Christoph Lameter
2007-04-24 21:24 ` Andrew Morton
2007-04-24 21:28 ` Christoph Lameter
2007-04-24 17:38 ` Christoph Lameter
2007-04-24 17:45 ` Hugh Dickins
2007-04-24 17:48 ` Christoph Lameter
2007-04-24 17:51 ` Andrew Morton
2007-04-24 17:56 ` Christoph Lameter
2007-04-24 17:45 ` Christoph Lameter
2007-04-24 18:53 ` Hugh Dickins
2007-04-24 19:34 ` Christoph Lameter
2007-04-24 19:49 ` Andrew Morton
2007-04-24 19:59 ` Christoph Lameter
2007-04-24 20:10 ` Andrew Morton
2007-04-24 20:12 ` Christoph Lameter
2007-04-24 20:20 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070423142919.5809e03f.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=hugh@veritas.com \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
--cc=pj@sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.