On Wed, Dec 1, 2010 at 8:35 AM, Rik van Riel <riel@xxxxxxxxxx> wrote: > > Surely somebody can have just looked up the page and > gotten a reference count, right before your ->freepage > call is invoked? No. The removal from the page cache is atomic, even in the presence of the lockless lookup. The page cache lookup does a "get_page_unless_zero()" on the count, so when __remove_mapping() has removed the page using "page_freeze_refs()", it's really gone, and cannot be looked up. And if that is broken, then we have much more serious problems (like aliasing the same page when doing mmap/read etc), so that's more than just an implementation detail, it's a fundamental requirement of the whole page-cache design. And that's the whole point of adding this callback to the __remove_mapping() stage: that's the _only_ point where we really end up knowing that "yes, we really removed that page, and there are no more users". Linus -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html