Messages in this thread | | | Date | Thu, 3 Apr 2003 01:43:23 +0200 | From | Jakob Oestergaard <> | Subject | Re: mmap-related questions |
| |
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/
| |