linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cgroup: fix bogus kernel warnings when cgroup_create() failed
@ 2013-01-21 10:18 Li Zefan
  2013-01-23  0:29 ` Tejun Heo
  0 siblings, 1 reply; 2+ messages in thread
From: Li Zefan @ 2013-01-21 10:18 UTC (permalink / raw)
  To: Tejun Heo; +Cc: LKML, Cgroups

If cgroup_create() failed and cgroup_destroy_locked() is called to
do cleanup, we'll see a bunch of warnings:

cgroup_addrm_files: failed to remove 2MB.limit_in_bytes, err=-2
cgroup_addrm_files: failed to remove 2MB.usage_in_bytes, err=-2
cgroup_addrm_files: failed to remove 2MB.max_usage_in_bytes, err=-2
cgroup_addrm_files: failed to remove 2MB.failcnt, err=-2
cgroup_addrm_files: failed to remove prioidx, err=-2
cgroup_addrm_files: failed to remove ifpriomap, err=-2
...

We failed to remove those files, because cgroup_create() has failed
before creating those cgroup files.

To fix this, we simply don't warn if cgroup_rm_file() can't find the
cft entry.

Signed-off-by: Li Zefan <lizefan@huawei.com>
---
 kernel/cgroup.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 77ab520..1db2438 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -928,13 +928,17 @@ static void remove_dir(struct dentry *d)
 	dput(parent);
 }
 
-static int cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft)
+static void cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft)
 {
 	struct cfent *cfe;
 
 	lockdep_assert_held(&cgrp->dentry->d_inode->i_mutex);
 	lockdep_assert_held(&cgroup_mutex);
 
+	/*
+	 * If we're doing cleanup due to failure of cgroup_create(),
+	 * the corresponding @cfe may not exist.
+	 */
 	list_for_each_entry(cfe, &cgrp->files, node) {
 		struct dentry *d = cfe->dentry;
 
@@ -947,9 +951,8 @@ static int cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft)
 		list_del_init(&cfe->node);
 		dput(d);
 
-		return 0;
+		break;
 	}
-	return -ENOENT;
 }
 
 /**
@@ -2765,14 +2768,14 @@ static int cgroup_addrm_files(struct cgroup *cgrp, struct cgroup_subsys *subsys,
 		if ((cft->flags & CFTYPE_ONLY_ON_ROOT) && cgrp->parent)
 			continue;
 
-		if (is_add)
+		if (is_add) {
 			err = cgroup_add_file(cgrp, subsys, cft);
-		else
-			err = cgroup_rm_file(cgrp, cft);
-		if (err) {
-			pr_warning("cgroup_addrm_files: failed to %s %s, err=%d\n",
-				   is_add ? "add" : "remove", cft->name, err);
+			if (err)
+				pr_warn("cgroup_addrm_files: failed to add %s, err=%d\n",
+					cft->name, err);
 			ret = err;
+		} else {
+			cgroup_rm_file(cgrp, cft);
 		}
 	}
 	return ret;
-- 
1.8.0.2

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] cgroup: fix bogus kernel warnings when cgroup_create() failed
  2013-01-21 10:18 [PATCH] cgroup: fix bogus kernel warnings when cgroup_create() failed Li Zefan
@ 2013-01-23  0:29 ` Tejun Heo
  0 siblings, 0 replies; 2+ messages in thread
From: Tejun Heo @ 2013-01-23  0:29 UTC (permalink / raw)
  To: Li Zefan; +Cc: LKML, Cgroups

On Mon, Jan 21, 2013 at 06:18:33PM +0800, Li Zefan wrote:
> If cgroup_create() failed and cgroup_destroy_locked() is called to
> do cleanup, we'll see a bunch of warnings:
> 
> cgroup_addrm_files: failed to remove 2MB.limit_in_bytes, err=-2
> cgroup_addrm_files: failed to remove 2MB.usage_in_bytes, err=-2
> cgroup_addrm_files: failed to remove 2MB.max_usage_in_bytes, err=-2
> cgroup_addrm_files: failed to remove 2MB.failcnt, err=-2
> cgroup_addrm_files: failed to remove prioidx, err=-2
> cgroup_addrm_files: failed to remove ifpriomap, err=-2
> ...
> 
> We failed to remove those files, because cgroup_create() has failed
> before creating those cgroup files.
> 
> To fix this, we simply don't warn if cgroup_rm_file() can't find the
> cft entry.
> 
> Signed-off-by: Li Zefan <lizefan@huawei.com>

Applied to cgroup/for-3.9.  Thanks!

-- 
tejun

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-01-23  0:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-21 10:18 [PATCH] cgroup: fix bogus kernel warnings when cgroup_create() failed Li Zefan
2013-01-23  0:29 ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).