From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
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 22:31:03 +1000 [thread overview]
Message-ID: <200810032231.03985.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <Pine.LNX.4.64.0810030716310.4875@hs20-bc2-1.build.redhat.com>
On Friday 03 October 2008 21:26, Mikulas Patocka wrote:
> > > *What* is, forever? Data integrity syncs should have pages operated on
> > > in-order, until we get to the end of the range. Circular writeback
> > > could go through again, possibly, but no more than once.
> >
> > OK, I have been able to reproduce it somewhat. It is not a livelock,
> > but what is happening is that direct IO read basically does an fsync
> > on the file before performing the IO. The fsync gets stuck behind the
> > dd that is dirtying the pages, and ends up following behind it and
> > doing all its IO for it.
> >
> > The following patch avoids the issue for direct IO, by using the range
> > syncs rather than trying to sync the whole file.
> >
> > The underlying problem I guess is unchanged. Is it really a problem,
> > though? The way I'd love to solve it is actually by adding another bit
> > or two to the pagecache radix tree, that can be used to transiently tag
> > the tree for future operations. That way we could record the dirty and
> > writeback pages up front, and then only bother with operating on them.
> >
> > That's *if* it really is a problem. I don't have much pity for someone
> > doing buffered IO and direct IO to the same pages of the same file :)
>
> LVM does (that is where the bug was discovered). Basically, it scans all
> the block devices with direct IO and if someone else does buffered IO on
> any device simultaneously, it locks up.
Scans all block devices with direct IO? Hmm, why, I wonder? Should
really consider using buffered (posix_fadvise to readahead/dropbehind).
> That fsync-vs-write livelock is quite improbably (why would some
> application do it?) --- although it could be used as a DoS --- getting
> unkillable process.
I'm not sure.
next prev parent reply other threads:[~2008-10-03 12:31 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
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 [this message]
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=200810032231.03985.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.