lkml.org 
[lkml]   [2009]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] mm: clear N_HIGH_MEMORY map before se set it again -v4
    Nathan Lynch wrote:
    > Yinghai Lu <yinghai@kernel.org> writes:
    >> SRAT tables may contains nodes of very small size. The arch code may
    >> decide to not activate such a node. However, currently the early boot code
    >> sets N_HIGH_MEMORY for such nodes. These nodes therefore seem to be active
    >> although these nodes have no present pages.
    >>
    >> for 64bit N_HIGH_MEMORY == N_NORMAL_MEMORY, so that works for 64 bit too
    >>
    >> v4: update description according to Christoph
    >>
    >> Signed-off-by: Yinghai Lu <Yinghai@kernel.org>
    >> Tested-by: Jack Steiner <steiner@sgi.com>
    >> Acked-by: Christoph Lameter <cl@linux-foundation.org>
    >>
    >> ---
    >> mm/page_alloc.c | 5 +++++
    >> 1 file changed, 5 insertions(+)
    >>
    >> Index: linux-2.6/mm/page_alloc.c
    >> ===================================================================
    >> --- linux-2.6.orig/mm/page_alloc.c
    >> +++ linux-2.6/mm/page_alloc.c
    >> @@ -4041,6 +4041,11 @@ void __init free_area_init_nodes(unsigne
    >> early_node_map[i].start_pfn,
    >> early_node_map[i].end_pfn);
    >>
    >> + /*
    >> + * find_zone_movable_pfns_for_nodes/early_calculate_totalpages init
    >> + * that node_mask, clear it at first
    >> + */
    >> + nodes_clear(node_states[N_HIGH_MEMORY]);
    >> /* Initialise every node */
    >> mminit_verify_pageflags_layout();
    >> setup_nr_node_ids();
    >
    > This patch breaks the cpuset.mems cgroup attribute on an i386 kvm guest.
    >
    > With v2.6.30:
    >
    > # uname -r
    > 2.6.30
    > # cat /cgroup/cpuset.mems
    > 0
    > # mkdir /cgroup/test
    > # for i in cpus mems ; do cat /cgroup/cpuset.$i > /cgroup/test/cpuset.$i ; done
    > # echo $$ > /cgroup/test/tasks
    > # echo $?
    > 0
    >
    > With a pulled-today Linus tree:
    >
    > # uname -r
    > 2.6.30-06725-g1d89b30
    > # cat /cgroup/cpuset.mems
    >
    > # mkdir /cgroup/test
    > # for i in cpus mems ; do cat /cgroup/cpuset.$i > /cgroup/test/cpuset.$i ; done
    > # echo $$ > /cgroup/test/tasks
    > -bash: echo: write error: No space left on device
    >
    > (Note that in addition to the ENOSPC error, /cgroup/cpuset.mems is empty
    > rather than '0' in the second test.)
    >
    > I bisected to the commit containing this change. Reverting fixes the
    > problem.
    >

    can you use following patch to see what happens to that nodemask?

    YH

    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index a5f3c27..eb89e8b 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -4189,6 +4189,7 @@ void __init free_area_init_nodes(unsigned long *max_zone_pfn)
    {
    unsigned long nid;
    int i;
    + char buf[512];

    /* Sort early_node_map as initialisation assumes it is sorted */
    sort_node_map();
    @@ -4244,6 +4245,9 @@ void __init free_area_init_nodes(unsigned long *max_zone_pfn)
    * find_zone_movable_pfns_for_nodes/early_calculate_totalpages init
    * that node_mask, clear it at first
    */
    + memset(buf, 0, 512);
    + nodemask_scnprintf(buf, 512, node_states[N_HIGH_MEMORY]);
    + printk(KERN_DEBUG "before clear: node_states [%d]: %s\n", N_HIGH_MEMORY, buf);
    nodes_clear(node_states[N_HIGH_MEMORY]);
    /* Initialise every node */
    mminit_verify_pageflags_layout();
    @@ -4258,6 +4262,9 @@ void __init free_area_init_nodes(unsigned long *max_zone_pfn)
    node_set_state(nid, N_HIGH_MEMORY);
    check_for_regular_memory(pgdat);
    }
    + memset(buf, 0, 512);
    + nodemask_scnprintf(buf, 512, node_states[N_HIGH_MEMORY]);
    + printk(KERN_DEBUG "after online check: node_states [%d]: %s\n", N_HIGH_MEMORY, buf);
    }

    static int __init cmdline_parse_core(char *p, unsigned long *core)

    \
     
     \ /
      Last update: 2009-06-19 10:23    [W:0.033 / U:0.128 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site