Messages in this thread Patch in this message | | | Subject | Re: 2.6.19 file content corruption on ext3 | From | Peter Zijlstra <> | Date | Tue, 19 Dec 2006 11:52:15 +0100 |
| |
On Tue, 2006-12-19 at 02:32 -0800, Andrew Morton wrote: > On Tue, 19 Dec 2006 20:56:50 +1100 > Nick Piggin <nickpiggin@yahoo.com.au> wrote: > > > Linus Torvalds wrote: > > > > > NOTICE? First you make a BIG DEAL about how dirty bits should never get > > > lost, but THE VERY SAME FUNCTION actually very much on purpose DOES drop > > > the dirty bit for when it's not in the page tables. > > > > try_to_free_buffers is quite a special case, where we're transferring > > the page dirty metadata from the buffers to the page. I think Andrew > > would have a better grasp of it so he could correct me, but what it > > does is legitimate. > > Well it used to be. After 2.6.19 it can do the wrong thing for mapped > pages. But it turns out that we don't feed it mapped pages, apart from > pagevec_strip() and possibly races against pagefaults.
So how about this:
Index: linux-2.6-git/mm/page-writeback.c =================================================================== --- linux-2.6-git.orig/mm/page-writeback.c 2006-12-19 08:24:48.000000000 +0100 +++ linux-2.6-git/mm/page-writeback.c 2006-12-19 11:43:31.000000000 +0100 @@ -859,6 +859,9 @@ int test_clear_page_dirty(struct page *p struct address_space *mapping = page_mapping(page); unsigned long flags; + if (page_mapped(page)) + return 0; + if (!mapping) return TestClearPageDirty(page);
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |