Benjamin LaHaise wrote:
On Tue, Mar 07, 2006 at 12:53:27PM +1100, Nick Piggin wrote:
You can't do this because you can't test PageLRU like that.
Have a look in the lkml archives a few months back, where I proposed
a way to do this for __free_pages(). You can't do it for put_page.
Even if we know that we are the last user of the page (the count is 1)?
Who can bump the page's count then?
Yes. vmscan.
Your page_count and PageLRU tests have no synchronisation between
them, which is the problem AFAIKS. Anything can happen between them
and they can probably also be executed out of order (the loads).
BTW I have quite a large backlog of patches in -mm which should end
up avoiding an atomic or two around these parts.
That certainly looks like it will help. Not taking the spinlock
unconditionally gets rid of quite a bit of the cost.
Cool.
--
Send instant messages to your online friends http://au.messenger.yahoo.com
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html