memcg: zap kmem_account_flags
The only such flag is KMEM_ACCOUNTED_ACTIVE, but it's set iff mem_cgroup->kmemcg_id is initialized, so we can check kmemcg_id instead of having a separate flags field. Signed-off-by: Vladimir Davydov <vdavydov@parallels.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c313dc5ded
commit
900a38f027
1 changed files with 10 additions and 21 deletions
|
@ -296,7 +296,6 @@ struct mem_cgroup {
|
||||||
* Should the accounting and control be hierarchical, per subtree?
|
* Should the accounting and control be hierarchical, per subtree?
|
||||||
*/
|
*/
|
||||||
bool use_hierarchy;
|
bool use_hierarchy;
|
||||||
unsigned long kmem_account_flags; /* See KMEM_ACCOUNTED_*, below */
|
|
||||||
|
|
||||||
bool oom_lock;
|
bool oom_lock;
|
||||||
atomic_t under_oom;
|
atomic_t under_oom;
|
||||||
|
@ -366,22 +365,11 @@ struct mem_cgroup {
|
||||||
/* WARNING: nodeinfo must be the last member here */
|
/* WARNING: nodeinfo must be the last member here */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* internal only representation about the status of kmem accounting. */
|
|
||||||
enum {
|
|
||||||
KMEM_ACCOUNTED_ACTIVE, /* accounted by this cgroup itself */
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef CONFIG_MEMCG_KMEM
|
#ifdef CONFIG_MEMCG_KMEM
|
||||||
static inline void memcg_kmem_set_active(struct mem_cgroup *memcg)
|
|
||||||
{
|
|
||||||
set_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool memcg_kmem_is_active(struct mem_cgroup *memcg)
|
static bool memcg_kmem_is_active(struct mem_cgroup *memcg)
|
||||||
{
|
{
|
||||||
return test_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
|
return memcg->kmemcg_id >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Stuffs for move charges at task migration. */
|
/* Stuffs for move charges at task migration. */
|
||||||
|
@ -3564,23 +3552,21 @@ static int memcg_activate_kmem(struct mem_cgroup *memcg,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcg->kmemcg_id = memcg_id;
|
|
||||||
INIT_LIST_HEAD(&memcg->memcg_slab_caches);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We couldn't have accounted to this cgroup, because it hasn't got the
|
* We couldn't have accounted to this cgroup, because it hasn't got
|
||||||
* active bit set yet, so this should succeed.
|
* activated yet, so this should succeed.
|
||||||
*/
|
*/
|
||||||
err = page_counter_limit(&memcg->kmem, nr_pages);
|
err = page_counter_limit(&memcg->kmem, nr_pages);
|
||||||
VM_BUG_ON(err);
|
VM_BUG_ON(err);
|
||||||
|
|
||||||
static_key_slow_inc(&memcg_kmem_enabled_key);
|
static_key_slow_inc(&memcg_kmem_enabled_key);
|
||||||
/*
|
/*
|
||||||
* Setting the active bit after enabling static branching will
|
* A memory cgroup is considered kmem-active as soon as it gets
|
||||||
|
* kmemcg_id. Setting the id after enabling static branching will
|
||||||
* guarantee no one starts accounting before all call sites are
|
* guarantee no one starts accounting before all call sites are
|
||||||
* patched.
|
* patched.
|
||||||
*/
|
*/
|
||||||
memcg_kmem_set_active(memcg);
|
memcg->kmemcg_id = memcg_id;
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -4252,7 +4238,6 @@ static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
memcg->kmemcg_id = -1;
|
|
||||||
ret = memcg_propagate_kmem(memcg);
|
ret = memcg_propagate_kmem(memcg);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -4786,6 +4771,10 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
|
||||||
vmpressure_init(&memcg->vmpressure);
|
vmpressure_init(&memcg->vmpressure);
|
||||||
INIT_LIST_HEAD(&memcg->event_list);
|
INIT_LIST_HEAD(&memcg->event_list);
|
||||||
spin_lock_init(&memcg->event_list_lock);
|
spin_lock_init(&memcg->event_list_lock);
|
||||||
|
#ifdef CONFIG_MEMCG_KMEM
|
||||||
|
memcg->kmemcg_id = -1;
|
||||||
|
INIT_LIST_HEAD(&memcg->memcg_slab_caches);
|
||||||
|
#endif
|
||||||
|
|
||||||
return &memcg->css;
|
return &memcg->css;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue