Re: [PATCH -V9 14/15] hugetlb/cgroup: migrate hugetlb cgroup info from oldpage to new page during migration
From: Aneesh Kumar K.V <hidden>
Date: 2012-06-15 10:50:42
Also in:
cgroups, lkml
Michal Hocko [off-list ref] writes:
On Wed 13-06-12 15:57:33, Aneesh Kumar K.V wrote:quoted
From: "Aneesh Kumar K.V" <redacted> 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 <redacted>Reviewed-by: Michal Hocko <redacted> One question below [...]quoted
+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, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>