Re: [RFC, PATCHv2 0/2] mm: map few pages around fault address if they are in page cache
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2014-02-18 18:02:26
Also in:
linux-fsdevel, lkml
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2014-02-18 18:02:26
Also in:
linux-fsdevel, lkml
On Tue, Feb 18, 2014 at 6:15 AM, Wilcox, Matthew R [off-list ref] wrote:
We don't really need to lock all the pages being returned to protect against truncate. We only need to lock the one at the highest index, and check i_size while that lock is held since truncate_inode_pages_range() will block on any page that is locked. We're still vulnerable to holepunches, but there's no locking currently between holepunches and truncate, so we're no worse off now.
It's not "holepunches and truncate", it's "holepunches and page
mapping", and I do think we currently serialize the two - the whole
"check page->mapping still being non-NULL" before mapping it while
having the page locked does that.
Besides, that per-page locking should serialize against truncate too.
No, there is no "global" serialization, but there *is* exactly that
page-level serialization where both truncation and hole punching end
up making sure that the page no longer exists in the page cache and
isn't mapped.
I'm just claiming that *because* of the way rmap works for file
mappings (walking the i_mapped list and page tables), we should
actually be ok. The anonymous rmap list is protected by the page
lock, but the file-backed rmap is protected by the pte lock (well, and
the "i_mmap_mutex" that in turn protects the i_mmap list etc).
Linus
--
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>