Re: mmap-related questions

Benjamin LaHaise
2003-04-02T14:58:42Z

On Wed, Apr 02, 2003 at 11:30:50AM +0200, Jakob Oestergaard wrote:
> make_dirty(big_map)
> msync(first half of big_map)
> msync(second half of big_map) { crash during this }
>
> Then I am guaranteed that (unless the server crashes), the first half of
> big_map *will* have reached the server, but not that all of the second
> half has. Right?

Assuming you used MS_SYNC for the msync() flags. MS_ASYNC could still be
proceeding to flush the pages out in the background. And the kernel may
have triggered writeback of the second half -- it is free to do so as it
sees fit.

> Like any local-disk backed file.
>
> Ignoring the case where the NFS *server* crashes, where could the write
> ordering differ, compared to local disk files ?

> In other words, what does Benjamin's "unexpected ways" refer to ?

All local clients will see the mmap() being updated from the time it is
dirtied, but there is no ordering of write()s with respect to the mmap
unless you explicitely msync(..MS_SYNC..) as in your example.

-ben
--
Junk email? aart@kvack.org