Apart from batching larger journal commits, I thought of another way
which might improve write performance with barriers.
Basically, right now a barrier prevents any write I/Os from being
moved before or after it in the elevator, as well as issuing commands
itself.
It may be that relaxing barriers to allow moving writes when it's fine
will allow the elevator to schedule writes to reduce seeking?
A clear example of when it's fine is data=ordered, overwriting data in
a file. Those data writes don't have to be ordered against other
filesystem activity which is triggering journal commits. So they
could be moved around barrier ops, if the elevator deems that would
reduce seeks or to coalesce ops.
Similar arguments apply to moving writes past fsync() flushes, but the
rules are a bit different.
-- Jamie
--