mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@parallels.com>
To: linux-kernel@vger.kernel.org
Cc: jbottomley@parallels.com, cgroups@vger.kernel.org,
	bsingharora@gmail.com, devel@openvz.org,
	kamezawa.hiroyu@jp.fujitsu.com, tj@kernel.org,
	Glauber Costa <glommer@parallels.com>
Subject: [PATCH 3/3] make 'none' field a flag
Date: Sun, 11 Dec 2011 15:45:38 +0100	[thread overview]
Message-ID: <1323614738-7405-5-git-send-email-glommer@parallels.com> (raw)
In-Reply-To: <1323614738-7405-1-git-send-email-glommer@parallels.com>

There is no reason to have a flags field, and then a separate
bool field just to indicate if 'none' subsystem were explicitly
requested.

Make it a flag

Signed-off-by: Glauber Costa <glommer@parallels.com>
---
 kernel/cgroup.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index fa405ee..e700abe 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -232,6 +232,7 @@ inline int cgroup_is_removed(const struct cgroup *cgrp)
 enum {
 	ROOT_NOPREFIX, /* mounted subsystems have no named prefix */
 	ROOT_CLONE_CHILDREN, /* mounted subsystems starts with clone_children */
+	ROOT_NOSUBSYS, /* explicitly asked for 'none' subsystems */
 };
 
 static int cgroup_is_releasable(const struct cgroup *cgrp)
@@ -1064,13 +1065,16 @@ struct cgroup_sb_opts {
 	unsigned long flags;
 	char *release_agent;
 	char *name;
-	/* User explicitly requested empty subsystem */
-	bool none;
 
 	struct cgroupfs_root *new_root;
 
 };
 
+static inline int opts_no_subsys(const struct cgroup_sb_opts *opts)
+{
+	return test_bit(ROOT_NOSUBSYS, &opts->flags);
+}
+
 /*
  * Convert a hierarchy specifier into a bitmask of subsystems and flags. Call
  * with cgroup_mutex held to protect the subsys[] array. This function takes
@@ -1098,7 +1102,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
 			return -EINVAL;
 		if (!strcmp(token, "none")) {
 			/* Explicitly have no subsystems */
-			opts->none = true;
+			set_bit(ROOT_NOSUBSYS, &opts->flags);
 			continue;
 		}
 		if (!strcmp(token, "all")) {
@@ -1178,7 +1182,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
 	 * otherwise 'all, 'none' and a subsystem name options were not
 	 * specified, let's default to 'all'
 	 */
-	if (all_ss || (!all_ss && !one_ss && !opts->none)) {
+	if (all_ss || (!all_ss && !one_ss && !opts_no_subsys(opts))) {
 		for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
 			struct cgroup_subsys *ss = subsys[i];
 			if (ss == NULL)
@@ -1202,7 +1206,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
 
 
 	/* Can't specify "none" and some subsystems */
-	if (opts->subsys_bits && opts->none)
+	if (opts->subsys_bits && opts_no_subsys(opts))
 		return -EINVAL;
 
 	/*
@@ -1370,7 +1374,7 @@ static int cgroup_test_super(struct super_block *sb, void *data)
 	 * If we asked for subsystems (or explicitly for no
 	 * subsystems) then they must match
 	 */
-	if ((opts->subsys_bits || opts->none)
+	if ((opts->subsys_bits || opts_no_subsys(opts))
 	    && (opts->subsys_bits != root->subsys_bits))
 		return 0;
 
@@ -1381,7 +1385,7 @@ static struct cgroupfs_root *cgroup_root_from_opts(struct cgroup_sb_opts *opts)
 {
 	struct cgroupfs_root *root;
 
-	if (!opts->subsys_bits && !opts->none)
+	if (!opts->subsys_bits && !opts_no_subsys(opts))
 		return NULL;
 
 	root = kzalloc(sizeof(*root), GFP_KERNEL);
@@ -1426,7 +1430,7 @@ static int cgroup_set_super(struct super_block *sb, void *data)
 	if (!opts->new_root)
 		return -EINVAL;
 
-	BUG_ON(!opts->subsys_bits && !opts->none);
+	BUG_ON(!opts->subsys_bits && !opts_no_subsys(opts));
 
 	ret = set_anon_super(sb, NULL);
 	if (ret)
-- 
1.7.6.4


  parent reply	other threads:[~2011-12-11 14:50 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-11 14:45 [PATCH 0/3] Simple cleanups for cgroups Glauber Costa
2011-12-11 14:45 ` [PATCH] make clone_children a flag Glauber Costa
2011-12-11 14:48   ` Glauber Costa
2011-12-11 14:45 ` [PATCH 1/3] nitpick: make simple functions inline Glauber Costa
2011-12-11 18:55   ` KOSAKI Motohiro
2011-12-11 20:44     ` Glauber Costa
2011-12-12 17:27       ` Tejun Heo
2011-12-14  1:09   ` Li Zefan
2011-12-11 14:45 ` [PATCH 2/3] make clone_children a flag Glauber Costa
2011-12-11 18:58   ` KOSAKI Motohiro
2011-12-13 15:39   ` Tejun Heo
2011-12-14  2:29     ` Li Zefan
2011-12-14  7:09       ` Glauber Costa
2011-12-14 18:18         ` Tejun Heo
2011-12-15  7:03           ` Glauber Costa
2011-12-11 14:45 ` Glauber Costa [this message]
2011-12-11 18:59   ` [PATCH 3/3] make 'none' field " KOSAKI Motohiro
2011-12-13 15:41   ` Tejun Heo
2011-12-14  2:09     ` Li Zefan

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=1323614738-7405-5-git-send-email-glommer@parallels.com \
    --to=glommer@parallels.com \
    --cc=bsingharora@gmail.com \
    --cc=cgroups@vger.kernel.org \
    --cc=devel@openvz.org \
    --cc=jbottomley@parallels.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®