Merge branch 'master' into for-next
This commit is contained in:
@@ -1359,16 +1359,19 @@ void mem_cgroup_update_file_mapped(struct page *page, int val)
|
||||
|
||||
lock_page_cgroup(pc);
|
||||
mem = pc->mem_cgroup;
|
||||
if (!mem)
|
||||
goto done;
|
||||
|
||||
if (!PageCgroupUsed(pc))
|
||||
if (!mem || !PageCgroupUsed(pc))
|
||||
goto done;
|
||||
|
||||
/*
|
||||
* Preemption is already disabled. We can use __this_cpu_xxx
|
||||
*/
|
||||
__this_cpu_add(mem->stat->count[MEM_CGROUP_STAT_FILE_MAPPED], val);
|
||||
if (val > 0) {
|
||||
__this_cpu_inc(mem->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]);
|
||||
SetPageCgroupFileMapped(pc);
|
||||
} else {
|
||||
__this_cpu_dec(mem->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]);
|
||||
ClearPageCgroupFileMapped(pc);
|
||||
}
|
||||
|
||||
done:
|
||||
unlock_page_cgroup(pc);
|
||||
@@ -1801,16 +1804,13 @@ static void __mem_cgroup_commit_charge(struct mem_cgroup *mem,
|
||||
static void __mem_cgroup_move_account(struct page_cgroup *pc,
|
||||
struct mem_cgroup *from, struct mem_cgroup *to, bool uncharge)
|
||||
{
|
||||
struct page *page;
|
||||
|
||||
VM_BUG_ON(from == to);
|
||||
VM_BUG_ON(PageLRU(pc->page));
|
||||
VM_BUG_ON(!PageCgroupLocked(pc));
|
||||
VM_BUG_ON(!PageCgroupUsed(pc));
|
||||
VM_BUG_ON(pc->mem_cgroup != from);
|
||||
|
||||
page = pc->page;
|
||||
if (page_mapped(page) && !PageAnon(page)) {
|
||||
if (PageCgroupFileMapped(pc)) {
|
||||
/* Update mapped_file data for mem_cgroup */
|
||||
preempt_disable();
|
||||
__this_cpu_dec(from->stat->count[MEM_CGROUP_STAT_FILE_MAPPED]);
|
||||
@@ -3691,8 +3691,10 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
|
||||
else
|
||||
mem = vmalloc(size);
|
||||
|
||||
if (mem)
|
||||
memset(mem, 0, size);
|
||||
if (!mem)
|
||||
return NULL;
|
||||
|
||||
memset(mem, 0, size);
|
||||
mem->stat = alloc_percpu(struct mem_cgroup_stat_cpu);
|
||||
if (!mem->stat) {
|
||||
if (size < PAGE_SIZE)
|
||||
@@ -3946,28 +3948,6 @@ one_by_one:
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#else /* !CONFIG_MMU */
|
||||
static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
}
|
||||
static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont,
|
||||
struct cgroup *old_cont,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* is_target_pte_for_mc - check a pte whether it is valid for move charge
|
||||
@@ -4330,6 +4310,28 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
}
|
||||
mem_cgroup_clear_mc();
|
||||
}
|
||||
#else /* !CONFIG_MMU */
|
||||
static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
}
|
||||
static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont,
|
||||
struct cgroup *old_cont,
|
||||
struct task_struct *p,
|
||||
bool threadgroup)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
struct cgroup_subsys mem_cgroup_subsys = {
|
||||
.name = "memory",
|
||||
|
Reference in New Issue
Block a user