From 1d8f65aa3049d703e83d8cb68527d04885deb71e Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 19 Dec 2006 15:21:59 -0800 Subject: [PATCH] --- yaml --- r: 44857 b: refs/heads/master c: 46d2277c796f9f4937bfa668c40b2e3f43e93dd0 h: refs/heads/master i: 44855: c3101fda3b1616c6e664d2a23f59c68c81a4baf3 v: v3 --- [refs] | 2 +- trunk/fs/buffer.c | 18 +----------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/[refs] b/[refs] index 8b95e46b90ff..485587502d34 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9bfb18392ef586467277fa25d8f3a7a93611f6df +refs/heads/master: 46d2277c796f9f4937bfa668c40b2e3f43e93dd0 diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index d1f1b54d3108..263f88e4dffb 100644 --- a/trunk/fs/buffer.c +++ b/trunk/fs/buffer.c @@ -2834,7 +2834,7 @@ int try_to_free_buffers(struct page *page) int ret = 0; BUG_ON(!PageLocked(page)); - if (PageWriteback(page)) + if (PageDirty(page) || PageWriteback(page)) return 0; if (mapping == NULL) { /* can this still happen? */ @@ -2845,22 +2845,6 @@ int try_to_free_buffers(struct page *page) spin_lock(&mapping->private_lock); ret = drop_buffers(page, &buffers_to_free); spin_unlock(&mapping->private_lock); - if (ret) { - /* - * If the filesystem writes its buffers by hand (eg ext3) - * then we can have clean buffers against a dirty page. We - * clean the page here; otherwise later reattachment of buffers - * could encounter a non-uptodate page, which is unresolvable. - * This only applies in the rare case where try_to_free_buffers - * succeeds but the page is not freed. - * - * Also, during truncate, discard_buffer will have marked all - * the page's buffers clean. We discover that here and clean - * the page also. - */ - if (test_clear_page_dirty(page)) - task_io_account_cancelled_write(PAGE_CACHE_SIZE); - } out: if (buffers_to_free) { struct buffer_head *bh = buffers_to_free;