From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Andrew Morton <akpm@osdl.org>,
linux@horizon.com, linux-kernel@vger.kernel.org, sct@redhat.com
Subject: Re: msync() behaviour broken for MS_ASYNC, revert patch?
Date: Sat, 11 Feb 2006 03:37:19 +1100 [thread overview]
Message-ID: <43ECC13F.5080109@yahoo.com.au> (raw)
In-Reply-To: <Pine.LNX.4.64.0602100759190.19172@g5.osdl.org>
Linus Torvalds wrote:
>
> On Fri, 10 Feb 2006, Nick Piggin wrote:
>
>>This is a Linux implementation detail. As such it would make sense to
>>introduce a new Linux specific MS_ flag for this.
>>..
>>Definitely. And when the app gives us a hint that it really wants the
>>data on the disk, starting it as early as possible is also a good
>>optimisation.
>
>
> But that's what MS_SYNC is. MS_SYNC says "I need this data written now".
>
Yes but it is synchronous.
> MS_ASYNC moves it into the page cache. That makes 100% sense. Then it will
> be written by the regular dirty page writeout. That makes 100% sense.
>
MS_INVALIDATE does that (in Linux), the spec is poorly worded but the
intention seems to be that it would push dirty state back into pagecache for
implementations such as ours.
>
>>I don't think there's anything wrong with your fadvise additions.
>>I'd rather see MS_ASYNC start IO immediately and add another MS_
>>flag for Linux to propogate bits.
>
>
> Why? I miss the _reason_ you want to do this.
>
linux@horizon.com has an application (database or logging I think), which
uses MS_SYNC to provide integrity guarantees, however it is possible to do
useful work between the last write to memory and the commit point. MS_ASYNC
is used to start the IO and pipeline work.
> The current MS_ASYNC behaviour is the sane one. It's the one that doesn't
> cause the harddisk to start ticking senselessly. It's the one that allows
> a person on a laptop to say "don't write dirty data every 5 seconds - do
> it just every hour".
>
MS_INVALIDATE
> In contrast, _your_ proposal is just inflexible and inconvenient.
>
Currently MS_ASYNC does the same as MS_INVALIDATE. But it used to start
IO (before 2.5.something), and apparently it does in Solaris as well.
> If somebody really really wants to "start flushing data now", then he can
> do so, but that actually has absolutely zero to do with "msync()" any
> more. A person who wants the flushing to start "now" might want to flush
> any random dirty buffers.
>
I didn't quite understand what you're saying here.
> Your suggestion is no different from saying "we should make every
> 'write()' call start the IO". Which is obviously crap.
>
I think it is quite a bit different. Obviously what you're saying is crap,
but I think there are good arguments for changing MS_ASYNC so it is not
quite so obvious.
--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com
next prev parent reply other threads:[~2006-02-10 16:37 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-09 7:18 msync() behaviour broken for MS_ASYNC, revert patch? linux
2006-02-09 8:18 ` Andrew Morton
2006-02-09 8:35 ` Nick Piggin
2006-02-09 8:42 ` Andrew Morton
2006-02-09 12:38 ` Nick Piggin
2006-02-09 12:39 ` Nick Piggin
2006-02-09 17:48 ` Andrew Morton
2006-02-10 3:36 ` Nick Piggin
2006-02-10 3:50 ` Andrew Morton
2006-02-10 3:57 ` Nick Piggin
2006-02-10 4:13 ` Andrew Morton
2006-02-10 4:30 ` Nick Piggin
2006-02-10 4:43 ` Andrew Morton
2006-02-10 4:52 ` Nick Piggin
2006-02-10 5:13 ` Andrew Morton
2006-02-10 5:29 ` Nick Piggin
2006-02-10 5:50 ` Andrew Morton
2006-02-10 6:03 ` Nick Piggin
2006-02-10 6:13 ` Andrew Morton
2006-02-10 6:31 ` Nick Piggin
2006-02-10 6:46 ` Andrew Morton
2006-02-10 6:57 ` Nick Piggin
2006-02-10 7:14 ` Andrew Morton
2006-02-10 12:41 ` Nick Piggin
2006-02-10 16:19 ` Linus Torvalds
2006-02-10 17:00 ` Nick Piggin
2006-02-10 17:12 ` Linus Torvalds
2006-02-10 17:35 ` Linus Torvalds
2006-02-10 17:59 ` Nick Piggin
2006-02-10 18:55 ` Linus Torvalds
2006-02-10 19:29 ` Nick Piggin
2006-02-10 19:44 ` Linus Torvalds
2006-02-10 19:52 ` Nick Piggin
2006-02-10 20:03 ` Linus Torvalds
2006-02-11 5:49 ` Nick Piggin
2006-02-10 16:05 ` Linus Torvalds
2006-02-10 16:37 ` Nick Piggin [this message]
2006-02-10 17:03 ` Linus Torvalds
2006-02-10 17:37 ` Nick Piggin
2006-02-10 18:01 ` Linus Torvalds
2006-02-10 18:38 ` Nick Piggin
2006-02-10 19:05 ` Linus Torvalds
2006-02-10 19:34 ` Oliver Neukum
2006-02-10 19:59 ` Linus Torvalds
2006-02-10 20:11 ` Andrew Morton
2006-02-10 21:15 ` Linus Torvalds
2006-02-10 21:28 ` Andrew Morton
2006-02-10 20:03 ` Nick Piggin
2006-02-10 21:10 ` Linus Torvalds
2006-02-10 21:55 ` Trond Myklebust
2006-02-10 22:46 ` Linus Torvalds
2006-02-10 23:02 ` Trond Myklebust
2006-02-10 23:15 ` Linus Torvalds
2006-02-11 19:07 ` Trond Myklebust
2006-02-10 17:29 ` linux
2006-02-10 17:42 ` Linus Torvalds
2006-02-10 18:57 ` Nick Piggin
2006-02-10 8:00 ` linux
2006-02-10 13:18 ` Nick Piggin
2006-02-10 7:15 ` linux
2006-02-10 7:28 ` Andrew Morton
2006-02-09 11:18 ` linux
-- strict thread matches above, loose matches on Subject: below --
2004-03-31 22:16 Stephen C. Tweedie
2004-03-31 22:37 ` Linus Torvalds
2004-03-31 22:37 ` Linus Torvalds
2004-03-31 23:41 ` Stephen C. Tweedie
2004-03-31 23:41 ` Stephen C. Tweedie
2004-04-01 0:08 ` Linus Torvalds
2004-04-01 0:08 ` Linus Torvalds
2004-04-01 0:30 ` Andrew Morton
2004-04-01 0:30 ` Andrew Morton
2004-04-01 15:40 ` Stephen C. Tweedie
2004-04-01 15:40 ` Stephen C. Tweedie
2004-04-01 16:02 ` Linus Torvalds
2004-04-01 16:02 ` Linus Torvalds
2004-04-01 16:33 ` Stephen C. Tweedie
2004-04-01 16:33 ` Stephen C. Tweedie
2004-04-01 16:19 ` Jamie Lokier
2004-04-01 16:19 ` Jamie Lokier
2004-04-01 16:57 ` Stephen C. Tweedie
2004-04-01 16:57 ` Stephen C. Tweedie
2004-04-01 18:51 ` Andrew Morton
2004-04-01 18:51 ` Andrew Morton
2004-03-31 22:53 ` Andrew Morton
2004-03-31 22:53 ` Andrew Morton
2004-03-31 23:20 ` Stephen C. Tweedie
2004-03-31 23:20 ` Stephen C. Tweedie
2004-04-16 22:35 ` Jamie Lokier
2004-04-16 22:35 ` Jamie Lokier
2004-04-19 21:54 ` Stephen C. Tweedie
2004-04-19 21:54 ` Stephen C. Tweedie
2004-04-21 2:10 ` Jamie Lokier
2004-04-21 2:10 ` Jamie Lokier
2004-04-21 9:52 ` Stephen C. Tweedie
2004-04-21 9:52 ` Stephen C. Tweedie
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=43ECC13F.5080109@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@horizon.com \
--cc=sct@redhat.com \
--cc=torvalds@osdl.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 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.