Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 308840
b: refs/heads/master
c: c3ac9a8
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Weiner authored and Linus Torvalds committed May 29, 2012
1 parent 1e0216a commit e0f5c41
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 91c63734f6908425903aed69c04035592f18d398
refs/heads/master: c3ac9a8ade65ccbfd145fbff895ae8d8d62d09b0
7 changes: 6 additions & 1 deletion trunk/include/linux/memcontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ extern void mem_cgroup_uncharge_cache_page(struct page *page);

extern void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
int order);
bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
struct mem_cgroup *memcg);
int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *memcg);

extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page);
Expand All @@ -92,10 +94,13 @@ static inline
int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
{
struct mem_cgroup *memcg;
int match;

rcu_read_lock();
memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
match = __mem_cgroup_same_or_subtree(cgroup, memcg);
rcu_read_unlock();
return cgroup == memcg;
return match;
}

extern struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *memcg);
Expand Down
16 changes: 11 additions & 5 deletions trunk/mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1149,17 +1149,23 @@ struct lruvec *mem_cgroup_lru_move_lists(struct zone *zone,
* Checks whether given mem is same or in the root_mem_cgroup's
* hierarchy subtree
*/
static bool mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
struct mem_cgroup *memcg)
bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
struct mem_cgroup *memcg)
{
bool ret;

if (root_memcg == memcg)
return true;
if (!root_memcg->use_hierarchy)
return false;
return css_is_ancestor(&memcg->css, &root_memcg->css);
}

static bool mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
struct mem_cgroup *memcg)
{
bool ret;

rcu_read_lock();
ret = css_is_ancestor(&memcg->css, &root_memcg->css);
ret = __mem_cgroup_same_or_subtree(root_memcg, memcg);
rcu_read_unlock();
return ret;
}
Expand Down
6 changes: 4 additions & 2 deletions trunk/mm/vmscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,8 @@ static enum page_references page_check_references(struct page *page,
int referenced_ptes, referenced_page;
unsigned long vm_flags;

referenced_ptes = page_referenced(page, 1, mz->mem_cgroup, &vm_flags);
referenced_ptes = page_referenced(page, 1, sc->target_mem_cgroup,
&vm_flags);
referenced_page = TestClearPageReferenced(page);

/*
Expand Down Expand Up @@ -1513,7 +1514,8 @@ static void shrink_active_list(unsigned long nr_to_scan,
}
}

if (page_referenced(page, 0, mz->mem_cgroup, &vm_flags)) {
if (page_referenced(page, 0, sc->target_mem_cgroup,
&vm_flags)) {
nr_rotated += hpage_nr_pages(page);
/*
* Identify referenced, file-backed active pages and
Expand Down

0 comments on commit e0f5c41

Please sign in to comment.