linux-stable-rt/mm
Hugh Dickins 5d337b9194 [PATCH] swap: swap_lock replace list+device
The idea of a swap_device_lock per device, and a swap_list_lock over them all,
is appealing; but in practice almost every holder of swap_device_lock must
already hold swap_list_lock, which defeats the purpose of the split.

The only exceptions have been swap_duplicate, valid_swaphandles and an
untrodden path in try_to_unuse (plus a few places added in this series).
valid_swaphandles doesn't show up high in profiles, but swap_duplicate does
demand attention.  However, with the hold time in get_swap_pages so much
reduced, I've not yet found a load and set of swap device priorities to show
even swap_duplicate benefitting from the split.  Certainly the split is mere
overhead in the common case of a single swap device.

So, replace swap_list_lock and swap_device_lock by spinlock_t swap_lock
(generally we seem to prefer an _ in the name, and not hide in a macro).

If someone can show a regression in swap_duplicate, then probably we should
add a hashlock for the swap_map entries alone (shorts being anatomic), so as
to help the case of the single swap device too.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:05:42 -07:00
..
Kconfig [PATCH] sparsemem extreme implementation 2005-09-05 00:05:38 -07:00
Makefile [PATCH] xip: fs/mm: execute in place 2005-06-24 00:06:41 -07:00
bootmem.c [PATCH] Use ALIGN to remove duplicate code 2005-06-25 16:25:02 -07:00
fadvise.c [PATCH] xip: madvice/fadvice: execute in place 2005-06-24 00:06:42 -07:00
filemap.c [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
filemap.h [PATCH] xip: reduce code duplication 2005-06-24 00:06:41 -07:00
filemap_xip.c [PATCH] execute-in-place fixes 2005-07-15 09:54:50 -07:00
fremap.c
highmem.c
hugetlb.c [PATCH] Fix hugepage crash on failing mmap() 2005-08-05 12:22:37 -07:00
internal.h
madvise.c [PATCH] madvise() does not always return -EBADF on non-file mapped area 2005-07-27 16:25:54 -07:00
memory.c [PATCH] Lazy page table copies in fork() 2005-08-29 17:25:04 -07:00
mempolicy.c [PATCH] sys_set_mempolicy() doesnt check if mode < 0 2005-08-01 21:38:00 -07:00
mempool.c [PATCH] propagate __nocast annotations 2005-07-07 18:23:46 -07:00
mincore.c
mlock.c
mmap.c [PATCH] __vm_enough_memory() signedness fix 2005-08-04 21:43:14 -07:00
mprotect.c
mremap.c [PATCH] fix VmSize and VmData after mremap 2005-08-04 13:11:15 -07:00
msync.c [PATCH] msync: check pte dirty earlier 2005-06-21 18:46:21 -07:00
nommu.c [PATCH] __vm_enough_memory() signedness fix 2005-08-04 21:43:14 -07:00
oom_kill.c [PATCH] mm: quieten OOM killer noise 2005-07-07 18:23:36 -07:00
page-writeback.c [PATCH] rename wakeup_bdflush to wakeup_pdflush 2005-06-28 21:20:31 -07:00
page_alloc.c [PATCH] Fix NUMA node sizing in nr_free_zone_pages 2005-07-30 10:14:46 -07:00
page_io.c [PATCH] swsusp: kill config_pm_disk 2005-06-25 16:24:32 -07:00
pdflush.c [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
prio_tree.c
readahead.c
rmap.c [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
shmem.c Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
slab.c [PATCH] propagate __nocast annotations 2005-07-07 18:23:46 -07:00
sparse.c [PATCH] sparsemem extreme: hotplug preparation 2005-09-05 00:05:38 -07:00
swap.c
swap_state.c
swapfile.c [PATCH] swap: swap_lock replace list+device 2005-09-05 00:05:42 -07:00
thrash.c
tiny-shmem.c
truncate.c [PATCH] DocBook: fix some descriptions 2005-05-01 08:59:26 -07:00
vmalloc.c [PATCH] x86_64: Fixed guard page handling again in iounmap 2005-05-20 15:48:20 -07:00
vmscan.c [PATCH] rename wakeup_bdflush to wakeup_pdflush 2005-06-28 21:20:31 -07:00