diff -urN linux-2.5.12/mm/page-writeback.c linux/mm/page-writeback.c --- linux-2.5.12/mm/page-writeback.c Wed May 1 08:40:14 2002 +++ linux/mm/page-writeback.c Wed May 1 10:56:24 2002 @@ -20,6 +20,7 @@ #include #include #include +#include /* * Memory thresholds, in percentages @@ -102,15 +103,11 @@ */ void balance_dirty_pages_ratelimited(struct address_space *mapping) { - static struct rate_limit_struct { - int count; - } ____cacheline_aligned ratelimits[NR_CPUS]; - int cpu; + static int __per_cpu_data ratelimits; preempt_disable(); - cpu = smp_processor_id(); - if (ratelimits[cpu].count++ >= 32) { - ratelimits[cpu].count = 0; + if (this_cpu(ratelimits)++ >= 32) { + this_cpu(ratelimits) = 0; preempt_enable(); balance_dirty_pages(mapping); return;