All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: lizefan@huawei.com
Cc: containers@lists.linux-foundation.org, cgroups@vger.kernel.org,
	linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>
Subject: [PATCH 04/12] cgroup: make css_next_child() skip missing csses
Date: Thu, 27 Mar 2014 22:40:53 -0400	[thread overview]
Message-ID: <1395974461-12735-5-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1395974461-12735-1-git-send-email-tj@kernel.org>

css_next_child() walks the children of the specified css.  It does
this by finding the next cgroup and then returning the requested css.
On the default unified hierarchy, a cgroup may not have a css
associated with it even if the hierarchy has the subsystem enabled.
This patch updates css_next_child() so that it skips children without
the requested css associated.

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 kernel/cgroup.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 2899a6f..9d2d6ef 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2690,10 +2690,19 @@ css_next_child(struct cgroup_subsys_state *pos_css,
 				break;
 	}
 
-	if (&next->sibling == &cgrp->children)
-		return NULL;
+	/*
+	 * @next, if not pointing to the head, can be dereferenced and is
+	 * the next sibling; however, it might have @ss disabled.  If so,
+	 * fast-forward to the next enabled one.
+	 */
+	while (&next->sibling != &cgrp->children) {
+		struct cgroup_subsys_state *next_css = cgroup_css(next, parent_css->ss);
 
-	return cgroup_css(next, parent_css->ss);
+		if (next_css)
+			return next_css;
+		next = list_entry_rcu(next->sibling.next, struct cgroup, sibling);
+	}
+	return NULL;
 }
 
 /**
-- 
1.8.5.3


  reply	other threads:[~2014-03-28  2:41 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-28  2:40 [PATCHSET cgroup/for-3.15] cgroup: implement unified hierarchy Tejun Heo
2014-03-28  2:40 ` Tejun Heo
2014-03-28  2:40 ` Tejun Heo [this message]
2014-03-28  2:40 ` [PATCH 06/12] cgroup: teach css_task_iter about effective csses Tejun Heo
2014-03-28  2:40 ` [PATCH 10/12] cgroup: update subsystem rebind restrictions Tejun Heo
2014-03-28  2:41 ` [PATCH 11/12] cgroup: prepare migration path for unified hierarchy Tejun Heo
2014-03-28  2:41 ` [PATCH 12/12] cgroup: implement dynamic subtree controller enable/disable on the default hierarchy Tejun Heo
2014-03-28  2:41   ` Tejun Heo
     [not found] ` <1395974461-12735-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-03-28  2:40   ` [PATCH 01/12] cgroup: update cgroup->subsys_mask to ->child_subsys_mask and restore cgroup_root->subsys_mask Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 02/12] cgroup: introduce effective cgroup_subsys_state Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 03/12] cgroup: implement cgroup->e_csets[] Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 04/12] cgroup: make css_next_child() skip missing csses Tejun Heo
2014-03-28  2:40   ` [PATCH 05/12] cgroup: reorganize css_task_iter Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 06/12] cgroup: teach css_task_iter about effective csses Tejun Heo
2014-03-28  2:40   ` [PATCH 07/12] cgroup: cgroup->subsys[] should be cleared after the css is offlined Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 08/12] cgroup: allow cgroup creation and suppress automatic css creation in the unified hierarchy Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 09/12] cgroup: add css_set->dfl_cgrp Tejun Heo
2014-03-28  2:40     ` Tejun Heo
2014-03-28  2:40   ` [PATCH 10/12] cgroup: update subsystem rebind restrictions Tejun Heo
2014-03-28  2:41   ` [PATCH 11/12] cgroup: prepare migration path for unified hierarchy Tejun Heo
2014-03-28  2:41   ` [PATCH 12/12] cgroup: implement dynamic subtree controller enable/disable on the default hierarchy Tejun Heo
2014-04-14 15:45   ` [PATCHSET cgroup/for-3.15] cgroup: implement unified hierarchy Vivek Goyal
2014-04-14 15:45     ` Vivek Goyal
     [not found]     ` <20140414154556.GA9552-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-04-14 17:52       ` Tejun Heo
2014-04-14 17:52         ` Tejun Heo
     [not found]         ` <20140414175236.GB15249-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-04-14 18:14           ` Vivek Goyal
2014-04-14 18:14             ` Vivek Goyal
     [not found]             ` <20140414181421.GC9552-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-04-14 19:21               ` Tejun Heo
2014-04-14 19:21                 ` Tejun Heo
     [not found]                 ` <20140414192139.GB16835-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-04-15  2:58                   ` Li Zefan
2014-04-15  2:58                     ` Li Zefan
     [not found]                     ` <534CA050.8060709-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2014-04-15  4:57                       ` Tejun Heo
2014-04-15  4:57                         ` Tejun Heo
2014-04-30 10:57           ` Raghavendra KT
2014-04-30 10:57             ` Raghavendra KT
     [not found]             ` <CAC4Lta0qd2vW4ENSOpzK+0i06MorzfmsZZZuW9xUtpZ_gWA9gA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-02 15:12               ` Tejun Heo
2014-05-02 15:12                 ` Tejun Heo
2014-05-05 16:37                 ` Raghavendra KT
2014-05-05 16:37                   ` Raghavendra KT
2014-04-14 21:31   ` Tejun Heo
2014-04-14 21:31     ` Tejun Heo
2014-04-15 22:05   ` [PATCH 0.5/12] cgroup: cgroup_apply_cftypes() shouldn't skip the default hierarhcy Tejun Heo
2014-04-15 22:05 ` Tejun Heo
2014-04-15 22:05   ` Tejun Heo
     [not found]   ` <20140415220504.GA13099-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2014-04-15 22:05     ` Tejun Heo
2014-04-15 22:05       ` Tejun Heo
2014-04-14 21:36 [PATCHSET cgroup/for-3.16] cgroup: implement unified hierarchy, v2 Tejun Heo
     [not found] ` <1397511430-2673-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-04-14 21:37   ` [PATCH 04/12] cgroup: make css_next_child() skip missing csses Tejun Heo
2014-04-14 21:37     ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1395974461-12735-5-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=cgroups@vger.kernel.org \
    --cc=containers@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.