diff options
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r-- | mm/page-writeback.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 81627ebcd313..997186c0b519 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -610,6 +610,8 @@ void set_page_dirty_balance(struct page *page, int page_mkwrite) | |||
610 | } | 610 | } |
611 | } | 611 | } |
612 | 612 | ||
613 | static DEFINE_PER_CPU(unsigned long, bdp_ratelimits) = 0; | ||
614 | |||
613 | /** | 615 | /** |
614 | * balance_dirty_pages_ratelimited_nr - balance dirty memory state | 616 | * balance_dirty_pages_ratelimited_nr - balance dirty memory state |
615 | * @mapping: address_space which was dirtied | 617 | * @mapping: address_space which was dirtied |
@@ -627,7 +629,6 @@ void set_page_dirty_balance(struct page *page, int page_mkwrite) | |||
627 | void balance_dirty_pages_ratelimited_nr(struct address_space *mapping, | 629 | void balance_dirty_pages_ratelimited_nr(struct address_space *mapping, |
628 | unsigned long nr_pages_dirtied) | 630 | unsigned long nr_pages_dirtied) |
629 | { | 631 | { |
630 | static DEFINE_PER_CPU(unsigned long, ratelimits) = 0; | ||
631 | unsigned long ratelimit; | 632 | unsigned long ratelimit; |
632 | unsigned long *p; | 633 | unsigned long *p; |
633 | 634 | ||
@@ -640,7 +641,7 @@ void balance_dirty_pages_ratelimited_nr(struct address_space *mapping, | |||
640 | * tasks in balance_dirty_pages(). Period. | 641 | * tasks in balance_dirty_pages(). Period. |
641 | */ | 642 | */ |
642 | preempt_disable(); | 643 | preempt_disable(); |
643 | p = &__get_cpu_var(ratelimits); | 644 | p = &__get_cpu_var(bdp_ratelimits); |
644 | *p += nr_pages_dirtied; | 645 | *p += nr_pages_dirtied; |
645 | if (unlikely(*p >= ratelimit)) { | 646 | if (unlikely(*p >= ratelimit)) { |
646 | *p = 0; | 647 | *p = 0; |