"The filesystem should be fixed to allocate blocks on *every* commit,
not just ones overwriting existing files."

alloc_on_commit mode has been added.  Those who want to use it (and take
the large associated performance hit) can use it.  It's a tradeoff that
is and should be in the hands of the individual system administrator.
Personally, my machine almost never crashes, so I'd prefer the extra
performance.

What the application is doing in this case is broken anyway, and if it
fixed that there would be no problem on ext4.

"As for the program -- fsync should *not* be inserted. (Though the
unconditional os.remove() should be changed.) It's a bad thing to
ritually fsync every file before the rename for a host of reasons
described upthread."

fsync() should preferably be used for config file updates, assuming
those are reasonably rare, "for a host of reasons described upthread".
Otherwise, the user will click "Save" and then the preference change
won't actually take effect if the system crashes shortly thereafter.
This is true in any filesystem.  On some filesystems (not just ext4: XFS
certainly, maybe NFS?), you might also get some kind of other bad stuff
happening.  Explicit user saving of files/preferences/etc. should
therefore invoke an fsync() in most cases: you want to make sure the
change is committed to stable storage before giving confirmation to the
user that it's saved.  Text editors already do this, and no one seems to
have complained.

If Gaim updates its config file very often for some reason, though,
they'd have to weigh the added reliability of fsync() against the
performance hit (especially on filesystems like ext3).

-- 
Ext4 data loss
https://bugs.launchpad.net/bugs/317781
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to