On Tue, 20 Nov 2007 15:40:58 +1100, "Andrew McNamara" <andrewm@xxxxxxxxxxxxxxxxxxx> said: > >> In production releases of ZFS fsync() essentially triggers sync() (fixed in > >> Solaris Next). > [...] > >Skiplist requires two fsync calls per transaction (single > >untransactioned actions are also one transaction), and it > >also locks the entire file for the duration of said > >transaction, so you can't have two writes happening at > >once. I haven't built Cyrus on our Solaris box, so I don't > >know if it uses fcntl there, it certainly does on the Linux > >systems, but it can fall back to flock if fcntl isn't > >available. > > Note that ext3 effectively does the same thing as ZFS on fsync() - > because > the journal layer is block based and does no know which block belongs > to which file, the entire journal must be applied to the filesystem to > achieve the expected fsync() symantics (at least, with data=ordered, > it does). Lucky we run reiserfs then, I guess... Bron. -- Bron Gondwana brong@xxxxxxxxxxx ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html