summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2011-08-09 01:19:47 +0400
committerWu Fengguang <fengguang.wu@intel.com>2011-12-18 10:20:25 +0400
commit32c7f202a4801252a0f3578807b75a961f792870 (patch)
treec09d5578604e83c2c421aca32b6b125d70b4a2bc /fs
parent2f800fbd777b792de54187088df19a7df0251254 (diff)
downloadlinux-32c7f202a4801252a0f3578807b75a961f792870.tar.xz
btrfs: fix dirtied pages accounting on sub-page writes
When doing 1KB sequential writes to the same page, balance_dirty_pages_ratelimited_nr() should be called once instead of 4 times, the latter makes the dirtier tasks be throttled much too heavy. Fix it with proper de-accounting on clear_page_dirty_for_io(). CC: Chris Mason <chris.mason@oracle.com> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/file.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 97fbe939c050..bfb620ead295 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1136,7 +1136,8 @@ again:
GFP_NOFS);
}
for (i = 0; i < num_pages; i++) {
- clear_page_dirty_for_io(pages[i]);
+ if (clear_page_dirty_for_io(pages[i]))
+ account_page_redirty(pages[i]);
set_page_extent_mapped(pages[i]);
WARN_ON(!PageLocked(pages[i]));
}