Messages in this thread Patches in this message | | | Date | Thu, 30 Mar 2006 16:56:34 +0800 | From | "Luke Yang" <> | Subject | Re: [PATCH] nommu page refcount bug fixing |
| |
On 3/30/06, Nick Piggin <nickpiggin@yahoo.com.au> wrote: > Luke Yang wrote: > > Yep, sorry this slipped into the kernel. It's my fault for not giving > Andrew a fix for it. > > As you might know, page refcounting in nommu was already broken, so > I'm working on a proper solution to fix it. > > In the meantime though, this is a step backwards and reintroduces > NOMMU special-casing in page refcounting. As a temporary fix, what I > think should happen is simply for all slab allocations to ask for > __GFP_COMP pages. > > Could you check that fixes your problem? It works. What's your plan to modify nommu mm? I would like to help. And I am also interested in implementing the "non-power-of-2" allocator in 2.6.
New patch: Signed-off-by: Luke Yang <luke.adi@gmail.com>
diff --git a/mm/slab.c b/mm/slab.c index 4cbf8bb..f93d3d5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1454,7 +1454,7 @@ static void *kmem_getpages(struct kmem_c int i;
flags |= cachep->gfpflags; - page = alloc_pages_node(nodeid, flags, cachep->gfporder); + page = alloc_pages_node(nodeid, (flags | __GFP_COMP), cachep->gfporder); if (!page) return NULL; addr = page_address(page); -- Best regards, Luke Yang (Kernel for Blackfin maintainer) luke.adi@gmail.com diff --git a/mm/page_alloc.c b/mm/page_alloc.c diff --git a/mm/slab.c b/mm/slab.c index 4cbf8bb..f93d3d5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1454,7 +1454,7 @@ static void *kmem_getpages(struct kmem_c int i; flags |= cachep->gfpflags; - page = alloc_pages_node(nodeid, flags, cachep->gfporder); + page = alloc_pages_node(nodeid, (flags | __GFP_COMP), cachep->gfporder); if (!page) return NULL; addr = page_address(page); | |