On Tue, 29 Mar 2005, David Schultz wrote: > On Tue, Mar 29, 2005, Richard Sharpe wrote: > > Hi, > > > > I am having some problems with the tdb package on FreeBSD 4.6.2 and 4.10. > > > > One of the things the above package does is: > > > > mmap the tdb file to a region of memory > > store stuff in the region (memmov etc). > > when it needs to extend the size of the region { > > munmap the region > > write data at the end of the file > > mmap the region again with a larger size > > } > > > > What I am seeing is that after the munmap the data written to the region > > is gone. > > > > However, if I insert an msync before the munmap, everything is nicely > > coherent. This seems odd (in the sense that it works without the msync > > under Linux). > > > > The region is mmapped with: > > > > mmap(NULL, tdb->map_size, > > PROT_READ|(tdb->read_only? 0:PROT_WRITE), > > MAP_SHARED|MAP_FILE, tdb->fd, 0); > > It looks like all of the underlying pages are getting invalidated > in vm_object_page_remove(). This is clearly the right thing to do > for private mappings, but it seems wrong for shared mappings. > Perhaps Alan has some insight.
OK, a simple test program that: writes some content C1 to a file mmaps file to S1 writes content C2 to S1 munmaps S1 mmaps S1 compares shows expected behavior writes content C1 to S1 munmaps S1 mmaps S1 compares shows expected behavior So, now to do things like extend the file after mmapping etc to see where the problem lies. Regards ----- Richard Sharpe, rsharpe[at]richardsharpe.com, rsharpe[at]samba.org, sharpe[at]ethereal.com, http://www.richardsharpe.com _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"