* [2.6.22.y #2] quicklists: Only consider memory that can be used with GFP_KERNEL
[not found] <6101e8c40802170918x69a98d96n6c13e2c23f28acfb@mail.gmail.com>
@ 2008-02-18 20:01 ` Oliver Pinter
0 siblings, 0 replies; only message in thread
From: Oliver Pinter @ 2008-02-18 20:01 UTC (permalink / raw)
To: Linux Kernel, stable, stable-commits
Cc: Oliver Pinter, Adrian Bunk, Greg KH, Justin Forbes,
Zwane Mwaikambo, Theodore Ts'o, Randy. Dunlap, Chuck Wolber,
Dave Jones, Chris Wedgwood, Michael Krufky, Chuck Ebbert,
Domenico Andreoli, Christoph Lameter, Dhaval Giani,
Andrew Morton, chrisw
From fcae8056673aa7b5b55d669fe5255ae76a93ae53 Mon Sep 17 00:00:00 2001
From: Christoph Lameter <clameter@sgi.com>
Date: Wed, 16 Jan 2008 00:21:19 +0530
Subject: [PATCH] quicklists: Only consider memory that can be used
with GFP_KERNEL
patch 96990a4ae979df9e235d01097d6175759331e88c in mainline.
Quicklists calculates the size of the quicklists based on the number of
free pages. This must be the number of free pages that can be allocated
with GFP_KERNEL. node_page_state() includes the pages in ZONE_HIGHMEM and
ZONE_MOVABLE which may lead the quicklists to become too large causing OOM.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Tested-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com>
diff --git a/mm/quicklist.c b/mm/quicklist.c
index ae8189c..3f703f7 100644
--- a/mm/quicklist.c
+++ b/mm/quicklist.c
@@ -26,9 +26,17 @@ DEFINE_PER_CPU(struct quicklist,
quicklist)[CONFIG_NR_QUICK];
static unsigned long max_pages(unsigned long min_pages)
{
unsigned long node_free_pages, max;
+ struct zone *zones = NODE_DATA(numa_node_id())->node_zones;
+
+ node_free_pages =
+#ifdef CONFIG_ZONE_DMA
+ zone_page_state(&zones[ZONE_DMA], NR_FREE_PAGES) +
+#endif
+#ifdef CONFIG_ZONE_DMA32
+ zone_page_state(&zones[ZONE_DMA32], NR_FREE_PAGES) +
+#endif
+ zone_page_state(&zones[ZONE_NORMAL], NR_FREE_PAGES);
- node_free_pages = node_page_state(numa_node_id(),
- NR_FREE_PAGES);
max = node_free_pages / FRACTION_OF_NODE_MEM;
return max(max, min_pages);
}
--
Thanks,
Oliver
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-02-18 20:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <6101e8c40802170918x69a98d96n6c13e2c23f28acfb@mail.gmail.com>
2008-02-18 20:01 ` [2.6.22.y #2] quicklists: Only consider memory that can be used with GFP_KERNEL Oliver Pinter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®