Messages in this thread |  | | Date | Sun, 13 May 2001 12:29:42 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: page_launder() bug |
| |
On Sun, 13 May 2001, Rik van Riel wrote: > > This means that the swapin path (and the same path for > other pagecache pages) doesn't take the page lock and > the page lock doesn't protect us from other people using > the page while we have it locked.
You can test for swap cache deadness without holding the page cache lock: if the swap count is 1, then we know that nobody else has this swap entry in its page tables, and thus there can not be any concurrent lookups either.
Now, it may well be that we need to make sure that there is some proper ordering (nobody must decrement the swap count before they increment the page count or something). I think that is the case anyway (and I _think_ that everybody that mucks with the swap count always hold the page count - this might be a good thing to check).
So while you're right in general, there are some things we can do with less global locking. Just holding the page lock will guarantee that at least nobody changes the index etc from under us, so that the things we test are at least fairly well-defined.
Linus
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |