string: factorize skip_spaces and export it to be generally available
[safe/jmp/linux-2.6] / mm / page_cgroup.c
index 672089d..3d535d5 100644 (file)
@@ -116,10 +116,16 @@ static int __init_refok init_section_page_cgroup(unsigned long pfn)
                nid = page_to_nid(pfn_to_page(pfn));
                table_size = sizeof(struct page_cgroup) * PAGES_PER_SECTION;
                VM_BUG_ON(!slab_is_available());
-               base = kmalloc_node(table_size,
+               if (node_state(nid, N_HIGH_MEMORY)) {
+                       base = kmalloc_node(table_size,
                                GFP_KERNEL | __GFP_NOWARN, nid);
-               if (!base)
-                       base = vmalloc_node(table_size, nid);
+                       if (!base)
+                               base = vmalloc_node(table_size, nid);
+               } else {
+                       base = kmalloc(table_size, GFP_KERNEL | __GFP_NOWARN);
+                       if (!base)
+                               base = vmalloc(table_size);
+               }
        } else {
                /*
                 * We don't have to allocate page_cgroup again, but
@@ -311,8 +317,6 @@ static int swap_cgroup_prepare(int type)
        struct swap_cgroup_ctrl *ctrl;
        unsigned long idx, max;
 
-       if (!do_swap_account)
-               return 0;
        ctrl = &swap_cgroup_ctrl[type];
 
        for (idx = 0; idx < ctrl->length; idx++) {
@@ -349,9 +353,6 @@ unsigned short swap_cgroup_record(swp_entry_t ent, unsigned short id)
        struct swap_cgroup *sc;
        unsigned short old;
 
-       if (!do_swap_account)
-               return 0;
-
        ctrl = &swap_cgroup_ctrl[type];
 
        mappage = ctrl->map[idx];
@@ -380,9 +381,6 @@ unsigned short lookup_swap_cgroup(swp_entry_t ent)
        struct swap_cgroup *sc;
        unsigned short ret;
 
-       if (!do_swap_account)
-               return 0;
-
        ctrl = &swap_cgroup_ctrl[type];
        mappage = ctrl->map[idx];
        sc = page_address(mappage);