All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@steeleye.com>
To: "David S. Miller" <davem@redhat.com>
Cc: hugh@veritas.com, willy@debian.org,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	PARISC list <parisc-linux@lists.parisc-linux.org>,
	drepper@redhat.com
Subject: Re: [parisc-linux] Re: Problems with kernel mmap (failing tst-mmap-eofsync in glibc on parisc)
Date: 23 Aug 2003 17:21:21 -0500	[thread overview]
Message-ID: <1061677283.1992.471.camel@mulgrave> (raw)
In-Reply-To: <20030823144330.5ddab065.davem@redhat.com>

On Sat, 2003-08-23 at 16:43, David S. Miller wrote:
> On 22 Aug 2003 20:09:30 -0500
> James Bottomley <James.Bottomley@SteelEye.com> wrote:
> 
> > What we were hoping is that we could rely on this little property of
> > mmap:
> > 
> >        MAP_PRIVATE
> >                   Create a private copy-on-write mapping.  Stores
> >                   to the region do not affect the original  file.
> >                   It  is  unspecified whether changes made to the
> >                   file after the mmap call  are  visible  in  the
> >                   mapped region.
> > 
> > To avoid having to flush the non-shared mappings (basically on parisc if
> > you write to a file backing a MAP_PRIVATE mapping then we don't
> > guarantee you see the update).
> > 
> > I suppose if we had a way of telling if any of the i_mmap list members
> > were really MAP_SHARED semantics mappings, then we could alter our
> > flush_dcache_page() implementation to work.
> 
> I thought about this very deeply last night and this morning.
> And what you're trying to optimize won't work.  Here is why.
> 
> If the first access to a MAP_PRIVATE mapping of a page is a read,
> we'll use the page-cache page.  This means that, with your
> optimization, during this time if another cpu write()`s into the
> page we'll lose the data update.
> 
> Sorry :(

Could you elaborate some more?  I agree that the MAP_PRIVATE mapping may
not see cpu1's write because of cache incoherencies (but that's what I
believe is covered by the `unspecified' bit of the MAP_PRIVATE
definition above).  MAP_PRIVATE is COW (i.e. the page is marked read
only while it's shared), so there can be no data to flush in the cache
for the page of the MAP_PRIVATE process...The only scenario I see where
we can get cache based data destruction is if two cache aliases both
contain dirty caches for the page (which can only happen for MAP_SHARED
RW, which we already have the correct semantics for...they're racing to
do a msync and the last one in wins).

James

  reply	other threads:[~2003-08-23 22:21 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-22 14:40 [parisc-linux] Problems with kernel mmap (failing tst-mmap-eofsync in glibc on parisc) James Bottomley
2003-08-22 14:40 ` James Bottomley
2003-08-22 16:14 ` [parisc-linux] " David S. Miller
2003-08-22 16:14 ` David S. Miller
2003-08-22 16:14   ` David S. Miller
2003-08-22 16:34   ` [parisc-linux] " Matthew Wilcox
2003-08-22 16:39     ` David S. Miller
2003-08-22 16:39     ` David S. Miller
2003-08-22 17:41       ` Matthew Wilcox
2003-08-22 17:36         ` David S. Miller
2003-08-22 18:01           ` David S. Miller
2003-08-22 18:34             ` Hugh Dickins
2003-08-22 18:31               ` David S. Miller
2003-08-22 18:56                 ` James Bottomley
2003-08-22 18:56                 ` James Bottomley
2003-08-22 19:19                   ` David S. Miller
2003-08-22 19:19                   ` David S. Miller
2003-08-22 22:27                     ` James Bottomley
2003-08-22 22:41                       ` David S. Miller
2003-08-23  1:09                         ` James Bottomley
2003-08-23  1:09                         ` James Bottomley
2003-08-23  7:22                           ` Hugh Dickins
2003-08-23 15:59                             ` James Bottomley
2003-08-23 15:59                             ` James Bottomley
2003-08-23 21:44                             ` David S. Miller
2003-08-23 21:44                             ` David S. Miller
2003-08-23  7:22                           ` Hugh Dickins
2003-08-23 21:43                           ` David S. Miller
2003-08-23 22:21                             ` James Bottomley [this message]
2003-08-23 22:51                               ` David S. Miller
2003-08-23 23:01                                 ` James Bottomley
2003-08-23 23:01                                 ` James Bottomley
2003-08-23 22:51                               ` David S. Miller
2003-08-23 22:53                               ` David S. Miller
2003-08-23 23:11                                 ` James Bottomley
2003-08-24  0:22                                   ` David S. Miller
2003-08-24  5:17                                     ` James Bottomley
2003-08-24  5:23                                       ` David S. Miller
2003-08-24 16:54                                         ` James Bottomley
2003-08-24 16:54                                         ` James Bottomley
2003-08-24  0:22                                   ` David S. Miller
2003-08-23 23:11                                 ` James Bottomley
2003-08-23 22:53                               ` David S. Miller
2003-08-23 22:21                             ` James Bottomley
2003-08-23 21:43                           ` David S. Miller
2003-08-22 22:41                       ` David S. Miller
2003-08-22 22:27                     ` James Bottomley
2003-08-22 18:31               ` David S. Miller
2003-08-22 18:41               ` James Bottomley
2003-08-22 19:02                 ` Hugh Dickins
2003-08-22 19:02                 ` Hugh Dickins
2003-08-22 19:09                 ` Randolph Chung
2003-08-22 19:09                 ` Randolph Chung
2003-08-22 18:41               ` James Bottomley
2003-08-22 18:34             ` Hugh Dickins
2003-08-22 18:01           ` David S. Miller
2003-08-22 17:36         ` David S. Miller
2003-08-22 17:41       ` Matthew Wilcox
2003-08-22 16:42     ` Russell King
2003-08-22 16:39       ` David S. Miller
2003-08-22 16:39       ` David S. Miller
2003-08-22 16:42     ` Russell King
2003-08-22 16:34   ` Matthew Wilcox

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=1061677283.1992.471.camel@mulgrave \
    --to=james.bottomley@steeleye.com \
    --cc=davem@redhat.com \
    --cc=drepper@redhat.com \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=parisc-linux@lists.parisc-linux.org \
    --cc=willy@debian.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.