All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: linux-kernel@vger.kernel.org, Hugh Dickins <hughd@google.com>
Subject: Re: [PATCH 2/2] msync: start async writeout when MS_ASYNC
Date: Thu, 14 Jun 2012 03:07:53 -0700	[thread overview]
Message-ID: <20120614030753.048eec9a.akpm@linux-foundation.org> (raw)
In-Reply-To: <4FD9A88A.8040701@redhat.com>

On Thu, 14 Jun 2012 11:02:02 +0200 Paolo Bonzini <pbonzini@redhat.com> wrote:

> Il 13/06/2012 23:29, Andrew Morton ha scritto:
> > > If the application does not want to start I/O, it can simply call msync
> > > with flags equal to MS_INVALIDATE.  This one remains a no-op, as it should
> > > be on a reasonable implementation.
> > 
> > Means that people will find that their msync(MS_ASYNC) call will newly
> > start IO.  This may well be undesirable for some.
> 
> If they knew it was a no-op, and relying on it, they might as well not
> have called it at all and save a syscall.

Nope.  Back in the day (3+ years ago?), msync(MS_ASYNC) would flush
pte-dirty bits into page->flags:PG_Dirty.  So it was used to make the
filesystem aware that userspace had modified some MAP_SHARED memory. 
The fs would then perform writeback within (typically) 30 seconds.  So
a legitimate use would be for the app to periodically run
msync(MS_ASYNC) to avoid having modified data floating about
un-written-back for arbitrarily long periods.

Nowadays we mark the pte's read-only and take a fault on first write,
and mark the page dirty at that time.

So it wasn't a no-op, and with this patch, such applications will newly
find themselves to be starting I/O within the msync() call.


  reply	other threads:[~2012-06-14 10:08 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-31 20:43 [PATCH 0/2] msync improvements Paolo Bonzini
2012-05-31 20:43 ` [PATCH 1/2] msync: support syncing a small part of the file Paolo Bonzini
2012-06-13 21:26   ` Andrew Morton
2012-06-13 21:51     ` Zan Lynx
2012-06-13 22:08       ` Andrew Morton
2012-06-14  8:57         ` Paolo Bonzini
2012-05-31 20:43 ` [PATCH 2/2] msync: start async writeout when MS_ASYNC Paolo Bonzini
2012-06-13 21:29   ` Andrew Morton
2012-06-14  9:02     ` Paolo Bonzini
2012-06-14 10:07       ` Andrew Morton [this message]
2012-06-14 10:19         ` Paolo Bonzini
2012-06-14 12:24     ` Paolo Bonzini
2012-06-12 15:38 ` [PATCH 0/2] msync improvements Paolo Bonzini

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=20120614030753.048eec9a.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@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.