Messages in this thread | | | Date | Wed, 17 Oct 2012 16:28:38 -0700 (PDT) | From | David Rientjes <> | Subject | Re: [PATCH v5 09/14] memcg: kmem accounting lifecycle management |
| |
On Tue, 16 Oct 2012, Glauber Costa wrote:
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 1182188..e24b388 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -344,6 +344,7 @@ struct mem_cgroup { > /* internal only representation about the status of kmem accounting. */ > enum { > KMEM_ACCOUNTED_ACTIVE = 0, /* accounted by this cgroup itself */ > + KMEM_ACCOUNTED_DEAD, /* dead memcg, pending kmem charges */
"dead memcg with pending kmem charges" seems better.
> }; > > #define KMEM_ACCOUNTED_MASK (1 << KMEM_ACCOUNTED_ACTIVE) > @@ -353,6 +354,22 @@ static void memcg_kmem_set_active(struct mem_cgroup *memcg) > { > set_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_accounted); > } > + > +static bool memcg_kmem_is_active(struct mem_cgroup *memcg) > +{ > + return test_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_accounted); > +}
I think all of these should be inline.
> + > +static void memcg_kmem_mark_dead(struct mem_cgroup *memcg) > +{ > + if (test_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_accounted)) > + set_bit(KMEM_ACCOUNTED_DEAD, &memcg->kmem_accounted); > +}
The set_bit() doesn't happen atomically with the test_bit(), what synchronization is required for this?
| |