From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
LKML <linux-kernel@vger.kernel.org>,
RT <linux-rt-users@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Clark Williams <williams@redhat.com>
Subject: Re: [RFC][PATCH RT] rwsem_rt: Another (more sane) approach to mulit reader rt locks
Date: Thu, 17 May 2012 13:08:38 -0700 [thread overview]
Message-ID: <20120517200838.GL2567@linux.vnet.ibm.com> (raw)
In-Reply-To: <1337271467.4281.43.camel@twins>
On Thu, May 17, 2012 at 06:17:47PM +0200, Peter Zijlstra wrote:
> On Thu, 2012-05-17 at 08:47 -0700, Paul E. McKenney wrote:
> > On Thu, May 17, 2012 at 05:32:59PM +0200, Peter Zijlstra wrote:
> > > On Thu, 2012-05-17 at 08:18 -0700, Paul E. McKenney wrote:
> > > > Some researchers at MIT RCU-ified this lock:
> > > >
> > > > http://people.csail.mit.edu/nickolai/papers/clements-bonsai.pdf
> > >
> > > Ah, as have I [1].. and they seem to have gotten about as far as I have,
> > > which means almost there but not quite [2] :-)
> >
> > I had forgotten about that -- that was the first call for call_srcu(),
> > if I remember correctly.
> >
> > > The most interesting case is file maps and they simply ignored those.
> > > While I appreciate that from an academic pov, -- they can still write a
> > > paper on the other interesting bits -- I don't really like it from a
> > > practical point.
> > >
> > > [1] https://lkml.org/lkml/2010/1/4/257
> > > [2] https://lkml.org/lkml/2010/1/4/532
> >
> > Hmmm... Do the recent dcache changes cover some of the things that
> > Linus called out? Probably not, but some at least.
>
> No, and the points viro made:
>
> https://lkml.org/lkml/2010/1/5/194
>
> are still very much an issue, you really don't want to do fput() from an
> asynchronous context. Which means you have to do synchronize_rcu() or
> similar from munmap() which will be rather unpopular :/
I don't claim to understand all of the code, but I am also unafraid to
ask stupid questions. ;-)
So, is it possible to do something like the following?
1. Schedule a workqueue from an RCU callback, and to have that
workqueue do the fput.
2. Make things like unmount() do rcu_barrier() followed by
flush_workqueue(), or probably multiple flush_workqueue()s.
3. If someone concurrently does munmap() and a write to the
to-be-unmapped region, then the write can legally happen.
4. Acquire mmap_sem in the fault path, but only if the fault
requires blocking, and recheck the situation under
mmap_sem -- the hope being to prevent long-lived page
faults from messing things up.
Fire away! ;-)
> Since we should not use per-cpu data for either files or processes
> (there are simply too many of those around) the alternative is
> horrendously hideous things like:
>
> https://lkml.org/lkml/2010/1/6/136
>
> which one cannot get away with either.
>
> The whole thing is very vexing indeed since all of this is only needed
> for ill-behaved applications since a well-constructed application will
> never fault in a range it is concurrently unmapping.
>
> Most annoying.
No argument there!!!
Thanx, Paul
next prev parent reply other threads:[~2012-05-17 20:09 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-15 14:03 [RFC][PATCH RT] rwsem_rt: Another (more sane) approach to mulit reader rt locks Steven Rostedt
2012-05-15 15:06 ` Peter Zijlstra
2012-05-15 15:42 ` Steven Rostedt
2012-05-15 17:25 ` Steven Rostedt
2012-05-15 17:31 ` Peter Zijlstra
2012-05-15 17:43 ` Steven Rostedt
2012-05-15 16:26 ` Steven Rostedt
2012-05-15 18:00 ` John Kacur
2012-05-15 18:14 ` Steven Rostedt
2012-05-17 15:18 ` Paul E. McKenney
2012-05-17 15:25 ` Paul E. McKenney
2012-05-17 15:32 ` Peter Zijlstra
2012-05-17 15:47 ` Paul E. McKenney
2012-05-17 16:17 ` Peter Zijlstra
2012-05-17 20:08 ` Paul E. McKenney [this message]
2012-05-17 20:20 ` Peter Zijlstra
2012-05-22 15:26 ` Thomas Gleixner
2012-05-22 15:50 ` Steven Rostedt
2012-05-22 16:40 ` Thomas Gleixner
2012-05-22 16:52 ` Steven Rostedt
2012-05-22 17:07 ` Thomas Gleixner
2012-05-22 17:50 ` Steven Rostedt
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=20120517200838.GL2567@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=williams@redhat.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.