>> 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). -- Andrew McNamara, Senior Developer, Object Craft http://www.object-craft.com.au/ ---- 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