From 06e465098f652e3829fea51448252ca0daff3dde Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 23 Dec 2006 09:25:04 -0800 Subject: [PATCH] --- yaml --- r: 45013 b: refs/heads/master c: 8368e328dfe1c534957051333a87b3210a12743b h: refs/heads/master i: 45011: 8e8a6ee6fb34b6309e888bfaca96eec8bb9d248a v: v3 --- [refs] | 2 +- trunk/mm/truncate.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index fba9954cebb0..4532eea51375 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 18ed1c051317ac3a685120cead2adb192b802347 +refs/heads/master: 8368e328dfe1c534957051333a87b3210a12743b diff --git a/trunk/mm/truncate.c b/trunk/mm/truncate.c index 4a38dd1a4ce8..ecdfdcc50522 100644 --- a/trunk/mm/truncate.c +++ b/trunk/mm/truncate.c @@ -60,12 +60,16 @@ void cancel_dirty_page(struct page *page, unsigned int account_size) WARN_ON(++warncount < 5); } - if (TestClearPageDirty(page) && account_size && - mapping_cap_account_dirty(page->mapping)) { - dec_zone_page_state(page, NR_FILE_DIRTY); - task_io_account_cancelled_write(account_size); + if (TestClearPageDirty(page)) { + struct address_space *mapping = page->mapping; + if (mapping && mapping_cap_account_dirty(mapping)) { + dec_zone_page_state(page, NR_FILE_DIRTY); + if (account_size) + task_io_account_cancelled_write(account_size); + } } } +EXPORT_SYMBOL(cancel_dirty_page); /* * If truncate cannot remove the fs-private metadata from the page, the page