patch-pre2.0.5 linux/mm/filemap.c
Next file: linux/mm/memory.c
Previous file: linux/kernel/module.c
Back to the patch index
Back to the overall index
-  Lines: 29
 -  Date:
Thu May 16 11:31:43 1996
 -  Orig file: 
pre2.0.4/linux/mm/filemap.c
 -  Orig date: 
Tue May  7 16:22:40 1996
 
diff -u --recursive --new-file pre2.0.4/linux/mm/filemap.c linux/mm/filemap.c
@@ -117,11 +117,17 @@
 	struct page * page;
 	unsigned long limit = MAP_NR(high_memory);
 	struct buffer_head *tmp, *bh;
+	int count_max, count_min;
+
+	count_max = (limit<<1) >> (priority>>1);
+	count_min = (limit<<1) >> (priority);
 
-	priority = (limit<<2) >> priority;
 	page = mem_map + clock;
 	do {
-		priority--;
+		count_max--;
+		if (page->inode || page->buffers)
+			count_min--;
+
 		if (PageLocked(page))
 			goto next;
 		if (dma && !PageDMA(page))
@@ -179,7 +185,7 @@
 			clock = 0;
 			page = mem_map;
 		}
-	} while (priority > 0);
+	} while (count_max > 0 && count_min > 0);
 	return 0;
 }
 
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this