On Sat, Mar 24, 2001 at 10:05:18PM -0300, Rik van Riel wrote:
> On Sun, 25 Mar 2001, Stephen C. Tweedie wrote:
> > Rik, do you think it is really necessary to take the page lock and
> > release it inside lookup_swap_cache? I may be overlooking something,
> > but I can't see the benefit of it ---
> I don't think we need to do this, except to protect us from
> using a page which isn't up-to-date yet and locked because
> of disk IO.
But it doesn't --- page_launder can try to lock the page after it
checks the refcount, without taking any locks which protect us against
running lookup_swap_cache in parallel. If we get our reference after
page_launder checks the count, we can find the page getting locked out
from underneath our feet.
> Reclaim_page() takes the pagecache_lock before trying to
> free anything, so there's no reason to lock against that.
Exactly. We're not in danger of _losing_ the page, because
reclaim_page is locked more aggressively than page_launder. We still
risk having the page locked against us after lookup_swap_cache does
its own UnlockPage.
So, if lookup_swap_cache doesn't actually ensure that the page is
unlocked, are there any callers which implicitly rely on
lookup_swap_cache() doing a wait_on_page?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/