From: Robin Holt <holt@sgi.com>
To: Andrea Arcangeli <aarcange@redhat.com>
Cc: Robin Holt <holt@sgi.com>, Christoph Hellwig <hch@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jack Steiner <steiner@sgi.com>,
linux-mm@kvack.org
Subject: Re: [RFP-V2 0/3] Make mmu_notifier_invalidate_range_start able to sleep.
Date: Wed, 3 Feb 2010 13:54:27 -0600 [thread overview]
Message-ID: <20100203195427.GE6616@sgi.com> (raw)
In-Reply-To: <20100203171413.GB5959@random.random>
On Wed, Feb 03, 2010 at 06:14:13PM +0100, Andrea Arcangeli wrote:
> On Tue, Feb 02, 2010 at 06:48:33PM -0600, Robin Holt wrote:
> > In the _invalidate_page case, it is called by the kernel from sites where
> > the kernel is relying upon the reference count to eliminate the page from
> > use while maintaining the page's data as clean and ready to be released.
> > If the page is marked as dirty, etc. then the kernel will "do the right
> > thing" with the page to maintain data consistency.
> >
> > The _invalidate_range_start/end pairs are used in places where the
> > caller's address space is being modified. If we allow the attachers
> > to continue to use the old pages from the old mapping even for a short
> > time after the process has started to use the new pages, there would be
> > silent data corruption.
>
> Just to show how fragile your assumption is, your code is already
> generating mm corruption in fork and in ksm... the set_pte_at_notify
> invalidate_page has to run immediately and be effective immediately
> despite being called with the PT lock hold.
Actually, we don't generate corruption, but that is a little more complex.
At fork time, the invalidate range happens to clear all of the segment's
page table.
When XPMEM goes to refill the entry, we always call
get_user_pages(,write=1,). That will result in a page callout, but
we have no entry in the segment's page table so the callout is safely
ignored. When the processes pte gets established, it has already broken
COW so we are back to a safe state.
Robin
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-02-03 19:54 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20100202040145.555474000@alcatraz.americas.sgi.com>
2010-02-02 4:01 ` [RFP-V2 1/3] Have mmu_notifiers use SRCU so they may safely schedule Robin Holt
2010-02-02 4:01 ` [RFP-V2 2/3] Fix unmap_vma() bug related to mmu_notifiers Robin Holt
2010-02-02 4:01 ` [RFP-V2 3/3] Make mmu_notifier_invalidate_range_start able to sleep Robin Holt
2010-02-02 8:09 ` [RFP-V2 0/3] " Christoph Hellwig
2010-02-02 12:59 ` Andrea Arcangeli
2010-02-02 13:13 ` Andrea Arcangeli
2010-02-02 13:29 ` Robin Holt
2010-02-02 13:40 ` Andrea Arcangeli
2010-02-02 13:51 ` Robin Holt
2010-02-02 14:10 ` Andrea Arcangeli
2010-02-02 14:21 ` Robin Holt
2010-02-02 14:59 ` Andrea Arcangeli
2010-02-02 15:21 ` Robin Holt
2010-02-02 16:01 ` Andrea Arcangeli
2010-02-02 16:39 ` Robin Holt
2010-02-02 16:52 ` Andrea Arcangeli
2010-02-02 16:59 ` Robin Holt
2010-02-02 17:31 ` Robin Holt
2010-02-02 20:27 ` Andrea Arcangeli
2010-02-02 20:17 ` Andrea Arcangeli
2010-02-03 0:48 ` Robin Holt
2010-02-03 17:14 ` Andrea Arcangeli
2010-02-03 17:18 ` Andrea Arcangeli
2010-02-03 19:54 ` Robin Holt [this message]
2010-02-02 13:23 ` Robin Holt
2010-02-02 13:35 ` Robin Holt
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=20100203195427.GE6616@sgi.com \
--to=holt@sgi.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-mm@kvack.org \
--cc=steiner@sgi.com \
/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;
as well as URLs for NNTP newsgroup(s).