[PATCH] swap: get_swap_page drop swap_list_lock
authorHugh Dickins <hugh@veritas.com>
Sat, 3 Sep 2005 22:54:37 +0000 (15:54 -0700)
committerLinus Torvalds <torvalds@evo.osdl.org>
Mon, 5 Sep 2005 07:05:41 +0000 (00:05 -0700)
commitfb4f88dcabdc716c7c350e09cf4a38a419b007e1
tree1a7806e3ac8bd45eded544763324c13c9f95c0e6
parent89d09a2c80ea6baafb559b86d545fada05e14ab5
[PATCH] swap: get_swap_page drop swap_list_lock

Rewrite get_swap_page to allocate in just the same sequence as before, but
without holding swap_list_lock across its scan_swap_map.  Decrement
nr_swap_pages and update swap_list.next in advance, while still holding
swap_list_lock.  Skip full devices by testing highest_bit.  Swapoff hold
swap_device_lock as well as swap_list_lock to clear SWP_WRITEOK.  Reduces lock
contention when there are parallel swap devices of the same priority.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/swapfile.c