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: Tue, 2 Feb 2010 09:21:42 -0600 [thread overview]
Message-ID: <20100202152142.GQ6653@sgi.com> (raw)
In-Reply-To: <20100202145911.GM4135@random.random>
On Tue, Feb 02, 2010 at 03:59:11PM +0100, Andrea Arcangeli wrote:
> > I think you missed my correction to an earlier statement. This patcheset
> > does not have any data corruption or userland inconsistency. I had mistakenly
> > spoken of a patchset I am working up as a lesser alternative to this one.
>
> If there is never data corruption or userland inconsistency when I do
> mmap(MAP_SHARED) truncate(0) then I've to wonder why at all you need
> any modification if you already can handle remote spte invalidation
> through atomic sections. That is ridiculous that you can handle it
> through atomic-section truncate without sleepability, and you still
> ask sleepability for mmu notifier in the first place...
In the truncate(0) example you provide, the sequence would be as follows:
On the first call from unmap_vmas into _inv_range_start(atomic==1),
XPMEM would scan the segment's PFN table. If there were pages in that
range which have been exported, we would return !0 without doing any
invalidation.
The unmap_vmas code would see the non-zero return and return start_addr
back to zap_page_range and further to unmap_mapping_range_vma where
need_unlocked_invalidate would be set.
unmap_mapping_range_vma would then unlock the i_mmap_lock, call
_inv_range_start(atomic==0) which would clear all the remote page tables
and TLBs. It would then reaquire the i_mmap_lock and retry.
This time unmap_vmas would call _inv_range_start(atomic==1). XPMEM would
scan the segment's PFN table and find there were no pages exported and
return 0.
Things would proceed as normal from there.
No corruption. No intrusive locking additions that negatively affect
the vast majority of users. A compromise. The only downside I can see
at all in the CONFIG_MMU_NOTIFIER=n case is unmap_mapping_range_vma is
slightly larger.
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-02 15:21 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 [this message]
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
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=20100202152142.GQ6653@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).