]> err.no Git - linux-2.6/commit
[PATCH] mm: simplify vmscan vs release refcounting
authorNick Piggin <npiggin@suse.de>
Wed, 22 Mar 2006 08:08:03 +0000 (00:08 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 22 Mar 2006 15:53:57 +0000 (07:53 -0800)
commit7c8ee9a86340db686cd4314e9944dc9b6111bda9
tree80638e1658556b4fd7c0b92d571aaac854245bd3
parentf205b2fe62d321403525065a4cb31b6bff1bbe53
[PATCH] mm: simplify vmscan vs release refcounting

The VM has an interesting race where a page refcount can drop to zero, but it
is still on the LRU lists for a short time.  This was solved by testing a 0->1
refcount transition when picking up pages from the LRU, and dropping the
refcount in that case.

Instead, use atomic_add_unless to ensure we never pick up a 0 refcount page
from the LRU, thus a 0 refcount page will never have its refcount elevated
until it is allocated again.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
include/linux/mm.h
mm/vmscan.c