On Wed, Apr 02, 2003 at 10:10:06AM -0500, Benjamin LaHaise wrote:
> 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.
Yes. MS_ASYNC is "advisory" only, as I understand it. (too bad it isn't
select()'able actually, I could use that to work wonders with a database
engine here...)
>
> > 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.
Ok, so we're talking multiple processes reading/writing.
Now it makes a lot more sense - I was thinking one process only. Silly
simple-minded me ;)
Thanks,
-- ................................................................ : jakob@unthought.net : And I see the elder races, : :.........................: putrid forms of man : : Jakob Østergaard : See him rise and claim the earth, : : OZ9ABN : his downfall is at hand. : :.........................:............{Konkhra}...............: - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Mon Apr 07 2003 - 22:00:18 EST