public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jarek Poplawski <jarkao2@o2.pl>
To: Nadia Derbey <Nadia.Derbey@bull.net>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Alexey Dobriyan <adobriyan@sw.ru>,
	linux-kernel@vger.kernel.org
Subject: Re: 2.6.23-rc6-mm1: IPC: sleeping function called ...
Date: Thu, 20 Sep 2007 15:19:00 +0200	[thread overview]
Message-ID: <20070920131900.GB2796@ff.dom.local> (raw)
In-Reply-To: <46F234DB.7030403@bull.net>

On Thu, Sep 20, 2007 at 10:52:43AM +0200, Nadia Derbey wrote:
> Jarek Poplawski wrote:
...
> >which seems to suggest "out" is an RCU protected pointer, so, I
> >thought these refcounts were for something else. But, after looking
> >at how it's used it turns out to be ~90% wrong: probably 9 out of 10
> >places use refcouning around this,
> 
> Actually, ipc_lock() is called most of the time without the 
> ipc_ids.mutex held and without refcounting (maybe you didn't look for 
> the msg_lock() sem_lock() and shm_lock() too).

Yes, you are 100% right and I'm 90% lier, 10% blind (maybe backward
too).

> So I think disabling preemption is needed, isn't it?

Do I've to tell the truth...?

> 
> >so, these rcu_read_locks() don't
> >work here at all. So, probably I miss something again, but IMHO,
> >these rcu_read_locks/unlocks could be removed here or in
> >ipc_lock_by_ptr() and it should be enough to use them directly, where
> >really needed, e.g., in msg.c do_msgrcv().
> >
> 
> I have to check for the ipc_lock_by_ptr(): may be you're right!

Since this whole locking scheme is really quite a puzzle, and needs
more than one or two looks to figure it out, I'd better try stop to
discredit myself more.

Anyway it looks to me like the most sophisticated way of achieving
locklessness I've seen so far. I hope, there is still some gain after
this RCU + refcounting vs. simple locking. (It seems somebody had
similar doubts writing the "Lockless receive, part 1:" comment in
do_msgrcv(); and probably again I'm very wrong, but this checking of
validity of RCU protected structure with an r_msg value, which is
done to avoid refcounting, looks like not very different and has
some cost too).

Regards,
Jarek P.

      parent reply	other threads:[~2007-09-20 13:17 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-18  9:17 2.6.23-rc6-mm1: IPC: sleeping function called Alexey Dobriyan
2007-09-18  9:42 ` Andrew Morton
2007-09-18 10:17 ` Andrew Morton
2007-09-18 10:30   ` Nadia Derbey
2007-09-18 10:34     ` Andrew Morton
     [not found]       ` <20070918142451.418b3b51@twins>
2007-09-18 16:13         ` Paul E. McKenney
2007-09-18 16:57           ` Andrew Morton
2007-09-18 18:29             ` Paul E. McKenney
2007-09-18 19:41               ` Peter Zijlstra
2007-09-18 20:26               ` [PATCH 1/2] lockdep: annotate rcu_read_lock() Peter Zijlstra
2007-09-18 20:27               ` [RFC][PATCH 2/2] lockdep: rcu_dereference() vs rcu_read_lock() Peter Zijlstra
2007-09-18 21:21                 ` Paul E. McKenney
2007-09-18 10:27 ` 2.6.23-rc6-mm1: IPC: sleeping function called Andrew Morton
2007-09-18 10:32   ` Alexey Dobriyan
2007-09-18 14:55   ` Nadia Derbey
2007-09-18 17:01     ` Andrew Morton
2007-09-21  9:18       ` Nadia Derbey
2007-09-19 14:07     ` Jarek Poplawski
2007-09-20  6:24       ` Nadia Derbey
2007-09-20  7:28         ` Jarek Poplawski
2007-09-20  8:21           ` Jarek Poplawski
2007-09-20  8:52           ` Nadia Derbey
2007-09-20 13:08             ` Nadia Derbey
2007-09-20 13:26               ` Jarek Poplawski
2007-09-21  8:44               ` Jarek Poplawski
2007-09-21 10:11                 ` Nadia Derbey
2007-09-21 11:03                   ` Jarek Poplawski
2007-09-21 11:15                     ` Jarek Poplawski
2007-09-24  6:54                     ` Jarek Poplawski
2007-09-24  7:43                       ` Jarek Poplawski
2007-09-24  8:18                       ` Nadia Derbey
2007-09-24  9:50                 ` Nadia Derbey
2007-09-25 11:47                   ` Jarek Poplawski
2007-09-26  6:13                     ` Jarek Poplawski
2007-09-20 13:19             ` Jarek Poplawski [this message]

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=20070920131900.GB2796@ff.dom.local \
    --to=jarkao2@o2.pl \
    --cc=Nadia.Derbey@bull.net \
    --cc=adobriyan@sw.ru \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.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