mem_cgroup_node_nr_lru_pages() is just a convenience wrapper around lruvec_page_state() that takes bitmasks of lru indexes and aggregates the counts for those. Replace callsites where the bitmask is simple enough with direct lruvec_page_state() calls. This removes the last extern user of mem_cgroup_node_nr_lru_pages(), so make that function private again, too.
Unified · Split
| @@ -501,9 +501,6 @@ int mem_cgroup_select_victim_node(struct mem_cgroup *memcg); · 500 unmodified lines | ||
| 501 | 501 | void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru, |
| 502 | 502 | int zid, int nr_pages); |
| 503 | 503 | |
| 504 | −unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg, | |
| 505 | − int nid, unsigned int lru_mask); | |
| 506 | − | |
| 507 | 504 | static inline |
| 508 | 505 | unsigned long mem_cgroup_get_zone_lru_size(struct lruvec *lruvec, |
| 509 | 506 | enum lru_list lru, int zone_idx) |
| @@ -954,13 +951,6 @@ unsigned long mem_cgroup_get_zone_lru_size(struct lruvec *lruvec, · 444 unmodified lines | ||
| 954 | 951 | return 0; |
| 955 | 952 | } |
| 956 | 953 | |
| 957 | −static inline unsigned long | |
| 958 | −mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg, | |
| 959 | − int nid, unsigned int lru_mask) | |
| 960 | −{ | |
| 961 | − return 0; | |
| 962 | −} | |
| 963 | − | |
| 964 | 954 | static inline unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg) |
| 965 | 955 | { |
| 966 | 956 | return 0; |
| @@ -725,7 +725,7 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *memcg, · 724 unmodified lines | ||
| 725 | 725 | __this_cpu_add(memcg->stat_cpu->nr_page_events, nr_pages); |
| 726 | 726 | } |
| 727 | 727 | |
| 728 | −unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg, | |
| 728 | +static unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg, | |
| 729 | 729 | int nid, unsigned int lru_mask) |
| 730 | 730 | { |
| 731 | 731 | struct lruvec *lruvec = mem_cgroup_lruvec(NODE_DATA(nid), memcg); |
| @@ -1425,11 +1425,15 @@ static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask, · 693 unmodified lines | ||
| 1425 | 1425 | static bool test_mem_cgroup_node_reclaimable(struct mem_cgroup *memcg, |
| 1426 | 1426 | int nid, bool noswap) |
| 1427 | 1427 | { |
| 1428 | − if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_FILE)) | |
| 1428 | + struct lruvec *lruvec = mem_cgroup_lruvec(NODE_DATA(nid), memcg); | |
| 1429 | + | |
| 1430 | + if (lruvec_page_state(lruvec, NR_INACTIVE_FILE) || | |
| 1431 | + lruvec_page_state(lruvec, NR_ACTIVE_FILE)) | |
| 1429 | 1432 | return true; |
| 1430 | 1433 | if (noswap || !total_swap_pages) |
| 1431 | 1434 | return false; |
| 1432 | − if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_ANON)) | |
| 1435 | + if (lruvec_page_state(lruvec, NR_INACTIVE_ANON) || | |
| 1436 | + lruvec_page_state(lruvec, NR_ACTIVE_ANON)) | |
| 1433 | 1437 | return true; |
| 1434 | 1438 | return false; |
| 1435 | 1439 | |
| @@ -426,10 +426,11 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, · 425 unmodified lines | ||
| 426 | 426 | #ifdef CONFIG_MEMCG |
| 427 | 427 | if (sc->memcg) { |
| 428 | 428 | struct lruvec *lruvec; |
| 429 | + int i; | |
| 429 | 430 | |
| 430 | − pages = mem_cgroup_node_nr_lru_pages(sc->memcg, sc->nid, | |
| 431 | − LRU_ALL); | |
| 432 | 431 | lruvec = mem_cgroup_lruvec(NODE_DATA(sc->nid), sc->memcg); |
| 432 | + for (pages = 0, i = 0; i < NR_LRU_LISTS; i++) | |
| 433 | + pages += lruvec_page_state(lruvec, NR_LRU_BASE + i); | |
| 433 | 434 | pages += lruvec_page_state(lruvec, NR_SLAB_RECLAIMABLE); |
| 434 | 435 | pages += lruvec_page_state(lruvec, NR_SLAB_UNRECLAIMABLE); |
| 435 | 436 | } else |