patch-2.3.20 linux/mm/vmscan.c

Next file: linux/net/802/fc.c
Previous file: linux/mm/filemap.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.19/linux/mm/vmscan.c linux/mm/vmscan.c
@@ -424,6 +424,14 @@
 				goto done;
 		}
 
+		/* don't be too light against the d/i cache since
+		   shrink_mmap() almost never fail when there's
+		   really plenty of memory free. */
+		count -= shrink_dcache_memory(priority, gfp_mask);
+		count -= shrink_icache_memory(priority, gfp_mask);
+		if (count <= 0)
+			goto done;
+
 		/* Try to get rid of some shared memory pages.. */
 		if (gfp_mask & __GFP_IO) {
 			while (shm_swap(priority, gfp_mask)) {
@@ -437,8 +445,6 @@
 			if (!--count)
 				goto done;
 		}
-
-		shrink_dcache_memory(priority, gfp_mask);
 	} while (--priority >= 0);
 done:
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)