diff options
author | David Chinner <dgc@sgi.com> | 2006-12-20 18:24:01 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-21 13:01:08 -0500 |
commit | 921320210bd2ec4f17053d283355b73048ac0e56 (patch) | |
tree | d2a0b5d60d2f3518e717038dd1eec5eaf4fab13b | |
parent | 9280f6822c2d7112b47107251fce307aefb31f35 (diff) |
[PATCH] Fix XFS after clear_page_dirty() removal
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>
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index b56eb754e2d2..7b54461695e2 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -341,9 +341,9 @@ xfs_start_page_writeback( | |||
341 | { | 341 | { |
342 | ASSERT(PageLocked(page)); | 342 | ASSERT(PageLocked(page)); |
343 | ASSERT(!PageWriteback(page)); | 343 | ASSERT(!PageWriteback(page)); |
344 | set_page_writeback(page); | ||
345 | if (clear_dirty) | 344 | if (clear_dirty) |
346 | clear_page_dirty(page); | 345 | clear_page_dirty_for_io(page); |
346 | set_page_writeback(page); | ||
347 | unlock_page(page); | 347 | unlock_page(page); |
348 | if (!buffers) { | 348 | if (!buffers) { |
349 | end_page_writeback(page); | 349 | end_page_writeback(page); |