linux/mm
Paul Jackson 38837fc75a [PATCH] cpuset: top_cpuset tracks hotplug changes to node_online_map
Change the list of memory nodes allowed to tasks in the top (root) nodeset
to dynamically track what cpus are online, using a call to a cpuset hook
from the memory hotplug code.  Make this top cpus file read-only.

On systems that have cpusets configured in their kernel, but that aren't
actively using cpusets (for some distros, this covers the majority of
systems) all tasks end up in the top cpuset.

If that system does support memory hotplug, then these tasks cannot make
use of memory nodes that are added after system boot, because the memory
nodes are not allowed in the top cpuset.  This is a surprising regression
over earlier kernels that didn't have cpusets enabled.

One key motivation for this change is to remain consistent with the
behaviour for the top_cpuset's 'cpus', which is also read-only, and which
automatically tracks the cpu_online_map.

This change also has the minor benefit that it fixes a long standing,
little noticed, minor bug in cpusets.  The cpuset performance tweak to
short circuit the cpuset_zone_allowed() check on systems with just a single
cpuset (see 'number_of_cpusets', in linux/cpuset.h) meant that simply
changing the 'mems' of the top_cpuset had no affect, even though the change
(the write system call) appeared to succeed.  With the following change,
that write to the 'mems' file fails -EACCES, and the 'mems' file stubbornly
refuses to be changed via user space writes.  Thus no one should be mislead
into thinking they've changed the top_cpusets's 'mems' when in affect they
haven't.

In order to keep the behaviour of cpusets consistent between systems
actively making use of them and systems not using them, this patch changes
the behaviour of the 'mems' file in the top (root) cpuset, making it read
only, and making it automatically track the value of node_online_map.  Thus
tasks in the top cpuset will have automatic use of hot plugged memory nodes
allowed by their cpuset.

[akpm@osdl.org: build fix]
[bunk@stusta.de: build fix]
Signed-off-by: Paul Jackson <pj@sgi.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-29 09:18:21 -07:00
..
allocpercpu.c [PATCH] Extract the allocpercpu functions from the slab allocator 2006-09-26 08:48:51 -07:00
bootmem.c [PATCH] bootmem: use MAX_DMA_ADDRESS instead of LOW32LIMIT 2006-09-26 08:48:49 -07:00
fadvise.c [PATCH] fadvise() make POSIX_FADV_NOREUSE a no-op 2006-08-06 08:57:47 -07:00
filemap_xip.c [PATCH] mark address_space_operations const 2006-06-28 14:59:04 -07:00
filemap.c [PATCH] mm: make filemap_nopage use NOPAGE_SIGBUS 2006-09-29 09:18:03 -07:00
filemap.h [PATCH] generic_file_buffered_write(): handle zero-length iovec segments 2006-06-29 10:26:20 -07:00
fremap.c [PATCH] mm: small cleanup of install_page() 2006-09-26 08:48:44 -07:00
highmem.c [PATCH] reduce MAX_NR_ZONES: move HIGHMEM counters into highmem.c/.h 2006-09-26 08:48:46 -07:00
hugetlb.c [PATCH] NUMA: Add zone_to_nid function 2006-09-26 08:48:52 -07:00
internal.h [PATCH] mm: VM_BUG_ON 2006-09-26 08:48:44 -07:00
Kconfig Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-06-29 10:49:17 -07:00
madvise.c [PATCH] Fix MADV_REMOVE protection checking 2006-04-17 18:22:18 -07:00
Makefile [PATCH] Extract the allocpercpu functions from the slab allocator 2006-09-26 08:48:51 -07:00
memory_hotplug.c [PATCH] cpuset: top_cpuset tracks hotplug changes to node_online_map 2006-09-29 09:18:21 -07:00
memory.c [PATCH] mm: fix a race condition under SMC + COW 2006-09-29 09:18:03 -07:00
mempolicy.c [PATCH] GFP_THISNODE for the slab allocator 2006-09-27 08:26:12 -07:00
mempool.c [PATCH] dm: work around mempool_alloc, bio_alloc_bioset deadlocks 2006-09-01 11:39:09 -07:00
migrate.c [PATCH] Define easier to handle GFP_THISNODE 2006-09-26 08:48:50 -07:00
mincore.c [PATCH] freepgt: sys_mincore ignore FIRST_USER_PGD_NR 2005-04-19 13:29:20 -07:00
mlock.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
mmap.c [PATCH] ZVC: Support NR_SLAB_RECLAIMABLE / NR_SLAB_UNRECLAIMABLE 2006-09-26 08:48:51 -07:00
mmzone.c [PATCH] mm/mmzone.c: EXPORT_UNUSED_SYMBOL 2006-07-10 13:24:17 -07:00
mprotect.c [PATCH] mm: optimize the new mprotect() code a bit 2006-09-26 08:48:44 -07:00
mremap.c [PATCH] lockdep: annotate mm 2006-07-03 15:27:07 -07:00
msync.c [PATCH] mm: msync() cleanup 2006-09-26 08:48:45 -07:00
nommu.c [PATCH] NOMMU: Make futexes work under NOMMU conditions 2006-09-27 08:26:15 -07:00
oom_kill.c [PATCH] oom: don't kill current when another OOM in progress 2006-09-29 09:18:21 -07:00
page_alloc.c [PATCH] mm/page_alloc: use NULL instead of 0 for ptr 2006-09-27 08:26:13 -07:00
page_io.c [PATCH] swsusp: read speedup 2006-09-26 08:48:58 -07:00
page-writeback.c [PATCH] mm: non syncing lock_page() 2006-09-26 08:48:48 -07:00
pdflush.c [PATCH] pdflush: handle resume wakeups 2006-06-25 10:01:06 -07:00
prio_tree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
readahead.c spelling fixes 2006-06-26 18:35:02 +02:00
rmap.c [PATCH] mm: tracking shared dirty pages 2006-09-26 08:48:44 -07:00
shmem.c [PATCH] inode-diet: Eliminate i_blksize from the inode structure 2006-09-27 08:26:18 -07:00
slab.c [PATCH] single bit flip detector 2006-09-29 09:18:10 -07:00
slob.c [PATCH] Make kmem_cache_destroy() return void 2006-09-27 08:26:11 -07:00
sparse.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
swap_state.c [PATCH] lockdep: locking init debugging improvement 2006-07-03 15:27:02 -07:00
swap.c [PATCH] mm/: make functions static 2006-09-26 08:48:45 -07:00
swapfile.c [PATCH] swsusp: Fix swap_type_of 2006-08-27 11:01:28 -07:00
thrash.c [PATCH] temporarily disable swap token on memory pressure 2005-11-28 14:42:25 -08:00
tiny-shmem.c [PATCH] devfs: Remove the devfs_fs_kernel.h file from the tree 2006-06-26 12:25:08 -07:00
truncate.c [PATCH] page invalidation cleanup 2006-09-27 08:26:12 -07:00
util.c [PATCH] slab: optimize constant-size kzalloc calls 2006-03-25 08:22:49 -08:00
vmalloc.c [PATCH] Mark __remove_vm_area() static 2006-09-27 08:26:13 -07:00
vmscan.c [PATCH] page invalidation cleanup 2006-09-27 08:26:12 -07:00
vmstat.c [PATCH] zone_statistics: Use hot node instead of cold zone_pgdat 2006-09-27 08:26:13 -07:00