According to Rik van Riel:
> Luckily my patch fixes some of the suspect areas in
> VM-global [...]

Would you say that the below patch is just the try_to_free_pages
bug fix, then?

Index: mm/vmscan.c
--- mm/vmscan.c.prev
+++ mm/vmscan.c Fri Nov 24 15:17:59 2000
@@ -401,4 +401,5 @@ int try_to_free_pages(unsigned int gfp_m
        int priority;
        int count = SWAP_CLUSTER_MAX;
+       int loopcount = count;
        int killed = 0;
 
@@ -409,5 +410,5 @@ int try_to_free_pages(unsigned int gfp_m
 
 again:
-       priority = 5;
+       priority = 6;
        do {
                while (shrink_mmap(priority, gfp_mask)) {
@@ -431,5 +432,10 @@ again:
 
                shrink_dcache_memory(priority, gfp_mask);
-       } while (--priority > 0);
+
+               /* Only lower priority if we didn't make progress. */
+               if (count == loopcount)
+                       --priority;
+               loopcount = count;
+       } while (priority > 0);
 done:
        unlock_kernel();
@@ -454,6 +460,9 @@ done:
        }
 
-       /* Return success if we freed a page. */
-       return priority > 0;
+       /* Return success if we have enough free memory or we freed a page. */
+       if (nr_free_pages > freepages.low)
+               return 1;
+
+       return count < SWAP_CLUSTER_MAX;
 }
 

-- 
Chip Salzenberg            - a.k.a. -            <[EMAIL PROTECTED]>
   "Give me immortality, or give me death!"  // Firesign Theatre
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to