Comment 179 for bug 317781

Revision history for this message
Harik (ubunto-dan) wrote :

Theodore, you're a bright guy, but this really means that you can't use EXT4 for anything at all.

fsync() is slow on many(most?) filesystems, and it grinds the entire system to a halt. What you're saying is that those applications have to know the details of the filesystem implementation, and only call fsync on ext4 where it's required and presumably isn't still just an alias for sync().

In your set of examples, #1 (ftruncate/write) is just broken and I can live with those applications dying. If there's a sane way to protect them from their own idiocy, that's fine. I'd prefer they remain as a guaranteed data loss so their bugs get fixed. #2 (write/rename) should be preserved. The application writer is merely saying 'One or the other of these should survive'. That's lots of little things - AIM buddy lists, desktop color, mp3 playlist position, firefox history - if every single application that I have is required to fsync() before rename or face guaranteed data loss of BOTH copies, that's a massive performance hit.

From a purely practical standpoint, you're not going to reverse about a decade's worth of advice - I can't count the number of times I've been told or seen people say "Write a temp file, rename over the other. If the system crashes, at worst you'll be left with the old copy.". And if that's a good enough guarantee, then non-critical applications should make use of it. I do NOT want everything constantly thrashing my disk for every tiny update. I can live with my browsing history losing my most recent entry, or my playlist going back a few songs. I can't live with every desktop application that's done anything in the two minutes prior to a crash having to be configured from scratch.

The fact that the standard says 'undefined' doesn't mean it's OK to force every application to use a higher level guarantee then they actually need. If a crash happens and the rename doesn't go through, that's good enough for 99% of what people do.

It sure beats essentially mounting your filesystem sync...