From f98bf5ff9cd852c1c041f51f32666cfdb403182f Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 29 Oct 2002 23:31:09 -0800 Subject: [PATCH] [PATCH] percpu: balance_dirty_pages ratelimit counters Convert balance_dirty_pages_ratelimited() to use percpu storage for the ratelimiting counters. --- mm/page-writeback.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index b2c0c682f847..ef42bb0738ad 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -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; -- 2.39.5