Re: [PATCH linux-2.6.0-test10-mm1] filemap_fdatawait.patch

From: Andrew Morton
Date: Mon Jan 05 2004 - 15:28:19 EST


Marcelo Tosatti <marcelo.tosatti@xxxxxxxxxxxx> wrote:
>
>
>
> On Fri, 2 Jan 2004, Suparna Bhattacharya wrote:
>
> > On Wed, Dec 31, 2003 at 03:17:36AM -0800, Andrew Morton wrote:
> > > Andrew Morton <akpm@xxxxxxxx> wrote:
> > > >
> > > > Let me actually think about this a bit.
> > >
> > > Nasty. The same race is present in 2.4.x...
>
> filemap_fdatawait() is always called with i_sem held and
> there is no "!PG_dirty and !PG_writeback" window.
>
> Where does the race lies in 2.4 ?

kupdate and bdflush run filemap_fdatawait() without i_sem. If kupdate has
moved a page off locked_pages to wait on it, a caller of fsync() just won't
see that page at all, and fsync can return while I/O is still in flight.

Given that this only applies to mmap data in 2.4 it doesn't seem
super-important. A good way to fix it would be to not call
filemap_fdatawait() *at all* if the caller is kupdate or bdflush - it's
silly. Could use a PF_foo flag for this?

-
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/