]> git.hungrycats.org Git - linux/commitdiff
[PATCH] percpu: balance_dirty_pages ratelimit counters
authorAndrew Morton <akpm@digeo.com>
Wed, 30 Oct 2002 07:31:09 +0000 (23:31 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Wed, 30 Oct 2002 07:31:09 +0000 (23:31 -0800)
Convert balance_dirty_pages_ratelimited() to use percpu storage
for the ratelimiting counters.

mm/page-writeback.c

index b2c0c682f8471eb657be32f7b68f047292bfbbec..ef42bb0738ad581c6a9e62b50ca3bf6225abce0f 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/backing-dev.h>
 #include <linux/blkdev.h>
 #include <linux/mpage.h>
+#include <linux/percpu.h>
 #include <linux/notifier.h>
 #include <linux/smp.h>
 
@@ -182,9 +183,7 @@ EXPORT_SYMBOL_GPL(balance_dirty_pages);
  */
 void balance_dirty_pages_ratelimited(struct address_space *mapping)
 {
-       static struct rate_limit_struct {
-               int count;
-       } ____cacheline_aligned_in_smp ratelimits[NR_CPUS];
+       static DEFINE_PER_CPU(int, ratelimits) = 0;
        int cpu;
        long ratelimit;
 
@@ -193,8 +192,8 @@ void balance_dirty_pages_ratelimited(struct address_space *mapping)
                ratelimit = 8;
 
        cpu = get_cpu();
-       if (ratelimits[cpu].count++ >= ratelimit) {
-               ratelimits[cpu].count = 0;
+       if (per_cpu(ratelimits, cpu)++ >= ratelimit) {
+               per_cpu(ratelimits, cpu) = 0;
                put_cpu();
                balance_dirty_pages(mapping);
                return;