ext3 has three modes:
data=journal
Data is journalled. Yes, this slows things down
significantly.
data=ordered
The default mode and the most popular. All data is written
to disk prior to a commit. Write throughput is good, and
you don't have uninitialised data in your files after a
crash.
data=writeback
Metadata-only. Better write throughput (in dbench, anyway),
but only metadata integrity is preserved after a crash. ie:
fsck says the fs is fine, but files can (and almost always do)
contain random stuff after a crash.
Ordered data mode is really nice. It's not magical though - for example,
if you reset the machine during a kernel build, a subsequent `make' will
fail because you have a number of .o files which have zero length.
That's the length they happened to have when the machine went down.
For ordered-data mode we need to keep track of all the buffers which
are associated with a transaction's journalled metadata and ensure that
they are written out before the transaction commits. That is done with
a little structure which hangs off ->b_private.
> So I thought it was ok to at first support O_DIRECT only
> for metadata journaling, doing that should be a three liner as you said
> and that is what I expected.
Yup. metadata-only journalling is all-round much, much simpler.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/