Commit:     56bbd65df0e92a4a8eb70c5f2b416ae2b6c5fb31
Parent:     4199cfa02b982f4c739e8a6a304d6a40e1935d25
Author:     Christoph Lameter <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 01:25:35 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 09:42:58 2007 -0700

    Memoryless nodes: Update memory policy and page migration
    Online nodes now may have no memory.  The checks and initialization must
    therefore be changed to no longer use the online functions.
    This will correctly initialize the interleave on bootup to only target nodes
    with memory and will make sys_move_pages return an error when a page is to 
    moved to a memoryless node.  Similarly we will get an error if MPOL_BIND and
    MPOL_INTERLEAVE is used on a memoryless node.
    These are somewhat new semantics.  So far one could specify memoryless nodes
    and we would maybe do the right thing and just ignore the node (or we'd do
    something strange like with MPOL_INTERLEAVE).  If we want to allow the
    specification of memoryless nodes via memory policies then we need to keep
    checking for online nodes.
    Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]>
    Acked-by: Nishanth Aravamudan <[EMAIL PROTECTED]>
    Tested-by: Lee Schermerhorn <[EMAIL PROTECTED]>
    Acked-by: Bob Picco <[EMAIL PROTECTED]>
    Cc: Mel Gorman <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 mm/mempolicy.c |   10 +++++-----
 mm/migrate.c   |    2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 5daf63b..0d70fb7 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -494,9 +494,9 @@ static void get_zonemask(struct mempolicy *p, nodemask_t 
                *nodes = p->v.nodes;
        case MPOL_PREFERRED:
-               /* or use current node instead of online map? */
+               /* or use current node instead of memory_map? */
                if (p->v.preferred_node < 0)
-                       *nodes = node_online_map;
+                       *nodes = node_states[N_HIGH_MEMORY];
                        node_set(p->v.preferred_node, *nodes);
@@ -1687,7 +1687,7 @@ void __init numa_policy_init(void)
         * fall back to the largest node if they're all smaller.
-       for_each_online_node(nid) {
+       for_each_node_state(nid, N_HIGH_MEMORY) {
                unsigned long total_pages = node_present_pages(nid);
                /* Preserve the largest node */
@@ -1973,7 +1973,7 @@ int show_numa_map(struct seq_file *m, void *v)
                seq_printf(m, " huge");
        } else {
                check_pgd_range(vma, vma->vm_start, vma->vm_end,
-                               &node_online_map, MPOL_MF_STATS, md);
+                       &node_states[N_HIGH_MEMORY], MPOL_MF_STATS, md);
        if (!md->pages)
@@ -2000,7 +2000,7 @@ int show_numa_map(struct seq_file *m, void *v)
        if (md->writeback)
                seq_printf(m," writeback=%lu", md->writeback);
-       for_each_online_node(n)
+       for_each_node_state(n, N_HIGH_MEMORY)
                if (md->node[n])
                        seq_printf(m, " N%d=%lu", n, md->node[n]);
diff --git a/mm/migrate.c b/mm/migrate.c
index 07f22d4..71c38b4 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -986,7 +986,7 @@ asmlinkage long sys_move_pages(pid_t pid, unsigned long 
                                goto out;
                        err = -ENODEV;
-                       if (!node_online(node))
+                       if (!node_state(node, N_HIGH_MEMORY))
                                goto out;
                        err = -EACCES;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to