aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2011-06-11 19:53:57 -0400
committerWu Fengguang <fengguang.wu@intel.com>2011-06-19 12:25:46 -0400
commit36715cef0770b7e2547892b7c3197fc024274630 (patch)
tree34b690df719e6e46a37e0cef40b8c21f34bc36f8 /mm
parente84d0a4f8e39a73003a6ec9a11b07702745f4c1f (diff)
writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()
This helps prevent tmpfs dirtiers from skewing the per-cpu bdp_ratelimits. Acked-by: Jan Kara <jack@suse.cz> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'mm')
-rw-r--r--mm/page-writeback.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index b2529f8f8be0..1965d05a29cc 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -490,9 +490,6 @@ static void balance_dirty_pages(struct address_space *mapping,
490 bool dirty_exceeded = false; 490 bool dirty_exceeded = false;
491 struct backing_dev_info *bdi = mapping->backing_dev_info; 491 struct backing_dev_info *bdi = mapping->backing_dev_info;
492 492
493 if (!bdi_cap_account_dirty(bdi))
494 return;
495
496 for (;;) { 493 for (;;) {
497 struct writeback_control wbc = { 494 struct writeback_control wbc = {
498 .sync_mode = WB_SYNC_NONE, 495 .sync_mode = WB_SYNC_NONE,
@@ -631,9 +628,13 @@ static DEFINE_PER_CPU(unsigned long, bdp_ratelimits) = 0;
631void balance_dirty_pages_ratelimited_nr(struct address_space *mapping, 628void balance_dirty_pages_ratelimited_nr(struct address_space *mapping,
632 unsigned long nr_pages_dirtied) 629 unsigned long nr_pages_dirtied)
633{ 630{
631 struct backing_dev_info *bdi = mapping->backing_dev_info;
634 unsigned long ratelimit; 632 unsigned long ratelimit;
635 unsigned long *p; 633 unsigned long *p;
636 634
635 if (!bdi_cap_account_dirty(bdi))
636 return;
637
637 ratelimit = ratelimit_pages; 638 ratelimit = ratelimit_pages;
638 if (mapping->backing_dev_info->dirty_exceeded) 639 if (mapping->backing_dev_info->dirty_exceeded)
639 ratelimit = 8; 640 ratelimit = 8;