On Sun, Aug 2, 2009 at 8:00 PM, Li Zefan<lizf@xxxxxxxxxxxxxx> wrote: > Ben Blum wrote: >> + } >> + write_unlock(&css_set_lock); >> + >> + /* >> + * We just gained a reference on oldcg by taking it from the task. As > > This comment is incorrect, the ref we just got has been dropped by > the above put_css_set(oldcg). No, the idea is that even though we had a reference that we already dropped, we in effect "traded" the newcg to the task for its oldcg, giving it our reference on newcg and gaining its reference on oldcg. I believe the cgroup_mutex guarantees that it'll still be there when we do the trade - perhaps a BUG_ON(tsk->cgroups != oldcg) is wanted inside the second task_lock section there? At the very least, a clearer comment. >> +static int css_set_check_fetched(struct cgroup *cgrp, struct task_struct *tsk, >> + struct css_set *cg, >> + struct list_head *newcg_list) >> +{ >> + struct css_set *newcg; >> + struct cg_list_entry *cg_entry; >> + struct cgroup_subsys_state *template[CGROUP_SUBSYS_COUNT]; >> + read_lock(&css_set_lock); >> + newcg = find_existing_css_set(cg, cgrp, template); >> + if (newcg) >> + get_css_set(newcg); >> + read_unlock(&css_set_lock); >> + /* doesn't exist at all? */ >> + if (!newcg) >> + return 1; > > I think it's more intuitive to return 1 if found and 0 if not found. I was sticking with the convention of nonzero return values indicating failure, as is used everywhere else in this context. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers