From: Michal Hocko <mhocko@suse.cz>
To: Tejun Heo <tj@kernel.org>
Cc: lizefan@huawei.com, hannes@cmpxchg.org, bsingharora@gmail.com,
kamezawa.hiroyu@jp.fujitsu.com,
containers@lists.linux-foundation.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/8] cgroup: kill CSS_REMOVED
Date: Wed, 31 Oct 2012 20:16:02 +0100 [thread overview]
Message-ID: <20121031191602.GB1271@dhcp22.suse.cz> (raw)
In-Reply-To: <20121031165739.GE2945@htj.dyndns.org>
On Wed 31-10-12 09:57:39, Tejun Heo wrote:
> Hey, Michal.
>
> On Wed, Oct 31, 2012 at 04:39:26PM +0100, Michal Hocko wrote:
> > > prepare_to_wait(&cgroup_rmdir_waitq, &wait, TASK_INTERRUPTIBLE);
> > >
> > > - local_irq_disable();
> > > -
> >
> > OK, so the new charges shouldn't come from the IRQ context so we cannot
> > race with css_tryget but why did we need this in the first place?
> > A separate patch which removes this with an explanation would be nice.
>
> The change is actually tied to this one. Because css_tryget() busy
> loops on DEACT_BIAS && !CSS_REMOVED and css_tryget() may happen from
> an IRQ context, we need to disable IRQ while deactivating refcnts and
> setting CSS_REMOVED. I'll mention it in the commit message.
OK
> > > @@ -2343,7 +2343,6 @@ static int __mem_cgroup_try_charge(struct mm_struct *mm,
> > > again:
> > > if (*ptr) { /* css should be a valid one */
> > > memcg = *ptr;
> > > - VM_BUG_ON(css_is_removed(&memcg->css));
> >
> > All the callers seem to be fine but this was a safety net that something
> > didn't leak out. Can we keep it and test that the reference counter has
> > been disabled already (css_refcnt(&memcg->css) < 0 - I do not care
> > whether open coded or wrapped innsude css_is_removed albeit helper
> > sounds nicer)?
>
> I don't think that's a good idea. In general, I think too much of
> cgroup internals are exposed to controllers. People try to implement
> weird behaviors and expose cgroup internals for that, which in turn
> attracts more weirdness, and there seems to be a pattern - cgroup core
> is unnecessarily coupled with VFS locking like controllers are
> unnecessarily coupled with cgroup internal locking. I really wanna
> move away from such pattern. I mean, you can't even know
> css_is_removed() isn't gonna change while the function is in progress.
Sure, it cannot detect races but this wasn't the intention of the check.
The more important part is that memcg can outlive css and we want to
catch bugs when we try to charge to an already dead memcg.
[...]
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2012-10-31 19:16 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-31 4:22 [PATCHSET] cgroup: simplify cgroup removal path Tejun Heo
2012-10-31 4:22 ` [PATCH 1/8] cgroup: kill cgroup_subsys->__DEPRECATED_clear_css_refs Tejun Heo
2012-10-31 13:21 ` Glauber Costa
2012-10-31 16:38 ` Tejun Heo
2012-10-31 14:37 ` Michal Hocko
2012-10-31 16:41 ` Tejun Heo
2012-10-31 16:48 ` Michal Hocko
2012-10-31 17:22 ` Tejun Heo
2012-11-02 9:23 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 2/8] cgroup: kill CSS_REMOVED Tejun Heo
2012-10-31 15:39 ` Michal Hocko
2012-10-31 16:57 ` Tejun Heo
2012-10-31 17:06 ` Glauber Costa
2012-10-31 17:10 ` Tejun Heo
2012-10-31 17:19 ` Glauber Costa
2012-10-31 17:25 ` Tejun Heo
2012-10-31 17:38 ` Glauber Costa
2012-10-31 17:44 ` Tejun Heo
2012-10-31 17:39 ` Glauber Costa
2012-10-31 19:16 ` Michal Hocko [this message]
2012-10-31 19:33 ` Tejun Heo
2012-11-02 9:30 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 3/8] cgroup: use cgroup_lock_live_group(parent) in cgroup_create() Tejun Heo
2012-10-31 15:55 ` Michal Hocko
2012-10-31 17:04 ` Tejun Heo
2012-11-01 9:16 ` Michal Hocko
2012-11-01 14:52 ` Tejun Heo
2012-11-01 15:05 ` Michal Hocko
2012-11-01 15:15 ` Michal Hocko
2012-11-01 15:43 ` Tejun Heo
2012-11-02 9:37 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 4/8] cgroup: deactivate CSS's and mark cgroup dead before invoking ->pre_destroy() Tejun Heo
2012-10-31 13:42 ` Glauber Costa
2012-10-31 16:05 ` Michal Hocko
2012-11-02 9:43 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 5/8] cgroup: remove CGRP_WAIT_ON_RMDIR, cgroup_exclude_rmdir() and cgroup_release_and_wakeup_rmdir() Tejun Heo
2012-10-31 16:27 ` Michal Hocko
2012-10-31 17:16 ` Tejun Heo
2012-11-02 9:53 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 6/8] memcg: make mem_cgroup_reparent_charges non failing Tejun Heo
2012-11-02 9:54 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 7/8] hugetlb: do not fail in hugetlb_cgroup_pre_destroy Tejun Heo
2012-11-02 9:56 ` Kamezawa Hiroyuki
2012-10-31 4:22 ` [PATCH 8/8] cgroup: make ->pre_destroy() return void Tejun Heo
2012-10-31 13:57 ` Vivek Goyal
2012-10-31 16:28 ` Michal Hocko
2012-11-02 9:57 ` Kamezawa Hiroyuki
2012-10-31 13:49 ` [PATCHSET] cgroup: simplify cgroup removal path Glauber Costa
2012-10-31 17:18 ` Tejun Heo
2012-10-31 17:24 ` Glauber Costa
2012-10-31 17:26 ` Tejun Heo
2012-10-31 17:33 ` Glauber Costa
2012-10-31 16:31 ` Michal Hocko
2012-10-31 16:35 ` Tejun Heo
2012-10-31 18:16 [PATCHSET v2] " Tejun Heo
2012-10-31 18:16 ` [PATCH 2/8] cgroup: kill CSS_REMOVED Tejun Heo
2012-10-31 19:44 [PATCHSET RESEND v2] cgroup: simplify cgroup removal path Tejun Heo
2012-10-31 19:44 ` [PATCH 2/8] cgroup: kill CSS_REMOVED Tejun Heo
2012-11-02 10:02 ` Kamezawa Hiroyuki
2012-11-05 5:33 ` 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=20121031191602.GB1271@dhcp22.suse.cz \
--to=mhocko@suse.cz \
--cc=bsingharora@gmail.com \
--cc=cgroups@vger.kernel.org \
--cc=containers@lists.linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--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®