* [patch 3/18] ext3 set_page_dirty fix
@ 2002-05-26 20:38 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2002-05-26 20:38 UTC (permalink / raw)
To: Linus Torvalds; +Cc: lkml
The set_page_dirty() in the ext3_writepage() failure path isn't right.
set_page_dirty() will alter buffer states - it's a "whole page"
dirtying.
__set_page_dirty_buffers() is emitting warnings when it refuses to set
dirty a non-uptodate buffer against a partially-mapped page.
All we want to do in there is to move the page back onto
mapping->dirty_pages, without altering the state of its buffers.
=====================================
--- 2.5.18/fs/ext3/inode.c~ext3-set_page_dirty Sun May 26 12:37:43 2002
+++ 2.5.18-akpm/fs/ext3/inode.c Sun May 26 12:37:43 2002
@@ -1327,7 +1327,13 @@ static int ext3_writepage(struct page *p
out_fail:
unlock_kernel();
- set_page_dirty(page);
+
+ /*
+ * We have to fail this writepage to avoid cross-fs transactions.
+ * Put the page back on mapping->dirty_pages, but leave its buffer's
+ * dirty state as-is.
+ */
+ __set_page_dirty_nobuffers(page);
unlock_page(page);
return ret;
}
-
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-05-26 20:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-05-26 20:38 [patch 3/18] ext3 set_page_dirty fix Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.