In some ways that would be quite neat: if a process does a small write then
fsyncs it, write it all into the journal. That avoids a seek out to the
file's data blocks.
However it'd be quite hard to do, I expect: we don't know until commit time
how much data has been written to this file (actually, we don't even know
at commit-time, but we could, with quite some work, find out).
But none of this will solve the problem, because even with your optimised
fsync(), we still need to write out bonnie's large file at commit time,
when we fsync() your small write to a different file.
(And when I say "this problem" I refer to the known-about problem which
we're discussing here. I suspect this in fact isn't Mike's problem - 20
minutes is crazy - it's not attributable to the fsync-syncs-everything
problem unless Mike's GUI is doing a huge numer of separate fsyncs)
-