patch-2.1.116 linux/mm/page_alloc.c
Next file: linux/mm/swap.c
Previous file: linux/mm/filemap.c
Back to the patch index
Back to the overall index
-  Lines: 17
-  Date:
Tue Aug 18 16:42:57 1998
-  Orig file: 
v2.1.115/linux/mm/page_alloc.c
-  Orig date: 
Tue Jul 21 00:15:33 1998
diff -u --recursive --new-file v2.1.115/linux/mm/page_alloc.c linux/mm/page_alloc.c
@@ -263,6 +263,16 @@
 	spin_lock_irqsave(&page_alloc_lock, flags);
 	RMQUEUE(order, (gfp_mask & GFP_DMA));
 	spin_unlock_irqrestore(&page_alloc_lock, flags);
+
+	/*
+	 * If we failed to find anything, we'll return NULL, but we'll
+	 * wake up kswapd _now_ ad even wait for it synchronously if
+	 * we can.. This way we'll at least make some forward progress
+	 * over time.
+	 */
+	wake_up(&kswapd_wait);
+	if (gfp_mask & __GFP_WAIT)
+		schedule();
 nopage:
 	return 0;
 }
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov