On 15/11/14 02:57, Howard Chu wrote:
Ah good point. If you check out their slides, #103 of 106 asks the question; the only failure they found in LMDB occurred on ext3 (and not on XFS) so we may just chalk this up to a flaw in ext3 instead.
Given that ext3 has already been superseded by ext4, this result of theirs may not be all that useful in the real world. We already have disrecommended ext3 for performance reasons, perhaps we should just note this and move on.
No, ext4 breaks too. Their paper's page 459, 5.1.2 LightningDB:
The fact that the journal commit block (op#402) is flushed with the next pwrite64 in the same thread means fdatasync on ext3 does not wait for the comple- tion of journaling (similar behavior has been observed on ext4).
I guess O_DSYNC and fdatasync() should not be the lmdb defaults yet, at least not on Linux:-(
We need a bug report to Linux or to the distro they were using, noting that the power faults are simulated. And is this O_DSYNC, fdatasync or both? The problem might be with only one of them. I'm not reading the paper in detail yet.