Re: [PATCH -V9 14/15] hugetlb/cgroup: migrate hugetlb cgroup info from oldpage to new page during migration

From: Aneesh Kumar K.V
Date: Fri Jun 15 2012 - 06:50:36 EST


Michal Hocko <mhocko@xxxxxxx> writes:

> On Wed 13-06-12 15:57:33, Aneesh Kumar K.V wrote:
>> From: "Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx>
>>
>> With HugeTLB pages, hugetlb cgroup is uncharged in compound page destructor. Since
>> we are holding a hugepage reference, we can be sure that old page won't
>> get uncharged till the last put_page().
>>
>> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx>
>
> Reviewed-by: Michal Hocko <mhocko@xxxxxxx>
>
> One question below
> [...]
>> +void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>> +{
>> + struct hugetlb_cgroup *h_cg;
>> +
>> + if (hugetlb_cgroup_disabled())
>> + return;
>> +
>> + VM_BUG_ON(!PageHuge(oldhpage));
>> + spin_lock(&hugetlb_lock);
>> + h_cg = hugetlb_cgroup_from_page(oldhpage);
>> + set_hugetlb_cgroup(oldhpage, NULL);
>> + cgroup_exclude_rmdir(&h_cg->css);
>> +
>> + /* move the h_cg details to new cgroup */
>> + set_hugetlb_cgroup(newhpage, h_cg);
>> + spin_unlock(&hugetlb_lock);
>> + cgroup_release_and_wakeup_rmdir(&h_cg->css);
>> + return;
>> +}
>> +
>
> The changelog says that the old page won't get uncharged - which means
> that the the cgroup cannot go away (even if we raced with the move
> parent, hugetlb_lock makes sure we either see old or new cgroup) so why
> do we need to play with css ref. counting?

Ok hugetlb_lock should be sufficient here i guess. I will send a patch
on top to remove the exclude_rmdir and release_and_wakeup_rmdir

-aneesh

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/