Index: linux-2.6.8-rc1/mm/vmscan.c
===================================================================
--- linux-2.6.8-rc1.orig/mm/vmscan.c	2004-07-15 10:03:06.243433612 +1000
+++ linux-2.6.8-rc1/mm/vmscan.c	2004-07-15 10:03:07.769190921 +1000
@@ -805,20 +805,21 @@
 {
 	unsigned long nr_active;
 	unsigned long nr_inactive;
+	int bias = 101 - mapped_bias / 100;
 
 	/*
 	 * Add one to `nr_to_scan' just to make sure that the kernel will
 	 * slowly sift through the active list.
 	 */
 	zone->nr_scan_active += (zone->nr_active >> sc->priority) + 1;
-	nr_active = zone->nr_scan_active;
+	nr_active = zone->nr_scan_active * 100 / bias;
 	if (nr_active >= SWAP_CLUSTER_MAX)
 		zone->nr_scan_active = 0;
 	else
 		nr_active = 0;
 
 	zone->nr_scan_inactive += (zone->nr_inactive >> sc->priority) + 1;
-	nr_inactive = zone->nr_scan_inactive;
+	nr_inactive = zone->nr_scan_inactive * 100 / bias;
 	if (nr_inactive >= SWAP_CLUSTER_MAX)
 		zone->nr_scan_inactive = 0;
 	else
