[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0612171744360.3479@woody.osdl.org>
Date: Sun, 17 Dec 2006 17:57:57 -0800 (PST)
From: Linus Torvalds <torvalds@...l.org>
To: Andrew Morton <akpm@...l.org>
cc: andrei.popa@...eo.ro,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Hugh Dickins <hugh@...itas.com>,
Florian Weimer <fw@...eb.enyo.de>,
Marc Haber <mh+linux-kernel@...schlus.de>,
Martin Michlmayr <tbm@...ius.com>
Subject: Re: 2.6.19 file content corruption on ext3
[ Replying to myself - a sure sign that I don't get out enough ]
On Sun, 17 Dec 2006, Linus Torvalds wrote:
>
> So I don't actually see any serialization at all that would keep a random
> page from being paged back in.
We do actually serialize, but we do it _after_ the page has already been
mapped back. Ie we do it for the dirty page case at rthe end of
do_wp_page() and do_no_page() when we do the "set_page_dirty_balance()",
but that's potentially too late - we've already mapped the page read-write
into the address space.
That said, this means that only threaded apps should ever trigger any
problems, which would seem to make it unlikely that this is the issue.
But Andrew: I don't think it's necessarily true that
"try_to_free_buffers()" callers have all unmapped the page.
That seems to be true for vmscan.c (ie the shrink_page_list ->
try_to_release_page -> try_to_release_buffers callchain), but what about
the other callchains (through filesystems, or through "pagevec_strip()" or
similar?) That pagevec_strip() is called from shrink_active_list(), I
don't see that unmapping the pages..
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists