summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>2008-04-28 02:16:28 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-28 08:58:47 -0700
commit061e97469f46f924cf14bbf1dd4805b46986691a (patch)
treef89bae50777ff9d7a8dc917342f55218de132166
parente69be4c9c4ac1b6bb6380512557da0afa6262e98 (diff)
downloadlwn-061e97469f46f924cf14bbf1dd4805b46986691a.tar.gz
lwn-061e97469f46f924cf14bbf1dd4805b46986691a.zip
Add balance_dirty_pages_ratelimited() to cont_expand_zero()
On the systems, ftruncate() which expand size for FAT became the cause of OOM. The cont_expand_zero() filled all memory with dirty pages, and since disk is very slow, limit of page scanning was exceeded, then it triggered OOM. This adds balance_dirty_pages_ratelimited() to avoid filling memory with dirty pages. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/buffer.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/buffer.c b/fs/buffer.c
index 7d51e649b19a..3db4a26adc44 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2246,6 +2246,8 @@ int cont_expand_zero(struct file *file, struct address_space *mapping,
goto out;
BUG_ON(err != len);
err = 0;
+
+ balance_dirty_pages_ratelimited(mapping);
}
/* page covers the boundary, find the boundary offset */