Linux NFS development
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Andrew Morton <akpm@osdl.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>,
	neilb@suse.de, okir@suse.de, nfs@lists.sourceforge.net
Subject: Re: Problems with mmap consistency
Date: Sat, 25 Feb 2006 05:59:40 +0100	[thread overview]
Message-ID: <20060225045940.GB6592@g5.random> (raw)
In-Reply-To: <20060224171752.546dbe0d.akpm@osdl.org>

On Fri, Feb 24, 2006 at 05:17:52PM -0800, Andrew Morton wrote:
> Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> >
> > On Sat, 2006-02-25 at 01:33 +0100, Andrea Arcangeli wrote:
> > 
> > > I got positive confirmation that my patch that makes
> > > invalidate_inode_pages2 non-destructive fixed the problem. At the top of
> > > this thread you can find the testcase used to reproduce the race posted
> > > by Olaf. I'm unsure if Neil's patch is needed, but it certainly could
> > > co-exist. I feel his patch should not execute a writepage inside
> > > try_to_release_page, it's not needed anymore with my fix in place.
> > 
> > Yes it still is needed. The page doesn't need to have the dirty bit set
> > in order to actually need writing out (sort of the equivalent of having
> > buffers in the blocks case).
> 
> eh?  I don't know what's being talked about here, but that doesn't sound
> right.  Taking the block-backed protocol as an example, if a page isn't
> dirty it shouldn't be written out.  What _is_ legal is a page which is
> dirty but doesn't need writing out.  You've gone and invented the converse,
> illegal case here.

Agreed, this is what I was trying to say too in the previous emails in
answer to Neil (and it was confirmed by your last email too). It doesn't
sound sane that a page has dirty-lowlevel data but PG_dirty is not set.
try_to_release_page isn't ->writepage and if PG_dirty isn't set it would
be hiding those pages to pdflush (pdflush wouldn't see the dirty bit and
it wouldn't writeback periodically).

try_to_release_page can return failure without doing writeback if it
finds dirty data in the lowlevel caches (but even that isn't strictly
necessary as long as the PG_dirty bit is set correctly).

Now the fact my patch fixed the problem, makes me quite optimistic nfs
is currently doing the right thing in setting PG_dirty, but perhaps the
testcase isn't stressing all races...

> > My patch just ensures that try_to_release_page() actually flushes those
> > buffers and waits for completion.
> 
> <what patch?>

The one that Neil posted, it was the second URL (the first url is my
proposed patch):

http://sourceforge.net/mailarchive/message.php?msg_id=14906347
http://sourceforge.net/mailarchive/message.php?msg_id=14906867


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

  reply	other threads:[~2006-02-25  5:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-17 10:57 Problems with mmap consistency Olaf Kirch
2006-02-17 15:15 ` Trond Myklebust
2006-02-24  4:01   ` Andrea Arcangeli
2006-02-24  6:15     ` Neil Brown
2006-02-24 16:08       ` Andrea Arcangeli
2006-02-24 23:39         ` Andrew Morton
2006-02-25  0:33           ` Andrea Arcangeli
2006-02-25  0:59             ` Trond Myklebust
2006-02-25  1:17               ` Andrew Morton
2006-02-25  4:59                 ` Andrea Arcangeli [this message]
2006-02-25 14:55                   ` Trond Myklebust
2006-02-25 17:27                     ` Andrea Arcangeli
2006-02-25 18:42                       ` Trond Myklebust
2006-02-27  0:26                         ` Neil Brown
2006-02-28  1:04                         ` Andrea Arcangeli
2006-02-26 22:33         ` Neil Brown
2006-02-24  7:12     ` Olaf Kirch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060225045940.GB6592@g5.random \
    --to=andrea@suse.de \
    --cc=akpm@osdl.org \
    --cc=neilb@suse.de \
    --cc=nfs@lists.sourceforge.net \
    --cc=okir@suse.de \
    --cc=trond.myklebust@fys.uio.no \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox