fsync() and data=journal behaviour

David Carter
Mon, 24 Feb 2003 14:37:29 -0000

I'm currently looking at the behaviour of various Linux filesystems as
backends for the Cyrus IMAP server. Like many mail applications, Cyrus
makes heavy use of the fsync() system call to ensure that data has hit
stable storage before it acknowledges receipt of messages.

At the moment fsync() appears to introduce lots of synchronous I/O as data
is flushed all the way through to the filesystem proper.

My (probably naive) hope was that when using the data=journal mode,
fsync() would flush data to the journal but then commit through to the
real filesystem asynchronously. This doesn't appear to be the case with
the 2.4 kernel, however I found some mention of "two stage sync" for
2.5
in the archives for this list. Does this mean that this behaviour is
likely to change with 2.6? Failing that is some API available in place of
fsync() which would flush data through to the journal?

Unrelated:

Does anyone have a feel for when the htree stuff is likely to stabilise? I
see that it went into the first beta for Redhat 8.1, but was pulled later.

TIA,

--
David Carter                             Email: David.Carter@ucs.cam.ac.uk
University Computing Service,            Phone: (01223) 334502
New Museums Site, Pembroke Street,       Fax:   (01223) 334679
Cambridge UK. CB2 3QH.