From 3d99317865d3be1bb76db581ac746b4233720417 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 17 Sep 2009 19:59:14 +0200 Subject: [PATCH] --- yaml --- r: 164287 b: refs/heads/master c: 87c6a9b253520b66e7f5e8f67a37a701eaa51cee h: refs/heads/master i: 164285: 7aeb80f4e1cda6fe20d65ed9f9cc7059adcf59a5 164283: e7841df57975b6579c581d672dcb2f9347c0b997 164279: 3112dea66915e2a8293b2cd7d133dece4e85aedd 164271: 039f0a0a1d64f789314f839d4794c666a65abf8c 164255: b4debc9f8c5b5d3610cb8c0bd050a83821313613 164223: 9e9be005830e1ebd6c19e2449e687ae1d492254a v: v3 --- [refs] | 2 +- trunk/mm/page-writeback.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 95dd519cb8ab..68aec296fb83 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3542a5c0de3d5b33227214a692bf9b12e249078e +refs/heads/master: 87c6a9b253520b66e7f5e8f67a37a701eaa51cee diff --git a/trunk/mm/page-writeback.c b/trunk/mm/page-writeback.c index 2585349469e0..d1ba46441053 100644 --- a/trunk/mm/page-writeback.c +++ b/trunk/mm/page-writeback.c @@ -485,6 +485,7 @@ static void balance_dirty_pages(struct address_space *mapping) unsigned long bdi_thresh; unsigned long pages_written = 0; unsigned long write_chunk = sync_writeback_pages(); + unsigned long pause = 1; struct backing_dev_info *bdi = mapping->backing_dev_info; @@ -561,7 +562,15 @@ static void balance_dirty_pages(struct address_space *mapping) if (pages_written >= write_chunk) break; /* We've done our duty */ - schedule_timeout_interruptible(1); + schedule_timeout_interruptible(pause); + + /* + * Increase the delay for each loop, up to our previous + * default of taking a 100ms nap. + */ + pause <<= 1; + if (pause > HZ / 10) + pause = HZ / 10; } if (bdi_nr_reclaimable + bdi_nr_writeback < bdi_thresh &&