mm: memcontrol: push down mem_cgroup_node_nr_lru_pages()
[sfrench/cifs-2.6.git] / mm / memcontrol.c
index 81a0d3914ec999efcb36fb590e75c29d059d2b24..268a0bd8377361bd4e29c55bcda3ba2ef95c500a 100644 (file)
@@ -725,7 +725,7 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *memcg,
        __this_cpu_add(memcg->stat_cpu->nr_page_events, nr_pages);
 }
 
-unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
+static unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
                                           int nid, unsigned int lru_mask)
 {
        struct lruvec *lruvec = mem_cgroup_lruvec(NODE_DATA(nid), memcg);
@@ -737,7 +737,7 @@ unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
        for_each_lru(lru) {
                if (!(BIT(lru) & lru_mask))
                        continue;
-               nr += mem_cgroup_get_lru_size(lruvec, lru);
+               nr += lruvec_page_state(lruvec, NR_LRU_BASE + lru);
        }
        return nr;
 }
@@ -746,10 +746,13 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
                        unsigned int lru_mask)
 {
        unsigned long nr = 0;
-       int nid;
+       enum lru_list lru;
 
-       for_each_node_state(nid, N_MEMORY)
-               nr += mem_cgroup_node_nr_lru_pages(memcg, nid, lru_mask);
+       for_each_lru(lru) {
+               if (!(BIT(lru) & lru_mask))
+                       continue;
+               nr += memcg_page_state(memcg, NR_LRU_BASE + lru);
+       }
        return nr;
 }
 
@@ -1422,11 +1425,15 @@ static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
 static bool test_mem_cgroup_node_reclaimable(struct mem_cgroup *memcg,
                int nid, bool noswap)
 {
-       if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_FILE))
+       struct lruvec *lruvec = mem_cgroup_lruvec(NODE_DATA(nid), memcg);
+
+       if (lruvec_page_state(lruvec, NR_INACTIVE_FILE) ||
+           lruvec_page_state(lruvec, NR_ACTIVE_FILE))
                return true;
        if (noswap || !total_swap_pages)
                return false;
-       if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_ANON))
+       if (lruvec_page_state(lruvec, NR_INACTIVE_ANON) ||
+           lruvec_page_state(lruvec, NR_ACTIVE_ANON))
                return true;
        return false;