
From: Arjan van de Ven <arjanv@redhat.com>

Several of the pte_chain_alloc() allocators that use GFP_ATOMIC have a
fallback for failure that sleeps; they thus need to not warn on failure.. 
Seen during a big fork on a busy system.


---

 25-akpm/mm/memory.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -puN mm/memory.c~pte_chain-nowarns mm/memory.c
--- 25/mm/memory.c~pte_chain-nowarns	Wed Mar 10 15:07:13 2004
+++ 25-akpm/mm/memory.c	Wed Mar 10 15:07:14 2004
@@ -222,7 +222,7 @@ int copy_page_range(struct mm_struct *ds
 	if (is_vm_hugetlb_page(vma))
 		return copy_hugetlb_page_range(dst, src, vma);
 
-	pte_chain = pte_chain_alloc(GFP_ATOMIC);
+	pte_chain = pte_chain_alloc(GFP_ATOMIC | __GFP_NOWARN);
 	if (!pte_chain) {
 		spin_unlock(&dst->page_table_lock);
 		pte_chain = pte_chain_alloc(GFP_KERNEL);
@@ -335,7 +335,7 @@ skip_copy_pte_range:
 							pte_chain);
 				if (pte_chain)
 					goto cont_copy_pte_range_noset;
-				pte_chain = pte_chain_alloc(GFP_ATOMIC);
+				pte_chain = pte_chain_alloc(GFP_ATOMIC | __GFP_NOWARN);
 				if (pte_chain)
 					goto cont_copy_pte_range_noset;
 
@@ -1354,7 +1354,7 @@ do_anonymous_page(struct mm_struct *mm, 
 	struct pte_chain *pte_chain;
 	int ret;
 
-	pte_chain = pte_chain_alloc(GFP_ATOMIC);
+	pte_chain = pte_chain_alloc(GFP_ATOMIC | __GFP_NOWARN);
 	if (!pte_chain) {
 		pte_unmap(page_table);
 		spin_unlock(&mm->page_table_lock);

_
