[PATCH] Fix XFS after clear_page_dirty() removal
authorDavid Chinner <dgc@sgi.com>
Wed, 20 Dec 2006 23:24:01 +0000 (10:24 +1100)
committerLinus Torvalds <torvalds@woody.osdl.org>
Thu, 21 Dec 2006 18:01:08 +0000 (10:01 -0800)
XFS appears to call clear_page_dirty to get the mapping tree dirty tag
set correctly at the same time the page dirty flag is cleared.  I note
that this can be done by set_page_writeback() if we clear the dirty flag
on the page first when we are writing back the entire page.

Hence it seems to me that the XFS call to clear_page_dirty() could
easily be substituted by clear_page_dirty_for_io() followed by a call to
set_page_writeback() to get the mapping tree tags set correctly after
the page has been marked clean.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/xfs/linux-2.6/xfs_aops.c

index b56eb754e2d23d6f87208a9cff5c9c759193f0d8..7b54461695e2de979924c14cfe79a1c56d2587ef 100644 (file)
@@ -341,9 +341,9 @@ xfs_start_page_writeback(
 {
        ASSERT(PageLocked(page));
        ASSERT(!PageWriteback(page));
-       set_page_writeback(page);
        if (clear_dirty)
-               clear_page_dirty(page);
+               clear_page_dirty_for_io(page);
+       set_page_writeback(page);
        unlock_page(page);
        if (!buffers) {
                end_page_writeback(page);