public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Bill Davidsen <davidsen@tmr.com>
To: Matt Helsley <matthltc@us.ibm.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>,
	containers@lists.osdl.org, Paul Menage <menage@google.com>,
	Liu Aleaxander <aleaxander@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cgroup: Fixes the un-paired cgroup lock problem
Date: Fri, 06 Nov 2009 10:17:35 -0500	[thread overview]
Message-ID: <4AF43E0F.2090000@tmr.com> (raw)
In-Reply-To: <20091106010552.GA5267@count0.beaverton.ibm.com>

Matt Helsley wrote:
> On Thu, Nov 05, 2009 at 07:14:11PM -0500, Bill Davidsen wrote:
>   
>> Li Zefan wrote:
>>     
>>> Bill Davidsen wrote:
>>>   
>>>       
>>>> Li Zefan wrote:
>>>>     
>>>>         
>>>>> Liu Aleaxander wrote:
>>>>>       
>>>>>           
>>>>>> From: Liu Aleaxander <Aleaxander@gmail.com>
>>>>>> Date: Wed, 4 Nov 2009 09:27:06 +0800
>>>>>> Subject: [PATCH] Fixes the un-paired cgroup lock problem
>>>>>>
>>>>>> In cgroup_lock_live_group, it locks the cgroup by mutex_lock, while
>>>>>> in the
>>>>>> cgroup_tasks_write, it unlock it by cgroup_unlock. Even though they are
>>>>>> equal, but I do think we should make it pair.
>>>>>>
>>>>>> BTW, should we replace others with cgroup_lock and cgroup_unlock?
>>>>>> Since we already have a wrapper one and it's meaningful.
>>>>>>
>>>>>>         
>>>>>>             
>>>>> Before I read the email body, I thought there is a bug where
>>>>> there is a lock without unlock or vise versa.
>>>>>
>>>>> I agree the case here can be called "unpaired", but I'm not
>>>>> convinced this patch is needed. The code is not buggy or
>>>>> confusing. So the patch neither fixes a bug nor make the code
>>>>> more readable.
>>>>>
>>>>>       
>>>>>           
>>>> I would say it fixes a bug, the one that would be introduced when the
>>>> two methods are no longer compatible and essentially two names for the
>>>> same thing. And while you may know the code so well that you knew
>>>> without looking that this was (currently) okay, there will be lots of
>>>> eyes on this code over the years, I think most people would find use of
>>>> cgroup_lock to lock the cgroup a LOT more readable.
>>>>
>>>> While you can't go back in time to murder your grandfather, it creates
>>>> no paradox to fix a bug before someone writes it.
>>>>
>>>>     
>>>>         
>>> cgroup_lock() is not necessarily more readable than mutex_lock(&cgroup_mutex),
>>> at least the former doesn't tell you the lock is a spin_lock or a mutex.
>>>
>>>   
>>>       
>> That's the point, cgroup_lock() is an abstraction, you want to lock the 
>> cgroup, you call the macro, the macro handles the details, and if 
>> thinking (or the most common cache configurations) change, the code 
>> still works.
>>     
>
> Except it doesn't really "lock the cgroup" as you've been saying -- else
> it would take the cgroup to lock as a parameter. Instead it locks
> "all cgroups". Clearly there's room for misunderstanding even with
> cgroup_lock().
>   

Now that seems to be a good argument for better naming of the locks, 
something like lock_all_cgroups or whatever.

It does seem to support my point of using a macro named after "waht 
operation you are doing" rather than "how you are doing it today."

Thanks for the clarification.

-- 
Bill Davidsen <davidsen@tmr.com>
  Unintended results are the well-earned reward for incompetence.


  reply	other threads:[~2009-11-06 15:18 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-04  1:40 [PATCH] cgroup: Fixes the un-paired cgroup lock problem Liu Aleaxander
2009-11-04  5:11 ` Li Zefan
2009-11-04 14:26   ` Bill Davidsen
2009-11-05  8:02     ` Li Zefan
     [not found]       ` <4AF36A53.3080005@tmr.com>
2009-11-06  1:05         ` Matt Helsley
2009-11-06 15:17           ` Bill Davidsen [this message]
2009-11-06 15:17       ` Bill Davidsen

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=4AF43E0F.2090000@tmr.com \
    --to=davidsen@tmr.com \
    --cc=aleaxander@gmail.com \
    --cc=containers@lists.osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=matthltc@us.ibm.com \
    --cc=menage@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox