diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2009-09-23 08:33:40 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-09-25 12:08:24 -0400 |
commit | d3ddec7635b6fb37cb49e3553bdeea59642be653 (patch) | |
tree | 662a1ea9c0eac6aa9bb07d4f67b6aad84709600c /mm/page-writeback.c | |
parent | 3a2e9a5a2afc1a2d2c548b8987f133235cebe933 (diff) |
writeback: stop background writeback when below background threshold
Treat bdi_start_writeback(0) as a special request to do background write,
and stop such work when we are below the background dirty threshold.
Also simplify the (nr_pages <= 0) checks. Since we already pass in
nr_pages=LONG_MAX for WB_SYNC_ALL and background writes, we don't
need to worry about it being decreased to zero.
Reported-by: Richard Kennedy <richard@rsk.demon.co.uk>
CC: Jan Kara <jack@suse.cz>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r-- | mm/page-writeback.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index cbd4cba468bd..3c78fc316202 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -593,10 +593,10 @@ static void balance_dirty_pages(struct address_space *mapping, | |||
593 | * background_thresh, to keep the amount of dirty memory low. | 593 | * background_thresh, to keep the amount of dirty memory low. |
594 | */ | 594 | */ |
595 | if ((laptop_mode && pages_written) || | 595 | if ((laptop_mode && pages_written) || |
596 | (!laptop_mode && ((nr_writeback = global_page_state(NR_FILE_DIRTY) | 596 | (!laptop_mode && ((global_page_state(NR_FILE_DIRTY) |
597 | + global_page_state(NR_UNSTABLE_NFS)) | 597 | + global_page_state(NR_UNSTABLE_NFS)) |
598 | > background_thresh))) | 598 | > background_thresh))) |
599 | bdi_start_writeback(bdi, nr_writeback); | 599 | bdi_start_writeback(bdi, 0); |
600 | } | 600 | } |
601 | 601 | ||
602 | void set_page_dirty_balance(struct page *page, int page_mkwrite) | 602 | void set_page_dirty_balance(struct page *page, int page_mkwrite) |