From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Mikulas Patocka <mpatocka@redhat.com>,
linux-kernel@vger.kernel.org, linux-mm@vger.kernel.org,
agk@redhat.com, mbroz@redhat.com, chris@arachsys.com
Subject: Re: [PATCH] Memory management livelock
Date: Fri, 3 Oct 2008 14:07:55 +1000 [thread overview]
Message-ID: <200810031407.55406.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <20081002205604.47910d6d.akpm@linux-foundation.org>
On Friday 03 October 2008 13:56, Andrew Morton wrote:
> On Fri, 3 Oct 2008 13:47:21 +1000 Nick Piggin <nickpiggin@yahoo.com.au>
wrote:
> > > I expect there's no solution which avoids blocking the writers at some
> > > stage.
> >
> > See my other email. Something roughly like this would do the trick
> > (hey, it actually boots and runs and does fix the problem too).
>
> It needs exclusion to protect all those temp tags. Is do_fsync()'s
> i_mutex sufficient? It's qute unobvious (and unmaintainable?) that all
> the callers of this stuff are running under that lock.
Yeah... it does need a lock, which I brushed under the carpet :P
I was going to just say use i_mutex, but then we really would start
impacting on other fastpaths (eg writers).
Possibly a new mutex in the address_space? That way we can say
"anybody who holds this mutex is allowed to use the tag for anything"
and it doesn't have to be fsync specific (whether that would be of
any use to anything else, I don't know).
> > It's ugly because we don't have quite the right radix tree operations
> > yet (eg. lookup multiple tags, set tag X if tag Y was set, proper range
> > lookups). But the theory is to up-front tag the pages that we need to
> > get to disk.
>
> Perhaps some callback-calling radix tree walker.
Possibly, yes. That would make it fairly general. I'll have a look...
> > Completely no impact or slowdown to any writers (although it does add
> > 8 bytes of tags to the radix tree node... but doesn't increase memory
> > footprint as such due to slab).
>
> Can we reduce the amount of copy-n-pasting here?
Yeah... I went to break the sync/async cases into two, but it looks like
it may not have been worthwhile. Just another branch might be the best
way to go.
As far as the c&p in setting the FSYNC tag, yes that should all go away
if the radix-tree is up to scratch. Basically:
radix_tree_tag_set_if_tagged(start, end, ifWRITEBACK|DIRTY, setFSYNC);
should be able to replace the whole thing, and we'd hold the tree_lock, so
we would not have to take the page lock etc. Basically it would be much
nicer... even somewhere close to a viable solution.
next prev parent reply other threads:[~2008-10-03 4:08 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080911101616.GA24064@agk.fab.redhat.com>
2008-09-22 21:10 ` [PATCH] Memory management livelock Mikulas Patocka
2008-09-23 0:48 ` Andrew Morton
2008-09-23 22:34 ` Mikulas Patocka
2008-09-23 22:49 ` Andrew Morton
2008-09-23 23:11 ` Mikulas Patocka
2008-09-23 23:46 ` Andrew Morton
2008-09-24 18:50 ` Mikulas Patocka
2008-09-24 18:51 ` [PATCH 1/3] " Mikulas Patocka
2008-09-24 18:52 ` [PATCH 2/3] " Mikulas Patocka
2008-10-02 5:54 ` Andrew Morton
2008-10-05 22:11 ` RFC: one-bit mutexes (was: Re: [PATCH 2/3] Memory management livelock) Mikulas Patocka
2008-10-11 12:06 ` Nick Piggin
2008-10-20 20:14 ` Mikulas Patocka
2008-10-21 1:51 ` Nick Piggin
2008-10-05 22:14 ` [PATCH 1/3] bit mutexes Mikulas Patocka
2008-10-05 22:14 ` [PATCH 2/3] Fix fsync livelock Mikulas Patocka
2008-10-05 22:33 ` Arjan van de Ven
2008-10-05 23:02 ` Mikulas Patocka
2008-10-05 23:07 ` Arjan van de Ven
2008-10-05 23:18 ` Mikulas Patocka
2008-10-05 23:28 ` Arjan van de Ven
2008-10-06 0:01 ` Mikulas Patocka
2008-10-06 0:30 ` Arjan van de Ven
2008-10-06 3:30 ` Mikulas Patocka
2008-10-06 4:20 ` Arjan van de Ven
2008-10-06 13:00 ` Mikulas Patocka
2008-10-06 13:50 ` Arjan van de Ven
2008-10-06 20:44 ` Mikulas Patocka
2008-10-08 10:56 ` Pavel Machek
2008-10-06 2:51 ` Dave Chinner
2008-10-05 22:16 ` [PATCH 3/3] Fix fsync-vs-write misbehavior Mikulas Patocka
2008-10-09 1:12 ` [PATCH] documentation: explain memory barriers Randy Dunlap
2008-10-09 1:17 ` Chris Snook
2008-10-09 1:31 ` Andrew Morton
2008-10-09 5:51 ` Chris Snook
2008-10-09 9:58 ` Ben Hutchings
2008-10-09 21:27 ` Nick Piggin
2008-10-09 17:29 ` Nick Piggin
2008-10-09 1:50 ` Valdis.Kletnieks
2008-10-09 17:35 ` Nick Piggin
2008-10-09 6:52 ` Valdis.Kletnieks
2008-09-24 18:53 ` [PATCH 3/3] Memory management livelock Mikulas Patocka
2008-10-03 2:32 ` [PATCH] " Nick Piggin
2008-10-03 2:40 ` Andrew Morton
2008-10-03 2:59 ` Nick Piggin
2008-10-03 3:14 ` Andrew Morton
2008-10-03 3:47 ` Nick Piggin
2008-10-03 3:56 ` Andrew Morton
2008-10-03 4:07 ` Nick Piggin [this message]
2008-10-03 4:17 ` Andrew Morton
2008-10-03 4:29 ` Nick Piggin
2008-10-03 11:43 ` Mikulas Patocka
2008-10-03 12:27 ` Nick Piggin
2008-10-03 13:53 ` Mikulas Patocka
2008-10-03 2:54 ` Nick Piggin
2008-10-03 11:26 ` Mikulas Patocka
2008-10-03 12:31 ` Nick Piggin
2008-10-03 13:50 ` Mikulas Patocka
2008-10-03 14:50 ` Alasdair G Kergon
2008-10-03 14:36 ` Alasdair G Kergon
2008-10-03 15:52 ` application syncing options (was Re: [PATCH] Memory management livelock) david
2008-10-06 0:04 ` Mikulas Patocka
2008-10-06 0:19 ` david
2008-10-06 3:42 ` Mikulas Patocka
2008-10-07 3:37 ` david
2008-10-07 15:44 ` Mikulas Patocka
2008-10-07 17:16 ` david
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=200810031407.55406.nickpiggin@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=agk@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=chris@arachsys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@vger.kernel.org \
--cc=mbroz@redhat.com \
--cc=mpatocka@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.