From: Li Zefan <lizf@cn.fujitsu.com>
To: Daniel Lezcano <daniel.lezcano@free.fr>
Cc: bblum@andrew.cmu.edu, linux-kernel@vger.kernel.org,
containers@lists.linux-foundation.org, akpm@linux-foundation.org,
serue@us.ibm.com, menage@google.com
Subject: Re: [PATCH 5/6] Makes procs file writable to move all threads by tgid at once
Date: Wed, 11 Nov 2009 10:07:44 +0800 [thread overview]
Message-ID: <4AFA1C70.5070700@cn.fujitsu.com> (raw)
In-Reply-To: <4AF93FE5.1080009@free.fr>
>>> Hi Ben,
>>>
>>> The current code (with or without your patch) may lead to an error
>>> because the fork hook can fail and the exit hook is called in all the
>>> cases making the fork / exit asymmetric.
>>>
>>>
>>
>> The _current_ code won't lead to this error, because the fork hook
>> can't fail.
>>
> Right, as no subsystem is using both hooks right now, the bug is never
> triggered and the current code won't lead to an error.
> But from my POV, there is a bug hidden in a corner waiting for a
> subsystem to make use of the fail-able fork / exit :)
>
Actually the freezer subsystem is using the fork hook, but it doesn't
need to be able to fail it.
I don't think we can claim this a bug. If there is a new subsystem
that needs fail-able fork hook, it has to extent the hook interface
and adjust the code to meet its needs.
We always adjust our code to meet new needs, don't we?
>>> I will take the usual example with a cgroup with a counter of tasks, in
>>> the fork hook it increments the counter, in the exit hook it decrements
>>> the counter. There is one process in the cgroup, hence the counter value
>>> is 1. Now this process forks and the fork hook fails before the task
>>> counter is incremented to 2, this is not detected in copy process
>>> function because the cgroup_fork_callbacks does not return an error, so
>>> the process will be forked without error and when the process will exits
>>> the counter will be decremented reaching 0 instead of 1.
>>>
>>> IMO, the correct fix should be to make the fork hook to return an error
>>> and have the cgroup to call the exit method of the subsystem where the
>>> fork hook was called. For example, there are 10 subsystems using the
>>> fork / exit hooks, when the a process forks, the fork callbacks is
>>> called for these subsystems but, let's say, the 3rd fails. So we undo,
>>> by calling the exit hooks of the first two.
>>>
>>> I wrote a patchset to consolidate the hooks called in the cgroup for
>>> fork and exit, and one of them does a rollback for the fork hook when an
>>> error occurs. I added an attachment the patch as an example.
>>>
>>>
>>
>> I'd like to see this patch sent with another patch that needs this
>> fail-able fork() hook.
>>
>> Note this patch is not doing a _fix_, but does an extension. And
>> for now, this extension is not needed.
>>
> I don't know, may be it could be interesting to implement that before
> more subsystems make use of these hooks.
> This is not critical, that can be sent later, separately from this
> patchset of course.
>
We tend to remove code that is not used. For example, we may remove
subsys->bind() interface, because no one is using it, though it has
been there for years.
So adding things that are not used is normally not good.
next prev parent reply other threads:[~2009-11-11 2:08 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-24 3:21 [PATCH 0/6] CGroups: cgroup memberlist enhancement+fix Ben Blum
2009-07-24 3:21 ` Ben Blum
[not found] ` <20090724032033.2463.79256.stgit-/yCBOHwbXCxd3OlUiQof+WCaruZE5nAUZeezCHUQhQ4@public.gmane.org>
2009-07-24 3:21 ` [PATCH 1/6] Adds a read-only "procs" file similar to "tasks" that shows only unique tgids Ben Blum
2009-07-24 3:21 ` Ben Blum
2009-07-24 3:21 ` [PATCH 2/6] Ensures correct concurrent opening/reading of pidlists across pid namespaces Ben Blum
2009-07-24 3:21 ` Ben Blum
2009-07-24 3:21 ` [PATCH 3/6] Quick vmalloc vs kmalloc fix to the case where array size is too large Ben Blum
2009-07-24 3:21 ` Ben Blum
2009-07-27 5:14 ` Li Zefan
2009-07-27 15:49 ` Benjamin Blum
[not found] ` <4A6D37A4.6020605-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-07-27 15:49 ` Benjamin Blum
[not found] ` <20090724032150.2463.49019.stgit-/yCBOHwbXCxd3OlUiQof+WCaruZE5nAUZeezCHUQhQ4@public.gmane.org>
2009-07-27 5:14 ` Li Zefan
2009-07-24 3:21 ` [PATCH 4/6] Changes css_set freeing mechanism to be under RCU Ben Blum
2009-07-24 3:21 ` Ben Blum
2009-07-24 3:22 ` [PATCH 5/6] Makes procs file writable to move all threads by tgid at once Ben Blum
2009-07-24 3:22 ` Ben Blum
2009-07-24 10:02 ` Louis Rilling
2009-07-24 10:08 ` Louis Rilling
[not found] ` <20090724100807.GG11101-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2009-07-24 19:05 ` Benjamin Blum
2009-07-24 19:05 ` Benjamin Blum
[not found] ` <20090724100220.GF11101-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2009-07-24 10:08 ` Louis Rilling
2009-07-24 21:52 ` Benjamin Blum
2009-07-24 21:52 ` Benjamin Blum
2009-07-24 21:57 ` Paul Menage
2009-08-03 10:52 ` Louis Rilling
[not found] ` <6599ad830907241457x3d1380b6ne613eb5921d6c5a0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-08-03 10:52 ` Louis Rilling
2009-07-29 0:23 ` Benjamin Blum
[not found] ` <2f86c2480907281723n7452c7f5l5a475e8120dccd83-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-08-03 11:00 ` Louis Rilling
2009-08-03 11:00 ` Louis Rilling
[not found] ` <2f86c2480907241452m74c50975k522c5a43a62e8459-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-24 21:57 ` Paul Menage
2009-07-29 0:23 ` Benjamin Blum
2009-07-24 15:50 ` Matt Helsley
[not found] ` <20090724155041.GF5878-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-07-24 16:01 ` Paul Menage
2009-07-24 16:01 ` Paul Menage
2009-07-24 17:23 ` Matt Helsley
2009-07-24 17:47 ` Paul Menage
[not found] ` <6599ad830907241047w9a9fff9q4dc68f26a9544398-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-24 20:53 ` Benjamin Blum
2009-07-24 20:53 ` Benjamin Blum
[not found] ` <2f86c2480907241353l63818dfehb20c9d4918a3f069-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-24 21:06 ` Matt Helsley
2009-07-24 21:06 ` Matt Helsley
[not found] ` <20090724210657.GL5878-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-07-24 21:36 ` Paul Menage
2009-07-24 21:36 ` Paul Menage
[not found] ` <20090724172320.GH5878-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-07-24 17:47 ` Paul Menage
[not found] ` <6599ad830907240901w4fc02097k83d0c1012708e6ee-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-24 17:23 ` Matt Helsley
[not found] ` <20090724032200.2463.82408.stgit-/yCBOHwbXCxd3OlUiQof+WCaruZE5nAUZeezCHUQhQ4@public.gmane.org>
2009-07-24 10:02 ` Louis Rilling
2009-07-24 15:50 ` Matt Helsley
2009-11-09 17:07 ` Daniel Lezcano
2009-11-09 17:07 ` Daniel Lezcano
2009-11-10 1:29 ` Li Zefan
[not found] ` <4AF8C20C.1070003-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-11-10 10:26 ` Daniel Lezcano
2009-11-10 10:26 ` Daniel Lezcano
2009-11-11 2:07 ` Li Zefan [this message]
2009-11-11 20:06 ` Daniel Lezcano
[not found] ` <4AFA1C70.5070700-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-11-11 20:06 ` Daniel Lezcano
[not found] ` <4AF93FE5.1080009-GANU6spQydw@public.gmane.org>
2009-11-11 2:07 ` Li Zefan
[not found] ` <4AF84C68.7010803-GANU6spQydw@public.gmane.org>
2009-11-10 1:29 ` Li Zefan
2009-07-24 3:22 ` [PATCH 6/6] Lets ss->can_attach and ss->attach do whole threadgroups at a time Ben Blum
2009-07-24 3:22 ` Ben Blum
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=4AFA1C70.5070700@cn.fujitsu.com \
--to=lizf@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=bblum@andrew.cmu.edu \
--cc=containers@lists.linux-foundation.org \
--cc=daniel.lezcano@free.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
--cc=serue@us.ibm.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.