From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: lkml <linux-kernel@vger.kernel.org>,
linux-arch@vger.kernel.org, Zach Brown <zach.brown@oracle.com>,
Ingo Molnar <mingo@elte.hu>,
akpm@linux-foundation.org
Subject: Re: [PATCH 05/12] mm: trylock_page
Date: Tue, 2 Oct 2007 18:44:25 +1000 [thread overview]
Message-ID: <200710021844.26118.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <1191078095.18147.126.camel@lappy>
On Sunday 30 September 2007 01:01, Peter Zijlstra wrote:
> On Fri, 2007-09-28 at 13:11 +1000, Nick Piggin wrote:
> > On Friday 28 September 2007 17:42, Peter Zijlstra wrote:
> > > Replace raw TestSetPageLocked() usage with trylock_page()
> >
> > I have such a thing queued too, for the lock bitops patches for when
> > 2.6.24 opens, Andrew promises me :).
> >
> > I guess they should be identical, except I don't like doing trylock_page
> > in place of SetPageLocked, for memory ordering performance and aesthetic
> > reasons... I've got an init_page_locked (or set_page_locked... I can't
> > remember, the patch is at home).
>
> Sure, that might work, or we could just make it so that add_to_*_cache
> is never passed an unlocked page. But sure...
It does kind of make sense to have it there (because you want the page
to be locked iff it gets inserted into pagecache). And wherever you lock
the page, we'll still want an init_page_locked to be able to lock it while we
are the only owner of it, for the same performance reason.
> > Fine idea to lockdep the page lock, anyway. Does it show up any of the
> > buffered write deadlock possibilities? :)
>
> Not yet, it might just be that the concessions done to annotate this
> type of lock were too severe.
>
> What I basically did was treat all the page locks as a single recursive
> lock.
Hmm, OK. There are a couple of page lock deadlocks there that wouldn't
be picked up, but the page lock vs mmap_sem one probably should be.
> > buffer lock is another notable bit-mutex that might be converted (I have
> > the patch to do the similar nice !tas->trylock conversion for that too).
> > I think it is used widely enough by tricky code that it would be useful
> > to annotate as well.
>
> Not at all familiar with that lock, but yeah, we could have a look at
> doing that too.
Should be pretty well identical to the page lock. I'll cc you on the patch
to do this equivalent API conversion, if you'd like.
> > Unfortunately we can't convert bit_spinlock.h easily, I guess?
>
> Yeah, the space constraints make that rather hard. Each of these locks
> needs some form of external meta-data.
Yeah.
> For the page lock I used one lock instance per file system type.
Seems OK.
next prev parent reply other threads:[~2007-10-03 1:16 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-28 7:42 [PATCH 00/12] various lockdep patches Peter Zijlstra
2007-09-28 7:42 ` [PATCH 01/12] lockdep: syscall exit check Peter Zijlstra
2007-09-28 12:03 ` Heiko Carstens
2007-09-28 12:14 ` Peter Zijlstra
2007-09-28 12:21 ` Heiko Carstens
2007-09-28 7:42 ` [PATCH 02/12] lockdep: i386: connect the sysexit hook Peter Zijlstra
2007-09-28 7:42 ` [PATCH 03/12] lockdep: x86_64: " Peter Zijlstra
2007-09-28 7:42 ` [PATCH 04/12] lockdep: annotate journal_start() Peter Zijlstra
2007-09-28 7:42 ` [PATCH 05/12] mm: trylock_page Peter Zijlstra
2007-09-28 3:11 ` Nick Piggin
2007-09-29 15:01 ` Peter Zijlstra
2007-10-02 8:44 ` Nick Piggin [this message]
2007-09-28 7:42 ` [PATCH 06/12] mm: remove raw SetPageLocked() usage Peter Zijlstra
2007-09-28 8:22 ` Christoph Hellwig
2007-09-28 7:42 ` [PATCH 07/12] lockdep: page lock hooks Peter Zijlstra
2007-09-28 7:42 ` [PATCH 08/12] lockdep: increase MAX_LOCK_DEPTH Peter Zijlstra
2007-09-28 7:42 ` [PATCH 09/12] lockdep: add a page lock class per filesystem type Peter Zijlstra
2007-09-28 7:42 ` [PATCH 10/12] lockdep: lock_page: handle IO-completions Peter Zijlstra
2007-09-28 7:42 ` [PATCH 11/12] mm: set_page_mapping() Peter Zijlstra
2007-09-28 7:42 ` [PATCH 12/12] lockdep: enable lock_page lockdep annotation Peter Zijlstra
2007-09-28 11:49 ` [PATCH 00/12] various lockdep patches Heiko Carstens
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=200710021844.26118.nickpiggin@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=zach.brown@oracle.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