Thread (18 messages) 18 messages, 6 authors, 2014-02-19

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 17:51:44
Also in: linux-fsdevel, lkml

On Tue, Feb 18, 2014 at 5:28 AM, Rik van Riel [off-list ref] wrote:
What would the direct io code do when it runs into a page with
elevated mapcount, but for which a mapping cannot be found yet?
Actually, you cannot get into that situation, since the definition of
"found" is that you have to follow the page tables (remember: this is
a *file* mapping, not an anonymous one, so you don't actually have an
rmap list, you have the inode mapping list).

And since we hold the page table lock, you cannot actually get to the
point where you see that it's not mapped yet. See?

That said:
Looking at the code, it looks like the above scheme could cause
some trouble with invalidate_inode_pages2_range(), which has
the following sequence:

                        if (page_mapped(page)) {
                                ... unmap page
                        }
                        BUG_ON(page_mapped(page));
The BUG_ON() itself could trigger, because it could race with us
optimistically trying to increment the page mapping code. And yes, we
might have to remove that.

But the actual "unmap page" logic should not be able to ever see any
difference.

See my argument?

              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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help