Thread (31 messages) 31 messages, 4 authors, 2012-03-14

Re: [PATCH -V3 7/8] memcg: move HugeTLB resource count to parent cgroup on memcg removal

From: Andrew Morton <hidden>
Date: 2012-03-13 21:47:11
Also in: linux-mm, lkml

On Tue, 13 Mar 2012 12:37:11 +0530
"Aneesh Kumar K.V" [off-list ref] wrote:
From: "Aneesh Kumar K.V" <redacted>

This add support for memcg removal with HugeTLB resource usage.

...

+int hugetlb_force_memcg_empty(struct cgroup *cgroup)
It's useful to document things, you know.  For a major function like
this, a nice little description of why it exists, what its role is,
etc.  Programming is not just an act of telling a computer what to do:
it is also an act of telling other programmers what you wished the
computer to do.  Both are important, and the latter deserves care.
+{
+	struct hstate *h;
+	struct page *page;
+	int ret = 0, idx = 0;
+
+	do {
+		if (cgroup_task_count(cgroup) || !list_empty(&cgroup->children))
+			goto out;
+		if (signal_pending(current)) {
+			ret = -EINTR;
+			goto out;
+		}
Why is its behaviour altered by signal_pending()?  This seems broken.
+		for_each_hstate(h) {
+			spin_lock(&hugetlb_lock);
+			list_for_each_entry(page, &h->hugepage_activelist, lru) {
+				ret = mem_cgroup_move_hugetlb_parent(idx, cgroup, page);
+				if (ret) {
+					spin_unlock(&hugetlb_lock);
+					goto out;
+				}
+			}
+			spin_unlock(&hugetlb_lock);
+			idx++;
+		}
+		cond_resched();
+	} while (mem_cgroup_hugetlb_usage(cgroup) > 0);
+out:
+	return ret;
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help