Re: [PATCH] mm: fix page_mkclean_one (was: 2.6.19 file contentcorruption on ext3)

From: Andrew Morton
Date: Wed Dec 20 2006 - 19:13:06 EST


On Wed, 20 Dec 2006 15:55:14 -0800 (PST)
Linus Torvalds <torvalds@xxxxxxxx> wrote:

> > > @@ -386,12 +399,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
> >
> > invalidate_complete_page2() is pretty gruesome. We're handling the case
> > where someone went and redirtied the page (and hence its buffers) after the
> > invalidate_inode_pages2() caller (generic_file_direct_IO) synced it to
> > disk.
> >
> > I'd prefer to just fail the direct-io if someone did that, but then
> > people's tests fail and they whine.
>
> So with my change, afaik, we will just return EIO to the invalidate, and
> do the write.

The write's already been done by this stage.

> Which should be ok. In fact, it appears to be the only
> possibly valid thing to do.
>
> It really boils down to that same thing: if you remove the dirty bit,
> there is NO CONCEIVABLE GOOD THING YOU CAN DO EXCEPT FOR:
> - do the damn IO already ("clear_page_dirty_for_io()")
> - truncate the page (unmap and destroy it both from page cache AND from
> any user-visible filesystem cases)

There's also redirty_page_for_writepage().

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/