From 7540ea60fe8d253c22c6dcdfa88b62357473b8d5 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Thu, 21 Dec 2006 11:00:33 -0800 Subject: [PATCH] --- yaml --- r: 44862 b: refs/heads/master c: 3e67c0987d7567ad666641164a153dca9a43b11d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/truncate.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 341980fabbc1..c7a6eb61f7e5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 921320210bd2ec4f17053d283355b73048ac0e56 +refs/heads/master: 3e67c0987d7567ad666641164a153dca9a43b11d diff --git a/trunk/mm/truncate.c b/trunk/mm/truncate.c index bf9e2965d666..89a5c359b6e8 100644 --- a/trunk/mm/truncate.c +++ b/trunk/mm/truncate.c @@ -60,11 +60,12 @@ void cancel_dirty_page(struct page *page, unsigned int account_size) WARN_ON(++warncount < 5); } - if (TestClearPageDirty(page) && account_size) + if (TestClearPageDirty(page) && account_size) { + dec_zone_page_state(page, NR_FILE_DIRTY); task_io_account_cancelled_write(account_size); + } } - /* * If truncate cannot remove the fs-private metadata from the page, the page * becomes anonymous. It will be left on the LRU and may even be mapped into @@ -81,11 +82,11 @@ truncate_complete_page(struct address_space *mapping, struct page *page) if (page->mapping != mapping) return; + cancel_dirty_page(page, PAGE_CACHE_SIZE); + if (PagePrivate(page)) do_invalidatepage(page, 0); - cancel_dirty_page(page, PAGE_CACHE_SIZE); - ClearPageUptodate(page); ClearPageMappedToDisk(page); remove_from_page_cache(page);