Hugh Dickins
78ecba0812
mm: fix ever-decreasing swap priority
...
Vegard Nossum has noticed the ever-decreasing negative priority in a
swapon /swapoff loop, which eventually would misprioritize when int wraps
positive. Not worth spending much code on, but probably better fixed.
It's easy to handle the swapping on and off of just one area, but there's
not much point if a pair or more still misbehave. To handle the general
case, swapoff should compact negative priorities, keeping them always from
-1 to -MAX_SWAPFILES. That's a change, but should cause no regression,
since these negative (unspecified) priorities are disjoint from the the
positive specified priorities 0 to 32767.
One small functional difference, which seems appropriate: when swapoff
fails to free all swap from a negative priority area, that area is now
reinserted at lowest priority, rather than at its original priority.
In moving down swapon's setting of priority, I notice that an area is
visible to /proc/swaps when it has swap_map set, yet that was being set
before all the visible fields were properly filled in: corrected.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reported-by: Vegard Nossum <vegard.nossum@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-24 10:47:21 -07:00
..
allocpercpu.c
Merge commit 'v2.6.26-rc9' into cpus4096
2008-07-06 14:23:39 +02:00
backing-dev.c
mm: bdi: fix race in bdi_class device creation
2008-05-20 13:31:53 -07:00
bootmem.c
bootmem: replace node_boot_start in struct bootmem_data
2008-07-24 10:47:20 -07:00
bounce.c
block: Initial support for data-less (or empty) barrier support
2007-10-16 11:03:56 +02:00
dmapool.c
dmapool: enable debugging for CONFIG_SLUB_DEBUG_ON too
2008-04-28 08:58:20 -07:00
fadvise.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
filemap.c
generic_file_aio_read() cleanups
2008-07-24 10:47:16 -07:00
filemap_xip.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
fremap.c
mm: fix various kernel-doc comments
2008-03-19 18:53:35 -07:00
highmem.c
highmem: Export totalhigh_pages.
2008-07-19 22:39:46 -07:00
hugetlb.c
hugetlb: quota is not freed for unused reserved private huge pages
2008-07-24 10:47:19 -07:00
internal.h
mm: export prep_compound_page to mm
2008-07-24 10:47:17 -07:00
Kconfig
mm: make CONFIG_MIGRATION available w/o CONFIG_NUMA
2008-07-24 10:47:21 -07:00
maccess.c
kgdb: fix optional arch functions and probe_kernel_*
2008-04-17 20:05:39 +02:00
madvise.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
Makefile
mm: remove mm_init compilation dependency on CONFIG_DEBUG_MEMORY_INIT
2008-07-24 10:47:17 -07:00
memcontrol.c
memcg: simple stats for memory resource controller
2008-05-01 08:04:02 -07:00
memory.c
hugetlb: introduce pud_huge
2008-07-24 10:47:18 -07:00
memory_hotplug.c
memory-hotplug: add sysfs removable attribute for hotplug memory remove
2008-07-24 10:47:21 -07:00
mempolicy.c
hugetlb: modular state for hugetlb page size
2008-07-24 10:47:17 -07:00
mempool.c
spelling fixes: mm/
2007-10-20 01:27:18 +02:00
migrate.c
mm: make CONFIG_MIGRATION available w/o CONFIG_NUMA
2008-07-24 10:47:21 -07:00
mincore.c
mm: remove nopage
2008-04-28 08:58:18 -07:00
mlock.c
mm_init.c
mm: create /sys/kernel/mm
2008-07-24 10:47:17 -07:00
mmap.c
hugetlb: modular state for hugetlb page size
2008-07-24 10:47:17 -07:00
mmzone.c
mm: filter based on a nodemask as well as a gfp_mask
2008-04-28 08:58:19 -07:00
mprotect.c
mm: record MAP_NORESERVE status on vmas and fix small page mprotect reservations
2008-07-24 10:47:16 -07:00
mremap.c
sparse pointer use of zero as null
2007-10-18 14:37:31 -07:00
msync.c
nommu.c
nommu: Correct kobjsize() page validity checks.
2008-06-12 07:56:17 -07:00
oom_kill.c
oom_kill: remove unused parameter in badness()
2008-04-28 08:58:26 -07:00
page-writeback.c
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
2008-07-15 08:36:38 -07:00
page_alloc.c
memory hotplug: small fixes to bootmem freeing for memory hotremove
2008-07-24 10:47:21 -07:00
page_io.c
mm: fix PageUptodate data race
2008-02-05 09:44:19 -08:00
page_isolation.c
memory hotremove: unset migrate type "ISOLATE" after removal
2007-11-14 18:45:38 -08:00
pagewalk.c
pagemap: pass mm into pagewalkers
2008-06-12 18:05:41 -07:00
pdflush.c
mm/pdflush.c: merge the same code in two path
2008-05-13 08:02:24 -07:00
prio_tree.c
spelling fixes: mm/
2007-10-20 01:27:18 +02:00
quicklist.c
quicklists: Only consider memory that can be used with GFP_KERNEL
2008-01-14 08:52:22 -08:00
readahead.c
mm: bdi: export BDI attributes in sysfs
2008-04-30 08:29:49 -07:00
rmap.c
mm: remove nopage
2008-04-28 08:58:18 -07:00
shmem.c
tmpfs: support aio
2008-07-24 10:47:16 -07:00
shmem_acl.c
slab.c
Merge branch 'generic-ipi' into generic-ipi-for-linus
2008-07-15 21:55:59 +02:00
slob.c
slob: record page flag overlays explicitly
2008-07-24 10:47:15 -07:00
slub.c
slub: record page flag overlays explicitly
2008-07-24 10:47:15 -07:00
sparse-vmemmap.c
Christoph has moved
2008-07-04 10:40:04 -07:00
sparse.c
memory hotplug: allocate usemap on the section with pgdat
2008-07-24 10:47:21 -07:00
swap.c
mm: remove initialization of static per-cpu variables
2008-07-24 10:47:21 -07:00
swap_state.c
mm: bdi: add separate writeback accounting capability
2008-04-30 08:29:50 -07:00
swapfile.c
mm: fix ever-decreasing swap priority
2008-07-24 10:47:21 -07:00
thrash.c
tiny-shmem.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2008-03-25 08:57:47 -07:00
truncate.c
fix invalidate_inode_pages2_range() to not clear ret
2008-04-28 08:58:18 -07:00
util.c
fix mm/util.c:krealloc()
2007-11-14 18:45:41 -08:00
vmalloc.c
vmallocinfo: add NUMA information
2008-07-24 10:47:17 -07:00
vmscan.c
mm: fix incorrect variable type in do_try_to_free_pages()
2008-06-12 18:05:39 -07:00
vmstat.c
mm/vmstat.c: proper externs
2008-07-24 10:47:14 -07:00