lkml.org 
[lkml]   [2012]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH 09/10] cgroup: introduce struct cfent
On 03/20/2012 08:02 PM, Tejun Heo wrote:
> On Tue, Mar 20, 2012 at 06:05:29PM +0400, Glauber Costa wrote:
>> On 03/17/2012 03:36 AM, Tejun Heo wrote:
>>> +static void cgroup_clear_directory(struct dentry *dir)
>>> +{
>>> + struct cgroup *cgrp = __d_cgrp(dir);
>>> +
>>> + while (!list_empty(&cgrp->files))
>>> + cgroup_rm_file(cgrp, NULL);
>>> + WARN_ON_ONCE(!list_empty(&dir->d_subdirs));
>>> }
>>
>>
>> I am hitting this warning here under pretty much normal conditions.
>> You forgot to account for trivial directories like "."
>>
>> I'll send a patch ontop of what you have.
>
> Heh, yeah, I hit that yesterday too and was gonna look into that
> today. Is the patch coming? :)
>
> Thanks.

I was about to send it together with my proposal for sock memcg, so I'm
compile testing that under multiple config options just to be sure we're
fine.

That's more or less what I have, see if you agree. I tried to keep the
warning itself, because it is valuable...

From 04604201411ab0a14fa1447072cd1b273d0774ed Mon Sep 17 00:00:00 2001
From: Glauber Costa <glommer@parallels.com>
Date: Tue, 20 Mar 2012 18:12:55 +0400
Subject: [PATCH] don't trigger warning when d_subdirs is not empty.

It is never empty at this point, because of the self references.
a better test is to see if any of them gets d_inode set.

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

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index cf7b298..b45a653 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -947,10 +947,16 @@ static int cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft)
static void cgroup_clear_directory(struct dentry *dir)
{
struct cgroup *cgrp = __d_cgrp(dir);
+ struct list_head *child;

while (!list_empty(&cgrp->files))
cgroup_rm_file(cgrp, NULL);
- WARN_ON_ONCE(!list_empty(&dir->d_subdirs));
+
+ list_for_each(child, &dir->d_subdirs) {
+ struct dentry *d;
+ d = list_entry(child, struct dentry, d_u.d_child);
+ WARN_ON_ONCE(d->d_inode);
+ }
}

/*
--
1.7.7.6
\
 
 \ /
  Last update: 2012-03-20 17:07    [W:0.049 / U:0.684 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site