[patch 20/23] quicklists: Only consider memory that can be used with GFP_KERNEL

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Greg KH
Date: Friday, February 22, 2008 - 2:40 pm

2.6.22-stable review patch.  If anyone has any objections, please let us
know.

------------------

From: Christoph Lameter <clameter@sgi.com>

Subject: [patch 20/23] 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>

---
 mm/quicklist.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

--- a/mm/quicklist.c
+++ b/mm/quicklist.c
@@ -26,9 +26,17 @@ DEFINE_PER_CPU(struct quicklist, quickli
 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);
 }

-- 
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 00/23] 2.6.22-stable review, Greg KH, (Fri Feb 22, 2:39 pm)
[patch 01/23] cciss: fix memory leak, Greg KH, (Fri Feb 22, 2:39 pm)
[patch 04/23] PCI: Fix fakephp deadlock, Greg KH, (Fri Feb 22, 2:40 pm)
[patch 10/23] Intel_agp: really fix 945/965GME, Greg KH, (Fri Feb 22, 2:40 pm)
[patch 16/23] NFS: Fix nfs_reval_fsid(), Greg KH, (Fri Feb 22, 2:40 pm)
[patch 20/23] quicklists: Only consider memory that can be ..., Greg KH, (Fri Feb 22, 2:40 pm)
Re: [patch 00/23] 2.6.22-stable review, Greg KH, (Fri Feb 22, 2:44 pm)
Re: [patch 00/23] 2.6.22-stable review, Oliver Pinter, (Fri Feb 22, 2:59 pm)
Re: [patch 00/23] 2.6.22-stable review, Oliver Pinter, (Fri Feb 22, 3:03 pm)
Re: [patch 00/23] 2.6.22-stable review, Greg KH, (Fri Feb 22, 3:32 pm)
Re: [patch 00/23] 2.6.22-stable review, Willy Tarreau, (Sat Feb 23, 1:47 am)